@dynamicforms/vuetify-inputs 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamicforms-vuetify-inputs.js","sources":["../node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js","../node_modules/@ckeditor/ckeditor5-vue/dist/ckeditor.js","../src/helpers/input-base.ts","../src/helpers/input-base.vue","../src/helpers/action/action-display-style.ts","../src/helpers/action/responsive-render-options.ts","../src/helpers/action/action.ts","../src/df-actions.vue","../src/df-checkbox.vue","../src/df-color.vue","../node_modules/vuetify/lib/labs/VTimePicker/util.js","../node_modules/vuetify/lib/util/globals.js","../node_modules/vuetify/lib/util/helpers.js","../node_modules/vuetify/lib/util/anchor.js","../node_modules/vuetify/lib/util/color/APCA.js","../node_modules/vuetify/lib/util/console.js","../node_modules/vuetify/lib/util/colorUtils.js","../node_modules/vuetify/lib/util/propsFactory.js","../node_modules/vuetify/lib/composables/component.js","../node_modules/vuetify/lib/util/getCurrentInstance.js","../node_modules/vuetify/lib/util/injectSelf.js","../node_modules/vuetify/lib/composables/defaults.js","../node_modules/vuetify/lib/util/defineComponent.js","../node_modules/vuetify/lib/util/createSimpleFunctional.js","../node_modules/vuetify/lib/util/useRender.js","../node_modules/vuetify/lib/composables/color.js","../node_modules/vuetify/lib/labs/VTimePicker/VTimePickerClock.js","../node_modules/vuetify/lib/composables/border.js","../node_modules/vuetify/lib/composables/density.js","../node_modules/vuetify/lib/composables/elevation.js","../node_modules/vuetify/lib/composables/rounded.js","../node_modules/vuetify/lib/composables/tag.js","../node_modules/vuetify/lib/composables/theme.js","../node_modules/vuetify/lib/composables/variant.js","../node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.js","../node_modules/vuetify/lib/composables/toggleScope.js","../node_modules/vuetify/lib/composables/proxiedModel.js","../node_modules/vuetify/lib/composables/group.js","../node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.js","../node_modules/vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.js","../node_modules/vuetify/lib/composables/icons.js","../node_modules/vuetify/lib/composables/size.js","../node_modules/vuetify/lib/components/VIcon/VIcon.js","../node_modules/vuetify/lib/composables/intersectionObserver.js","../node_modules/vuetify/lib/composables/resizeObserver.js","../node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js","../node_modules/vuetify/lib/composables/dimensions.js","../node_modules/vuetify/lib/composables/locale.js","../node_modules/vuetify/lib/composables/location.js","../node_modules/vuetify/lib/composables/loader.js","../node_modules/vuetify/lib/composables/position.js","../node_modules/vuetify/lib/composables/router.js","../node_modules/vuetify/lib/composables/selectLink.js","../node_modules/vuetify/lib/directives/ripple/index.js","../node_modules/vuetify/lib/components/VBtn/VBtn.js","../node_modules/vuetify/lib/labs/VTimePicker/VTimePickerControls.js","../node_modules/vuetify/lib/labs/VPicker/VPickerTitle.js","../node_modules/vuetify/lib/components/VSheet/VSheet.js","../node_modules/vuetify/lib/labs/VPicker/VPicker.js","../node_modules/vuetify/lib/labs/VTimePicker/VTimePicker.js","../src/df-datetime.vue","../src/df-file.vue","../src/df-input.vue","../src/helpers/ck-editor-custom.vue","../src/df-rtf-editor.vue","../src/helpers/df-select.helper.ts","../src/df-select.vue","../src/df-text-area.vue","../src/index.ts"],"sourcesContent":["/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction createDefer() {\n const deferred = {\n resolve: null,\n promise: null\n };\n deferred.promise = new Promise((resolve) => {\n deferred.resolve = resolve;\n });\n return deferred;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction waitFor(callback, {\n timeOutAfter = 500,\n retryAfter = 100\n} = {}) {\n return new Promise((resolve, reject) => {\n const startTime = Date.now();\n let lastError = null;\n const timeoutTimerId = setTimeout(() => {\n reject(lastError ?? new Error(\"Timeout\"));\n }, timeOutAfter);\n const tick = async () => {\n try {\n const result = await callback();\n clearTimeout(timeoutTimerId);\n resolve(result);\n } catch (err) {\n lastError = err;\n if (Date.now() - startTime > timeOutAfter) {\n reject(err);\n } else {\n setTimeout(tick, retryAfter);\n }\n }\n };\n tick();\n });\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nconst INJECTED_SCRIPTS = /* @__PURE__ */ new Map();\nfunction injectScript(src, { attributes } = {}) {\n if (INJECTED_SCRIPTS.has(src)) {\n return INJECTED_SCRIPTS.get(src);\n }\n const maybePrevScript = document.querySelector(`script[src=\"${src}\"]`);\n if (maybePrevScript) {\n console.warn(`Script with \"${src}\" src is already present in DOM!`);\n maybePrevScript.remove();\n }\n const promise = new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.onerror = reject;\n script.onload = () => {\n resolve();\n };\n for (const [key, value] of Object.entries(attributes || {})) {\n script.setAttribute(key, value);\n }\n script.setAttribute(\"data-injected-by\", \"ckeditor-integration\");\n script.type = \"text/javascript\";\n script.async = true;\n script.src = src;\n document.head.appendChild(script);\n const observer = new MutationObserver((mutations) => {\n const removedNodes = mutations.flatMap((mutation) => Array.from(mutation.removedNodes));\n if (removedNodes.includes(script)) {\n INJECTED_SCRIPTS.delete(src);\n observer.disconnect();\n }\n });\n observer.observe(document.head, {\n childList: true,\n subtree: true\n });\n });\n INJECTED_SCRIPTS.set(src, promise);\n return promise;\n}\nasync function injectScriptsInParallel(sources, props) {\n await Promise.all(\n sources.map((src) => injectScript(src, props))\n );\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nconst INJECTED_STYLESHEETS = /* @__PURE__ */ new Map();\nfunction injectStylesheet({\n href,\n placementInHead = \"start\",\n attributes = {}\n}) {\n if (INJECTED_STYLESHEETS.has(href)) {\n return INJECTED_STYLESHEETS.get(href);\n }\n const maybePrevStylesheet = document.querySelector(`link[href=\"${href}\"][rel=\"stylesheet\"]`);\n if (maybePrevStylesheet) {\n console.warn(`Stylesheet with \"${href}\" href is already present in DOM!`);\n maybePrevStylesheet.remove();\n }\n const appendLinkTagToHead = (link) => {\n const previouslyInjectedLinks = Array.from(\n document.head.querySelectorAll('link[data-injected-by=\"ckeditor-integration\"]')\n );\n switch (placementInHead) {\n case \"start\":\n if (previouslyInjectedLinks.length) {\n previouslyInjectedLinks.slice(-1)[0].after(link);\n } else {\n document.head.insertBefore(link, document.head.firstChild);\n }\n break;\n case \"end\":\n document.head.appendChild(link);\n break;\n }\n };\n const promise = new Promise((resolve, reject) => {\n const link = document.createElement(\"link\");\n for (const [key, value] of Object.entries(attributes || {})) {\n link.setAttribute(key, value);\n }\n link.setAttribute(\"data-injected-by\", \"ckeditor-integration\");\n link.rel = \"stylesheet\";\n link.href = href;\n link.onerror = reject;\n link.onload = () => {\n resolve();\n };\n appendLinkTagToHead(link);\n const observer = new MutationObserver((mutations) => {\n const removedNodes = mutations.flatMap((mutation) => Array.from(mutation.removedNodes));\n if (removedNodes.includes(link)) {\n INJECTED_STYLESHEETS.delete(href);\n observer.disconnect();\n }\n });\n observer.observe(document.head, {\n childList: true,\n subtree: true\n });\n });\n INJECTED_STYLESHEETS.set(href, promise);\n return promise;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction isSSR() {\n return typeof window === \"undefined\";\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction once(fn) {\n let lastResult = null;\n return (...args) => {\n if (!lastResult) {\n lastResult = {\n current: fn(...args)\n };\n }\n return lastResult.current;\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction overwriteArray(source, destination) {\n destination.length = 0;\n destination.push(...source);\n return destination;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction overwriteObject(source, destination) {\n for (const prop of Object.getOwnPropertyNames(destination)) {\n delete destination[prop];\n }\n for (const [key, value] of Object.entries(source)) {\n if (value !== destination && key !== \"prototype\" && key !== \"__proto__\") {\n destination[key] = value;\n }\n }\n return destination;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction preloadResource(url, { attributes } = {}) {\n if (document.head.querySelector(`link[href=\"${url}\"][rel=\"preload\"]`)) {\n return;\n }\n const link = document.createElement(\"link\");\n for (const [key, value] of Object.entries(attributes || {})) {\n link.setAttribute(key, value);\n }\n link.setAttribute(\"data-injected-by\", \"ckeditor-integration\");\n link.rel = \"preload\";\n link.as = detectTypeOfResource(url);\n link.href = url;\n document.head.insertBefore(link, document.head.firstChild);\n}\nfunction detectTypeOfResource(url) {\n switch (true) {\n case /\\.css$/.test(url):\n return \"style\";\n case /\\.js$/.test(url):\n return \"script\";\n default:\n return \"fetch\";\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction shallowCompareArrays(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nconst HEX_NUMBERS = new Array(256).fill(\"\").map((_, index) => (\"0\" + index.toString(16)).slice(-2));\nfunction uid() {\n const [r1, r2, r3, r4] = crypto.getRandomValues(new Uint32Array(4));\n return \"e\" + HEX_NUMBERS[r1 >> 0 & 255] + HEX_NUMBERS[r1 >> 8 & 255] + HEX_NUMBERS[r1 >> 16 & 255] + HEX_NUMBERS[r1 >> 24 & 255] + HEX_NUMBERS[r2 >> 0 & 255] + HEX_NUMBERS[r2 >> 8 & 255] + HEX_NUMBERS[r2 >> 16 & 255] + HEX_NUMBERS[r2 >> 24 & 255] + HEX_NUMBERS[r3 >> 0 & 255] + HEX_NUMBERS[r3 >> 8 & 255] + HEX_NUMBERS[r3 >> 16 & 255] + HEX_NUMBERS[r3 >> 24 & 255] + HEX_NUMBERS[r4 >> 0 & 255] + HEX_NUMBERS[r4 >> 8 & 255] + HEX_NUMBERS[r4 >> 16 & 255] + HEX_NUMBERS[r4 >> 24 & 255];\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction uniq(source) {\n return Array.from(new Set(source));\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nasync function waitForWindowEntry(entryNames, config) {\n const tryPickBundle = () => entryNames.map((name) => window[name]).filter(Boolean)[0];\n return waitFor(\n () => {\n const result = tryPickBundle();\n if (!result) {\n throw new Error(`Window entry \"${entryNames.join(\",\")}\" not found.`);\n }\n return result;\n },\n config\n );\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction filterObjectValues(obj, filter) {\n const filteredEntries = Object.entries(obj).filter(([key, value]) => filter(value, key));\n return Object.fromEntries(filteredEntries);\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction filterBlankObjectValues(obj) {\n return filterObjectValues(\n obj,\n (value) => value !== null && value !== void 0\n );\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction mapObjectValues(obj, mapper) {\n const mappedEntries = Object.entries(obj).map(([key, value]) => [key, mapper(value, key)]);\n return Object.fromEntries(mappedEntries);\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction without(itemsToRemove, items) {\n return items.filter((item) => !itemsToRemove.includes(item));\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction appendExtraPluginsToEditorConfig(config, plugins) {\n const extraPlugins = config.extraPlugins || [];\n return {\n ...config,\n extraPlugins: [\n ...extraPlugins,\n ...plugins.filter((item) => !extraPlugins.includes(item))\n ]\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction isSemanticVersion(version) {\n return !!version && /^\\d+\\.\\d+\\.\\d+/.test(version);\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction isCKCdnTestingVersion(version) {\n if (!version) {\n return false;\n }\n return [\"nightly\", \"alpha\", \"internal\", \"nightly-\", \"staging\"].some((testVersion) => version.includes(testVersion));\n}\nfunction isCKCdnVersion(version) {\n return isSemanticVersion(version) || isCKCdnTestingVersion(version);\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction destructureSemanticVersion(version) {\n if (!isSemanticVersion(version)) {\n throw new Error(`Invalid semantic version: ${version || \"<blank>\"}.`);\n }\n const [major, minor, patch] = version.split(\".\");\n return {\n major: Number.parseInt(major, 10),\n minor: Number.parseInt(minor, 10),\n patch: Number.parseInt(patch, 10)\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction getLicenseVersionFromEditorVersion(version) {\n if (isCKCdnTestingVersion(version)) {\n return 3;\n }\n const { major } = destructureSemanticVersion(version);\n switch (true) {\n case major >= 44:\n return 3;\n case major >= 38:\n return 2;\n default:\n return 1;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction getCKBaseBundleInstallationInfo() {\n const { CKEDITOR_VERSION, CKEDITOR } = window;\n if (!isCKCdnVersion(CKEDITOR_VERSION)) {\n return null;\n }\n return {\n source: CKEDITOR ? \"cdn\" : \"npm\",\n version: CKEDITOR_VERSION\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction getSupportedLicenseVersionInstallationInfo() {\n const installationInfo = getCKBaseBundleInstallationInfo();\n if (!installationInfo) {\n return null;\n }\n return getLicenseVersionFromEditorVersion(installationInfo.version);\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction isCKEditorFreeLicense(licenseKey, licenseVersion) {\n licenseVersion ||= getSupportedLicenseVersionInstallationInfo() || void 0;\n switch (licenseVersion) {\n case 1:\n case 2:\n return licenseKey === void 0;\n case 3:\n return licenseKey === \"GPL\";\n default: {\n return false;\n }\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction createIntegrationUsageDataPlugin(integrationName, usageData) {\n return function IntegrationUsageDataPlugin(editor) {\n if (isCKEditorFreeLicense(editor.config.get(\"licenseKey\"))) {\n return;\n }\n editor.on(\"collectUsageData\", (source, { setUsageData }) => {\n setUsageData(`integration.${integrationName}`, usageData);\n });\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nconst CK_CDN_URL = \"https://cdn.ckeditor.com\";\nfunction createCKCdnUrl(bundle, file, version) {\n return `${CK_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nconst CKBOX_CDN_URL = \"https://cdn.ckbox.io\";\nfunction createCKBoxCdnUrl(bundle, file, version) {\n return `${CKBOX_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nconst CK_DOCS_URL = \"https://ckeditor.com/docs/ckeditor5\";\nfunction createCKDocsUrl(path, version = \"latest\") {\n return `${CK_DOCS_URL}/${version}/${path}`;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction createCKCdnBaseBundlePack({\n version,\n translations,\n createCustomCdnUrl = createCKCdnUrl\n}) {\n const urls = {\n scripts: [\n // Load the main script of the base features.\n createCustomCdnUrl(\"ckeditor5\", \"ckeditor5.umd.js\", version),\n // Load all JavaScript files from the base features.\n // EN bundle is prebuilt into the main script, so we don't need to load it separately.\n ...without([\"en\"], translations || []).map(\n (translation) => createCustomCdnUrl(\"ckeditor5\", `translations/${translation}.umd.js`, version)\n )\n ],\n stylesheets: [\n createCustomCdnUrl(\"ckeditor5\", \"ckeditor5.css\", version)\n ]\n };\n return {\n // Preload resources specified in the pack, before loading the main script.\n preload: [\n ...urls.stylesheets,\n ...urls.scripts\n ],\n scripts: [\n // It's safe to load translations and the main script in parallel.\n async (attributes) => injectScriptsInParallel(urls.scripts, attributes)\n ],\n // Load all stylesheets of the base features.\n stylesheets: urls.stylesheets,\n // Pick the exported global variables from the window object.\n checkPluginLoaded: async () => waitForWindowEntry([\"CKEDITOR\"]),\n // Check if the CKEditor base bundle is already loaded and throw an error if it is.\n beforeInject: () => {\n const installationInfo = getCKBaseBundleInstallationInfo();\n switch (installationInfo?.source) {\n case \"npm\":\n throw new Error(\n \"CKEditor 5 is already loaded from npm. Check the migration guide for more details: \" + createCKDocsUrl(\"updating/migration-to-cdn/vanilla-js.html\")\n );\n case \"cdn\":\n if (installationInfo.version !== version) {\n throw new Error(\n `CKEditor 5 is already loaded from CDN in version ${installationInfo.version}. Remove the old <script> and <link> tags loading CKEditor 5 to allow loading the ${version} version.`\n );\n }\n break;\n }\n }\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction createCKCdnPremiumBundlePack({\n version,\n translations,\n createCustomCdnUrl = createCKCdnUrl\n}) {\n const urls = {\n scripts: [\n // Load the main script of the premium features.\n createCustomCdnUrl(\"ckeditor5-premium-features\", \"ckeditor5-premium-features.umd.js\", version),\n // Load all JavaScript files from the premium features.\n // EN bundle is prebuilt into the main script, so we don't need to load it separately.\n ...without([\"en\"], translations || []).map(\n (translation) => createCustomCdnUrl(\"ckeditor5-premium-features\", `translations/${translation}.umd.js`, version)\n )\n ],\n stylesheets: [\n createCustomCdnUrl(\"ckeditor5-premium-features\", \"ckeditor5-premium-features.css\", version)\n ]\n };\n return {\n // Preload resources specified in the pack, before loading the main script.\n preload: [\n ...urls.stylesheets,\n ...urls.scripts\n ],\n scripts: [\n // It's safe to load translations and the main script in parallel.\n async (attributes) => injectScriptsInParallel(urls.scripts, attributes)\n ],\n // Load all stylesheets of the premium features.\n stylesheets: urls.stylesheets,\n // Pick the exported global variables from the window object.\n checkPluginLoaded: async () => waitForWindowEntry([\"CKEDITOR_PREMIUM_FEATURES\"])\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nasync function loadCKCdnResourcesPack(pack) {\n let {\n htmlAttributes = {},\n scripts = [],\n stylesheets = [],\n preload,\n beforeInject,\n checkPluginLoaded\n } = normalizeCKCdnResourcesPack(pack);\n beforeInject?.();\n if (!preload) {\n preload = uniq([\n ...stylesheets.filter((item) => typeof item === \"string\"),\n ...scripts.filter((item) => typeof item === \"string\")\n ]);\n }\n for (const url of preload) {\n preloadResource(url, {\n attributes: htmlAttributes\n });\n }\n await Promise.all(\n uniq(stylesheets).map((href) => injectStylesheet({\n href,\n attributes: htmlAttributes,\n placementInHead: \"start\"\n }))\n );\n for (const script of uniq(scripts)) {\n const injectorProps = {\n attributes: htmlAttributes\n };\n if (typeof script === \"string\") {\n await injectScript(script, injectorProps);\n } else {\n await script(injectorProps);\n }\n }\n return checkPluginLoaded?.();\n}\nfunction normalizeCKCdnResourcesPack(pack) {\n if (Array.isArray(pack)) {\n return {\n scripts: pack.filter(\n (item) => typeof item === \"function\" || item.endsWith(\".js\")\n ),\n stylesheets: pack.filter(\n (item) => item.endsWith(\".css\")\n )\n };\n }\n if (typeof pack === \"function\") {\n return {\n checkPluginLoaded: pack\n };\n }\n return pack;\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction combineCKCdnBundlesPacks(packs) {\n const normalizedPacks = mapObjectValues(\n filterBlankObjectValues(packs),\n normalizeCKCdnResourcesPack\n );\n const mergedPacks = Object.values(normalizedPacks).reduce(\n (acc, pack) => {\n acc.scripts.push(...pack.scripts ?? []);\n acc.stylesheets.push(...pack.stylesheets ?? []);\n acc.preload.push(...pack.preload ?? []);\n return acc;\n },\n {\n preload: [],\n scripts: [],\n stylesheets: []\n }\n );\n const checkPluginLoaded = async () => {\n const exportedGlobalVariables = /* @__PURE__ */ Object.create(null);\n for (const [name, pack] of Object.entries(normalizedPacks)) {\n exportedGlobalVariables[name] = await pack?.checkPluginLoaded?.();\n }\n return exportedGlobalVariables;\n };\n const beforeInject = () => {\n for (const pack of Object.values(normalizedPacks)) {\n pack.beforeInject?.();\n }\n };\n return {\n ...mergedPacks,\n beforeInject,\n checkPluginLoaded\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction getCKBoxInstallationInfo() {\n const version = window.CKBox?.version;\n if (!isSemanticVersion(version)) {\n return null;\n }\n return {\n source: \"cdn\",\n version\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction createCKBoxBundlePack({\n version,\n theme = \"lark\",\n translations,\n createCustomCdnUrl = createCKBoxCdnUrl\n}) {\n return {\n // Load the main script of the base features.\n scripts: [\n createCustomCdnUrl(\"ckbox\", \"ckbox.js\", version),\n // EN bundle is prebuilt into the main script, so we don't need to load it separately.\n ...without([\"en\"], translations || []).map(\n (translation) => createCustomCdnUrl(\"ckbox\", `translations/${translation}.js`, version)\n )\n ],\n // Load optional theme, if provided. It's not required but recommended because it improves the look and feel.\n ...theme && {\n stylesheets: [\n createCustomCdnUrl(\"ckbox\", `styles/themes/${theme}.css`, version)\n ]\n },\n // Pick the exported global variables from the window object.\n checkPluginLoaded: async () => waitForWindowEntry([\"CKBox\"]),\n // Check if the CKBox bundle is already loaded and throw an error if it is.\n beforeInject: () => {\n const installationInfo = getCKBoxInstallationInfo();\n if (installationInfo && installationInfo.version !== version) {\n throw new Error(\n `CKBox is already loaded from CDN in version ${installationInfo.version}. Remove the old <script> and <link> tags loading CKBox to allow loading the ${version} version.`\n );\n }\n }\n };\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction isCKCdnSupportedByEditorVersion(version) {\n if (isCKCdnTestingVersion(version)) {\n return true;\n }\n const { major } = destructureSemanticVersion(version);\n const licenseVersion = getLicenseVersionFromEditorVersion(version);\n switch (licenseVersion) {\n case 3:\n return true;\n default:\n return major === 43;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction combineCdnPluginsPacks(pluginsPacks) {\n const normalizedPluginsPacks = mapObjectValues(pluginsPacks, (pluginPack, pluginName) => {\n if (!pluginPack) {\n return void 0;\n }\n const normalizedPluginPack = normalizeCKCdnResourcesPack(pluginPack);\n return {\n // Provide default window accessor object if the plugin pack does not define it.\n checkPluginLoaded: async () => waitForWindowEntry([pluginName]),\n // Transform the plugin pack to a normalized advanced pack.\n ...normalizedPluginPack\n };\n });\n return combineCKCdnBundlesPacks(\n normalizedPluginsPacks\n );\n}\n\n/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nfunction loadCKEditorCloud(config) {\n const {\n version,\n translations,\n plugins,\n premium,\n ckbox,\n createCustomCdnUrl,\n injectedHtmlElementsAttributes = {\n crossorigin: \"anonymous\"\n }\n } = config;\n validateCKEditorVersion(version);\n const pack = combineCKCdnBundlesPacks({\n CKEditor: createCKCdnBaseBundlePack({\n version,\n translations,\n createCustomCdnUrl\n }),\n ...premium && {\n CKEditorPremiumFeatures: createCKCdnPremiumBundlePack({\n version,\n translations,\n createCustomCdnUrl\n })\n },\n ...ckbox && {\n CKBox: createCKBoxBundlePack(ckbox)\n },\n loadedPlugins: combineCdnPluginsPacks(plugins ?? {})\n });\n return loadCKCdnResourcesPack(\n {\n ...pack,\n htmlAttributes: injectedHtmlElementsAttributes\n }\n );\n}\nfunction validateCKEditorVersion(version) {\n if (isCKCdnTestingVersion(version)) {\n console.warn(\n \"You are using a testing version of CKEditor 5. Please remember that it is not suitable for production environments.\"\n );\n }\n if (!isCKCdnSupportedByEditorVersion(version)) {\n throw new Error(\n `The CKEditor 5 CDN can't be used with the given editor version: ${version}. Please make sure you are using at least the CKEditor 5 version 44.`\n );\n }\n}\n\nexport { CKBOX_CDN_URL, CK_CDN_URL, INJECTED_SCRIPTS, INJECTED_STYLESHEETS, appendExtraPluginsToEditorConfig, createCKBoxCdnUrl, createCKCdnUrl, createDefer, createIntegrationUsageDataPlugin, filterBlankObjectValues, filterObjectValues, injectScript, injectScriptsInParallel, injectStylesheet, isCKEditorFreeLicense, isSSR, loadCKEditorCloud, mapObjectValues, once, overwriteArray, overwriteObject, preloadResource, shallowCompareArrays, uid, uniq, waitFor, waitForWindowEntry, without };\n//# sourceMappingURL=index.js.map\n","import * as Vue from \"vue\";\nimport { version, defineComponent, mergeModels, useModel, ref, watch, onMounted, markRaw, onBeforeUnmount, openBlock, createBlock, resolveDynamicComponent, computed, watchEffect, shallowReadonly, toValue } from \"vue\";\nimport { debounce } from \"lodash-es\";\nimport { createIntegrationUsageDataPlugin, isCKEditorFreeLicense, appendExtraPluginsToEditorConfig, uid, loadCKEditorCloud } from \"@ckeditor/ckeditor5-integrations-common\";\nimport { loadCKEditorCloud as loadCKEditorCloud2 } from \"@ckeditor/ckeditor5-integrations-common\";\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md.\n */\nconst VueIntegrationUsageDataPlugin = createIntegrationUsageDataPlugin(\n \"vue\",\n {\n version: \"7.3.0\",\n frameworkVersion: version\n }\n);\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md.\n */\nfunction appendAllIntegrationPluginsToConfig(editorConfig) {\n if (isCKEditorFreeLicense(editorConfig.licenseKey)) {\n return editorConfig;\n }\n return appendExtraPluginsToEditorConfig(editorConfig, [\n /**\n * This part of the code is not executed in open-source implementations using a GPL key.\n * It only runs when a specific license key is provided. If you are uncertain whether\n * this applies to your installation, please contact our support team.\n */\n VueIntegrationUsageDataPlugin\n ]);\n}\nconst VUE_INTEGRATION_READ_ONLY_LOCK_ID = \"Lock from Vue integration (@ckeditor/ckeditor5-vue)\";\nconst INPUT_EVENT_DEBOUNCE_WAIT = 300;\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n name: \"CKEditor\"\n },\n __name: \"ckeditor\",\n props: /* @__PURE__ */ mergeModels({\n editor: {},\n config: { default: () => ({}) },\n tagName: { default: \"div\" },\n disabled: { type: Boolean, default: false },\n disableTwoWayDataBinding: { type: Boolean, default: false }\n }, {\n \"modelValue\": { type: String, default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"ready\", \"destroy\", \"blur\", \"focus\", \"input\", \"update:modelValue\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const model = useModel(__props, \"modelValue\");\n const props = __props;\n const emit = __emit;\n const element = ref();\n const instance = ref();\n const lastEditorData = ref();\n __expose({\n instance,\n lastEditorData\n });\n watch(model, (newModel) => {\n if (instance.value && newModel !== lastEditorData.value) {\n instance.value.data.set(newModel);\n }\n });\n watch(() => props.disabled, (readOnlyMode) => {\n if (readOnlyMode) {\n instance.value.enableReadOnlyMode(VUE_INTEGRATION_READ_ONLY_LOCK_ID);\n } else {\n instance.value.disableReadOnlyMode(VUE_INTEGRATION_READ_ONLY_LOCK_ID);\n }\n });\n function checkVersion() {\n const version2 = window.CKEDITOR_VERSION;\n if (!version2) {\n return console.warn('Cannot find the \"CKEDITOR_VERSION\" in the \"window\" scope.');\n }\n const [major] = version2.split(\".\").map(Number);\n if (major >= 42 || version2.startsWith(\"0.0.0\")) {\n return;\n }\n console.warn(\"The <CKEditor> component requires using CKEditor 5 in version 42+ or nightly build.\");\n }\n function setUpEditorEvents(editor) {\n const emitDebouncedInputEvent = debounce((evt) => {\n if (props.disableTwoWayDataBinding) {\n return;\n }\n const data = lastEditorData.value = editor.data.get();\n emit(\"update:modelValue\", data, evt, editor);\n emit(\"input\", data, evt, editor);\n }, INPUT_EVENT_DEBOUNCE_WAIT, { leading: true });\n editor.model.document.on(\"change:data\", emitDebouncedInputEvent);\n editor.editing.view.document.on(\"focus\", (evt) => {\n emit(\"focus\", evt, editor);\n });\n editor.editing.view.document.on(\"blur\", (evt) => {\n emit(\"blur\", evt, editor);\n });\n }\n checkVersion();\n onMounted(() => {\n const editorConfig = appendAllIntegrationPluginsToConfig(\n Object.assign({}, props.config)\n );\n if (model.value) {\n editorConfig.initialData = model.value;\n }\n props.editor.create(element.value, editorConfig).then((editor) => {\n instance.value = markRaw(editor);\n setUpEditorEvents(editor);\n if (model.value !== editorConfig.initialData) {\n editor.data.set(model.value);\n }\n if (props.disabled) {\n editor.enableReadOnlyMode(VUE_INTEGRATION_READ_ONLY_LOCK_ID);\n }\n emit(\"ready\", editor);\n }).catch((error) => {\n console.error(error);\n });\n });\n onBeforeUnmount(() => {\n if (instance.value) {\n instance.value.destroy();\n instance.value = void 0;\n }\n emit(\"destroy\");\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(_ctx.tagName), {\n ref_key: \"element\",\n ref: element\n }, null, 512);\n };\n }\n});\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md.\n */\nconst useAsync = (asyncFunc) => {\n const lastQueryUUID = ref(null);\n const error = ref(null);\n const data = ref(null);\n const loading = computed(() => lastQueryUUID.value !== null);\n watchEffect(async () => {\n const currentQueryUID = uid();\n lastQueryUUID.value = currentQueryUID;\n data.value = null;\n error.value = null;\n const shouldDiscardQuery = () => lastQueryUUID.value !== currentQueryUID;\n try {\n const result = await asyncFunc();\n if (!shouldDiscardQuery()) {\n data.value = result;\n }\n } catch (err) {\n if (!shouldDiscardQuery()) {\n error.value = err;\n }\n } finally {\n if (!shouldDiscardQuery()) {\n lastQueryUUID.value = null;\n }\n }\n });\n return {\n loading: shallowReadonly(loading),\n data: shallowReadonly(data),\n error: shallowReadonly(error)\n };\n};\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md.\n */\nfunction useCKEditorCloud(config) {\n return useAsync(\n () => loadCKEditorCloud(\n toValue(config)\n )\n );\n}\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n/* istanbul ignore if -- @preserve */\nif (!Vue.version || !Vue.version.startsWith(\"3.\")) {\n throw new Error(\n \"The CKEditor plugin works only with Vue 3+. For more information, please refer to https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/vuejs-v3.html\"\n );\n}\nconst CkeditorPlugin = {\n /**\n * Installs the plugin, registering the `<ckeditor>` component.\n *\n * @param app The application instance.\n */\n install(app) {\n app.component(\"Ckeditor\", _sfc_main);\n }\n};\nexport {\n _sfc_main as Ckeditor,\n CkeditorPlugin,\n loadCKEditorCloud2 as loadCKEditorCloud,\n useCKEditorCloud\n};\n//# sourceMappingURL=ckeditor.js.map\n","import Form, { ValidationErrorRenderContent } from '@dynamicforms/vue-forms';\nimport { isEmpty } from 'lodash-es';\nimport { computed } from 'vue';\n\nexport interface BaseProps<T = any> {\n control?: Form.IField<T>,\n modelValue?: T;\n label?: string;\n errors?: string[];\n placeholder?: string;\n helpText?: string;\n hint?: string,\n enabled?: boolean,\n visibility?: Form.DisplayMode,\n cssClass?: string;\n clearable?: boolean;\n}\n\nexport const defaultBaseProps = { enabled: undefined };\n\nexport interface BaseEmits<T = any> {\n (e: 'update:modelValue', value: T): void;\n\n (e: 'click:clear'): void;\n}\n\nexport function useInputBase<T = any>(props: BaseProps<T>, emit: BaseEmits<T>) {\n const value = computed({\n get(): T {\n if (props.control) {\n return props.control.value as T;\n }\n return props.modelValue as T;\n },\n set(newValue: T) {\n if (props.control) props.control.value = newValue;\n emit('update:modelValue', newValue);\n },\n });\n\n if (props.control && !(props.control instanceof Form.FieldBase)) {\n throw new Error('control prop is not a vue-form control instance');\n }\n\n const valid = computed(() => (props.control ? props.control.valid : true));\n const errors = computed(\n () => (props.control ?\n props.control.errors :\n (props.errors || []).map((error) => new ValidationErrorRenderContent(error))),\n );\n const anyErrors = computed(() => (errors.value.length > 0 ? ' ' : undefined));\n const enabled = computed(() => (props.control ? props.control.enabled : (props.enabled !== false)));\n const visibility = computed(\n () => (props.control ? props.control.visibility : (props.visibility || Form.DisplayMode.FULL)),\n );\n const label = computed(() => (props.label || ''));\n const placeholder = computed(() => (props.placeholder || ''));\n const helpText = computed(() => props.helpText || '');\n const hint = computed(() => props.hint || '');\n const cssClass = computed(() => props.cssClass || '');\n\n return {\n value,\n valid,\n enabled,\n errors,\n visibility,\n\n vuetifyBindings: computed(() => ({\n name: props.control?.fieldName,\n class: cssClass.value,\n\n label: label.value,\n messages: anyErrors.value,\n // 'error-count': errors?.value.length || 0,\n readonly: !enabled.value,\n disabled: !enabled.value,\n\n placeholder: placeholder.value,\n 'persistent-placeholder': !isEmpty(placeholder.value),\n\n hint: hint.value,\n persistentHint: true, // we want persistent hint always\n hideDetails: <boolean | 'auto' | undefined>'auto', // we want to hide the hint element when hint isn't there\n helpText: helpText.value,\n })),\n };\n}\n","<template>\n <div\n v-if=\"visibility !== DisplayMode.SUPPRESS\"\n :class=\"[\n cssClass,\n {\n 'd-none': visibility === DisplayMode.HIDDEN,\n invisible: visibility === DisplayMode.INVISIBLE,\n },\n ]\"\n >\n <label v-if=\"vuetifyBindings.label\" for=\"#following-v-input\">{{ vuetifyBindings.label }}</label>\n <v-input\n :hint=\"vuetifyBindings.hint\"\n :persistent-hint=\"vuetifyBindings.persistentHint\"\n :hide-details=\"vuetifyBindings.hideDetails\"\n >\n <template #message><errors-widget :errors=\"errors\"/></template>\n <slot/>\n <template v-if=\"isClearable\" #append>\n <v-icon @click=\"emits('click:clear')\">mdi-close-circle</v-icon>\n </template>\n </v-input>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { DisplayMode } from '@dynamicforms/vue-forms';\nimport { computed, unref } from 'vue';\n\nimport ErrorsWidget from './errors-widget.vue';\nimport { BaseEmits, BaseProps, useInputBase } from './input-base';\n\nconst props = defineProps<BaseProps>();\nconst emits = defineEmits<BaseEmits>();\n\nconst { errors, value, visibility, vuetifyBindings } = useInputBase(props, emits);\n\nconst isClearable = computed(() => (unref(props.clearable) && unref(value)));\n</script>\n\n<style scoped>\n\n</style>\n","/**\n * DisplayMode enum provides an enumeration for supported ways of rendering a particular object in the DOM\n */\nenum ActionDisplayStyle {\n // This enum is actually declared in dynamicforms.action.py\n BUTTON = 0, // action should render as a button\n TEXT = 1, // action should render as a link text\n}\n\nexport const defaultDisplayStyle = ActionDisplayStyle.BUTTON;\n\nnamespace ActionDisplayStyle {\n export function fromString(mode: string): ActionDisplayStyle {\n if (mode.toUpperCase() === 'BUTTON') return ActionDisplayStyle.BUTTON;\n if (mode.toUpperCase() === 'TEXT') return ActionDisplayStyle.TEXT;\n return defaultDisplayStyle;\n }\n\n export function fromAny(mode: any): ActionDisplayStyle {\n const input = (typeof mode === 'number') ? mode : ActionDisplayStyle.fromString(mode as string);\n if (Object.values(ActionDisplayStyle).includes(input)) return input;\n return defaultDisplayStyle;\n }\n\n export function isDefined(mode: number | string): boolean {\n const check = (typeof mode === 'number') ? mode : ActionDisplayStyle.fromString(mode as string);\n return Object.values(ActionDisplayStyle).includes(check);\n }\n}\n\nObject.freeze(ActionDisplayStyle);\n\nexport { ActionDisplayStyle };\n","import { isBoolean, isObjectLike, isString } from 'lodash-es';\n\nimport { ActionDisplayStyle } from './action-display-style';\n\nexport interface BreakpointJSON {\n renderAs?: ActionDisplayStyle;\n showLabel?: boolean;\n showIcon?: boolean;\n label?: string;\n}\n\nexport type BreakpointNames = 'xl' | 'lg' | 'md' | 'sm' | 'xs';\nexport interface BreakpointsJSON extends BreakpointJSON, Partial<Record<BreakpointNames, BreakpointJSON>> { }\n\nconst breakpoints: BreakpointNames[] = ['xl', 'lg', 'md', 'sm', 'xs'];\n\nexport default class ResponsiveRenderOptions {\n private readonly _value: BreakpointsJSON;\n\n constructor(data: BreakpointsJSON | undefined, label?: string) {\n this._value = {};\n if (!data) return;\n let baseOptions = ResponsiveRenderOptions.cleanBreakpoint(data);\n if (!baseOptions?.label && label) {\n if (!baseOptions) baseOptions = { label };\n else if (!baseOptions.label) baseOptions.label = label;\n }\n if (baseOptions) this._value = baseOptions;\n\n breakpoints.forEach((bp) => {\n const options = ResponsiveRenderOptions.cleanBreakpoint(data[bp]);\n if (options) this._value[bp] = options;\n });\n }\n\n getOptionsForBreakpoint(breakpoint: BreakpointNames): BreakpointJSON {\n const result = {\n label: this._value.label,\n renderAs: this._value.renderAs ?? ActionDisplayStyle.BUTTON,\n showLabel: this._value.showLabel ?? true,\n showIcon: this._value.showIcon ?? true,\n } as BreakpointJSON;\n const bps = [...breakpoints].reverse();\n for (const bp of bps) {\n const bpData = this._value[bp];\n if (bpData) {\n if (bpData.label != null) result.label = bpData.label;\n if (bpData.renderAs != null) result.renderAs = bpData.renderAs;\n if (bpData.showIcon != null) result.showIcon = bpData.showIcon;\n if (bpData.showLabel != null) result.showLabel = bpData.showLabel;\n }\n if (bp === breakpoint) break;\n }\n return result;\n }\n\n private static cleanBreakpoint(bp?: BreakpointJSON): BreakpointJSON | null {\n if (!bp || !isObjectLike(bp)) return null;\n\n const result: BreakpointJSON = {};\n\n if (bp.renderAs !== undefined) result.renderAs = ActionDisplayStyle.fromAny(bp.renderAs);\n if (isString(bp.label)) result.label = bp.label;\n if (isBoolean(bp.showLabel)) result.showLabel = bp.showLabel;\n if (isBoolean(bp.showIcon)) result.showIcon = bp.showIcon;\n\n return Object.keys(result).length ? result : null;\n }\n}\n","import { Action as FormAction, ExecuteAction } from '@dynamicforms/vue-forms';\nimport { isString } from 'lodash-es';\n\nimport { ActionDisplayStyle } from './action-display-style';\nimport ResponsiveRenderOptions, { BreakpointsJSON } from './responsive-render-options';\n\nexport interface ActionJSON {\n // [key: `action${string}`]: ActionHandler;\n name?: string;\n label?: string;\n icon?: string;\n displayStyle?: BreakpointsJSON;\n field_name?: string;\n}\n\nexport interface ActionsJSON {\n [key: string]: ActionJSON;\n}\n\nclass Action {\n public readonly name: string;\n\n public displayStyle: ResponsiveRenderOptions;\n\n public formAction: FormAction;\n\n constructor(data: ActionJSON, formAction: FormAction) {\n if (data.name == null) throw new Error(`Action name must not be empty ${data}`);\n // any non-string or empty string must resolve as null for label\n const label = !isString(data.label) || data.label.length === 0 ? undefined : data.label;\n // any non-string or empty string must resolve as null for icon\n const icon = !isString(data.icon) || data.icon.length === 0 ? undefined : data.icon;\n\n this.name = data.name;\n this.displayStyle = new ResponsiveRenderOptions(data.displayStyle, label);\n this.formAction = formAction;\n\n this.formAction.icon = icon;\n this.formAction.label = label;\n }\n\n get label() {\n return this.formAction?.label;\n }\n\n get labelAvailable() {\n return this.formAction.label !== undefined;\n }\n\n get icon() {\n return this.formAction?.icon;\n }\n\n get iconAvailable() {\n return this.formAction.icon !== undefined;\n }\n\n static actionFormName(actionName: string): string {\n return `$action${actionName.charAt(0).toUpperCase()}${actionName.slice(1)}`;\n }\n\n private static makeFormAction(actionOrExecuteHandler?: FormAction | ExecuteAction): FormAction {\n let fa: FormAction;\n if (actionOrExecuteHandler instanceof ExecuteAction) {\n fa = FormAction.create().registerAction(actionOrExecuteHandler);\n } else if (actionOrExecuteHandler === undefined) {\n fa = FormAction.create();\n } else if (actionOrExecuteHandler instanceof FormAction) {\n fa = actionOrExecuteHandler;\n } else {\n throw new Error('actionOrExecuteHandler is not of any of supported types');\n }\n return fa;\n }\n\n static closeAction(data: ActionJSON, actionOrExecuteHandler?: FormAction | ExecuteAction) {\n return new Action(\n {\n name: 'close',\n label: 'Close', // TODO: needs translation\n icon: 'close-outline',\n displayStyle: { renderAs: ActionDisplayStyle.BUTTON, showLabel: true, showIcon: true },\n ...data, // any properties in data should overwrite properties in the constant\n },\n this.makeFormAction(actionOrExecuteHandler),\n );\n }\n\n static yesAction(data: ActionJSON, actionOrExecuteHandler?: FormAction | ExecuteAction) {\n return new Action(\n {\n name: 'yes',\n label: 'Yes', // TODO: needs translation\n icon: 'thumbs-up-outline',\n displayStyle: { renderAs: ActionDisplayStyle.BUTTON, showLabel: true, showIcon: true },\n ...data, // any properties in data should overwrite properties in the constant\n },\n this.makeFormAction(actionOrExecuteHandler),\n );\n }\n\n static noAction(data: ActionJSON, actionOrExecuteHandler?: FormAction | ExecuteAction) {\n return new Action(\n {\n name: 'no',\n label: 'No', // TODO: needs translation\n icon: 'thumbs-down-outline',\n displayStyle: { renderAs: ActionDisplayStyle.BUTTON, showLabel: true, showIcon: true },\n ...data, // any properties in data should overwrite properties in the constant\n },\n this.makeFormAction(actionOrExecuteHandler),\n );\n }\n}\n\nexport { Action };\n","<template>\n <div\n v-if=\"actionsRef.length > 0\"\n class=\"text-end\"\n :class=\"{\n 'button-group': showAsGroup === 'grouped' || showAsGroup === 'grouped-no-borders',\n 'with-border': showAsGroup === 'grouped',\n }\"\n >\n <v-btn\n v-for=\"(action, idx) in actionsRef\"\n :key=\"idx\"\n :variant=\"displayAsStyle(action) === ActionDisplayStyle.BUTTON ? 'tonal' : 'text'\"\n :elevation=\"0\"\n :class=\"idx !== -1 ? '' : 'ms-3'\"\n :size=\"buttonSize\"\n @click.stop=\"(event: MouseEvent) => action.formAction.execute(event)\"\n >\n <IonIcon v-if=\"displayIcon(action)\" class=\"action-icon\" :name=\"<string> action.formAction.icon\"/>\n <span v-if=\"displayIcon(action) && displayLabel(action)\" style=\"width: .5rem\"/>\n <span v-if=\"displayLabel(action)\">{{ labelText(action) }}</span>\n </v-btn>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, isRef, ref, Ref } from 'vue';\nimport IonIcon from 'vue-ionicon';\nimport { useDisplay } from 'vuetify';\n\nimport { Action, BreakpointJSON, BreakpointNames, ActionDisplayStyle } from './helpers';\n\ntype ShowAsGroup = 'no' | 'grouped' | 'grouped-no-borders';\n\ninterface ActionComponentProps {\n actions: Action[] | Ref<Action[]>;\n buttonSize?: string | number; // see https://vuetifyjs.com/en/api/v-btn/#props-size\n showAsGroup?: ShowAsGroup\n}\n\nconst props = withDefaults(defineProps<ActionComponentProps>(), {\n buttonSize: 'default',\n showAsGroup: 'no',\n});\n\nconst actionsRef = <Ref<Action[]>>(isRef(props.actions) ? props.actions : ref(props.actions));\n\nfunction getBreakpointName(dp: ReturnType<typeof useDisplay>): BreakpointNames {\n if (dp.xlAndUp.value) return 'xl';\n if (dp.lgAndUp.value) return 'lg';\n if (dp.mdAndUp.value) return 'md';\n if (dp.smAndUp.value) return 'sm';\n return 'xs';\n}\n\nconst display = useDisplay();\nconst displayStyle = computed(() => {\n const res: Record<string, BreakpointJSON> = {};\n res['%breakpoint%'] = getBreakpointName(display) as any;\n for (const action of actionsRef.value) {\n res[action.name] = action.displayStyle.getOptionsForBreakpoint(getBreakpointName(display));\n }\n return res;\n});\n\n/*\nfunction asText(action: Action) {\n return displayStyle.value[action.name].renderAs !== ActionDisplayStyle.BUTTON;\n}\n\nfunction buttonVariant(action: Action) {\n return displayStyle.value[action.name].renderAs === ActionDisplayStyle.BUTTON ? 'info' : 'link';\n}\n*/\n\nfunction displayIcon(action: Action): boolean {\n return (displayStyle.value[action.name].showIcon && action.iconAvailable) ?? true;\n}\n\nfunction displayLabel(action: Action): boolean {\n if (displayStyle.value[action.name].showLabel && action.labelAvailable) return true;\n return !displayIcon(action);\n}\n\nfunction displayAsStyle(action: Action) : ActionDisplayStyle {\n return displayStyle.value[action.name].renderAs ?? ActionDisplayStyle.BUTTON;\n}\n\nfunction labelText(action: Action): string {\n if (action.labelAvailable) return action.formAction.label ?? '';\n return action.name;\n}\n</script>\n\n<style scoped>\n.action-icon {\n width: 1.5em;\n height: 1.5em;\n}\n.button-group {\n border-radius: .5em;\n /* the following two make the container fit the small buttons. without them there would be a top margin */\n line-height: 0;\n height: fit-content;\n}\n.button-group .v-btn {\n border: none;\n border-radius: 0;\n margin: 0 !important;\n padding: 0 .25em;\n}\n.button-group .v-btn:first-child {\n border-start-start-radius: .5em;\n border-end-start-radius: .5em;\n}\n.button-group .v-btn:last-child {\n border-start-end-radius: .5em;\n border-end-end-radius: .5em;\n}\n.button-group.with-border {\n border: .1em solid currentColor;\n}\n.button-group.with-border .v-btn:not(:first-child) {\n border-inline-start: .1em solid currentColor;\n}\n.v-btn:not(:first-child) {\n margin-left: 1em;\n}\n</style>\n","<template>\n <v-checkbox\n v-model=\"boolValue\"\n v-bind=\"vuetifyBindings as any\"\n\n density=\"compact\"\n :indeterminate=\"indeterminate\"\n :false-value=\"false\"\n :true-value=\"true\"\n @change=\"change\"\n >\n <template #message><errors-widget :errors=\"errors\"/></template>\n </v-checkbox>\n</template>\n\n<script setup lang=\"ts\">\nimport { clone } from 'lodash-es';\nimport { computed, watch } from 'vue';\n\nimport { BaseEmits, BaseProps, defaultBaseProps, ErrorsWidget, useInputBase } from './helpers';\n\ninterface Props extends BaseProps {\n allowNull?: boolean;\n}\nconst props = withDefaults(defineProps<Props>(), { ...defaultBaseProps, allowNull: false });\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { errors, value, vuetifyBindings } = useInputBase(props, emits);\n\nconst indeterminate = computed(() => props.allowNull && (value.value == null));\n\nconst boolValue = computed({\n get(): any { return value.value; },\n set(unused: boolean) { }, // eslint-disable-line @typescript-eslint/no-unused-vars\n});\n\nwatch(value, (newVal: boolean | null) => {\n if (newVal) value.value = true;\n else if (props.allowNull && newVal == null) value.value = null;\n else value.value = false;\n}, { immediate: true });\n\nfunction change() {\n const oldVal = clone(value.value);\n if (oldVal === true) {\n value.value = props.allowNull ? null : false;\n } else {\n value.value = oldVal === false;\n }\n}\n</script>\n","<template>\n <v-menu\n v-model=\"dropdownShown\"\n location=\"top start\"\n origin=\"bottom start\"\n :close-on-content-click=\"false\"\n >\n <template #activator=\"{ props: menuProps }\">\n <v-text-field\n v-model=\"value\"\n v-bind=\"{ ...vuetifyBindings, ...menuProps } as any\"\n :clearable=\"allowNull\"\n type=\"text\"\n variant=\"underlined\"\n :rules=\"rules\"\n >\n <template #message><errors-widget :errors=\"errors\"/></template>\n <template #prepend-inner>\n <div\n style=\"width: 24px; height: 24px; border-radius: 4px; border: 1px solid #ccc;\"\n :style=\"{ backgroundColor: value }\"\n />\n </template>\n </v-text-field>\n </template>\n <v-color-picker\n v-model=\"value\"\n mode=\"hexa\"\n @update:model-value=\"handleClose\"\n />\n </v-menu>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\n\nimport { BaseEmits, BaseProps, defaultBaseProps, ErrorsWidget, useInputBase } from './helpers';\n\ninterface Props extends BaseProps {\n allowNull?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), { ...defaultBaseProps, allowNull: false });\n\ninterface Emits extends BaseEmits {}\n\nconst emits = defineEmits<Emits>();\n\nconst { errors, value, vuetifyBindings } = useInputBase(props, emits);\nconst dropdownShown = ref(false);\n\nconst rules = computed<((val: string) => boolean | string)[]>(() => ([\n (val: string) => {\n if (!val && props.allowNull) return true;\n const regex = /^#?([a-fA-F0-9]{6}[a-fA-F0-9]{0,2})$/;\n return regex.test(val) ? true : 'Not a valid hex string.';\n },\n]));\n\nfunction handleClose() {\n dropdownShown.value = false;\n}\n</script>\n","export function pad(n) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n return String(n).padStart(length, '0');\n}\n//# sourceMappingURL=util.js.map","export const IN_BROWSER = typeof window !== 'undefined';\nexport const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;\nexport const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);\nexport const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;\n//# sourceMappingURL=globals.js.map","function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }\nfunction _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); }\nfunction _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }\nfunction _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }\nfunction _assertClassBrand(e, t, n) { if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError(\"Private element is not present on this object\"); }\n// Utilities\nimport { capitalize, Comment, computed, Fragment, isVNode, reactive, shallowRef, toRefs, unref, watchEffect } from 'vue';\nimport { IN_BROWSER } from \"./globals.js\"; // Types\nexport function getNestedValue(obj, path, fallback) {\n const last = path.length - 1;\n if (last < 0) return obj === undefined ? fallback : obj;\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback;\n }\n obj = obj[path[i]];\n }\n if (obj == null) return fallback;\n return obj[path[last]] === undefined ? fallback : obj[path[last]];\n}\nexport function deepEqual(a, b) {\n if (a === b) return true;\n if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n // If the values are Date, compare them as timestamps\n return false;\n }\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false;\n }\n const props = Object.keys(a);\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false;\n }\n return props.every(p => deepEqual(a[p], b[p]));\n}\nexport function getObjectValueByPath(obj, path, fallback) {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback;\n if (obj[path] !== undefined) return obj[path];\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback);\n}\nexport function getPropertyFromItem(item, property, fallback) {\n if (property === true) return item === undefined ? fallback : item;\n if (property == null || typeof property === 'boolean') return fallback;\n if (item !== Object(item)) {\n if (typeof property !== 'function') return fallback;\n const value = property(item, fallback);\n return typeof value === 'undefined' ? fallback : value;\n }\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback);\n if (Array.isArray(property)) return getNestedValue(item, property, fallback);\n if (typeof property !== 'function') return fallback;\n const value = property(item, fallback);\n return typeof value === 'undefined' ? fallback : value;\n}\nexport function createRange(length) {\n let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return Array.from({\n length\n }, (v, k) => start + k);\n}\nexport function getZIndex(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0;\n const index = Number(window.getComputedStyle(el).getPropertyValue('z-index'));\n if (!index) return getZIndex(el.parentNode);\n return index;\n}\nexport function convertToUnit(str) {\n let unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'px';\n if (str == null || str === '') {\n return undefined;\n }\n const num = Number(str);\n if (isNaN(num)) {\n return String(str);\n } else if (!isFinite(num)) {\n return undefined;\n } else {\n return `${num}${unit}`;\n }\n}\nexport function isObject(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n}\nexport function isPlainObject(obj) {\n let proto;\n return obj !== null && typeof obj === 'object' && ((proto = Object.getPrototypeOf(obj)) === Object.prototype || proto === null);\n}\nexport function refElement(obj) {\n if (obj && '$el' in obj) {\n const el = obj.$el;\n if (el?.nodeType === Node.TEXT_NODE) {\n // Multi-root component, use the first element\n return el.nextElementSibling;\n }\n return el;\n }\n return obj;\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16\n});\nexport const keyValues = Object.freeze({\n enter: 'Enter',\n tab: 'Tab',\n delete: 'Delete',\n esc: 'Escape',\n space: 'Space',\n up: 'ArrowUp',\n down: 'ArrowDown',\n left: 'ArrowLeft',\n right: 'ArrowRight',\n end: 'End',\n home: 'Home',\n del: 'Delete',\n backspace: 'Backspace',\n insert: 'Insert',\n pageup: 'PageUp',\n pagedown: 'PageDown',\n shift: 'Shift'\n});\nexport function keys(o) {\n return Object.keys(o);\n}\nexport function has(obj, key) {\n return key.every(k => obj.hasOwnProperty(k));\n}\n// Array of keys\nexport function pick(obj, paths) {\n const found = {};\n for (const key of paths) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n found[key] = obj[key];\n }\n }\n return found;\n}\n\n// Array of keys\n\n// Array of keys or RegExp to test keys against\n\nexport function pickWithRest(obj, paths, exclude) {\n const found = Object.create(null);\n const rest = Object.create(null);\n for (const key in obj) {\n if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {\n found[key] = obj[key];\n } else {\n rest[key] = obj[key];\n }\n }\n return [found, rest];\n}\nexport function omit(obj, exclude) {\n const clone = {\n ...obj\n };\n exclude.forEach(prop => delete clone[prop]);\n return clone;\n}\nconst onRE = /^on[^a-z]/;\nexport const isOn = key => onRE.test(key);\nconst bubblingEvents = ['onAfterscriptexecute', 'onAnimationcancel', 'onAnimationend', 'onAnimationiteration', 'onAnimationstart', 'onAuxclick', 'onBeforeinput', 'onBeforescriptexecute', 'onChange', 'onClick', 'onCompositionend', 'onCompositionstart', 'onCompositionupdate', 'onContextmenu', 'onCopy', 'onCut', 'onDblclick', 'onFocusin', 'onFocusout', 'onFullscreenchange', 'onFullscreenerror', 'onGesturechange', 'onGestureend', 'onGesturestart', 'onGotpointercapture', 'onInput', 'onKeydown', 'onKeypress', 'onKeyup', 'onLostpointercapture', 'onMousedown', 'onMousemove', 'onMouseout', 'onMouseover', 'onMouseup', 'onMousewheel', 'onPaste', 'onPointercancel', 'onPointerdown', 'onPointerenter', 'onPointerleave', 'onPointermove', 'onPointerout', 'onPointerover', 'onPointerup', 'onReset', 'onSelect', 'onSubmit', 'onTouchcancel', 'onTouchend', 'onTouchmove', 'onTouchstart', 'onTransitioncancel', 'onTransitionend', 'onTransitionrun', 'onTransitionstart', 'onWheel'];\nconst compositionIgnoreKeys = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft', 'Enter', 'Escape', 'Tab', ' '];\nexport function isComposingIgnoreKey(e) {\n return e.isComposing && compositionIgnoreKeys.includes(e.key);\n}\n\n/**\n * Filter attributes that should be applied to\n * the root element of an input component. Remaining\n * attributes should be passed to the <input> element inside.\n */\nexport function filterInputAttrs(attrs) {\n const [events, props] = pickWithRest(attrs, [onRE]);\n const inputEvents = omit(events, bubblingEvents);\n const [rootAttrs, inputAttrs] = pickWithRest(props, ['class', 'style', 'id', /^data-/]);\n Object.assign(rootAttrs, events);\n Object.assign(inputAttrs, inputEvents);\n return [rootAttrs, inputAttrs];\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff(a, b) {\n const diff = [];\n for (let i = 0; i < b.length; i++) {\n if (!a.includes(b[i])) diff.push(b[i]);\n }\n return diff;\n}\nexport function wrapInArray(v) {\n return v == null ? [] : Array.isArray(v) ? v : [v];\n}\nexport function defaultFilter(value, search, item) {\n return value != null && search != null && typeof value !== 'boolean' && value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1;\n}\nexport function debounce(fn, delay) {\n let timeoutId = 0;\n const wrap = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), unref(delay));\n };\n wrap.clear = () => {\n clearTimeout(timeoutId);\n };\n wrap.immediate = fn;\n return wrap;\n}\nexport function throttle(fn, limit) {\n let throttling = false;\n return function () {\n if (!throttling) {\n throttling = true;\n setTimeout(() => throttling = false, limit);\n return fn(...arguments);\n }\n };\n}\nexport function clamp(value) {\n let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n return Math.max(min, Math.min(max, value));\n}\nexport function getDecimals(value) {\n const trimmedStr = value.toString().trim();\n return trimmedStr.includes('.') ? trimmedStr.length - trimmedStr.indexOf('.') - 1 : 0;\n}\nexport function padEnd(str, length) {\n let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';\n return str + char.repeat(Math.max(0, length - str.length));\n}\nexport function padStart(str, length) {\n let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';\n return char.repeat(Math.max(0, length - str.length)) + str;\n}\nexport function chunk(str) {\n let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n const chunked = [];\n let index = 0;\n while (index < str.length) {\n chunked.push(str.substr(index, size));\n index += size;\n }\n return chunked;\n}\nexport function chunkArray(array) {\n let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return Array.from({\n length: Math.ceil(array.length / size)\n }, (v, i) => array.slice(i * size, i * size + size));\n}\nexport function humanReadableFileSize(bytes) {\n let base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n if (bytes < base) {\n return `${bytes} B`;\n }\n const prefix = base === 1024 ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G'];\n let unit = -1;\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base;\n ++unit;\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`;\n}\nexport function mergeDeep() {\n let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let arrayFn = arguments.length > 2 ? arguments[2] : undefined;\n const out = {};\n for (const key in source) {\n out[key] = source[key];\n }\n for (const key in target) {\n const sourceProperty = source[key];\n const targetProperty = target[key];\n\n // Only continue deep merging if\n // both properties are plain objects\n if (isPlainObject(sourceProperty) && isPlainObject(targetProperty)) {\n out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn);\n continue;\n }\n if (arrayFn && Array.isArray(sourceProperty) && Array.isArray(targetProperty)) {\n out[key] = arrayFn(sourceProperty, targetProperty);\n continue;\n }\n out[key] = targetProperty;\n }\n return out;\n}\nexport function flattenFragments(nodes) {\n return nodes.map(node => {\n if (node.type === Fragment) {\n return flattenFragments(node.children);\n } else {\n return node;\n }\n }).flat();\n}\nexport function toKebabCase() {\n let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str);\n const kebab = str.replace(/[^a-z]/gi, '-').replace(/\\B([A-Z])/g, '-$1').toLowerCase();\n toKebabCase.cache.set(str, kebab);\n return kebab;\n}\ntoKebabCase.cache = new Map();\nexport function findChildrenWithProvide(key, vnode) {\n if (!vnode || typeof vnode !== 'object') return [];\n if (Array.isArray(vnode)) {\n return vnode.map(child => findChildrenWithProvide(key, child)).flat(1);\n } else if (vnode.suspense) {\n return findChildrenWithProvide(key, vnode.ssContent);\n } else if (Array.isArray(vnode.children)) {\n return vnode.children.map(child => findChildrenWithProvide(key, child)).flat(1);\n } else if (vnode.component) {\n if (Object.getOwnPropertySymbols(vnode.component.provides).includes(key)) {\n return [vnode.component];\n } else if (vnode.component.subTree) {\n return findChildrenWithProvide(key, vnode.component.subTree).flat(1);\n }\n }\n return [];\n}\nvar _arr = /*#__PURE__*/new WeakMap();\nvar _pointer = /*#__PURE__*/new WeakMap();\nexport class CircularBuffer {\n constructor(size) {\n _classPrivateFieldInitSpec(this, _arr, []);\n _classPrivateFieldInitSpec(this, _pointer, 0);\n this.size = size;\n }\n push(val) {\n _classPrivateFieldGet(_arr, this)[_classPrivateFieldGet(_pointer, this)] = val;\n _classPrivateFieldSet(_pointer, this, (_classPrivateFieldGet(_pointer, this) + 1) % this.size);\n }\n values() {\n return _classPrivateFieldGet(_arr, this).slice(_classPrivateFieldGet(_pointer, this)).concat(_classPrivateFieldGet(_arr, this).slice(0, _classPrivateFieldGet(_pointer, this)));\n }\n}\nexport function getEventCoordinates(e) {\n if ('touches' in e) {\n return {\n clientX: e.touches[0].clientX,\n clientY: e.touches[0].clientY\n };\n }\n return {\n clientX: e.clientX,\n clientY: e.clientY\n };\n}\n\n// Only allow a single return type\n\n/**\n * Convert a computed ref to a record of refs.\n * The getter function must always return an object with the same keys.\n */\n\nexport function destructComputed(getter) {\n const refs = reactive({});\n const base = computed(getter);\n watchEffect(() => {\n for (const key in base.value) {\n refs[key] = base.value[key];\n }\n }, {\n flush: 'sync'\n });\n return toRefs(refs);\n}\n\n/** Array.includes but value can be any type */\nexport function includes(arr, val) {\n return arr.includes(val);\n}\nexport function eventName(propName) {\n return propName[2].toLowerCase() + propName.slice(3);\n}\n\n// TODO: this should be an array but vue's types don't accept arrays: vuejs/core#8025\n\nexport const EventProp = () => [Function, Array];\nexport function hasEvent(props, name) {\n name = 'on' + capitalize(name);\n return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);\n}\nexport function callEvent(handler) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n if (Array.isArray(handler)) {\n for (const h of handler) {\n h(...args);\n }\n } else if (typeof handler === 'function') {\n handler(...args);\n }\n}\nexport function focusableChildren(el) {\n let filterByTabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const targets = ['button', '[href]', 'input:not([type=\"hidden\"])', 'select', 'textarea', '[tabindex]'].map(s => `${s}${filterByTabIndex ? ':not([tabindex=\"-1\"])' : ''}:not([disabled])`).join(', ');\n return [...el.querySelectorAll(targets)];\n}\nexport function getNextElement(elements, location, condition) {\n let _el;\n let idx = elements.indexOf(document.activeElement);\n const inc = location === 'next' ? 1 : -1;\n do {\n idx += inc;\n _el = elements[idx];\n } while ((!_el || _el.offsetParent == null || !(condition?.(_el) ?? true)) && idx < elements.length && idx >= 0);\n return _el;\n}\nexport function focusChild(el, location) {\n const focusable = focusableChildren(el);\n if (!location) {\n if (el === document.activeElement || !el.contains(document.activeElement)) {\n focusable[0]?.focus();\n }\n } else if (location === 'first') {\n focusable[0]?.focus();\n } else if (location === 'last') {\n focusable.at(-1)?.focus();\n } else if (typeof location === 'number') {\n focusable[location]?.focus();\n } else {\n const _el = getNextElement(focusable, location);\n if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');\n }\n}\nexport function isEmpty(val) {\n return val === null || val === undefined || typeof val === 'string' && val.trim() === '';\n}\nexport function noop() {}\n\n/** Returns null if the selector is not supported or we can't check */\nexport function matchesSelector(el, selector) {\n const supportsSelector = IN_BROWSER && typeof CSS !== 'undefined' && typeof CSS.supports !== 'undefined' && CSS.supports(`selector(${selector})`);\n if (!supportsSelector) return null;\n try {\n return !!el && el.matches(selector);\n } catch (err) {\n return null;\n }\n}\nexport function ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n return child.type !== Fragment || ensureValidVNode(child.children);\n }) ? vnodes : null;\n}\nexport function defer(timeout, cb) {\n if (!IN_BROWSER || timeout === 0) {\n cb();\n return () => {};\n }\n const timeoutId = window.setTimeout(cb, timeout);\n return () => window.clearTimeout(timeoutId);\n}\nexport function isClickInsideElement(event, targetDiv) {\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const divRect = targetDiv.getBoundingClientRect();\n const divLeft = divRect.left;\n const divTop = divRect.top;\n const divRight = divRect.right;\n const divBottom = divRect.bottom;\n return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;\n}\nexport function templateRef() {\n const el = shallowRef();\n const fn = target => {\n el.value = target;\n };\n Object.defineProperty(fn, 'value', {\n enumerable: true,\n get: () => el.value,\n set: val => el.value = val\n });\n Object.defineProperty(fn, 'el', {\n enumerable: true,\n get: () => refElement(el.value)\n });\n return fn;\n}\nexport function checkPrintable(e) {\n const isPrintableChar = e.key.length === 1;\n const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;\n return isPrintableChar && noModifier;\n}\nexport function isPrimitive(value) {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint';\n}\n//# sourceMappingURL=helpers.js.map","// Utilities\nimport { includes } from \"./helpers.js\";\nconst block = ['top', 'bottom'];\nconst inline = ['start', 'end', 'left', 'right'];\n/** Parse a raw anchor string into an object */\nexport function parseAnchor(anchor, isRtl) {\n let [side, align] = anchor.split(' ');\n if (!align) {\n align = includes(block, side) ? 'start' : includes(inline, side) ? 'top' : 'center';\n }\n return {\n side: toPhysical(side, isRtl),\n align: toPhysical(align, isRtl)\n };\n}\nexport function toPhysical(str, isRtl) {\n if (str === 'start') return isRtl ? 'right' : 'left';\n if (str === 'end') return isRtl ? 'left' : 'right';\n return str;\n}\nexport function flipSide(anchor) {\n return {\n side: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.side],\n align: anchor.align\n };\n}\nexport function flipAlign(anchor) {\n return {\n side: anchor.side,\n align: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.align]\n };\n}\nexport function flipCorner(anchor) {\n return {\n side: anchor.align,\n align: anchor.side\n };\n}\nexport function getAxis(anchor) {\n return includes(block, anchor.side) ? 'y' : 'x';\n}\n//# sourceMappingURL=anchor.js.map","/**\n * WCAG 3.0 APCA perceptual contrast algorithm from https://github.com/Myndex/SAPC-APCA\n * @licence https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @see https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup\n */\n// Types\n\n// MAGICAL NUMBERS\n\n// sRGB Conversion to Relative Luminance (Y)\n\n// Transfer Curve (aka \"Gamma\") for sRGB linearization\n// Simple power curve vs piecewise described in docs\n// Essentially, 2.4 best models actual display\n// characteristics in combination with the total method\nconst mainTRC = 2.4;\nconst Rco = 0.2126729; // sRGB Red Coefficient (from matrix)\nconst Gco = 0.7151522; // sRGB Green Coefficient (from matrix)\nconst Bco = 0.0721750; // sRGB Blue Coefficient (from matrix)\n\n// For Finding Raw SAPC Contrast from Relative Luminance (Y)\n\n// Constants for SAPC Power Curve Exponents\n// One pair for normal text, and one for reverse\n// These are the \"beating heart\" of SAPC\nconst normBG = 0.55;\nconst normTXT = 0.58;\nconst revTXT = 0.57;\nconst revBG = 0.62;\n\n// For Clamping and Scaling Values\n\nconst blkThrs = 0.03; // Level that triggers the soft black clamp\nconst blkClmp = 1.45; // Exponent for the soft black clamp curve\nconst deltaYmin = 0.0005; // Lint trap\nconst scaleBoW = 1.25; // Scaling for dark text on light\nconst scaleWoB = 1.25; // Scaling for light text on dark\nconst loConThresh = 0.078; // Threshold for new simple offset scale\nconst loConFactor = 12.82051282051282; // = 1/0.078,\nconst loConOffset = 0.06; // The simple offset\nconst loClip = 0.001; // Output clip (lint trap #2)\n\nexport function APCAcontrast(text, background) {\n // Linearize sRGB\n const Rtxt = (text.r / 255) ** mainTRC;\n const Gtxt = (text.g / 255) ** mainTRC;\n const Btxt = (text.b / 255) ** mainTRC;\n const Rbg = (background.r / 255) ** mainTRC;\n const Gbg = (background.g / 255) ** mainTRC;\n const Bbg = (background.b / 255) ** mainTRC;\n\n // Apply the standard coefficients and sum to Y\n let Ytxt = Rtxt * Rco + Gtxt * Gco + Btxt * Bco;\n let Ybg = Rbg * Rco + Gbg * Gco + Bbg * Bco;\n\n // Soft clamp Y when near black.\n // Now clamping all colors to prevent crossover errors\n if (Ytxt <= blkThrs) Ytxt += (blkThrs - Ytxt) ** blkClmp;\n if (Ybg <= blkThrs) Ybg += (blkThrs - Ybg) ** blkClmp;\n\n // Return 0 Early for extremely low ∆Y (lint trap #1)\n if (Math.abs(Ybg - Ytxt) < deltaYmin) return 0.0;\n\n // SAPC CONTRAST\n\n let outputContrast; // For weighted final values\n if (Ybg > Ytxt) {\n // For normal polarity, black text on white\n // Calculate the SAPC contrast value and scale\n\n const SAPC = (Ybg ** normBG - Ytxt ** normTXT) * scaleBoW;\n\n // NEW! SAPC SmoothScale™\n // Low Contrast Smooth Scale Rollout to prevent polarity reversal\n // and also a low clip for very low contrasts (lint trap #2)\n // much of this is for very low contrasts, less than 10\n // therefore for most reversing needs, only loConOffset is important\n outputContrast = SAPC < loClip ? 0.0 : SAPC < loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC - loConOffset;\n } else {\n // For reverse polarity, light text on dark\n // WoB should always return negative value.\n\n const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;\n outputContrast = SAPC > -loClip ? 0.0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;\n }\n return outputContrast * 100;\n}\n//# sourceMappingURL=APCA.js.map","/* eslint-disable no-console */\n\n// Utilities\nimport { warn } from 'vue';\nexport function consoleWarn(message) {\n warn(`Vuetify: ${message}`);\n}\nexport function consoleError(message) {\n warn(`Vuetify error: ${message}`);\n}\nexport function deprecate(original, replacement) {\n replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;\n warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);\n}\nexport function breaking(original, replacement) {\n // warn(`[Vuetify BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`)\n}\nexport function removed(original) {\n // warn(`[Vuetify REMOVED] '${original}' has been removed. You can safely omit it.`)\n}\n//# sourceMappingURL=console.js.map","// Utilities\nimport { APCAcontrast } from \"./color/APCA.js\";\nimport { consoleWarn } from \"./console.js\";\nimport { chunk, has, padEnd } from \"./helpers.js\";\nimport * as CIELAB from \"./color/transformCIELAB.js\";\nimport * as sRGB from \"./color/transformSRGB.js\"; // Types\nexport function isCssColor(color) {\n return !!color && /^(#|var\\(--|(rgb|hsl)a?\\()/.test(color);\n}\nexport function isParsableColor(color) {\n return isCssColor(color) && !/^((rgb|hsl)a?\\()?var\\(--/.test(color);\n}\nconst cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\\((?<values>.+)\\)/;\nconst mappers = {\n rgb: (r, g, b, a) => ({\n r,\n g,\n b,\n a\n }),\n rgba: (r, g, b, a) => ({\n r,\n g,\n b,\n a\n }),\n hsl: (h, s, l, a) => HSLtoRGB({\n h,\n s,\n l,\n a\n }),\n hsla: (h, s, l, a) => HSLtoRGB({\n h,\n s,\n l,\n a\n }),\n hsv: (h, s, v, a) => HSVtoRGB({\n h,\n s,\n v,\n a\n }),\n hsva: (h, s, v, a) => HSVtoRGB({\n h,\n s,\n v,\n a\n })\n};\nexport function parseColor(color) {\n if (typeof color === 'number') {\n if (isNaN(color) || color < 0 || color > 0xFFFFFF) {\n // int can't have opacity\n consoleWarn(`'${color}' is not a valid hex color`);\n }\n return {\n r: (color & 0xFF0000) >> 16,\n g: (color & 0xFF00) >> 8,\n b: color & 0xFF\n };\n } else if (typeof color === 'string' && cssColorRe.test(color)) {\n const {\n groups\n } = color.match(cssColorRe);\n const {\n fn,\n values\n } = groups;\n const realValues = values.split(/,\\s*|\\s*\\/\\s*|\\s+/).map((v, i) => {\n if (v.endsWith('%') ||\n // unitless slv are %\n i > 0 && i < 3 && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {\n return parseFloat(v) / 100;\n } else {\n return parseFloat(v);\n }\n });\n return mappers[fn](...realValues);\n } else if (typeof color === 'string') {\n let hex = color.startsWith('#') ? color.slice(1) : color;\n if ([3, 4].includes(hex.length)) {\n hex = hex.split('').map(char => char + char).join('');\n } else if (![6, 8].includes(hex.length)) {\n consoleWarn(`'${color}' is not a valid hex(a) color`);\n }\n const int = parseInt(hex, 16);\n if (isNaN(int) || int < 0 || int > 0xFFFFFFFF) {\n consoleWarn(`'${color}' is not a valid hex(a) color`);\n }\n return HexToRGB(hex);\n } else if (typeof color === 'object') {\n if (has(color, ['r', 'g', 'b'])) {\n return color;\n } else if (has(color, ['h', 's', 'l'])) {\n return HSVtoRGB(HSLtoHSV(color));\n } else if (has(color, ['h', 's', 'v'])) {\n return HSVtoRGB(color);\n }\n }\n throw new TypeError(`Invalid color: ${color == null ? color : String(color) || color.constructor.name}\\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);\n}\nexport function RGBToInt(color) {\n return (color.r << 16) + (color.g << 8) + color.b;\n}\nexport function classToHex(color, colors, currentTheme) {\n const [colorName, colorModifier] = color.toString().trim().replace('-', '').split(' ', 2);\n let hexColor = '';\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier];\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base;\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName];\n }\n return hexColor;\n}\n\n/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function HSVtoRGB(hsva) {\n const {\n h,\n s,\n v,\n a\n } = hsva;\n const f = n => {\n const k = (n + h / 60) % 6;\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n };\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255));\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n a\n };\n}\nexport function HSLtoRGB(hsla) {\n return HSVtoRGB(HSLtoHSV(hsla));\n}\n\n/** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */\nexport function RGBtoHSV(rgba) {\n if (!rgba) return {\n h: 0,\n s: 1,\n v: 1,\n a: 1\n };\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + (g - b) / (max - min));\n } else if (max === g) {\n h = 60 * (2 + (b - r) / (max - min));\n } else if (max === b) {\n h = 60 * (4 + (r - g) / (max - min));\n }\n }\n if (h < 0) h = h + 360;\n const s = max === 0 ? 0 : (max - min) / max;\n const hsv = [h, s, max];\n return {\n h: hsv[0],\n s: hsv[1],\n v: hsv[2],\n a: rgba.a\n };\n}\nexport function HSVtoHSL(hsva) {\n const {\n h,\n s,\n v,\n a\n } = hsva;\n const l = v - v * s / 2;\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l);\n return {\n h,\n s: sprime,\n l,\n a\n };\n}\nexport function HSLtoHSV(hsl) {\n const {\n h,\n s,\n l,\n a\n } = hsl;\n const v = l + s * Math.min(l, 1 - l);\n const sprime = v === 0 ? 0 : 2 - 2 * l / v;\n return {\n h,\n s: sprime,\n v,\n a\n };\n}\nexport function RGBtoCSS(_ref) {\n let {\n r,\n g,\n b,\n a\n } = _ref;\n return a === undefined ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${a})`;\n}\nexport function HSVtoCSS(hsva) {\n return RGBtoCSS(HSVtoRGB(hsva));\n}\nfunction toHex(v) {\n const h = Math.round(v).toString(16);\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase();\n}\nexport function RGBtoHex(_ref2) {\n let {\n r,\n g,\n b,\n a\n } = _ref2;\n return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : ''].join('')}`;\n}\nexport function HexToRGB(hex) {\n hex = parseHex(hex);\n let [r, g, b, a] = chunk(hex, 2).map(c => parseInt(c, 16));\n a = a === undefined ? a : a / 255;\n return {\n r,\n g,\n b,\n a\n };\n}\nexport function HexToHSV(hex) {\n const rgb = HexToRGB(hex);\n return RGBtoHSV(rgb);\n}\nexport function HSVtoHex(hsva) {\n return RGBtoHex(HSVtoRGB(hsva));\n}\nexport function parseHex(hex) {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n hex = hex.replace(/([^0-9a-f])/gi, 'F');\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('');\n }\n if (hex.length !== 6) {\n hex = padEnd(padEnd(hex, 6), 8, 'F');\n }\n return hex;\n}\nexport function parseGradient(gradient, colors, currentTheme) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x;\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGB(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',');\n });\n}\nexport function lighten(value, amount) {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value));\n lab[0] = lab[0] + amount * 10;\n return sRGB.fromXYZ(CIELAB.toXYZ(lab));\n}\nexport function darken(value, amount) {\n const lab = CIELAB.fromXYZ(sRGB.toXYZ(value));\n lab[0] = lab[0] - amount * 10;\n return sRGB.fromXYZ(CIELAB.toXYZ(lab));\n}\n\n/**\n * Calculate the relative luminance of a given color\n * @see https://www.w3.org/TR/WCAG20/#relativeluminancedef\n */\nexport function getLuma(color) {\n const rgb = parseColor(color);\n return sRGB.toXYZ(rgb)[1];\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n */\nexport function getContrast(first, second) {\n const l1 = getLuma(first);\n const l2 = getLuma(second);\n const light = Math.max(l1, l2);\n const dark = Math.min(l1, l2);\n return (light + 0.05) / (dark + 0.05);\n}\nexport function getForeground(color) {\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), parseColor(color)));\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), parseColor(color)));\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n return whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000';\n}\n//# sourceMappingURL=colorUtils.js.map","// Types\n// eslint-disable-line vue/prefer-import-from-vue\n\n/**\n * Creates a factory function for props definitions.\n * This is used to define props in a composable then override\n * default values in an implementing component.\n *\n * @example Simplified signature\n * (props: Props) => (defaults?: Record<keyof props, any>) => Props\n *\n * @example Usage\n * const makeProps = propsFactory({\n * foo: String,\n * })\n *\n * defineComponent({\n * props: {\n * ...makeProps({\n * foo: 'a',\n * }),\n * },\n * setup (props) {\n * // would be \"string | undefined\", now \"string\" because a default has been provided\n * props.foo\n * },\n * }\n */\n\nexport function propsFactory(props, source) {\n return defaults => {\n return Object.keys(props).reduce((obj, prop) => {\n const isObjectDefinition = typeof props[prop] === 'object' && props[prop] != null && !Array.isArray(props[prop]);\n const definition = isObjectDefinition ? props[prop] : {\n type: props[prop]\n };\n if (defaults && prop in defaults) {\n obj[prop] = {\n ...definition,\n default: defaults[prop]\n };\n } else {\n obj[prop] = definition;\n }\n if (source && !obj[prop].source) {\n obj[prop].source = source;\n }\n return obj;\n }, {});\n };\n}\n\n/**\n * Like `Partial<T>` but doesn't care what the value is\n */\n\n// Copied from Vue\n//# sourceMappingURL=propsFactory.js.map","// Utilities\nimport { propsFactory } from \"../util/propsFactory.js\"; // Types\n// Composables\nexport const makeComponentProps = propsFactory({\n class: [String, Array, Object],\n style: {\n type: [String, Array, Object],\n default: null\n }\n}, 'component');\n//# sourceMappingURL=component.js.map","// Utilities\nimport { getCurrentInstance as _getCurrentInstance } from 'vue';\nimport { toKebabCase } from \"./helpers.js\";\nexport function getCurrentInstance(name, message) {\n const vm = _getCurrentInstance();\n if (!vm) {\n throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);\n }\n return vm;\n}\nexport function getCurrentInstanceName() {\n let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';\n const vm = getCurrentInstance(name).type;\n return toKebabCase(vm?.aliasName || vm?.name);\n}\n//# sourceMappingURL=getCurrentInstance.js.map","// Utilities\nimport { getCurrentInstance } from \"./getCurrentInstance.js\"; // Types\nexport function injectSelf(key) {\n let vm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstance('injectSelf');\n const {\n provides\n } = vm;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n return undefined;\n}\n//# sourceMappingURL=injectSelf.js.map","// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue';\nimport { getCurrentInstance } from \"../util/getCurrentInstance.js\";\nimport { mergeDeep, toKebabCase } from \"../util/helpers.js\";\nimport { injectSelf } from \"../util/injectSelf.js\"; // Types\nexport const DefaultsSymbol = Symbol.for('vuetify:defaults');\nexport function createDefaults(options) {\n return ref(options);\n}\nexport function injectDefaults() {\n const defaults = inject(DefaultsSymbol);\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');\n return defaults;\n}\nexport function provideDefaults(defaults, options) {\n const injectedDefaults = injectDefaults();\n const providedDefaults = ref(defaults);\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled);\n if (disabled) return injectedDefaults.value;\n const scoped = unref(options?.scoped);\n const reset = unref(options?.reset);\n const root = unref(options?.root);\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value;\n let properties = mergeDeep(providedDefaults.value, {\n prev: injectedDefaults.value\n });\n if (scoped) return properties;\n if (reset || root) {\n const len = Number(reset || Infinity);\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break;\n }\n properties = properties.prev;\n }\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, {\n prev: properties\n }), properties[root]);\n }\n return properties;\n }\n return properties.prev ? mergeDeep(properties.prev, properties) : properties;\n });\n provide(DefaultsSymbol, newDefaults);\n return newDefaults;\n}\nfunction propIsDefined(vnode, prop) {\n return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';\n}\nexport function internalUseDefaults() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let name = arguments.length > 1 ? arguments[1] : undefined;\n let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();\n const vm = getCurrentInstance('useDefaults');\n name = name ?? vm.type.name ?? vm.type.__name;\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name');\n }\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name]);\n const _props = new Proxy(props, {\n get(target, prop) {\n const propValue = Reflect.get(target, prop);\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null);\n } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {\n return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;\n }\n return propValue;\n }\n });\n const _subcomponentDefaults = shallowRef();\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value).filter(_ref => {\n let [key] = _ref;\n return key.startsWith(key[0].toUpperCase());\n });\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined;\n } else {\n _subcomponentDefaults.value = undefined;\n }\n });\n function provideSubDefaults() {\n const injected = injectSelf(DefaultsSymbol, vm);\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(injected?.value ?? {}, _subcomponentDefaults.value) : injected?.value;\n }));\n }\n return {\n props: _props,\n provideSubDefaults\n };\n}\nexport function useDefaults() {\n let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let name = arguments.length > 1 ? arguments[1] : undefined;\n const {\n props: _props,\n provideSubDefaults\n } = internalUseDefaults(props, name);\n provideSubDefaults();\n return _props;\n}\n//# sourceMappingURL=defaults.js.map","// Composables\nimport { injectDefaults, internalUseDefaults } from \"../composables/defaults.js\"; // Utilities\nimport { defineComponent as _defineComponent // eslint-disable-line no-restricted-imports\n} from 'vue';\nimport { consoleWarn } from \"./console.js\";\nimport { pick } from \"./helpers.js\";\nimport { propsFactory } from \"./propsFactory.js\"; // Types\n// No props\n// Object Props\n// Implementation\nexport function defineComponent(options) {\n options._setup = options._setup ?? options.setup;\n if (!options.name) {\n consoleWarn('The component is missing an explicit name, unable to generate default prop value');\n return options;\n }\n if (options._setup) {\n options.props = propsFactory(options.props ?? {}, options.name)();\n const propKeys = Object.keys(options.props).filter(key => key !== 'class' && key !== 'style');\n options.filterProps = function filterProps(props) {\n return pick(props, propKeys);\n };\n options.props._as = String;\n options.setup = function setup(props, ctx) {\n const defaults = injectDefaults();\n\n // Skip props proxy if defaults are not provided\n if (!defaults.value) return options._setup(props, ctx);\n const {\n props: _props,\n provideSubDefaults\n } = internalUseDefaults(props, props._as ?? options.name, defaults);\n const setupBindings = options._setup(_props, ctx);\n provideSubDefaults();\n return setupBindings;\n };\n }\n return options;\n}\n\n// No argument - simple default slot\n\n// Generic constructor argument - generic props and slots\n\n// Slots argument - simple slots\n\n// Implementation\nexport function genericComponent() {\n let exposeDefaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n return options => (exposeDefaults ? defineComponent : _defineComponent)(options);\n}\nexport function defineFunctionalComponent(props, render) {\n render.props = props;\n return render;\n}\n\n// Adds a filterProps method to the component options\n\n// https://github.com/vuejs/core/pull/10557\n\n// not a vue Component\n//# sourceMappingURL=defineComponent.js.map","// Composables\nimport { makeComponentProps } from \"../composables/component.js\"; // Utilities\nimport { camelize, capitalize, h } from 'vue';\nimport { genericComponent } from \"./defineComponent.js\";\nexport function createSimpleFunctional(klass) {\n let tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'div';\n let name = arguments.length > 2 ? arguments[2] : undefined;\n return genericComponent()({\n name: name ?? capitalize(camelize(klass.replace(/__/g, '-'))),\n props: {\n tag: {\n type: String,\n default: tag\n },\n ...makeComponentProps()\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n return () => {\n return h(props.tag, {\n class: [klass, props.class],\n style: props.style\n }, slots.default?.());\n };\n }\n });\n}\n//# sourceMappingURL=createSimpleFunctional.js.map","// Utilities\nimport { getCurrentInstance } from \"./getCurrentInstance.js\"; // Types\nexport function useRender(render) {\n const vm = getCurrentInstance('useRender');\n vm.render = render;\n}\n//# sourceMappingURL=useRender.js.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { destructComputed, getForeground, isCssColor, isParsableColor, parseColor } from \"../util/index.js\"; // Types\n// Composables\nexport function useColor(colors) {\n return destructComputed(() => {\n const classes = [];\n const styles = {};\n if (colors.value.background) {\n if (isCssColor(colors.value.background)) {\n styles.backgroundColor = colors.value.background;\n if (!colors.value.text && isParsableColor(colors.value.background)) {\n const backgroundColor = parseColor(colors.value.background);\n if (backgroundColor.a == null || backgroundColor.a === 1) {\n const textColor = getForeground(backgroundColor);\n styles.color = textColor;\n styles.caretColor = textColor;\n }\n }\n } else {\n classes.push(`bg-${colors.value.background}`);\n }\n }\n if (colors.value.text) {\n if (isCssColor(colors.value.text)) {\n styles.color = colors.value.text;\n styles.caretColor = colors.value.text;\n } else {\n classes.push(`text-${colors.value.text}`);\n }\n }\n return {\n colorClasses: classes,\n colorStyles: styles\n };\n });\n}\nexport function useTextColor(props, name) {\n const colors = computed(() => ({\n text: isRef(props) ? props.value : name ? props[name] : null\n }));\n const {\n colorClasses: textColorClasses,\n colorStyles: textColorStyles\n } = useColor(colors);\n return {\n textColorClasses,\n textColorStyles\n };\n}\nexport function useBackgroundColor(props, name) {\n const colors = computed(() => ({\n background: isRef(props) ? props.value : name ? props[name] : null\n }));\n const {\n colorClasses: backgroundColorClasses,\n colorStyles: backgroundColorStyles\n } = useColor(colors);\n return {\n backgroundColorClasses,\n backgroundColorStyles\n };\n}\n//# sourceMappingURL=color.js.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VTimePickerClock.css\";\n\n// Composables\nimport { useBackgroundColor, useTextColor } from \"../../composables/color.js\"; // Utilities\nimport { computed, ref, toRef, watch } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTimePickerClockProps = propsFactory({\n allowedValues: Function,\n ampm: Boolean,\n color: String,\n disabled: Boolean,\n displayedValue: null,\n double: Boolean,\n format: {\n type: Function,\n default: val => val\n },\n max: {\n type: Number,\n required: true\n },\n min: {\n type: Number,\n required: true\n },\n scrollable: Boolean,\n readonly: Boolean,\n rotate: {\n type: Number,\n default: 0\n },\n step: {\n type: Number,\n default: 1\n },\n modelValue: {\n type: Number\n }\n}, 'VTimePickerClock');\nexport const VTimePickerClock = genericComponent()({\n name: 'VTimePickerClock',\n props: makeVTimePickerClockProps(),\n emits: {\n change: val => true,\n input: val => true\n },\n setup(props, _ref) {\n let {\n emit\n } = _ref;\n const clockRef = ref(null);\n const innerClockRef = ref(null);\n const inputValue = ref(undefined);\n const isDragging = ref(false);\n const valueOnMouseDown = ref(null);\n const valueOnMouseUp = ref(null);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const count = computed(() => props.max - props.min + 1);\n const roundCount = computed(() => props.double ? count.value / 2 : count.value);\n const degreesPerUnit = computed(() => 360 / roundCount.value);\n const degrees = computed(() => degreesPerUnit.value * Math.PI / 180);\n const displayedValue = computed(() => props.modelValue == null ? props.min : props.modelValue);\n const innerRadiusScale = computed(() => 0.62);\n const genChildren = computed(() => {\n const children = [];\n for (let value = props.min; value <= props.max; value = value + props.step) {\n children.push(value);\n }\n return children;\n });\n watch(() => props.modelValue, val => {\n inputValue.value = val;\n });\n function update(value) {\n if (inputValue.value !== value) {\n inputValue.value = value;\n }\n emit('input', value);\n }\n function isAllowed(value) {\n return !props.allowedValues || props.allowedValues(value);\n }\n function wheel(e) {\n if (!props.scrollable || props.disabled) return;\n e.preventDefault();\n const delta = Math.sign(-e.deltaY || 1);\n let value = displayedValue.value;\n do {\n value = value + delta;\n value = (value - props.min + count.value) % count.value + props.min;\n } while (!isAllowed(value) && value !== displayedValue.value);\n if (value !== props.displayedValue) {\n update(value);\n }\n }\n function isInner(value) {\n return props.double && value - props.min >= roundCount.value;\n }\n function handScale(value) {\n return isInner(value) ? innerRadiusScale.value : 1;\n }\n function getPosition(value) {\n const rotateRadians = props.rotate * Math.PI / 180;\n return {\n x: Math.sin((value - props.min) * degrees.value + rotateRadians) * handScale(value),\n y: -Math.cos((value - props.min) * degrees.value + rotateRadians) * handScale(value)\n };\n }\n function angleToValue(angle, insideClick) {\n const value = (Math.round(angle / degreesPerUnit.value) + (insideClick ? roundCount.value : 0)) % count.value + props.min;\n\n // Necessary to fix edge case when selecting left part of the value(s) at 12 o'clock\n if (angle < 360 - degreesPerUnit.value / 2) return value;\n return insideClick ? props.max - roundCount.value + 1 : props.min;\n }\n function getTransform(i) {\n const {\n x,\n y\n } = getPosition(i);\n return {\n left: `${50 + x * 50}%`,\n top: `${50 + y * 50}%`\n };\n }\n function euclidean(p0, p1) {\n const dx = p1.x - p0.x;\n const dy = p1.y - p0.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n function angle(center, p1) {\n const value = 2 * Math.atan2(p1.y - center.y - euclidean(center, p1), p1.x - center.x);\n return Math.abs(value * 180 / Math.PI);\n }\n function setMouseDownValue(value) {\n if (valueOnMouseDown.value === null) {\n valueOnMouseDown.value = value;\n }\n valueOnMouseUp.value = value;\n update(value);\n }\n function onDragMove(e) {\n e.preventDefault();\n if (!isDragging.value && e.type !== 'click' || !clockRef.value) return;\n const {\n width,\n top,\n left\n } = clockRef.value?.getBoundingClientRect();\n const {\n width: innerWidth\n } = innerClockRef.value?.getBoundingClientRect() ?? {\n width: 0\n };\n const {\n clientX,\n clientY\n } = 'touches' in e ? e.touches[0] : e;\n const center = {\n x: width / 2,\n y: -width / 2\n };\n const coords = {\n x: clientX - left,\n y: top - clientY\n };\n const handAngle = Math.round(angle(center, coords) - props.rotate + 360) % 360;\n const insideClick = props.double && euclidean(center, coords) < (innerWidth + innerWidth * innerRadiusScale.value) / 4;\n const checksCount = Math.ceil(15 / degreesPerUnit.value);\n let value;\n for (let i = 0; i < checksCount; i++) {\n value = angleToValue(handAngle + i * degreesPerUnit.value, insideClick);\n if (isAllowed(value)) return setMouseDownValue(value);\n value = angleToValue(handAngle - i * degreesPerUnit.value, insideClick);\n if (isAllowed(value)) return setMouseDownValue(value);\n }\n }\n function onMouseDown(e) {\n if (props.disabled) return;\n e.preventDefault();\n window.addEventListener('mousemove', onDragMove);\n window.addEventListener('touchmove', onDragMove);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('touchend', onMouseUp);\n valueOnMouseDown.value = null;\n valueOnMouseUp.value = null;\n isDragging.value = true;\n onDragMove(e);\n }\n function onMouseUp(e) {\n e.stopPropagation();\n window.removeEventListener('mousemove', onDragMove);\n window.removeEventListener('touchmove', onDragMove);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('touchend', onMouseUp);\n isDragging.value = false;\n if (valueOnMouseUp.value !== null && isAllowed(valueOnMouseUp.value)) {\n emit('change', valueOnMouseUp.value);\n }\n }\n useRender(() => {\n return _createVNode(\"div\", {\n \"class\": [{\n 'v-time-picker-clock': true,\n 'v-time-picker-clock--indeterminate': props.modelValue == null,\n 'v-time-picker-clock--readonly': props.readonly\n }],\n \"onMousedown\": onMouseDown,\n \"onTouchstart\": onMouseDown,\n \"onWheel\": wheel,\n \"ref\": clockRef\n }, [_createVNode(\"div\", {\n \"class\": \"v-time-picker-clock__inner\",\n \"ref\": innerClockRef\n }, [_createVNode(\"div\", {\n \"class\": [{\n 'v-time-picker-clock__hand': true,\n 'v-time-picker-clock__hand--inner': isInner(props.modelValue)\n }, textColorClasses.value],\n \"style\": [{\n transform: `rotate(${props.rotate + degreesPerUnit.value * (displayedValue.value - props.min)}deg) scaleY(${handScale(displayedValue.value)})`\n }, textColorStyles.value]\n }, null), genChildren.value.map(value => {\n const isActive = value === displayedValue.value;\n return _createVNode(\"div\", {\n \"class\": [{\n 'v-time-picker-clock__item': true,\n 'v-time-picker-clock__item--active': isActive,\n 'v-time-picker-clock__item--disabled': props.disabled || !isAllowed(value)\n }, isActive && backgroundColorClasses.value],\n \"style\": [getTransform(value), isActive && backgroundColorStyles.value]\n }, [_createVNode(\"span\", null, [props.format(value)])]);\n })])]);\n });\n }\n});\n//# sourceMappingURL=VTimePickerClock.js.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeBorderProps = propsFactory({\n border: [Boolean, Number, String]\n}, 'border');\nexport function useBorder(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const borderClasses = computed(() => {\n const border = isRef(props) ? props.value : props.border;\n const classes = [];\n if (border === true || border === '') {\n classes.push(`${name}--border`);\n } else if (typeof border === 'string' || border === 0) {\n for (const value of String(border).split(' ')) {\n classes.push(`border-${value}`);\n }\n }\n return classes;\n });\n return {\n borderClasses\n };\n}\n//# sourceMappingURL=border.js.map","// Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\nconst allowedDensities = [null, 'default', 'comfortable', 'compact'];\n\n// typeof allowedDensities[number] evaluates to any\n// when generating api types for whatever reason.\n\n// Composables\nexport const makeDensityProps = propsFactory({\n density: {\n type: String,\n default: 'default',\n validator: v => allowedDensities.includes(v)\n }\n}, 'density');\nexport function useDensity(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const densityClasses = computed(() => {\n return `${name}--density-${props.density}`;\n });\n return {\n densityClasses\n };\n}\n//# sourceMappingURL=density.js.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeElevationProps = propsFactory({\n elevation: {\n type: [Number, String],\n validator(v) {\n const value = parseInt(v);\n return !isNaN(value) && value >= 0 &&\n // Material Design has a maximum elevation of 24\n // https://material.io/design/environment/elevation.html#default-elevations\n value <= 24;\n }\n }\n}, 'elevation');\nexport function useElevation(props) {\n const elevationClasses = computed(() => {\n const elevation = isRef(props) ? props.value : props.elevation;\n const classes = [];\n if (elevation == null) return classes;\n classes.push(`elevation-${elevation}`);\n return classes;\n });\n return {\n elevationClasses\n };\n}\n//# sourceMappingURL=elevation.js.map","// Utilities\nimport { computed, isRef } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeRoundedProps = propsFactory({\n rounded: {\n type: [Boolean, Number, String],\n default: undefined\n },\n tile: Boolean\n}, 'rounded');\nexport function useRounded(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const roundedClasses = computed(() => {\n const rounded = isRef(props) ? props.value : props.rounded;\n const tile = isRef(props) ? props.value : props.tile;\n const classes = [];\n if (rounded === true || rounded === '') {\n classes.push(`${name}--rounded`);\n } else if (typeof rounded === 'string' || rounded === 0) {\n for (const value of String(rounded).split(' ')) {\n classes.push(`rounded-${value}`);\n }\n } else if (tile || rounded === false) {\n classes.push('rounded-0');\n }\n return classes;\n });\n return {\n roundedClasses\n };\n}\n//# sourceMappingURL=rounded.js.map","// Utilities\nimport { propsFactory } from \"../util/index.js\"; // Types\n// Types\n// Composables\nexport const makeTagProps = propsFactory({\n tag: {\n type: [String, Object, Function],\n default: 'div'\n }\n}, 'tag');\n//# sourceMappingURL=tag.js.map","// Utilities\nimport { computed, inject, provide, ref, shallowRef, watch, watchEffect } from 'vue';\nimport { createRange, darken, getCurrentInstance, getForeground, getLuma, IN_BROWSER, lighten, mergeDeep, parseColor, propsFactory, RGBtoHex } from \"../util/index.js\"; // Types\nexport const ThemeSymbol = Symbol.for('vuetify:theme');\nexport const makeThemeProps = propsFactory({\n theme: String\n}, 'theme');\nfunction genDefaults() {\n return {\n defaultTheme: 'light',\n variations: {\n colors: [],\n lighten: 0,\n darken: 0\n },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-bright': '#FFFFFF',\n 'surface-light': '#EEEEEE',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#1867C0',\n 'primary-darken-1': '#1F5592',\n secondary: '#48A9A6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00'\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000'\n }\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-bright': '#ccbfd6',\n 'surface-light': '#424242',\n 'surface-variant': '#c8c8c8',\n 'on-surface-variant': '#000000',\n primary: '#2196F3',\n 'primary-darken-1': '#277CC1',\n secondary: '#54B6B2',\n 'secondary-darken-1': '#48A9A6',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00'\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC'\n }\n }\n },\n stylesheetId: 'vuetify-theme-stylesheet'\n };\n}\nfunction parseThemeOptions() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : genDefaults();\n const defaults = genDefaults();\n if (!options) return {\n ...defaults,\n isDisabled: true\n };\n const themes = {};\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark' ? defaults.themes?.dark : defaults.themes?.light;\n themes[key] = mergeDeep(defaultTheme, theme);\n }\n return mergeDeep(defaults, {\n ...options,\n themes\n });\n}\nfunction createCssClass(lines, selector, content, scope) {\n lines.push(`${getScopedSelector(selector, scope)} {\\n`, ...content.map(line => ` ${line};\\n`), '}\\n');\n}\nfunction genCssVariables(theme) {\n const lightOverlay = theme.dark ? 2 : 1;\n const darkOverlay = theme.dark ? 1 : 2;\n const variables = [];\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value);\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);\n }\n }\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;\n variables.push(`--v-${key}: ${rgb ?? value}`);\n }\n return variables;\n}\nfunction genVariation(name, color, variations) {\n const object = {};\n if (variations) {\n for (const variation of ['lighten', 'darken']) {\n const fn = variation === 'lighten' ? lighten : darken;\n for (const amount of createRange(variations[variation], 1)) {\n object[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));\n }\n }\n }\n return object;\n}\nfunction genVariations(colors, variations) {\n if (!variations) return {};\n let variationColors = {};\n for (const name of variations.colors) {\n const color = colors[name];\n if (!color) continue;\n variationColors = {\n ...variationColors,\n ...genVariation(name, color, variations)\n };\n }\n return variationColors;\n}\nfunction genOnColors(colors) {\n const onColors = {};\n for (const color of Object.keys(colors)) {\n if (color.startsWith('on-') || colors[`on-${color}`]) continue;\n const onColor = `on-${color}`;\n const colorVal = parseColor(colors[color]);\n onColors[onColor] = getForeground(colorVal);\n }\n return onColors;\n}\nfunction getScopedSelector(selector, scope) {\n if (!scope) return selector;\n const scopeSelector = `:where(${scope})`;\n return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;\n}\nfunction upsertStyles(styleEl, styles) {\n if (!styleEl) return;\n styleEl.innerHTML = styles;\n}\nfunction getOrCreateStyleElement(id, cspNonce) {\n if (!IN_BROWSER) return null;\n let style = document.getElementById(id);\n if (!style) {\n style = document.createElement('style');\n style.id = id;\n style.type = 'text/css';\n if (cspNonce) style.setAttribute('nonce', cspNonce);\n document.head.appendChild(style);\n }\n return style;\n}\n\n// Composables\nexport function createTheme(options) {\n const parsedOptions = parseThemeOptions(options);\n const name = shallowRef(parsedOptions.defaultTheme);\n const themes = ref(parsedOptions.themes);\n const computedThemes = computed(() => {\n const acc = {};\n for (const [name, original] of Object.entries(themes.value)) {\n const colors = {\n ...original.colors,\n ...genVariations(original.colors, parsedOptions.variations)\n };\n acc[name] = {\n ...original,\n colors: {\n ...colors,\n ...genOnColors(colors)\n }\n };\n }\n return acc;\n });\n const current = computed(() => computedThemes.value[name.value]);\n const styles = computed(() => {\n const lines = [];\n if (current.value?.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);\n }\n createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);\n }\n const bgLines = [];\n const fgLines = [];\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));\n for (const key of colors) {\n if (key.startsWith('on-')) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);\n } else {\n createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`], parsedOptions.scope);\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);\n }\n }\n lines.push(...bgLines, ...fgLines);\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');\n });\n function install(app) {\n if (parsedOptions.isDisabled) return;\n const head = app._context.provides.usehead;\n if (head) {\n function getHead() {\n return {\n style: [{\n textContent: styles.value,\n id: parsedOptions.stylesheetId,\n nonce: parsedOptions.cspNonce || false\n }]\n };\n }\n if (head.push) {\n const entry = head.push(getHead);\n if (IN_BROWSER) {\n watch(styles, () => {\n entry.patch(getHead);\n });\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead));\n watchEffect(() => head.updateDOM());\n } else {\n head.addHeadObjs(getHead());\n }\n }\n } else {\n if (IN_BROWSER) {\n watch(styles, updateStyles, {\n immediate: true\n });\n } else {\n updateStyles();\n }\n function updateStyles() {\n upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);\n }\n }\n }\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current\n }\n };\n}\nexport function provideTheme(props) {\n getCurrentInstance('provideTheme');\n const theme = inject(ThemeSymbol, null);\n if (!theme) throw new Error('Could not find Vuetify theme injection');\n const name = computed(() => props.theme ?? theme.name.value);\n const current = computed(() => theme.themes.value[name.value]);\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);\n const newTheme = {\n ...theme,\n name,\n current,\n themeClasses\n };\n provide(ThemeSymbol, newTheme);\n return newTheme;\n}\nexport function useTheme() {\n getCurrentInstance('useTheme');\n const theme = inject(ThemeSymbol, null);\n if (!theme) throw new Error('Could not find Vuetify theme injection');\n return theme;\n}\n//# sourceMappingURL=theme.js.map","import { Fragment as _Fragment, createVNode as _createVNode } from \"vue\";\n// Composables\nimport { useColor } from \"./color.js\"; // Utilities\nimport { computed, unref } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\nexport const allowedVariants = ['elevated', 'flat', 'tonal', 'outlined', 'text', 'plain'];\nexport function genOverlays(isClickable, name) {\n return _createVNode(_Fragment, null, [isClickable && _createVNode(\"span\", {\n \"key\": \"overlay\",\n \"class\": `${name}__overlay`\n }, null), _createVNode(\"span\", {\n \"key\": \"underlay\",\n \"class\": `${name}__underlay`\n }, null)]);\n}\nexport const makeVariantProps = propsFactory({\n color: String,\n variant: {\n type: String,\n default: 'elevated',\n validator: v => allowedVariants.includes(v)\n }\n}, 'variant');\nexport function useVariant(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const variantClasses = computed(() => {\n const {\n variant\n } = unref(props);\n return `${name}--variant-${variant}`;\n });\n const {\n colorClasses,\n colorStyles\n } = useColor(computed(() => {\n const {\n variant,\n color\n } = unref(props);\n return {\n [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color\n };\n }));\n return {\n colorClasses,\n colorStyles,\n variantClasses\n };\n}\n//# sourceMappingURL=variant.js.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBtnGroup.css\";\n\n// Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { provideDefaults } from \"../../composables/defaults.js\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.js\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\";\nimport { makeVariantProps } from \"../../composables/variant.js\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport const makeVBtnGroupProps = propsFactory({\n baseColor: String,\n divided: Boolean,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps()\n}, 'VBtnGroup');\nexport const VBtnGroup = genericComponent()({\n name: 'VBtnGroup',\n props: makeVBtnGroupProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n roundedClasses\n } = useRounded(props);\n provideDefaults({\n VBtn: {\n height: 'auto',\n baseColor: toRef(props, 'baseColor'),\n color: toRef(props, 'color'),\n density: toRef(props, 'density'),\n flat: true,\n variant: toRef(props, 'variant')\n }\n });\n useRender(() => {\n return _createVNode(props.tag, {\n \"class\": ['v-btn-group', {\n 'v-btn-group--divided': props.divided\n }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],\n \"style\": props.style\n }, slots);\n });\n }\n});\n//# sourceMappingURL=VBtnGroup.js.map","// Utilities\nimport { effectScope, onScopeDispose, watch } from 'vue';\n\n// Types\n\nexport function useToggleScope(source, fn) {\n let scope;\n function start() {\n scope = effectScope();\n scope.run(() => fn.length ? fn(() => {\n scope?.stop();\n start();\n }) : fn());\n }\n watch(source, active => {\n if (active && !scope) {\n start();\n } else if (!active) {\n scope?.stop();\n scope = undefined;\n }\n }, {\n immediate: true\n });\n onScopeDispose(() => {\n scope?.stop();\n });\n}\n//# sourceMappingURL=toggleScope.js.map","// Composables\nimport { useToggleScope } from \"./toggleScope.js\"; // Utilities\nimport { computed, ref, toRaw, watch } from 'vue';\nimport { getCurrentInstance, toKebabCase } from \"../util/index.js\"; // Types\n// Composables\nexport function useProxiedModel(props, prop, defaultValue) {\n let transformIn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : v => v;\n let transformOut = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : v => v;\n const vm = getCurrentInstance('useProxiedModel');\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue);\n const kebabProp = toKebabCase(prop);\n const checkKebab = kebabProp !== prop;\n const isControlled = checkKebab ? computed(() => {\n void props[prop];\n return !!((vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) && (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`)));\n }) : computed(() => {\n void props[prop];\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`));\n });\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val;\n });\n });\n const model = computed({\n get() {\n const externalValue = props[prop];\n return transformIn(isControlled.value ? externalValue : internal.value);\n },\n set(internalValue) {\n const newValue = transformOut(internalValue);\n const value = toRaw(isControlled.value ? props[prop] : internal.value);\n if (value === newValue || transformIn(value) === internalValue) {\n return;\n }\n internal.value = newValue;\n vm?.emit(`update:${prop}`, newValue);\n }\n });\n Object.defineProperty(model, 'externalValue', {\n get: () => isControlled.value ? props[prop] : internal.value\n });\n return model;\n}\n//# sourceMappingURL=proxiedModel.js.map","// Composables\nimport { useProxiedModel } from \"./proxiedModel.js\"; // Utilities\nimport { computed, inject, onBeforeUnmount, onMounted, onUpdated, provide, reactive, toRef, unref, useId, watch } from 'vue';\nimport { consoleWarn, deepEqual, findChildrenWithProvide, getCurrentInstance, propsFactory, wrapInArray } from \"../util/index.js\"; // Types\nexport const makeGroupProps = propsFactory({\n modelValue: {\n type: null,\n default: undefined\n },\n multiple: Boolean,\n mandatory: [Boolean, String],\n max: Number,\n selectedClass: String,\n disabled: Boolean\n}, 'group');\nexport const makeGroupItemProps = propsFactory({\n value: null,\n disabled: Boolean,\n selectedClass: String\n}, 'group-item');\n\n// Composables\n\nexport function useGroupItem(props, injectKey) {\n let required = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const vm = getCurrentInstance('useGroupItem');\n if (!vm) {\n throw new Error('[Vuetify] useGroupItem composable must be used inside a component setup function');\n }\n const id = useId();\n provide(Symbol.for(`${injectKey.description}:id`), id);\n const group = inject(injectKey, null);\n if (!group) {\n if (!required) return group;\n throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`);\n }\n const value = toRef(props, 'value');\n const disabled = computed(() => !!(group.disabled.value || props.disabled));\n group.register({\n id,\n value,\n disabled\n }, vm);\n onBeforeUnmount(() => {\n group.unregister(id);\n });\n const isSelected = computed(() => {\n return group.isSelected(id);\n });\n const isFirst = computed(() => {\n return group.items.value[0].id === id;\n });\n const isLast = computed(() => {\n return group.items.value[group.items.value.length - 1].id === id;\n });\n const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass]);\n watch(isSelected, value => {\n vm.emit('group:selected', {\n value\n });\n }, {\n flush: 'sync'\n });\n return {\n id,\n isSelected,\n isFirst,\n isLast,\n toggle: () => group.select(id, !isSelected.value),\n select: value => group.select(id, value),\n selectedClass,\n value,\n disabled,\n group\n };\n}\nexport function useGroup(props, injectKey) {\n let isUnmounted = false;\n const items = reactive([]);\n const selected = useProxiedModel(props, 'modelValue', [], v => {\n if (v == null) return [];\n return getIds(items, wrapInArray(v));\n }, v => {\n const arr = getValues(items, v);\n return props.multiple ? arr : arr[0];\n });\n const groupVm = getCurrentInstance('useGroup');\n function register(item, vm) {\n // Is there a better way to fix this typing?\n const unwrapped = item;\n const key = Symbol.for(`${injectKey.description}:id`);\n const children = findChildrenWithProvide(key, groupVm?.vnode);\n const index = children.indexOf(vm);\n if (unref(unwrapped.value) == null) {\n unwrapped.value = index;\n unwrapped.useIndexAsValue = true;\n }\n if (index > -1) {\n items.splice(index, 0, unwrapped);\n } else {\n items.push(unwrapped);\n }\n }\n function unregister(id) {\n if (isUnmounted) return;\n\n // TODO: re-evaluate this line's importance in the future\n // should we only modify the model if mandatory is set.\n // selected.value = selected.value.filter(v => v !== id)\n\n forceMandatoryValue();\n const index = items.findIndex(item => item.id === id);\n items.splice(index, 1);\n }\n\n // If mandatory and nothing is selected, then select first non-disabled item\n function forceMandatoryValue() {\n const item = items.find(item => !item.disabled);\n if (item && props.mandatory === 'force' && !selected.value.length) {\n selected.value = [item.id];\n }\n }\n onMounted(() => {\n forceMandatoryValue();\n });\n onBeforeUnmount(() => {\n isUnmounted = true;\n });\n onUpdated(() => {\n // #19655 update the items that use the index as the value.\n for (let i = 0; i < items.length; i++) {\n if (items[i].useIndexAsValue) {\n items[i].value = i;\n }\n }\n });\n function select(id, value) {\n const item = items.find(item => item.id === id);\n if (value && item?.disabled) return;\n if (props.multiple) {\n const internalValue = selected.value.slice();\n const index = internalValue.findIndex(v => v === id);\n const isSelected = ~index;\n value = value ?? !isSelected;\n\n // We can't remove value if group is\n // mandatory, value already exists,\n // and it is the only value\n if (isSelected && props.mandatory && internalValue.length <= 1) return;\n\n // We can't add value if it would\n // cause max limit to be exceeded\n if (!isSelected && props.max != null && internalValue.length + 1 > props.max) return;\n if (index < 0 && value) internalValue.push(id);else if (index >= 0 && !value) internalValue.splice(index, 1);\n selected.value = internalValue;\n } else {\n const isSelected = selected.value.includes(id);\n if (props.mandatory && isSelected) return;\n selected.value = value ?? !isSelected ? [id] : [];\n }\n }\n function step(offset) {\n // getting an offset from selected value obviously won't work with multiple values\n if (props.multiple) consoleWarn('This method is not supported when using \"multiple\" prop');\n if (!selected.value.length) {\n const item = items.find(item => !item.disabled);\n item && (selected.value = [item.id]);\n } else {\n const currentId = selected.value[0];\n const currentIndex = items.findIndex(i => i.id === currentId);\n let newIndex = (currentIndex + offset) % items.length;\n let newItem = items[newIndex];\n while (newItem.disabled && newIndex !== currentIndex) {\n newIndex = (newIndex + offset) % items.length;\n newItem = items[newIndex];\n }\n if (newItem.disabled) return;\n selected.value = [items[newIndex].id];\n }\n }\n const state = {\n register,\n unregister,\n selected,\n select,\n disabled: toRef(props, 'disabled'),\n prev: () => step(items.length - 1),\n next: () => step(1),\n isSelected: id => selected.value.includes(id),\n selectedClass: computed(() => props.selectedClass),\n items: computed(() => items),\n getItemIndex: value => getItemIndex(items, value)\n };\n provide(injectKey, state);\n return state;\n}\nfunction getItemIndex(items, value) {\n const ids = getIds(items, [value]);\n if (!ids.length) return -1;\n return items.findIndex(item => item.id === ids[0]);\n}\nfunction getIds(items, modelValue) {\n const ids = [];\n modelValue.forEach(value => {\n const item = items.find(item => deepEqual(value, item.value));\n const itemByIndex = items[value];\n if (item?.value != null) {\n ids.push(item.id);\n } else if (itemByIndex != null) {\n ids.push(itemByIndex.id);\n }\n });\n return ids;\n}\nfunction getValues(items, ids) {\n const values = [];\n ids.forEach(id => {\n const itemIndex = items.findIndex(item => item.id === id);\n if (~itemIndex) {\n const item = items[itemIndex];\n values.push(item.value != null ? item.value : itemIndex);\n }\n });\n return values;\n}\n//# sourceMappingURL=group.js.map","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VBtnToggle.css\";\n\n// Components\nimport { makeVBtnGroupProps, VBtnGroup } from \"../VBtnGroup/VBtnGroup.js\"; // Composables\nimport { makeGroupProps, useGroup } from \"../../composables/group.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const VBtnToggleSymbol = Symbol.for('vuetify:v-btn-toggle');\nexport const makeVBtnToggleProps = propsFactory({\n ...makeVBtnGroupProps(),\n ...makeGroupProps()\n}, 'VBtnToggle');\nexport const VBtnToggle = genericComponent()({\n name: 'VBtnToggle',\n props: makeVBtnToggleProps(),\n emits: {\n 'update:modelValue': value => true\n },\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n isSelected,\n next,\n prev,\n select,\n selected\n } = useGroup(props, VBtnToggleSymbol);\n useRender(() => {\n const btnGroupProps = VBtnGroup.filterProps(props);\n return _createVNode(VBtnGroup, _mergeProps({\n \"class\": ['v-btn-toggle', props.class]\n }, btnGroupProps, {\n \"style\": props.style\n }), {\n default: () => [slots.default?.({\n isSelected,\n next,\n prev,\n select,\n selected\n })]\n });\n });\n return {\n next,\n prev,\n select\n };\n }\n});\n//# sourceMappingURL=VBtnToggle.js.map","// Composables\nimport { provideDefaults } from \"../../composables/defaults.js\"; // Utilities\nimport { toRefs } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.js\"; // Types\nexport const makeVDefaultsProviderProps = propsFactory({\n defaults: Object,\n disabled: Boolean,\n reset: [Number, String],\n root: [Boolean, String],\n scoped: Boolean\n}, 'VDefaultsProvider');\nexport const VDefaultsProvider = genericComponent(false)({\n name: 'VDefaultsProvider',\n props: makeVDefaultsProviderProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n defaults,\n disabled,\n reset,\n root,\n scoped\n } = toRefs(props);\n provideDefaults(defaults, {\n reset,\n root,\n scoped,\n disabled\n });\n return () => slots.default?.();\n }\n});\n//# sourceMappingURL=VDefaultsProvider.js.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Icons\nimport { aliases, mdi } from \"../iconsets/mdi.js\"; // Utilities\nimport { computed, inject, unref } from 'vue';\nimport { consoleWarn, defineComponent, genericComponent, mergeDeep, propsFactory } from \"../util/index.js\"; // Types\nexport const IconValue = [String, Function, Object, Array];\nexport const IconSymbol = Symbol.for('vuetify:icons');\nexport const makeIconProps = propsFactory({\n icon: {\n type: IconValue\n },\n // Could not remove this and use makeTagProps, types complained because it is not required\n tag: {\n type: [String, Object, Function],\n required: true\n }\n}, 'icon');\nexport const VComponentIcon = genericComponent()({\n name: 'VComponentIcon',\n props: makeIconProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n return () => {\n const Icon = props.icon;\n return _createVNode(props.tag, null, {\n default: () => [props.icon ? _createVNode(Icon, null, null) : slots.default?.()]\n });\n };\n }\n});\nexport const VSvgIcon = defineComponent({\n name: 'VSvgIcon',\n inheritAttrs: false,\n props: makeIconProps(),\n setup(props, _ref2) {\n let {\n attrs\n } = _ref2;\n return () => {\n return _createVNode(props.tag, _mergeProps(attrs, {\n \"style\": null\n }), {\n default: () => [_createVNode(\"svg\", {\n \"class\": \"v-icon__svg\",\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": \"0 0 24 24\",\n \"role\": \"img\",\n \"aria-hidden\": \"true\"\n }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? _createVNode(\"path\", {\n \"d\": path[0],\n \"fill-opacity\": path[1]\n }, null) : _createVNode(\"path\", {\n \"d\": path\n }, null)) : _createVNode(\"path\", {\n \"d\": props.icon\n }, null)])]\n });\n };\n }\n});\nexport const VLigatureIcon = defineComponent({\n name: 'VLigatureIcon',\n props: makeIconProps(),\n setup(props) {\n return () => {\n return _createVNode(props.tag, null, {\n default: () => [props.icon]\n });\n };\n }\n});\nexport const VClassIcon = defineComponent({\n name: 'VClassIcon',\n props: makeIconProps(),\n setup(props) {\n return () => {\n return _createVNode(props.tag, {\n \"class\": props.icon\n }, null);\n };\n }\n});\nfunction genDefaults() {\n return {\n svg: {\n component: VSvgIcon\n },\n class: {\n component: VClassIcon\n }\n };\n}\n\n// Composables\nexport function createIcons(options) {\n const sets = genDefaults();\n const defaultSet = options?.defaultSet ?? 'mdi';\n if (defaultSet === 'mdi' && !sets.mdi) {\n sets.mdi = mdi;\n }\n return mergeDeep({\n defaultSet,\n sets,\n aliases: {\n ...aliases,\n /* eslint-disable max-len */\n vuetify: ['M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z', ['M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z', 0.6]],\n 'vuetify-outline': 'svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z',\n 'vuetify-play': ['m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z', ['M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z', 0.6]]\n /* eslint-enable max-len */\n }\n }, options);\n}\nexport const useIcon = props => {\n const icons = inject(IconSymbol);\n if (!icons) throw new Error('Missing Vuetify Icons provide!');\n const iconData = computed(() => {\n const iconAlias = unref(props);\n if (!iconAlias) return {\n component: VComponentIcon\n };\n let icon = iconAlias;\n if (typeof icon === 'string') {\n icon = icon.trim();\n if (icon.startsWith('$')) {\n icon = icons.aliases?.[icon.slice(1)];\n }\n }\n if (!icon) consoleWarn(`Could not find aliased icon \"${iconAlias}\"`);\n if (Array.isArray(icon)) {\n return {\n component: VSvgIcon,\n icon\n };\n } else if (typeof icon !== 'string') {\n return {\n component: VComponentIcon,\n icon\n };\n }\n const iconSetName = Object.keys(icons.sets).find(setName => typeof icon === 'string' && icon.startsWith(`${setName}:`));\n const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;\n const iconSet = icons.sets[iconSetName ?? icons.defaultSet];\n return {\n component: iconSet.component,\n icon: iconName\n };\n });\n return {\n iconData\n };\n};\n//# sourceMappingURL=icons.js.map","// Utilities\nimport { convertToUnit, destructComputed, getCurrentInstanceName, includes, propsFactory } from \"../util/index.js\"; // Types\nconst predefinedSizes = ['x-small', 'small', 'default', 'large', 'x-large'];\n// Composables\nexport const makeSizeProps = propsFactory({\n size: {\n type: [String, Number],\n default: 'default'\n }\n}, 'size');\nexport function useSize(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n return destructComputed(() => {\n let sizeClasses;\n let sizeStyles;\n if (includes(predefinedSizes, props.size)) {\n sizeClasses = `${name}--size-${props.size}`;\n } else if (props.size) {\n sizeStyles = {\n width: convertToUnit(props.size),\n height: convertToUnit(props.size)\n };\n }\n return {\n sizeClasses,\n sizeStyles\n };\n });\n}\n//# sourceMappingURL=size.js.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VIcon.css\";\n\n// Composables\nimport { useTextColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { IconValue, useIcon } from \"../../composables/icons.js\";\nimport { makeSizeProps, useSize } from \"../../composables/size.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, useTheme } from \"../../composables/theme.js\"; // Utilities\nimport { computed, ref, Text, toRef } from 'vue';\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport const makeVIconProps = propsFactory({\n color: String,\n disabled: Boolean,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n opacity: [String, Number],\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'i'\n }),\n ...makeThemeProps()\n}, 'VIcon');\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n props: makeVIconProps(),\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const slotIcon = ref();\n const {\n themeClasses\n } = useTheme();\n const {\n iconData\n } = useIcon(computed(() => slotIcon.value || props.icon));\n const {\n sizeClasses\n } = useSize(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n useRender(() => {\n const slotValue = slots.default?.();\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;\n }\n const hasClick = !!(attrs.onClick || attrs.onClickOnce);\n return _createVNode(iconData.value.component, {\n \"tag\": props.tag,\n \"icon\": iconData.value.icon,\n \"class\": ['v-icon', 'notranslate', themeClasses.value, sizeClasses.value, textColorClasses.value, {\n 'v-icon--clickable': hasClick,\n 'v-icon--disabled': props.disabled,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end\n }, props.class],\n \"style\": [{\n '--v-icon-opacity': props.opacity\n }, !sizeClasses.value ? {\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size)\n } : undefined, textColorStyles.value, props.style],\n \"role\": hasClick ? 'button' : undefined,\n \"aria-hidden\": !hasClick,\n \"tabindex\": hasClick ? props.disabled ? -1 : 0 : undefined\n }, {\n default: () => [slotValue]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VIcon.js.map","// Utilities\nimport { onBeforeUnmount, ref, shallowRef, watch } from 'vue';\nimport { SUPPORTS_INTERSECTION } from \"../util/index.js\";\nexport function useIntersectionObserver(callback, options) {\n const intersectionRef = ref();\n const isIntersecting = shallowRef(false);\n if (SUPPORTS_INTERSECTION) {\n const observer = new IntersectionObserver(entries => {\n callback?.(entries, observer);\n isIntersecting.value = !!entries.find(entry => entry.isIntersecting);\n }, options);\n onBeforeUnmount(() => {\n observer.disconnect();\n });\n watch(intersectionRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue);\n isIntersecting.value = false;\n }\n if (newValue) observer.observe(newValue);\n }, {\n flush: 'post'\n });\n }\n return {\n intersectionRef,\n isIntersecting\n };\n}\n//# sourceMappingURL=intersectionObserver.js.map","// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue';\nimport { templateRef } from \"../util/index.js\";\nimport { IN_BROWSER } from \"../util/globals.js\"; // Types\nexport function useResizeObserver(callback) {\n let box = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'content';\n const resizeRef = templateRef();\n const contentRect = ref();\n if (IN_BROWSER) {\n const observer = new ResizeObserver(entries => {\n callback?.(entries, observer);\n if (!entries.length) return;\n if (box === 'content') {\n contentRect.value = entries[0].contentRect;\n } else {\n contentRect.value = entries[0].target.getBoundingClientRect();\n }\n });\n onBeforeUnmount(() => {\n observer.disconnect();\n });\n watch(() => resizeRef.el, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue);\n contentRect.value = undefined;\n }\n if (newValue) observer.observe(newValue);\n }, {\n flush: 'post'\n });\n }\n return {\n resizeRef,\n contentRect: readonly(contentRect)\n };\n}\n//# sourceMappingURL=resizeObserver.js.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VProgressCircular.css\";\n\n// Composables\nimport { useTextColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { useIntersectionObserver } from \"../../composables/intersectionObserver.js\";\nimport { useResizeObserver } from \"../../composables/resizeObserver.js\";\nimport { makeSizeProps, useSize } from \"../../composables/size.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\"; // Utilities\nimport { computed, ref, toRef, watchEffect } from 'vue';\nimport { convertToUnit, genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVProgressCircularProps = propsFactory({\n bgColor: String,\n color: String,\n indeterminate: [Boolean, String],\n modelValue: {\n type: [Number, String],\n default: 0\n },\n rotate: {\n type: [Number, String],\n default: 0\n },\n width: {\n type: [Number, String],\n default: 4\n },\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'div'\n }),\n ...makeThemeProps()\n}, 'VProgressCircular');\nexport const VProgressCircular = genericComponent()({\n name: 'VProgressCircular',\n props: makeVProgressCircularProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const MAGIC_RADIUS_CONSTANT = 20;\n const CIRCUMFERENCE = 2 * Math.PI * MAGIC_RADIUS_CONSTANT;\n const root = ref();\n const {\n themeClasses\n } = provideTheme(props);\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props);\n const {\n textColorClasses,\n textColorStyles\n } = useTextColor(toRef(props, 'color'));\n const {\n textColorClasses: underlayColorClasses,\n textColorStyles: underlayColorStyles\n } = useTextColor(toRef(props, 'bgColor'));\n const {\n intersectionRef,\n isIntersecting\n } = useIntersectionObserver();\n const {\n resizeRef,\n contentRect\n } = useResizeObserver();\n const normalizedValue = computed(() => Math.max(0, Math.min(100, parseFloat(props.modelValue))));\n const width = computed(() => Number(props.width));\n const size = computed(() => {\n // Get size from element if size prop value is small, large etc\n return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);\n });\n const diameter = computed(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);\n const strokeWidth = computed(() => width.value / size.value * diameter.value);\n const strokeDashOffset = computed(() => convertToUnit((100 - normalizedValue.value) / 100 * CIRCUMFERENCE));\n watchEffect(() => {\n intersectionRef.value = root.value;\n resizeRef.value = root.value;\n });\n useRender(() => _createVNode(props.tag, {\n \"ref\": root,\n \"class\": ['v-progress-circular', {\n 'v-progress-circular--indeterminate': !!props.indeterminate,\n 'v-progress-circular--visible': isIntersecting.value,\n 'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'\n }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],\n \"style\": [sizeStyles.value, textColorStyles.value, props.style],\n \"role\": \"progressbar\",\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\",\n \"aria-valuenow\": props.indeterminate ? undefined : normalizedValue.value\n }, {\n default: () => [_createVNode(\"svg\", {\n \"style\": {\n transform: `rotate(calc(-90deg + ${Number(props.rotate)}deg))`\n },\n \"xmlns\": \"http://www.w3.org/2000/svg\",\n \"viewBox\": `0 0 ${diameter.value} ${diameter.value}`\n }, [_createVNode(\"circle\", {\n \"class\": ['v-progress-circular__underlay', underlayColorClasses.value],\n \"style\": underlayColorStyles.value,\n \"fill\": \"transparent\",\n \"cx\": \"50%\",\n \"cy\": \"50%\",\n \"r\": MAGIC_RADIUS_CONSTANT,\n \"stroke-width\": strokeWidth.value,\n \"stroke-dasharray\": CIRCUMFERENCE,\n \"stroke-dashoffset\": 0\n }, null), _createVNode(\"circle\", {\n \"class\": \"v-progress-circular__overlay\",\n \"fill\": \"transparent\",\n \"cx\": \"50%\",\n \"cy\": \"50%\",\n \"r\": MAGIC_RADIUS_CONSTANT,\n \"stroke-width\": strokeWidth.value,\n \"stroke-dasharray\": CIRCUMFERENCE,\n \"stroke-dashoffset\": strokeDashOffset.value\n }, null)]), slots.default && _createVNode(\"div\", {\n \"class\": \"v-progress-circular__content\"\n }, [slots.default({\n value: normalizedValue.value\n })])]\n }));\n return {};\n }\n});\n//# sourceMappingURL=VProgressCircular.js.map","// Utilities\nimport { computed } from 'vue';\nimport { convertToUnit, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeDimensionProps = propsFactory({\n height: [Number, String],\n maxHeight: [Number, String],\n maxWidth: [Number, String],\n minHeight: [Number, String],\n minWidth: [Number, String],\n width: [Number, String]\n}, 'dimension');\nexport function useDimension(props) {\n const dimensionStyles = computed(() => {\n const styles = {};\n const height = convertToUnit(props.height);\n const maxHeight = convertToUnit(props.maxHeight);\n const maxWidth = convertToUnit(props.maxWidth);\n const minHeight = convertToUnit(props.minHeight);\n const minWidth = convertToUnit(props.minWidth);\n const width = convertToUnit(props.width);\n if (height != null) styles.height = height;\n if (maxHeight != null) styles.maxHeight = maxHeight;\n if (maxWidth != null) styles.maxWidth = maxWidth;\n if (minHeight != null) styles.minHeight = minHeight;\n if (minWidth != null) styles.minWidth = minWidth;\n if (width != null) styles.width = width;\n return styles;\n });\n return {\n dimensionStyles\n };\n}\n//# sourceMappingURL=dimensions.js.map","// Utilities\nimport { computed, inject, provide, ref } from 'vue';\nimport { createVuetifyAdapter } from \"../locale/adapters/vuetify.js\"; // Types\nexport const LocaleSymbol = Symbol.for('vuetify:locale');\nfunction isLocaleInstance(obj) {\n return obj.name != null;\n}\nexport function createLocale(options) {\n const i18n = options?.adapter && isLocaleInstance(options?.adapter) ? options?.adapter : createVuetifyAdapter(options);\n const rtl = createRtl(i18n, options);\n return {\n ...i18n,\n ...rtl\n };\n}\nexport function useLocale() {\n const locale = inject(LocaleSymbol);\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance');\n return locale;\n}\nexport function provideLocale(props) {\n const locale = inject(LocaleSymbol);\n if (!locale) throw new Error('[Vuetify] Could not find injected locale instance');\n const i18n = locale.provide(props);\n const rtl = provideRtl(i18n, locale.rtl, props);\n const data = {\n ...i18n,\n ...rtl\n };\n provide(LocaleSymbol, data);\n return data;\n}\n\n// RTL\n\nexport const RtlSymbol = Symbol.for('vuetify:rtl');\nfunction genDefaults() {\n return {\n af: false,\n ar: true,\n bg: false,\n ca: false,\n ckb: false,\n cs: false,\n de: false,\n el: false,\n en: false,\n es: false,\n et: false,\n fa: true,\n fi: false,\n fr: false,\n hr: false,\n hu: false,\n he: true,\n id: false,\n it: false,\n ja: false,\n km: false,\n ko: false,\n lv: false,\n lt: false,\n nl: false,\n no: false,\n pl: false,\n pt: false,\n ro: false,\n ru: false,\n sk: false,\n sl: false,\n srCyrl: false,\n srLatn: false,\n sv: false,\n th: false,\n tr: false,\n az: false,\n uk: false,\n vi: false,\n zhHans: false,\n zhHant: false\n };\n}\nexport function createRtl(i18n, options) {\n const rtl = ref(options?.rtl ?? genDefaults());\n const isRtl = computed(() => rtl.value[i18n.current.value] ?? false);\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)\n };\n}\nexport function provideRtl(locale, rtl, props) {\n const isRtl = computed(() => props.rtl ?? rtl.value[locale.current.value] ?? false);\n return {\n isRtl,\n rtl,\n rtlClasses: computed(() => `v-locale--is-${isRtl.value ? 'rtl' : 'ltr'}`)\n };\n}\nexport function useRtl() {\n const locale = inject(LocaleSymbol);\n if (!locale) throw new Error('[Vuetify] Could not find injected rtl instance');\n return {\n isRtl: locale.isRtl,\n rtlClasses: locale.rtlClasses\n };\n}\n//# sourceMappingURL=locale.js.map","// Composables\nimport { useRtl } from \"./locale.js\"; // Utilities\nimport { computed } from 'vue';\nimport { parseAnchor, propsFactory } from \"../util/index.js\"; // Types\nconst oppositeMap = {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\nexport const makeLocationProps = propsFactory({\n location: String\n}, 'location');\nexport function useLocation(props) {\n let opposite = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let offset = arguments.length > 2 ? arguments[2] : undefined;\n const {\n isRtl\n } = useRtl();\n const locationStyles = computed(() => {\n if (!props.location) return {};\n const {\n side,\n align\n } = parseAnchor(props.location.split(' ').length > 1 ? props.location : `${props.location} center`, isRtl.value);\n function getOffset(side) {\n return offset ? offset(side) : 0;\n }\n const styles = {};\n if (side !== 'center') {\n if (opposite) styles[oppositeMap[side]] = `calc(100% - ${getOffset(side)}px)`;else styles[side] = 0;\n }\n if (align !== 'center') {\n if (opposite) styles[oppositeMap[align]] = `calc(100% - ${getOffset(align)}px)`;else styles[align] = 0;\n } else {\n if (side === 'center') styles.top = styles.left = '50%';else {\n styles[{\n top: 'left',\n bottom: 'left',\n left: 'top',\n right: 'top'\n }[side]] = '50%';\n }\n styles.transform = {\n top: 'translateX(-50%)',\n bottom: 'translateX(-50%)',\n left: 'translateY(-50%)',\n right: 'translateY(-50%)',\n center: 'translate(-50%, -50%)'\n }[side];\n }\n return styles;\n });\n return {\n locationStyles\n };\n}\n//# sourceMappingURL=location.js.map","import { createVNode as _createVNode } from \"vue\";\n// Components\nimport { VProgressLinear } from \"../components/VProgressLinear/index.js\"; // Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeLoaderProps = propsFactory({\n loading: [Boolean, String]\n}, 'loader');\nexport function useLoader(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const loaderClasses = computed(() => ({\n [`${name}--loading`]: props.loading\n }));\n return {\n loaderClasses\n };\n}\nexport function LoaderSlot(props, _ref) {\n let {\n slots\n } = _ref;\n return _createVNode(\"div\", {\n \"class\": `${props.name}__loader`\n }, [slots.default?.({\n color: props.color,\n isActive: props.active\n }) || _createVNode(VProgressLinear, {\n \"absolute\": props.absolute,\n \"active\": props.active,\n \"color\": props.color,\n \"height\": \"2\",\n \"indeterminate\": true\n }, null)]);\n}\n//# sourceMappingURL=loader.js.map","// Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\nconst positionValues = ['static', 'relative', 'fixed', 'absolute', 'sticky'];\n// Composables\nexport const makePositionProps = propsFactory({\n position: {\n type: String,\n validator: /* istanbul ignore next */v => positionValues.includes(v)\n }\n}, 'position');\nexport function usePosition(props) {\n let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();\n const positionClasses = computed(() => {\n return props.position ? `${name}--${props.position}` : undefined;\n });\n return {\n positionClasses\n };\n}\n//# sourceMappingURL=position.js.map","// Utilities\nimport { computed, nextTick, onScopeDispose, reactive, resolveDynamicComponent, toRef } from 'vue';\nimport { deepEqual, getCurrentInstance, hasEvent, IN_BROWSER, propsFactory } from \"../util/index.js\"; // Types\nexport function useRoute() {\n const vm = getCurrentInstance('useRoute');\n return computed(() => vm?.proxy?.$route);\n}\nexport function useRouter() {\n return getCurrentInstance('useRouter')?.proxy?.$router;\n}\nexport function useLink(props, attrs) {\n const RouterLink = resolveDynamicComponent('RouterLink');\n const isLink = computed(() => !!(props.href || props.to));\n const isClickable = computed(() => {\n return isLink?.value || hasEvent(attrs, 'click') || hasEvent(props, 'click');\n });\n if (typeof RouterLink === 'string' || !('useLink' in RouterLink)) {\n const href = toRef(props, 'href');\n return {\n isLink,\n isClickable,\n href,\n linkProps: reactive({\n href\n })\n };\n }\n // vue-router useLink `to` prop needs to be reactive and useLink will crash if undefined\n const linkProps = computed(() => ({\n ...props,\n to: toRef(() => props.to || '')\n }));\n const routerLink = RouterLink.useLink(linkProps.value);\n // Actual link needs to be undefined when to prop is not used\n const link = computed(() => props.to ? routerLink : undefined);\n const route = useRoute();\n const isActive = computed(() => {\n if (!link.value) return false;\n if (!props.exact) return link.value.isActive?.value ?? false;\n if (!route.value) return link.value.isExactActive?.value ?? false;\n return link.value.isExactActive?.value && deepEqual(link.value.route.value.query, route.value.query);\n });\n const href = computed(() => props.to ? link.value?.route.value.href : props.href);\n return {\n isLink,\n isClickable,\n isActive,\n route: link.value?.route,\n navigate: link.value?.navigate,\n href,\n linkProps: reactive({\n href,\n 'aria-current': computed(() => isActive.value ? 'page' : undefined)\n })\n };\n}\nexport const makeRouterProps = propsFactory({\n href: String,\n replace: Boolean,\n to: [String, Object],\n exact: Boolean\n}, 'router');\nlet inTransition = false;\nexport function useBackButton(router, cb) {\n let popped = false;\n let removeBefore;\n let removeAfter;\n if (IN_BROWSER && router?.beforeEach) {\n nextTick(() => {\n window.addEventListener('popstate', onPopstate);\n removeBefore = router.beforeEach((to, from, next) => {\n if (!inTransition) {\n setTimeout(() => popped ? cb(next) : next());\n } else {\n popped ? cb(next) : next();\n }\n inTransition = true;\n });\n removeAfter = router?.afterEach(() => {\n inTransition = false;\n });\n });\n onScopeDispose(() => {\n window.removeEventListener('popstate', onPopstate);\n removeBefore?.();\n removeAfter?.();\n });\n }\n function onPopstate(e) {\n if (e.state?.replaced) return;\n popped = true;\n setTimeout(() => popped = false);\n }\n}\n//# sourceMappingURL=router.js.map","// Utilities\nimport { nextTick, watch } from 'vue';\n\n// Types\n\nexport function useSelectLink(link, select) {\n watch(() => link.isActive?.value, isActive => {\n if (link.isLink.value && isActive && select) {\n nextTick(() => {\n select(true);\n });\n }\n }, {\n immediate: true\n });\n}\n//# sourceMappingURL=selectLink.js.map","// Styles\nimport \"./VRipple.css\";\n\n// Utilities\nimport { isObject, keyCodes } from \"../../util/index.js\"; // Types\nconst stopSymbol = Symbol('rippleStop');\nconst DELAY_RIPPLE = 80;\nfunction transform(el, value) {\n el.style.transform = value;\n el.style.webkitTransform = value;\n}\nfunction isTouchEvent(e) {\n return e.constructor.name === 'TouchEvent';\n}\nfunction isKeyboardEvent(e) {\n return e.constructor.name === 'KeyboardEvent';\n}\nconst calculate = function (e, el) {\n let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let localX = 0;\n let localY = 0;\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect();\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e;\n localX = target.clientX - offset.left;\n localY = target.clientY - offset.top;\n }\n let radius = 0;\n let scale = 0.3;\n if (el._ripple?.circle) {\n scale = 0.15;\n radius = el.clientWidth / 2;\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4;\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2;\n }\n const centerX = `${(el.clientWidth - radius * 2) / 2}px`;\n const centerY = `${(el.clientHeight - radius * 2) / 2}px`;\n const x = value.center ? centerX : `${localX - radius}px`;\n const y = value.center ? centerY : `${localY - radius}px`;\n return {\n radius,\n scale,\n x,\n y,\n centerX,\n centerY\n };\n};\nconst ripples = {\n /* eslint-disable max-statements */\n show(e, el) {\n let value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!el?._ripple?.enabled) {\n return;\n }\n const container = document.createElement('span');\n const animation = document.createElement('span');\n container.appendChild(animation);\n container.className = 'v-ripple__container';\n if (value.class) {\n container.className += ` ${value.class}`;\n }\n const {\n radius,\n scale,\n x,\n y,\n centerX,\n centerY\n } = calculate(e, el, value);\n const size = `${radius * 2}px`;\n animation.className = 'v-ripple__animation';\n animation.style.width = size;\n animation.style.height = size;\n el.appendChild(container);\n const computed = window.getComputedStyle(el);\n if (computed && computed.position === 'static') {\n el.style.position = 'relative';\n el.dataset.previousPosition = 'static';\n }\n animation.classList.add('v-ripple__animation--enter');\n animation.classList.add('v-ripple__animation--visible');\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`);\n animation.dataset.activated = String(performance.now());\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n animation.classList.remove('v-ripple__animation--enter');\n animation.classList.add('v-ripple__animation--in');\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);\n });\n });\n },\n hide(el) {\n if (!el?._ripple?.enabled) return;\n const ripples = el.getElementsByClassName('v-ripple__animation');\n if (ripples.length === 0) return;\n const animation = ripples[ripples.length - 1];\n if (animation.dataset.isHiding) return;else animation.dataset.isHiding = 'true';\n const diff = performance.now() - Number(animation.dataset.activated);\n const delay = Math.max(250 - diff, 0);\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in');\n animation.classList.add('v-ripple__animation--out');\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation');\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition;\n delete el.dataset.previousPosition;\n }\n if (animation.parentNode?.parentNode === el) el.removeChild(animation.parentNode);\n }, 300);\n }, delay);\n }\n};\nfunction isRippleEnabled(value) {\n return typeof value === 'undefined' || !!value;\n}\nfunction rippleShow(e) {\n const value = {};\n const element = e.currentTarget;\n if (!element?._ripple || element._ripple.touched || e[stopSymbol]) return;\n\n // Don't allow the event to trigger ripples on any other elements\n e[stopSymbol] = true;\n if (isTouchEvent(e)) {\n element._ripple.touched = true;\n element._ripple.isTouch = true;\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return;\n }\n value.center = element._ripple.centered || isKeyboardEvent(e);\n if (element._ripple.class) {\n value.class = element._ripple.class;\n }\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return;\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value);\n };\n element._ripple.showTimer = window.setTimeout(() => {\n if (element?._ripple?.showTimerCommit) {\n element._ripple.showTimerCommit();\n element._ripple.showTimerCommit = null;\n }\n }, DELAY_RIPPLE);\n } else {\n ripples.show(e, element, value);\n }\n}\nfunction rippleStop(e) {\n e[stopSymbol] = true;\n}\nfunction rippleHide(e) {\n const element = e.currentTarget;\n if (!element?._ripple) return;\n window.clearTimeout(element._ripple.showTimer);\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit();\n element._ripple.showTimerCommit = null;\n\n // re-queue ripple hiding\n element._ripple.showTimer = window.setTimeout(() => {\n rippleHide(e);\n });\n return;\n }\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false;\n }\n });\n ripples.hide(element);\n}\nfunction rippleCancelShow(e) {\n const element = e.currentTarget;\n if (!element?._ripple) return;\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null;\n }\n window.clearTimeout(element._ripple.showTimer);\n}\nlet keyboardRipple = false;\nfunction keyboardRippleShow(e) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true;\n rippleShow(e);\n }\n}\nfunction keyboardRippleHide(e) {\n keyboardRipple = false;\n rippleHide(e);\n}\nfunction focusRippleHide(e) {\n if (keyboardRipple) {\n keyboardRipple = false;\n rippleHide(e);\n }\n}\nfunction updateRipple(el, binding, wasEnabled) {\n const {\n value,\n modifiers\n } = binding;\n const enabled = isRippleEnabled(value);\n if (!enabled) {\n ripples.hide(el);\n }\n el._ripple = el._ripple ?? {};\n el._ripple.enabled = enabled;\n el._ripple.centered = modifiers.center;\n el._ripple.circle = modifiers.circle;\n if (isObject(value) && value.class) {\n el._ripple.class = value.class;\n }\n if (enabled && !wasEnabled) {\n if (modifiers.stop) {\n el.addEventListener('touchstart', rippleStop, {\n passive: true\n });\n el.addEventListener('mousedown', rippleStop);\n return;\n }\n el.addEventListener('touchstart', rippleShow, {\n passive: true\n });\n el.addEventListener('touchend', rippleHide, {\n passive: true\n });\n el.addEventListener('touchmove', rippleCancelShow, {\n passive: true\n });\n el.addEventListener('touchcancel', rippleHide);\n el.addEventListener('mousedown', rippleShow);\n el.addEventListener('mouseup', rippleHide);\n el.addEventListener('mouseleave', rippleHide);\n el.addEventListener('keydown', keyboardRippleShow);\n el.addEventListener('keyup', keyboardRippleHide);\n el.addEventListener('blur', focusRippleHide);\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, {\n passive: true\n });\n } else if (!enabled && wasEnabled) {\n removeListeners(el);\n }\n}\nfunction removeListeners(el) {\n el.removeEventListener('mousedown', rippleShow);\n el.removeEventListener('touchstart', rippleShow);\n el.removeEventListener('touchend', rippleHide);\n el.removeEventListener('touchmove', rippleCancelShow);\n el.removeEventListener('touchcancel', rippleHide);\n el.removeEventListener('mouseup', rippleHide);\n el.removeEventListener('mouseleave', rippleHide);\n el.removeEventListener('keydown', keyboardRippleShow);\n el.removeEventListener('keyup', keyboardRippleHide);\n el.removeEventListener('dragstart', rippleHide);\n el.removeEventListener('blur', focusRippleHide);\n}\nfunction mounted(el, binding) {\n updateRipple(el, binding, false);\n}\nfunction unmounted(el) {\n delete el._ripple;\n removeListeners(el);\n}\nfunction updated(el, binding) {\n if (binding.value === binding.oldValue) {\n return;\n }\n const wasEnabled = isRippleEnabled(binding.oldValue);\n updateRipple(el, binding, wasEnabled);\n}\nexport const Ripple = {\n mounted,\n unmounted,\n updated\n};\nexport default Ripple;\n//# sourceMappingURL=index.js.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VBtn.css\";\n\n// Components\nimport { VBtnToggleSymbol } from \"../VBtnToggle/VBtnToggle.js\";\nimport { VDefaultsProvider } from \"../VDefaultsProvider/index.js\";\nimport { VIcon } from \"../VIcon/index.js\";\nimport { VProgressCircular } from \"../VProgressCircular/index.js\"; // Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDensityProps, useDensity } from \"../../composables/density.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.js\";\nimport { makeGroupItemProps, useGroupItem } from \"../../composables/group.js\";\nimport { IconValue } from \"../../composables/icons.js\";\nimport { makeLoaderProps, useLoader } from \"../../composables/loader.js\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.js\";\nimport { makePositionProps, usePosition } from \"../../composables/position.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { makeRouterProps, useLink } from \"../../composables/router.js\";\nimport { useSelectLink } from \"../../composables/selectLink.js\";\nimport { makeSizeProps, useSize } from \"../../composables/size.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\";\nimport { genOverlays, makeVariantProps, useVariant } from \"../../composables/variant.js\"; // Directives\nimport { Ripple } from \"../../directives/ripple/index.js\"; // Utilities\nimport { computed, toDisplayString, withDirectives } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVBtnProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined\n },\n activeColor: String,\n baseColor: String,\n symbol: {\n type: null,\n default: VBtnToggleSymbol\n },\n flat: Boolean,\n icon: [Boolean, String, Function, Object],\n prependIcon: IconValue,\n appendIcon: IconValue,\n block: Boolean,\n readonly: Boolean,\n slim: Boolean,\n stacked: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: true\n },\n text: {\n type: [String, Number, Boolean],\n default: undefined\n },\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLoaderProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeSizeProps(),\n ...makeTagProps({\n tag: 'button'\n }),\n ...makeThemeProps(),\n ...makeVariantProps({\n variant: 'elevated'\n })\n}, 'VBtn');\nexport const VBtn = genericComponent()({\n name: 'VBtn',\n props: makeVBtnProps(),\n emits: {\n 'group:selected': val => true\n },\n setup(props, _ref) {\n let {\n attrs,\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n borderClasses\n } = useBorder(props);\n const {\n densityClasses\n } = useDensity(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n loaderClasses\n } = useLoader(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n const {\n sizeClasses,\n sizeStyles\n } = useSize(props);\n const group = useGroupItem(props, props.symbol, false);\n const link = useLink(props, attrs);\n const isActive = computed(() => {\n if (props.active !== undefined) {\n return props.active;\n }\n if (link.isLink.value) {\n return link.isActive?.value;\n }\n return group?.isSelected.value;\n });\n const color = computed(() => isActive.value ? props.activeColor ?? props.color : props.color);\n const variantProps = computed(() => {\n const showColor = group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value;\n return {\n color: showColor ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant\n };\n });\n const {\n colorClasses,\n colorStyles,\n variantClasses\n } = useVariant(variantProps);\n const isDisabled = computed(() => group?.disabled.value || props.disabled);\n const isElevated = computed(() => {\n return props.variant === 'elevated' && !(props.disabled || props.flat || props.border);\n });\n const valueAttr = computed(() => {\n if (props.value === undefined || typeof props.value === 'symbol') return undefined;\n return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;\n });\n function onClick(e) {\n if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === '_blank')) return;\n link.navigate?.(e);\n group?.toggle();\n }\n useSelectLink(link, group?.select);\n useRender(() => {\n const Tag = link.isLink.value ? 'a' : props.tag;\n const hasPrepend = !!(props.prependIcon || slots.prepend);\n const hasAppend = !!(props.appendIcon || slots.append);\n const hasIcon = !!(props.icon && props.icon !== true);\n return withDirectives(_createVNode(Tag, _mergeProps({\n \"type\": Tag === 'a' ? undefined : 'button',\n \"class\": ['v-btn', group?.selectedClass.value, {\n 'v-btn--active': isActive.value,\n 'v-btn--block': props.block,\n 'v-btn--disabled': isDisabled.value,\n 'v-btn--elevated': isElevated.value,\n 'v-btn--flat': props.flat,\n 'v-btn--icon': !!props.icon,\n 'v-btn--loading': props.loading,\n 'v-btn--readonly': props.readonly,\n 'v-btn--slim': props.slim,\n 'v-btn--stacked': props.stacked\n }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],\n \"style\": [colorStyles.value, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],\n \"aria-busy\": props.loading ? true : undefined,\n \"disabled\": isDisabled.value || undefined,\n \"tabindex\": props.loading || props.readonly ? -1 : undefined,\n \"onClick\": onClick,\n \"value\": valueAttr.value\n }, link.linkProps), {\n default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && _createVNode(\"span\", {\n \"key\": \"prepend\",\n \"class\": \"v-btn__prepend\"\n }, [!slots.prepend ? _createVNode(VIcon, {\n \"key\": \"prepend-icon\",\n \"icon\": props.prependIcon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"prepend-defaults\",\n \"disabled\": !props.prependIcon,\n \"defaults\": {\n VIcon: {\n icon: props.prependIcon\n }\n }\n }, slots.prepend)]), _createVNode(\"span\", {\n \"class\": \"v-btn__content\",\n \"data-no-activator\": \"\"\n }, [!slots.default && hasIcon ? _createVNode(VIcon, {\n \"key\": \"content-icon\",\n \"icon\": props.icon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"content-defaults\",\n \"disabled\": !hasIcon,\n \"defaults\": {\n VIcon: {\n icon: props.icon\n }\n }\n }, {\n default: () => [slots.default?.() ?? toDisplayString(props.text)]\n })]), !props.icon && hasAppend && _createVNode(\"span\", {\n \"key\": \"append\",\n \"class\": \"v-btn__append\"\n }, [!slots.append ? _createVNode(VIcon, {\n \"key\": \"append-icon\",\n \"icon\": props.appendIcon\n }, null) : _createVNode(VDefaultsProvider, {\n \"key\": \"append-defaults\",\n \"disabled\": !props.appendIcon,\n \"defaults\": {\n VIcon: {\n icon: props.appendIcon\n }\n }\n }, slots.append)]), !!props.loading && _createVNode(\"span\", {\n \"key\": \"loader\",\n \"class\": \"v-btn__loader\"\n }, [slots.loader?.() ?? _createVNode(VProgressCircular, {\n \"color\": typeof props.loading === 'boolean' ? undefined : props.loading,\n \"indeterminate\": true,\n \"width\": \"2\"\n }, null)])]\n }), [[Ripple, !isDisabled.value && props.ripple, '', {\n center: !!props.icon\n }]]);\n });\n return {\n group\n };\n }\n});\n//# sourceMappingURL=VBtn.js.map","import { createVNode as _createVNode, createTextVNode as _createTextVNode } from \"vue\";\n// Styles\nimport \"./VTimePickerControls.css\";\n\n// Components\nimport { pad } from \"./util.js\";\nimport { VBtn } from \"../../components/VBtn/index.js\"; // Composables\nimport { useLocale } from \"../../composables/locale.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVTimePickerControlsProps = propsFactory({\n ampm: Boolean,\n ampmInTitle: Boolean,\n ampmReadonly: Boolean,\n color: String,\n disabled: Boolean,\n hour: Number,\n minute: Number,\n second: Number,\n period: String,\n readonly: Boolean,\n useSeconds: Boolean,\n value: Number,\n viewMode: String\n}, 'VTimePickerControls');\nexport const VTimePickerControls = genericComponent()({\n name: 'VTimePickerControls',\n props: makeVTimePickerControlsProps(),\n emits: {\n 'update:period': data => true,\n 'update:viewMode': data => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n useRender(() => {\n let hour = props.hour;\n if (props.ampm) {\n hour = hour ? (hour - 1) % 12 + 1 : 12;\n }\n return _createVNode(\"div\", {\n \"class\": \"v-time-picker-controls\"\n }, [_createVNode(\"div\", {\n \"class\": {\n 'v-time-picker-controls__time': true,\n 'v-time-picker-controls__time--with-seconds': props.useSeconds\n }\n }, [_createVNode(VBtn, {\n \"active\": props.viewMode === 'hour',\n \"color\": props.viewMode === 'hour' ? props.color : undefined,\n \"disabled\": props.disabled,\n \"variant\": \"tonal\",\n \"class\": {\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n },\n \"text\": props.hour == null ? '--' : pad(`${hour}`),\n \"onClick\": () => emit('update:viewMode', 'hour')\n }, null), _createVNode(\"span\", {\n \"class\": ['v-time-picker-controls__time__separator', {\n 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds\n }]\n }, [_createTextVNode(\":\")]), _createVNode(VBtn, {\n \"active\": props.viewMode === 'minute',\n \"color\": props.viewMode === 'minute' ? props.color : undefined,\n \"class\": {\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.viewMode === 'minute',\n 'v-time-picker-controls__time--with-ampm__btn': props.ampm,\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n },\n \"disabled\": props.disabled,\n \"variant\": \"tonal\",\n \"text\": props.minute == null ? '--' : pad(props.minute),\n \"onClick\": () => emit('update:viewMode', 'minute')\n }, null), props.useSeconds && _createVNode(\"span\", {\n \"class\": ['v-time-picker-controls__time__separator', {\n 'v-time-picker-controls--with-seconds__time__separator': props.useSeconds\n }],\n \"key\": \"secondsDivider\"\n }, [_createTextVNode(\":\")]), props.useSeconds && _createVNode(VBtn, {\n \"key\": \"secondsVal\",\n \"active\": props.viewMode === 'second',\n \"color\": props.viewMode === 'second' ? props.color : undefined,\n \"variant\": \"tonal\",\n \"onClick\": () => emit('update:viewMode', 'second'),\n \"class\": {\n 'v-time-picker-controls__time__btn': true,\n 'v-time-picker-controls__time__btn__active': props.viewMode === 'second',\n 'v-time-picker-controls__time--with-seconds__btn': props.useSeconds\n },\n \"disabled\": props.disabled,\n \"text\": props.second == null ? '--' : pad(props.second)\n }, null), props.ampm && props.ampmInTitle && _createVNode(\"div\", {\n \"class\": ['v-time-picker-controls__ampm', {\n 'v-time-picker-controls__ampm--readonly': props.ampmReadonly\n }]\n }, [_createVNode(VBtn, {\n \"active\": props.period === 'am',\n \"color\": props.period === 'am' ? props.color : undefined,\n \"class\": {\n 'v-time-picker-controls__ampm__am': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'am'\n },\n \"disabled\": props.disabled,\n \"text\": t('$vuetify.timePicker.am'),\n \"variant\": props.disabled && props.period === 'am' ? 'elevated' : 'tonal',\n \"onClick\": () => props.period !== 'am' ? emit('update:period', 'am') : null\n }, null), _createVNode(VBtn, {\n \"active\": props.period === 'pm',\n \"color\": props.period === 'pm' ? props.color : undefined,\n \"class\": {\n 'v-time-picker-controls__ampm__pm': true,\n 'v-time-picker-controls__ampm__btn': true,\n 'v-time-picker-controls__ampm__btn__active': props.period === 'pm'\n },\n \"disabled\": props.disabled,\n \"text\": t('$vuetify.timePicker.pm'),\n \"variant\": props.disabled && props.period === 'pm' ? 'elevated' : 'tonal',\n \"onClick\": () => props.period !== 'pm' ? emit('update:period', 'pm') : null\n }, null)])])]);\n });\n return {};\n }\n});\n//# sourceMappingURL=VTimePickerControls.js.map","// Utilities\nimport { createSimpleFunctional } from \"../../util/index.js\";\nexport const VPickerTitle = createSimpleFunctional('v-picker-title');\n//# sourceMappingURL=VPickerTitle.js.map","import { createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSheet.css\";\n\n// Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.js\";\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.js\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.js\";\nimport { makePositionProps, usePosition } from \"../../composables/position.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport const makeVSheetProps = propsFactory({\n color: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VSheet');\nexport const VSheet = genericComponent()({\n name: 'VSheet',\n props: makeVSheetProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n const {\n borderClasses\n } = useBorder(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],\n \"style\": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VSheet.js.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VPicker.css\";\n\n// Components\nimport { VPickerTitle } from \"./VPickerTitle.js\";\nimport { VDefaultsProvider } from \"../../components/VDefaultsProvider/VDefaultsProvider.js\";\nimport { makeVSheetProps, VSheet } from \"../../components/VSheet/VSheet.js\"; // Composables\nimport { useBackgroundColor } from \"../../composables/color.js\"; // Utilities\nimport { toRef } from 'vue';\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\"; // Types\nexport const makeVPickerProps = propsFactory({\n bgColor: String,\n divided: Boolean,\n landscape: Boolean,\n title: String,\n hideHeader: Boolean,\n ...makeVSheetProps()\n}, 'VPicker');\nexport const VPicker = genericComponent()({\n name: 'VPicker',\n props: makeVPickerProps(),\n setup(props, _ref) {\n let {\n slots\n } = _ref;\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(toRef(props, 'color'));\n useRender(() => {\n const sheetProps = VSheet.filterProps(props);\n const hasTitle = !!(props.title || slots.title);\n return _createVNode(VSheet, _mergeProps(sheetProps, {\n \"color\": props.bgColor,\n \"class\": ['v-picker', {\n 'v-picker--divided': props.divided,\n 'v-picker--landscape': props.landscape,\n 'v-picker--with-actions': !!slots.actions\n }, props.class],\n \"style\": props.style\n }), {\n default: () => [!props.hideHeader && _createVNode(\"div\", {\n \"key\": \"header\",\n \"class\": [backgroundColorClasses.value],\n \"style\": [backgroundColorStyles.value]\n }, [hasTitle && _createVNode(VPickerTitle, {\n \"key\": \"picker-title\"\n }, {\n default: () => [slots.title?.() ?? props.title]\n }), slots.header && _createVNode(\"div\", {\n \"class\": \"v-picker__header\"\n }, [slots.header()])]), _createVNode(\"div\", {\n \"class\": \"v-picker__body\"\n }, [slots.default?.()]), slots.actions && _createVNode(VDefaultsProvider, {\n \"defaults\": {\n VBtn: {\n slim: true,\n variant: 'text'\n }\n }\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": \"v-picker__actions\"\n }, [slots.actions()])]\n })]\n });\n });\n return {};\n }\n});\n//# sourceMappingURL=VPicker.js.map","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\n// Styles\nimport \"./VTimePicker.css\";\n\n// Components\nimport { pad } from \"./util.js\";\nimport { VTimePickerClock } from \"./VTimePickerClock.js\";\nimport { VTimePickerControls } from \"./VTimePickerControls.js\";\nimport { makeVPickerProps, VPicker } from \"../VPicker/VPicker.js\"; // Composables\nimport { useLocale } from \"../../composables/locale.js\";\nimport { useProxiedModel } from \"../../composables/proxiedModel.js\"; // Utilities\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { createRange, genericComponent, omit, propsFactory, useRender } from \"../../util/index.js\"; // Types\nconst rangeHours24 = createRange(24);\nconst rangeHours12am = createRange(12);\nconst rangeHours12pm = rangeHours12am.map(v => v + 12);\nconst range60 = createRange(60);\nexport const makeVTimePickerProps = propsFactory({\n allowedHours: [Function, Array],\n allowedMinutes: [Function, Array],\n allowedSeconds: [Function, Array],\n ampmInTitle: Boolean,\n disabled: Boolean,\n format: {\n type: String,\n default: 'ampm'\n },\n max: String,\n min: String,\n viewMode: {\n type: String,\n default: 'hour'\n },\n modelValue: null,\n readonly: Boolean,\n scrollable: Boolean,\n useSeconds: Boolean,\n ...omit(makeVPickerProps({\n title: '$vuetify.timePicker.title'\n }), ['landscape'])\n}, 'VTimePicker');\nexport const VTimePicker = genericComponent()({\n name: 'VTimePicker',\n props: makeVTimePickerProps(),\n emits: {\n 'update:hour': val => true,\n 'update:minute': val => true,\n 'update:period': val => true,\n 'update:second': val => true,\n 'update:modelValue': val => true,\n 'update:viewMode': val => true\n },\n setup(props, _ref) {\n let {\n emit,\n slots\n } = _ref;\n const {\n t\n } = useLocale();\n const inputHour = ref(null);\n const inputMinute = ref(null);\n const inputSecond = ref(null);\n const lazyInputHour = ref(null);\n const lazyInputMinute = ref(null);\n const lazyInputSecond = ref(null);\n const period = ref('am');\n const viewMode = useProxiedModel(props, 'viewMode', 'hour');\n const controlsRef = ref(null);\n const clockRef = ref(null);\n const isAllowedHourCb = computed(() => {\n let cb;\n if (props.allowedHours instanceof Array) {\n cb = val => props.allowedHours.includes(val);\n } else {\n cb = props.allowedHours;\n }\n if (!props.min && !props.max) return cb;\n const minHour = props.min ? Number(props.min.split(':')[0]) : 0;\n const maxHour = props.max ? Number(props.max.split(':')[0]) : 23;\n return val => {\n return val >= Number(minHour) && val <= Number(maxHour) && (!cb || cb(val));\n };\n });\n const isAllowedMinuteCb = computed(() => {\n let cb;\n const isHourAllowed = !isAllowedHourCb.value || inputHour.value === null || isAllowedHourCb.value(inputHour.value);\n if (props.allowedMinutes instanceof Array) {\n cb = val => props.allowedMinutes.includes(val);\n } else {\n cb = props.allowedMinutes;\n }\n if (!props.min && !props.max) {\n return isHourAllowed ? cb : () => false;\n }\n const [minHour, minMinute] = props.min ? props.min.split(':').map(Number) : [0, 0];\n const [maxHour, maxMinute] = props.max ? props.max.split(':').map(Number) : [23, 59];\n const minTime = minHour * 60 + Number(minMinute);\n const maxTime = maxHour * 60 + Number(maxMinute);\n return val => {\n const time = 60 * inputHour.value + val;\n return time >= minTime && time <= maxTime && isHourAllowed && (!cb || cb(val));\n };\n });\n const isAllowedSecondCb = computed(() => {\n let cb;\n const isHourAllowed = !isAllowedHourCb.value || inputHour.value === null || isAllowedHourCb.value(inputHour.value);\n const isMinuteAllowed = isHourAllowed && (!isAllowedMinuteCb.value || inputMinute.value === null || isAllowedMinuteCb.value(inputMinute.value));\n if (props.allowedSeconds instanceof Array) {\n cb = val => props.allowedSeconds.includes(val);\n } else {\n cb = props.allowedSeconds;\n }\n if (!props.min && !props.max) {\n return isMinuteAllowed ? cb : () => false;\n }\n const [minHour, minMinute, minSecond] = props.min ? props.min.split(':').map(Number) : [0, 0, 0];\n const [maxHour, maxMinute, maxSecond] = props.max ? props.max.split(':').map(Number) : [23, 59, 59];\n const minTime = minHour * 3600 + minMinute * 60 + Number(minSecond || 0);\n const maxTime = maxHour * 3600 + maxMinute * 60 + Number(maxSecond || 0);\n return val => {\n const time = 3600 * inputHour.value + 60 * inputMinute.value + val;\n return time >= minTime && time <= maxTime && isMinuteAllowed && (!cb || cb(val));\n };\n });\n const isAmPm = computed(() => {\n return props.format === 'ampm';\n });\n watch(() => props.modelValue, val => setInputData(val));\n onMounted(() => {\n setInputData(props.modelValue);\n });\n function genValue() {\n if (inputHour.value != null && inputMinute.value != null && (!props.useSeconds || inputSecond.value != null)) {\n return `${pad(inputHour.value)}:${pad(inputMinute.value)}` + (props.useSeconds ? `:${pad(inputSecond.value)}` : '');\n }\n return null;\n }\n function emitValue() {\n const value = genValue();\n if (value !== null) emit('update:modelValue', value);\n }\n function convert24to12(hour) {\n return hour ? (hour - 1) % 12 + 1 : 12;\n }\n function convert12to24(hour, period) {\n return hour % 12 + (period === 'pm' ? 12 : 0);\n }\n function setInputData(value) {\n if (value == null || value === '') {\n inputHour.value = null;\n inputMinute.value = null;\n inputSecond.value = null;\n } else if (value instanceof Date) {\n inputHour.value = value.getHours();\n inputMinute.value = value.getMinutes();\n inputSecond.value = value.getSeconds();\n } else {\n const [hour,, minute,, second, period] = value.trim().toLowerCase().match(/^(\\d+):(\\d+)(:(\\d+))?([ap]m)?$/) || new Array(6);\n inputHour.value = period ? convert12to24(parseInt(hour, 10), period) : parseInt(hour, 10);\n inputMinute.value = parseInt(minute, 10);\n inputSecond.value = parseInt(second || 0, 10);\n }\n period.value = inputHour.value == null || inputHour.value < 12 ? 'am' : 'pm';\n }\n function firstAllowed(type, value) {\n const allowedFn = type === 'hour' ? isAllowedHourCb.value : type === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value;\n if (!allowedFn) return value;\n\n // TODO: clean up (Note from V2 code)\n const range = type === 'minute' ? range60 : type === 'second' ? range60 : isAmPm.value ? value < 12 ? rangeHours12am : rangeHours12pm : rangeHours24;\n const first = range.find(v => allowedFn((v + value) % range.length + range[0]));\n return ((first || 0) + value) % range.length + range[0];\n }\n function setPeriod(val) {\n period.value = val;\n if (inputHour.value != null) {\n const newHour = inputHour.value + (period.value === 'am' ? -12 : 12);\n inputHour.value = firstAllowed('hour', newHour);\n }\n emit('update:period', val);\n emitValue();\n return true;\n }\n function onInput(value) {\n if (viewMode.value === 'hour') {\n inputHour.value = isAmPm.value ? convert12to24(value, period.value) : value;\n } else if (viewMode.value === 'minute') {\n inputMinute.value = value;\n } else {\n inputSecond.value = value;\n }\n }\n function onChange(value) {\n switch (viewMode.value || 'hour') {\n case 'hour':\n emit('update:hour', value);\n break;\n case 'minute':\n emit('update:minute', value);\n break;\n case 'second':\n emit('update:second', value);\n break;\n default:\n break;\n }\n const emitChange = inputHour.value !== null && inputMinute.value !== null && (props.useSeconds ? inputSecond.value !== null : true);\n if (viewMode.value === 'hour') {\n viewMode.value = 'minute';\n } else if (props.useSeconds && viewMode.value === 'minute') {\n viewMode.value = 'second';\n }\n if (inputHour.value === lazyInputHour.value && inputMinute.value === lazyInputMinute.value && (!props.useSeconds || inputSecond.value === lazyInputSecond.value)) return;\n const time = genValue();\n if (time === null) return;\n lazyInputHour.value = inputHour.value;\n lazyInputMinute.value = inputMinute.value;\n props.useSeconds && (lazyInputSecond.value = inputSecond.value);\n emitChange && emitValue();\n }\n useRender(() => {\n const pickerProps = VPicker.filterProps(props);\n const timePickerControlsProps = VTimePickerControls.filterProps(props);\n const timePickerClockProps = VTimePickerClock.filterProps(omit(props, ['format', 'modelValue', 'min', 'max']));\n return _createVNode(VPicker, _mergeProps(pickerProps, {\n \"color\": undefined,\n \"class\": ['v-time-picker', props.class],\n \"style\": props.style\n }), {\n title: () => slots.title?.() ?? _createVNode(\"div\", {\n \"class\": \"v-time-picker__title\"\n }, [t(props.title)]),\n header: () => _createVNode(VTimePickerControls, _mergeProps(timePickerControlsProps, {\n \"ampm\": isAmPm.value || props.ampmInTitle,\n \"ampmReadonly\": isAmPm.value && !props.ampmInTitle,\n \"hour\": inputHour.value,\n \"minute\": inputMinute.value,\n \"period\": period.value,\n \"second\": inputSecond.value,\n \"viewMode\": viewMode.value,\n \"onUpdate:period\": val => setPeriod(val),\n \"onUpdate:viewMode\": value => viewMode.value = value,\n \"ref\": controlsRef\n }), null),\n default: () => _createVNode(VTimePickerClock, _mergeProps(timePickerClockProps, {\n \"allowedValues\": viewMode.value === 'hour' ? isAllowedHourCb.value : viewMode.value === 'minute' ? isAllowedMinuteCb.value : isAllowedSecondCb.value,\n \"double\": viewMode.value === 'hour' && !isAmPm.value,\n \"format\": viewMode.value === 'hour' ? isAmPm.value ? convert24to12 : val => val : val => pad(val, 2),\n \"max\": viewMode.value === 'hour' ? isAmPm.value && period.value === 'am' ? 11 : 23 : 59,\n \"min\": viewMode.value === 'hour' && isAmPm.value && period.value === 'pm' ? 12 : 0,\n \"size\": 20,\n \"step\": viewMode.value === 'hour' ? 1 : 5,\n \"modelValue\": viewMode.value === 'hour' ? inputHour.value : viewMode.value === 'minute' ? inputMinute.value : inputSecond.value,\n \"onChange\": onChange,\n \"onInput\": onInput,\n \"ref\": clockRef\n }), null),\n actions: slots.actions\n });\n });\n }\n});\n//# sourceMappingURL=VTimePicker.js.map","<template>\n <input-base v-bind=\"props\" clearable @click:clear=\"value = null\">\n <v-menu\n v-model=\"dropdownShown\"\n location=\"top start\"\n :origin=\"`bottom ${inputType === 'datetime' ? 'center' : 'start'}`\"\n :close-on-content-click=\"false\"\n >\n <template #activator=\"{ props: menuProps }\">\n <div class=\"d-flex w-100\">\n <v-text-field\n v-if=\"['date', 'datetime'].includes(inputType)\"\n v-model=\"dateFormatted\"\n style=\"flex-grow: 4\"\n density=\"compact\"\n :clearable=\"false\"\n :hide-details=\"true\"\n :readonly=\"vuetifyBindings.readonly\"\n :disabled=\"vuetifyBindings.disabled\"\n :name=\"`${vuetifyBindings.name}-date`\"\n v-bind=\"menuProps\"\n @click=\"dropdown = 'date'\"\n @keydown.space=\"dropdown = 'date'\"\n />\n <v-text-field\n v-if=\"['time', 'datetime'].includes(inputType)\"\n v-model=\"timeFormatted\"\n style=\"flex-grow: 3\"\n density=\"compact\"\n :clearable=\"false\"\n :hide-details=\"true\"\n :readonly=\"vuetifyBindings.readonly\"\n :disabled=\"vuetifyBindings.disabled\"\n :name=\"`${vuetifyBindings.name}-time`\"\n v-bind=\"menuProps\"\n @click=\"dropdown = 'time'\"\n @keydown.space=\"dropdown = 'time'\"\n />\n </div>\n </template>\n <v-confirm-edit\n v-if=\"dropdown === 'date'\"\n v-model=\"valueAsDate\"\n @cancel=\"dropdown = ''\"\n @save=\"dropdown = ''\"\n >\n <template #default=\"{ model: proxyModel, actions }\">\n <v-date-picker\n v-model=\"proxyModel.value\"\n :hide-header=\"true\"\n :first-day-of-week=\"1\"\n :show-adjacent-months=\"true\"\n :show-week=\"true\"\n >\n <template #actions><component :is=\"actions\"/></template>\n </v-date-picker>\n </template>\n </v-confirm-edit>\n <v-confirm-edit\n v-if=\"dropdown === 'time'\"\n v-model=\"valueAsTimeString\"\n @cancel=\"dropdown = ''\"\n @save=\"dropdown = ''\"\n >\n <template #default=\"{ model: proxyModel, actions }\">\n <v-time-picker\n v-model=\"proxyModel.value\"\n :hide-header=\"true\"\n format=\"24hr\"\n >\n <template #actions><component :is=\"actions\"/></template>\n </v-time-picker>\n </template>\n </v-confirm-edit>\n </v-menu>\n </input-base>\n</template>\n\n<script setup lang=\"ts\">\nimport { format, parse } from 'date-fns';\nimport { toNumber, isNaN } from 'lodash-es';\nimport { ref, computed, watch, toRefs, unref } from 'vue';\nimport { VTimePicker } from 'vuetify/labs/VTimePicker'; // eslint-disable-line import/extensions\n\nimport { BaseEmits, BaseProps, defaultBaseProps, InputBase, useInputBase } from './helpers';\n\ninterface Props extends BaseProps {\n inputType?: 'datetime' | 'date' | 'time';\n displayFormatDate?: string;\n displayFormatTime?: string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n ...defaultBaseProps,\n inputType: 'datetime',\n displayFormatDate: 'P',\n displayFormatTime: 'p',\n});\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { value, vuetifyBindings } = useInputBase<string | null>(props, emits);\nconst { inputType, displayFormatDate, displayFormatTime } = toRefs(props);\n\nconst dropdown = ref('');\nconst dropdownShown = computed({\n get() { return unref(dropdown) !== ''; },\n set(newValue: boolean) { if (newValue) dropdown.value = 'date'; else dropdown.value = ''; },\n});\n\nconst formatNaive = (val: Date) => `${format(val, 'yyyy-MM-dd')}T${format(val, 'HH:mm')}:00`;\n\nconst valueISOFull = ref<string | null>(null);\nfunction setValueISOFull(newISOValue: string | null, dateOrTimeIdx: number) {\n if (newISOValue == null) {\n valueISOFull.value = null;\n } else if (dateOrTimeIdx === -1) {\n // setting valueISOFull from value\n if (unref(inputType) === 'time') {\n valueISOFull.value = formatNaive(new Date());\n setValueISOFull(`T${newISOValue}`, 1);\n } else {\n const val = formatNaive(new Date(newISOValue));\n setValueISOFull(val, 0);\n setValueISOFull(val, 1);\n }\n } else {\n if (valueISOFull.value == null) valueISOFull.value = formatNaive(new Date());\n const vif = valueISOFull.value.split(/[TZ]/g);\n const nv = newISOValue!.split(/[TZ]/g);\n vif[dateOrTimeIdx] = nv[dateOrTimeIdx];\n valueISOFull.value = formatNaive(new Date(`${vif[0]}T${vif[1].split('.')[0]}`));\n\n if (unref(inputType) === 'date') value.value = vif[0];\n else if (unref(inputType) === 'time') value.value = vif[1];\n else value.value = unref(valueISOFull);\n }\n}\nwatch(value, (newValue: string | null) => setValueISOFull(newValue, -1), { immediate: true });\n\nconst valueAsDate = computed({\n get() {\n const uValue = unref(valueISOFull);\n if (uValue == null) return null;\n const res = new Date(uValue);\n return !Number.isNaN(res.getTime()) ? res : null;\n },\n set(newValue: Date) { setValueISOFull(formatNaive(newValue), 0); },\n});\n\nconst valueAsTimeString = computed({\n get() {\n const val = unref(valueISOFull);\n if (val == null) return '';\n const vif = val.split(/[TZ]/g);\n return vif[1].split('.')[0];\n },\n set(newValue: string) { setValueISOFull(`T${newValue}`, 1); },\n});\n\nconst dateFormatted = computed({\n get() {\n const vad = unref(valueAsDate);\n if (vad == null) return '';\n return format(vad, unref(displayFormatDate));\n },\n set(newValue: string) {\n try {\n const d = parse(newValue, unref(displayFormatDate), new Date());\n setValueISOFull(formatNaive(d), 0);\n } catch (err) {\n console.error(err);\n }\n },\n});\n\nconst timeFormatted = computed({\n get() {\n const vad = unref(valueAsDate);\n if (vad == null) return '';\n return format(vad, unref(displayFormatTime));\n },\n set(newValue: string) {\n const d = newValue.match(/(\\d+):(\\d+)\\s?([a-zA-Z]+)?/);\n if (d == null) return;\n let hour = toNumber(d[1]);\n const minute = toNumber(d[2]);\n if (isNaN(hour) || isNaN(minute)) return;\n if (d[3] && d[3].toLowerCase() === 'pm' && hour < 13) hour += 12;\n setValueISOFull(`T${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:00`, 1);\n },\n});\n</script>\n\n<style scoped>\n</style>\n","<template>\n <input-base v-bind=\"props\" clearable @click:clear=\"removeFile\">\n <div style=\"position: relative; width: 100%\">\n <v-progress-linear\n v-if=\"currentFile && progress < 100\"\n :model-value=\"progress\"\n :indeterminate=\"progress === -1\"\n height=\"10\"\n style=\"position: absolute; top: 50%; transform: translateY(-50%); width: 100%;\"\n />\n <v-file-input\n v-model=\"selectedFile\"\n :label=\"fileLabel\"\n :readonly=\"vuetifyBindings.readonly\"\n :disabled=\"vuetifyBindings.disabled\"\n :name=\"vuetifyBindings.name\"\n :hide-details=\"true\"\n :show-size=\"true\"\n :multiple=\"false\"\n :style=\"currentFile && progress < 100 ? 'visibility: hidden' : ''\"\n :clearable=\"false\"\n @update:model-value=\"handleFileChange\"\n />\n </div>\n </input-base>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onBeforeUnmount, watch } from 'vue';\n\nimport { BaseEmits, BaseProps, defaultBaseProps, FileComms, InputBase, useInputBase } from './helpers';\n\ninterface Props extends BaseProps {\n comms: FileComms;\n}\nconst props = withDefaults(defineProps<Props>(), defaultBaseProps);\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { value, vuetifyBindings } = useInputBase(props, emits);\nconst touchInterval = ref<number | null>(null);\n\n// State\nconst currentFile = ref<File | null>(null);\nconst progress = ref(0);\nconst fileInputKey = ref(Math.round(Math.random() * 1000));\nconst selectedFile = ref<File | null>();\n\nconst fileLabel = computed(() => {\n if (!selectedFile.value && value.value) {\n return props.modelValue;\n }\n return '';\n});\n\nfunction clearTouchInterval() { if (touchInterval.value) window.clearInterval(touchInterval.value); }\nfunction setupTouchInterval() {\n clearTouchInterval();\n touchInterval.value = window.setInterval(() => {\n if (value.value) props.comms.touch(value.value);\n }, 60 * 1000);\n}\n\nonBeforeUnmount(() => clearTouchInterval());\nwatch(value, (newValue) => { if (newValue) setupTouchInterval(); else clearTouchInterval(); });\n\nasync function removeFile() {\n if (value.value) {\n await props.comms.delete(value.value);\n }\n\n value.value = null;\n progress.value = 0;\n fileInputKey.value = Math.round(Math.random() * 1000);\n currentFile.value = null;\n selectedFile.value = null;\n clearTouchInterval();\n}\n\nasync function upload(file: File) {\n progress.value = -1;\n currentFile.value = file;\n\n const formData = new FormData();\n formData.append('file', file, file.name);\n\n try {\n value.value = await props.comms.upload(\n file,\n (loaded: number, total: number) => {\n progress.value = Math.round((loaded * 100) / total);\n },\n );\n progress.value = 100;\n setupTouchInterval();\n } catch (err) {\n progress.value = 0;\n currentFile.value = null;\n fileInputKey.value = Math.round(Math.random() * 1000);\n selectedFile.value = null;\n throw err;\n }\n}\n\nfunction handleFileChange(file: File | File[]): any {\n if (file) {\n if (Array.isArray(file)) {\n console.error('Uploading multiple files not supported right now');\n } else {\n upload(file);\n }\n }\n}\n</script>\n","<template>\n <div class=\"container\">\n <v-text-field\n v-if=\"!isNumber\"\n v-model=\"value\"\n v-bind=\"vuetifyBindings as any\"\n variant=\"underlined\"\n :type=\"inputType\"\n >\n <template #message><errors-widget :errors=\"errors\"/></template>\n </v-text-field>\n <v-number-input\n v-else\n v-model=\"value\"\n v-bind=\"{ ...vuetifyBindings, ...numberInputBindings } as any\"\n density=\"compact\"\n control-variant=\"stacked\"\n variant=\"underlined\"\n >\n <template #message><errors-widget :errors=\"errors\"/></template>\n </v-number-input>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs } from 'vue';\n\nimport { BaseEmits, BaseProps, defaultBaseProps, ErrorsWidget, useInputBase } from './helpers';\n\ninterface Props extends BaseProps {\n inputType?: 'text' | 'password' | 'email' | 'url' | 'number';\n precision?: number;\n step?: number;\n min?: number;\n max?: number;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n ...defaultBaseProps,\n inputType: 'text',\n precision: undefined,\n step: undefined,\n min: undefined,\n max: undefined,\n});\n\ninterface Emits extends BaseEmits {\n}\n\nconst emits = defineEmits<Emits>();\n\nconst { errors, value, vuetifyBindings } = useInputBase(props, emits);\nconst { inputType, max, min, precision, step } = toRefs(props);\n\nconst isNumber = computed(() => inputType.value === 'number');\nconst numberInputBindings = computed(() => (\n !isNumber.value ? {} : { min: min.value, max: max.value, precision: precision.value, step: step.value }\n));\n</script>\n\n<style scoped>\n.container {\n width: 100%;\n}\n</style>\n","<template>\n <div class=\"editor-container\">\n <div class=\"editor-container__editor\">\n <div ref=\"editorElement\">\n <ckeditor\n v-if=\"isLayoutReady\"\n :model-value=\"modelValue\"\n :editor=\"editor\"\n :config=\"editorConfig\"\n :disabled=\"disabled\"\n @ready=\"onEditorReady\"\n @update:model-value=\"(event: any) => emit('update:modelValue', event)\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { Editor, EditorConfig } from '@ckeditor/ckeditor5-core';\nimport {\n ClassicEditor, AccessibilityHelp, Alignment, AutoImage, AutoLink, Autosave, BalloonToolbar, BlockQuote,\n Bold, CloudServices, Essentials, GeneralHtmlSupport, Heading, HorizontalLine, ImageBlock, ImageCaption,\n ImageInline, ImageInsertViaUrl, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Indent, IndentBlock,\n Italic, Link, List, MediaEmbed, Paragraph, PasteFromMarkdownExperimental, PasteFromOffice, Autoformat,\n SelectAll, Style, Table, TableCellProperties, TableColumnResize, TableProperties, TableToolbar, Undo,\n HeadingConfig, TextTransformation, Base64UploadAdapter,\n} from 'ckeditor5';\nimport { ref, onMounted } from 'vue';\n\nwithDefaults(defineProps<{\n modelValue: string;\n minHeight?: string;\n disabled?: boolean;\n}>(), { modelValue: '', minHeight: '7em', disabled: false });\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>();\n\nconst isLayoutReady = ref(false);\nconst editor = ClassicEditor;\n\nconst editorToolbarConfig = {\n items: [\n 'undo', 'redo', '|',\n 'selectAll', '|',\n 'heading', 'style', '|',\n 'bold', 'italic', '|',\n 'horizontalLine', 'link', 'mediaEmbed', 'insertTable', 'blockQuote', '|',\n 'alignment', '|',\n 'bulletedList', 'numberedList', 'outdent', 'indent', '|',\n 'accessibilityHelp',\n ],\n shouldNotGroupWhenFull: false,\n};\nconst editorPlugins = [\n AccessibilityHelp, Alignment, AutoImage, AutoLink, Autosave, BalloonToolbar, BlockQuote, Bold, CloudServices,\n Essentials, GeneralHtmlSupport, Heading, HorizontalLine, ImageBlock, ImageCaption, ImageInline, ImageInsertViaUrl,\n ImageResize, ImageStyle, ImageToolbar, ImageUpload, Indent, IndentBlock, Italic, Link, List, Autoformat,\n MediaEmbed, Paragraph, PasteFromMarkdownExperimental, PasteFromOffice, SelectAll, Style, Table, TableCellProperties,\n TableColumnResize, TableProperties, TableToolbar, Undo, TextTransformation, Base64UploadAdapter,\n];\nconst editorHeadings: HeadingConfig = {\n options: [\n { model: 'paragraph', title: 'Paragraph', class: 'ck-heading_paragraph' },\n { model: 'heading1', view: 'h1', title: 'Heading 1', class: 'ck-heading_heading1' },\n { model: 'heading2', view: 'h2', title: 'Heading 2', class: 'ck-heading_heading2' },\n { model: 'heading3', view: 'h3', title: 'Heading 3', class: 'ck-heading_heading3' },\n { model: 'heading4', view: 'h4', title: 'Heading 4', class: 'ck-heading_heading4' },\n { model: 'heading5', view: 'h5', title: 'Heading 5', class: 'ck-heading_heading5' },\n { model: 'heading6', view: 'h6', title: 'Heading 6', class: 'ck-heading_heading6' },\n ],\n};\nconst editorConfig: EditorConfig = {\n toolbar: editorToolbarConfig,\n plugins: editorPlugins,\n balloonToolbar: ['bold', 'italic', '|', 'link', '|', 'bulletedList', 'numberedList'],\n heading: editorHeadings,\n htmlSupport: {\n allow: [\n { name: /^.*$/, styles: true, attributes: true, classes: true },\n ],\n },\n image: {\n toolbar: [\n 'toggleImageCaption', 'imageTextAlternative', '|',\n 'imageStyle:inline', 'imageStyle:wrapText', 'imageStyle:breakText', '|',\n 'resizeImage',\n ],\n },\n // initialData: '',\n link: {\n addTargetToExternalLinks: true,\n defaultProtocol: 'https://',\n decorators: {\n toggleDownloadable: {\n mode: 'manual',\n label: 'Downloadable',\n attributes: { download: 'file' },\n },\n },\n },\n placeholder: 'Type or paste your content here!',\n style: {\n definitions: [\n { name: 'Article category', element: 'h3', classes: ['category'] },\n { name: 'Title', element: 'h2', classes: ['document-title'] },\n { name: 'Subtitle', element: 'h3', classes: ['document-subtitle'] },\n { name: 'Info box', element: 'p', classes: ['info-box'] },\n { name: 'Side quote', element: 'blockquote', classes: ['side-quote'] },\n { name: 'Marker', element: 'span', classes: ['marker'] },\n { name: 'Spoiler', element: 'span', classes: ['spoiler'] },\n { name: 'Code (dark)', element: 'pre', classes: ['fancy-code', 'fancy-code-dark'] },\n { name: 'Code (bright)', element: 'pre', classes: ['fancy-code', 'fancy-code-bright'] },\n ],\n },\n table: { contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells', 'tableProperties', 'tableCellProperties'] },\n};\n\nonMounted(() => {\n isLayoutReady.value = true;\n});\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst onEditorReady = (editorReady: Editor) => {\n // console.log('Editor is ready to use!', editorReady);\n};\n\ndefineExpose({ onEditorReady });\n</script>\n\n<style>\n@import 'ckeditor5/ckeditor5.css';\n@import url('https://fonts.googleapis.com/css2?family=Oswald&family=PT+Serif:ital,wght@0,400;0,700;1,400&display=swap');\n@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400;1,700&display=swap');\n\n:root {\n /* In addition to this, any v-dialog must also have :retain-focus=\"false\" */\n --ck-z-default: 20000!important;\n --ck-z-modal: calc( var(--ck-z-default) + 20999 );\n}\n\n@media print {\n body {\n margin: 0 !important;\n }\n}\n\n.editor-container {\n font-family: 'Lato';\n}\n\n.ck-content {\n font-family: 'Lato';\n line-height: 1.6;\n word-break: break-word;\n}\n\n.editor-container, .editor-container__editor {\n width: 100%;\n}\n\n:root .ck-editor__editable_inline {\n min-height: v-bind(minHeight);\n}\n\n.ck-content h3.category {\n font-family: 'Oswald';\n font-size: 20px;\n font-weight: bold;\n color: #555;\n letter-spacing: 10px;\n margin: 0;\n padding: 0;\n}\n\n.ck-content h2.document-title {\n font-family: 'Oswald';\n font-size: 50px;\n font-weight: bold;\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n.ck-content h3.document-subtitle {\n font-family: 'Oswald';\n font-size: 20px;\n color: #555;\n margin: 0 0 1em;\n font-weight: bold;\n padding: 0;\n}\n\ndiv.ck.ck-editor__editable_inline * {\n /* disables any styles declared on the page prior to the editor */\n all: revert;\n}\n\n.ck-content p.info-box {\n --background-size: 30px;\n --background-color: #e91e63;\n padding: 1.2em 2em;\n border: 1px solid var(--background-color);\n background: linear-gradient(\n 135deg,\n var(--background-color) 0%,\n var(--background-color) var(--background-size),\n transparent var(--background-size)\n ),\n linear-gradient(\n 135deg,\n transparent calc(100% - var(--background-size)),\n var(--background-color) calc(100% - var(--background-size)),\n var(--background-color)\n );\n border-radius: 10px;\n margin: 1.5em 2em;\n box-shadow: 5px 5px 0 #ffe6ef;\n}\n\n.ck-content blockquote.side-quote {\n font-family: 'Oswald';\n font-style: normal;\n float: right;\n width: 35%;\n position: relative;\n border: 0;\n overflow: visible;\n z-index: 1;\n margin-left: 1em;\n}\n\n.ck-content blockquote.side-quote::before {\n content: '“';\n position: absolute;\n top: -37px;\n left: -10px;\n display: block;\n font-size: 200px;\n color: #e7e7e7;\n z-index: -1;\n line-height: 1;\n}\n\n.ck-content blockquote.side-quote p {\n font-size: 2em;\n line-height: 1;\n}\n\n.ck-content blockquote.side-quote p:last-child:not(:first-child) {\n font-size: 1.3em;\n text-align: right;\n color: #555;\n}\n\n.ck-content span.marker {\n background: yellow;\n}\n\n.ck-content span.spoiler {\n background: #000;\n color: #000;\n}\n\n.ck-content span.spoiler:hover {\n background: #000;\n color: #fff;\n}\n\n.ck-content pre.fancy-code {\n border: 0;\n margin-left: 2em;\n margin-right: 2em;\n border-radius: 10px;\n}\n\n.ck-content pre.fancy-code::before {\n content: '';\n display: block;\n height: 13px;\n background: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NCAxMyI+CiAgPGNpcmNsZSBjeD0iNi41IiBjeT0iNi41IiByPSI2LjUiIGZpbGw9IiNGMzZCNUMiLz4KICA8Y2lyY2xlIGN4PSIyNi41IiBjeT0iNi41IiByPSI2LjUiIGZpbGw9IiNGOUJFNEQiLz4KICA8Y2lyY2xlIGN4PSI0Ny41IiBjeT0iNi41IiByPSI2LjUiIGZpbGw9IiM1NkM0NTMiLz4KPC9zdmc+Cg==);\n margin-bottom: 8px;\n background-repeat: no-repeat;\n}\n\n.ck-content pre.fancy-code-dark {\n background: #272822;\n color: #fff;\n box-shadow: 5px 5px 0 #0000001f;\n}\n\n.ck-content pre.fancy-code-bright {\n background: #dddfe0;\n color: #000;\n box-shadow: 5px 5px 0 #b3b3b3;\n}\n</style>\n","<template>\n <input-base v-bind=\"props\">\n <ck-editor-custom ref=\"$editor\" v-model=\"value\" :min-height=\"minHeight\" :disabled=\"vuetifyBindings.disabled\"/>\n </input-base>\n</template>\n\n<script setup lang=\"ts\">\nimport { BaseEmits, BaseProps, defaultBaseProps, InputBase, useInputBase } from './helpers';\nimport CkEditorCustom from './helpers/ck-editor-custom.vue';\n\ninterface Props extends BaseProps {\n minHeight?: string;\n}\nconst props = withDefaults(defineProps<Props>(), { ...defaultBaseProps, minHeight: undefined });\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { value, vuetifyBindings } = useInputBase(props, emits);\n</script>\n","import { isArray, first, castArray } from 'lodash-es';\nimport { Ref } from 'vue';\n\nimport { SelectChoice } from './df-select.interface';\n\nexport function convertItems(items: SelectChoice[]) {\n return items.map((item) => ({ value: item.id, title: item.text, icon: item.icon }));\n}\n\n/**\n * multipleCompliantValue ensures that resulting value of the select component is\n * 1 - null, when nothing is selected\n * 2 - array, when multiple is truthy\n * 3 - ordinal / simple value when multiple is not truthy\n * @param value the value to make compliant\n * @param multiple indicator for multiple selection\n */\nexport function multipleCompliantValue(value: any, multiple: boolean): any {\n // Če je vrednost null ali undefined\n if (value == null) return null;\n\n // Če je prazno polje (za multiple)\n if (isArray(value) && value.length === 0) return null;\n\n // Za multiple vedno vrni polje\n if (multiple) return castArray(value);\n\n // Za single vrni prvo vrednost ali vrednost samo\n return isArray(value) ? (first(value) ?? null) : value;\n}\n\nexport function getSelectedChoices(loadedChoices: SelectChoice[], multipleCpliantValue: any | any[] | null) {\n if (multipleCpliantValue == null) return [];\n const mcValue = castArray(multipleCpliantValue);\n return loadedChoices.filter((choice) => mcValue.some((val: any) => val === choice.id));\n}\n\n/**\n * updateSelectedFromValue ensures that the actual select component receives model-value formatted to its needs\n */\nexport function updateSelectedFromValue(\n resultingValue: any,\n selected: Ref<any>,\n multiple: boolean,\n taggable: boolean,\n loadedChoices: SelectChoice[],\n) {\n const mcValue = multipleCompliantValue(resultingValue, multiple);\n\n if (mcValue == null) {\n selected.value = multiple ? [] : null;\n return;\n }\n\n if (multiple) {\n if (taggable) {\n // if taggable (can add new items not in choices), keep the value as-is\n selected.value = mcValue;\n } else {\n // when not taggable, we filter the result to existing choices\n selected.value = getSelectedChoices(loadedChoices, mcValue).map((choice) => choice.id);\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (taggable) {\n // if taggable, we just keep the selected value\n selected.value = mcValue;\n } else {\n // when not taggable, we filter the result to existing choices\n const matchingChoice = first(getSelectedChoices(loadedChoices, mcValue));\n selected.value = matchingChoice?.id ?? null;\n }\n }\n}\n","<template>\n <component\n :is=\"taggable ? 'v-combobox' : 'v-autocomplete'\"\n v-if=\"visibility !== DisplayMode.SUPPRESS\"\n v-model=\"selected\"\n\n :class=\"[\n cssClass,\n {\n 'd-none': visibility === DisplayMode.HIDDEN,\n invisible: visibility === DisplayMode.INVISIBLE,\n },\n ]\"\n\n density=\"compact\"\n :items=\"options\"\n :return-object=\"false\"\n\n v-bind=\"vuetifyBindings\"\n :label=\"isFocused ? '' : vuetifyBindings.label\"\n\n chips\n :auto-select-first=\"true\"\n :closable-chips=\"allowNull || (multiple && selected.length > 1)\"\n :clearable=\"allowNull\"\n :multiple=\"multiple\"\n :loading=\"loading\"\n :hide-selected=\"false\"\n :aria-describedby=\"vuetifyBindings.helpText ? `${vuetifyBindings.name}-help` : null\"\n :menu-props=\"{ maxHeight: '400' }\"\n hide-details=\"auto\"\n @update:search=\"(query: any) => queryOptions(query, undefined)\"\n @update:model-value=\"onSelect\"\n @click:clear=\"selected.value = null\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n >\n <template #chip=\"{ item }\">\n <v-chip\n :key=\"item.value\"\n label\n size=\"small\"\n :variant=\"multiple ? 'tonal' : 'text'\"\n :closable=\"multiple\"\n @click:close=\"chipClose(item.value)\"\n >\n <template #prepend>\n <span v-if=\"item.raw?.icon\" class=\"me-1\">\n <IonIcon class=\"action-icon d-inline-block\" :name=\"item.raw.icon\"/>\n </span>\n </template>\n {{ item.title }}\n </v-chip>\n </template>\n\n <template #item=\"{ props: prps, item }\">\n <v-list-item v-bind=\"prps\">\n <template #prepend>\n <span v-if=\"item.raw?.icon\" class=\"me-1\">\n <IonIcon class=\"action-icon d-inline-block\" :name=\"item.raw.icon\"/>\n </span>\n </template>\n </v-list-item>\n </template>\n <template #message>\n <errors-widget :errors=\"errors\"/>\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { DisplayMode } from '@dynamicforms/vue-forms';\nimport { ref, computed, toRefs, watch, nextTick } from 'vue';\nimport IonIcon from 'vue-ionicon';\n\nimport {\n BaseEmits,\n BaseProps,\n defaultBaseProps,\n ErrorsWidget,\n SelectChoice,\n SelectFetchChoices,\n useInputBase,\n} from './helpers';\nimport {\n convertItems,\n getSelectedChoices,\n multipleCompliantValue,\n updateSelectedFromValue,\n} from './helpers/df-select.helper';\n\ninterface Props extends BaseProps {\n choices?: SelectChoice[];\n multiple?: boolean;\n allowTags?: boolean;\n allowNull?: boolean;\n fetchChoices?: SelectFetchChoices;\n}\n\nconst propsWithDefaults = withDefaults(defineProps<Props>(), {\n ...defaultBaseProps,\n choices: undefined,\n multiple: false,\n allowTags: false,\n allowNull: true,\n fetchChoices: undefined,\n});\n\nconst { choices } = propsWithDefaults;\nconst { multiple, allowTags: taggable, allowNull, cssClass, visibility } = toRefs(propsWithDefaults);\nconst isFocused = ref(false);\n\ninterface Emits extends BaseEmits {\n (e: 'update:modelValueDisplay', value: SelectChoice[]): any;\n}\n\nconst emits = defineEmits<Emits>();\n\nconst { errors, value: resultingValue, vuetifyBindings } = useInputBase(propsWithDefaults, emits);\n\nconst selected = ref<any>(null);\nconst loadedChoices = ref<SelectChoice[]>(choices || []);\nconst loading = ref<boolean>(false);\n\nconst options = computed(() => convertItems(loadedChoices.value));\n\nfunction emitModelValueDisplay(mcVal: any) {\n emits('update:modelValueDisplay', getSelectedChoices(loadedChoices.value, mcVal));\n}\n\nwatch(selected, (newValue) => {\n if (vuetifyBindings.value.readonly) return;\n nextTick(() => {\n const mcVal = multipleCompliantValue(newValue, multiple.value);\n emitModelValueDisplay(mcVal);\n resultingValue.value = mcVal;\n });\n}, { deep: true });\n\nfunction onSelect(/* val: any */) {\n if (vuetifyBindings.value.readonly || taggable.value) return;\n const mcVal = multipleCompliantValue(selected.value, multiple.value);\n updateSelectedFromValue(mcVal, selected, multiple.value, false, loadedChoices.value);\n resultingValue.value = mcVal;\n}\n\nfunction chipClose(itemValue: any) {\n let mcVal;\n if (multiple.value && Array.isArray(selected.value)) {\n mcVal = multipleCompliantValue(selected.value.filter((v) => v !== itemValue), multiple.value);\n } else {\n mcVal = null;\n }\n updateSelectedFromValue(mcVal, selected, multiple.value, false, loadedChoices.value);\n resultingValue.value = mcVal;\n}\n\nasync function queryOptions(queryValue?: any, idValue?: any): Promise<void> {\n if (choices || propsWithDefaults.fetchChoices === undefined) return;\n loading.value = true;\n try {\n loadedChoices.value = await propsWithDefaults.fetchChoices(queryValue, idValue);\n } finally {\n loading.value = false;\n }\n}\n\nfunction initialValueCheck() {\n let val = resultingValue.value;\n if (!allowNull.value && val == null && options.value.length) {\n // Starting settings: check if value is mandatory and select the first item from the options\n val = options.value[0].value;\n }\n val = multipleCompliantValue(val, multiple.value);\n updateSelectedFromValue(val, selected, multiple.value, taggable.value, loadedChoices.value);\n emitModelValueDisplay(val);\n resultingValue.value = val;\n}\n\ninitialValueCheck();\n\n// Starting settings: check if ajax and current value is not loaded yet - then load the value from back-end\nif (propsWithDefaults.fetchChoices !== undefined) {\n queryOptions(undefined, resultingValue.value).then(() => {\n initialValueCheck();\n });\n}\n</script>\n<style scoped>\n.action-icon {\n width: 1.5em;\n height: 1.5em;\n}\n</style>\n","<template>\n <div class=\"container\">\n <v-textarea\n v-if=\"visibility !== DisplayMode.SUPPRESS\"\n v-model=\"value\"\n :class=\"[\n cssClass,\n {\n 'd-none': visibility === DisplayMode.HIDDEN,\n invisible: visibility === DisplayMode.INVISIBLE,\n },\n ]\"\n variant=\"underlined\"\n\n :rows=\"rows\"\n :auto-grow=\"(maxRows || 0) > 0\"\n :max-rows=\"maxRows\"\n v-bind=\"vuetifyBindings as any\"\n >\n <template #message><errors-widget :errors=\"errors\"/></template>\n </v-textarea>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { DisplayMode } from '@dynamicforms/vue-forms';\nimport { toRefs } from 'vue';\n\nimport { BaseEmits, BaseProps, defaultBaseProps, ErrorsWidget, useInputBase } from './helpers';\n\ninterface Props extends BaseProps {\n rows?: number;\n maxRows?: number;\n}\nconst props = withDefaults(defineProps<Props>(), {\n ...defaultBaseProps,\n rows: undefined,\n maxRows: undefined,\n});\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { errors, value, vuetifyBindings } = useInputBase(props, emits);\nconst { cssClass, visibility } = toRefs(props);\n</script>\n\n<style scoped>\n.container {\n width: 100%;\n}\n</style>\n","import { CkeditorPlugin } from '@ckeditor/ckeditor5-vue';\nimport { App } from 'vue';\n\nexport * from './helpers';\nexport { default as DfActions } from './df-actions.vue';\nexport { default as DfCheckbox } from './df-checkbox.vue';\nexport { default as DfColor } from './df-color.vue';\nexport { default as DfDateTime } from './df-datetime.vue';\nexport { default as DfFile } from './df-file.vue';\nexport { default as DfInput } from './df-input.vue';\nexport { default as DfRtfEditor } from './df-rtf-editor.vue';\nexport { default as DfSelect } from './df-select.vue';\nexport { default as DfTextArea } from './df-text-area.vue';\n\nexport const VuetifyInputs = {\n install: (app: App) => {\n app.use(CkeditorPlugin);\n },\n};\n"],"names":["_","index","appendExtraPluginsToEditorConfig","config","plugins","extraPlugins","__spreadProps","__spreadValues","item","isSemanticVersion","version","isCKCdnTestingVersion","testVersion","isCKCdnVersion","destructureSemanticVersion","major","minor","patch","getLicenseVersionFromEditorVersion","getCKBaseBundleInstallationInfo","CKEDITOR_VERSION","CKEDITOR","getSupportedLicenseVersionInstallationInfo","installationInfo","isCKEditorFreeLicense","licenseKey","licenseVersion","createIntegrationUsageDataPlugin","integrationName","usageData","editor","source","setUsageData","VueIntegrationUsageDataPlugin","appendAllIntegrationPluginsToConfig","editorConfig","VUE_INTEGRATION_READ_ONLY_LOCK_ID","INPUT_EVENT_DEBOUNCE_WAIT","_sfc_main","defineComponent","mergeModels","__props","__expose","__emit","model","useModel","props","emit","element","ref","instance","lastEditorData","watch","newModel","readOnlyMode","checkVersion","version2","setUpEditorEvents","emitDebouncedInputEvent","debounce","evt","data","onMounted","markRaw","error","onBeforeUnmount","_ctx","_cache","openBlock","createBlock","resolveDynamicComponent","Vue","CkeditorPlugin","app","defaultBaseProps","useInputBase","value","computed","newValue","Form","valid","errors","ValidationErrorRenderContent","anyErrors","enabled","visibility","label","placeholder","helpText","hint","cssClass","_a","isEmpty","emits","vuetifyBindings","isClearable","unref","ActionDisplayStyle","defaultDisplayStyle","fromString","mode","fromAny","input","isDefined","check","breakpoints","ResponsiveRenderOptions","__publicField","baseOptions","bp","options","breakpoint","result","_b","_c","bps","bpData","isObjectLike","isString","isBoolean","Action","formAction","icon","actionName","actionOrExecuteHandler","fa","ExecuteAction","FormAction","actionsRef","isRef","getBreakpointName","dp","display","useDisplay","displayStyle","res","action","displayIcon","displayLabel","displayAsStyle","labelText","indeterminate","boolValue","unused","newVal","change","oldVal","clone","dropdownShown","rules","val","handleClose","pad","n","length","IN_BROWSER","SUPPORTS_INTERSECTION","deepEqual","a","b","p","createRange","start","v","k","convertToUnit","str","unit","num","isObject","obj","isPlainObject","proto","refElement","el","keyCodes","has","key","pick","paths","found","omit","exclude","prop","wrapInArray","padEnd","char","chunk","size","chunked","mergeDeep","target","arrayFn","out","sourceProperty","targetProperty","flattenFragments","nodes","node","Fragment","toKebabCase","kebab","findChildrenWithProvide","vnode","child","destructComputed","getter","refs","reactive","base","watchEffect","toRefs","includes","arr","hasEvent","name","capitalize","templateRef","shallowRef","fn","block","inline","parseAnchor","anchor","isRtl","side","align","toPhysical","mainTRC","Rco","Gco","Bco","normBG","normTXT","revTXT","revBG","blkThrs","blkClmp","deltaYmin","scaleBoW","scaleWoB","loConThresh","loConFactor","loConOffset","loClip","APCAcontrast","text","background","Rtxt","__pow","Gtxt","Btxt","Rbg","Gbg","Bbg","Ytxt","Ybg","outputContrast","SAPC","consoleWarn","message","warn","isCssColor","color","isParsableColor","cssColorRe","mappers","r","g","h","s","l","HSLtoRGB","HSVtoRGB","parseColor","groups","values","realValues","hex","int","HexToRGB","HSLtoHSV","hsva","f","rgb","hsla","hsl","sprime","parseHex","c","x","getForeground","blackContrast","propsFactory","defaults","definition","makeComponentProps","getCurrentInstance","vm","_getCurrentInstance","getCurrentInstanceName","injectSelf","provides","DefaultsSymbol","injectDefaults","inject","provideDefaults","injectedDefaults","providedDefaults","newDefaults","scoped","reset","root","properties","len","i","provide","propIsDefined","internalUseDefaults","componentDefaults","_props","propValue","_e","_d","_g","_f","_subcomponentDefaults","subComponents","_ref","provideSubDefaults","injected","propKeys","ctx","setupBindings","genericComponent","exposeDefaults","_defineComponent","createSimpleFunctional","klass","tag","camelize","slots","useRender","render","useColor","colors","classes","styles","backgroundColor","textColor","useTextColor","textColorClasses","textColorStyles","useBackgroundColor","backgroundColorClasses","backgroundColorStyles","makeVTimePickerClockProps","VTimePickerClock","clockRef","innerClockRef","inputValue","isDragging","valueOnMouseDown","valueOnMouseUp","toRef","count","roundCount","degreesPerUnit","degrees","displayedValue","innerRadiusScale","genChildren","children","update","isAllowed","wheel","e","delta","isInner","handScale","getPosition","rotateRadians","angleToValue","angle","insideClick","getTransform","y","euclidean","p0","p1","dx","dy","center","setMouseDownValue","onDragMove","width","top","left","innerWidth","clientX","clientY","coords","handAngle","checksCount","onMouseDown","onMouseUp","_createVNode","isActive","makeBorderProps","useBorder","border","allowedDensities","makeDensityProps","useDensity","makeElevationProps","useElevation","elevation","makeRoundedProps","useRounded","rounded","tile","makeTagProps","ThemeSymbol","makeThemeProps","provideTheme","theme","current","themeClasses","newTheme","useTheme","allowedVariants","genOverlays","isClickable","_Fragment","makeVariantProps","useVariant","variantClasses","variant","colorClasses","colorStyles","makeVBtnGroupProps","VBtnGroup","densityClasses","borderClasses","elevationClasses","roundedClasses","useToggleScope","scope","effectScope","active","onScopeDispose","useProxiedModel","defaultValue","transformIn","transformOut","internal","kebabProp","isControlled","externalValue","internalValue","toRaw","makeGroupProps","makeGroupItemProps","useGroupItem","injectKey","required","id","useId","group","disabled","isSelected","isFirst","isLast","selectedClass","useGroup","isUnmounted","items","selected","getIds","getValues","groupVm","register","unwrapped","unregister","forceMandatoryValue","onUpdated","select","step","offset","currentId","currentIndex","newIndex","newItem","state","getItemIndex","ids","modelValue","itemByIndex","itemIndex","VBtnToggleSymbol","makeVBtnToggleProps","next","prev","btnGroupProps","_mergeProps","makeVDefaultsProviderProps","VDefaultsProvider","IconValue","IconSymbol","makeIconProps","VComponentIcon","Icon","VSvgIcon","_ref2","attrs","path","useIcon","icons","iconAlias","iconSetName","setName","iconName","predefinedSizes","makeSizeProps","useSize","sizeClasses","sizeStyles","makeVIconProps","VIcon","slotIcon","iconData","slotValue","Text","hasClick","useIntersectionObserver","callback","intersectionRef","isIntersecting","observer","entries","entry","oldValue","useResizeObserver","box","resizeRef","contentRect","readonly","makeVProgressCircularProps","VProgressCircular","MAGIC_RADIUS_CONSTANT","CIRCUMFERENCE","underlayColorClasses","underlayColorStyles","normalizedValue","diameter","strokeWidth","strokeDashOffset","makeDimensionProps","useDimension","height","maxHeight","maxWidth","minHeight","minWidth","LocaleSymbol","useLocale","locale","useRtl","oppositeMap","makeLocationProps","useLocation","opposite","getOffset","makeLoaderProps","useLoader","positionValues","makePositionProps","usePosition","useRoute","useLink","RouterLink","isLink","href","linkProps","routerLink","link","route","makeRouterProps","useSelectLink","nextTick","stopSymbol","DELAY_RIPPLE","transform","isTouchEvent","isKeyboardEvent","calculate","localX","localY","radius","scale","centerX","centerY","ripples","container","animation","diff","delay","isRippleEnabled","rippleShow","rippleStop","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","binding","wasEnabled","modifiers","removeListeners","mounted","unmounted","updated","Ripple","makeVBtnProps","VBtn","dimensionStyles","loaderClasses","locationStyles","positionClasses","variantProps","isDisabled","isElevated","valueAttr","onClick","Tag","hasPrepend","hasAppend","hasIcon","withDirectives","toDisplayString","makeVTimePickerControlsProps","VTimePickerControls","t","hour","_createTextVNode","VPickerTitle","makeVSheetProps","VSheet","makeVPickerProps","VPicker","sheetProps","hasTitle","rangeHours24","rangeHours12am","rangeHours12pm","makeVTimePickerProps","VTimePicker","inputHour","inputMinute","inputSecond","lazyInputHour","lazyInputMinute","lazyInputSecond","period","viewMode","controlsRef","isAllowedHourCb","cb","minHour","maxHour","isAllowedMinuteCb","isHourAllowed","minMinute","maxMinute","minTime","maxTime","time","isAllowedSecondCb","isMinuteAllowed","minSecond","maxSecond","isAmPm","setInputData","genValue","emitValue","convert24to12","convert12to24","minute","second","firstAllowed","type","allowedFn","range","setPeriod","newHour","onInput","onChange","emitChange","pickerProps","timePickerControlsProps","timePickerClockProps","inputType","displayFormatDate","displayFormatTime","dropdown","formatNaive","format","valueISOFull","setValueISOFull","newISOValue","dateOrTimeIdx","vif","nv","valueAsDate","uValue","valueAsTimeString","dateFormatted","vad","d","parse","err","timeFormatted","toNumber","isNaN","touchInterval","currentFile","progress","fileInputKey","selectedFile","fileLabel","clearTouchInterval","setupTouchInterval","removeFile","__async","upload","file","loaded","total","handleFileChange","max","min","precision","isNumber","numberInputBindings","isLayoutReady","ClassicEditor","AccessibilityHelp","Alignment","AutoImage","AutoLink","Autosave","BalloonToolbar","BlockQuote","Bold","CloudServices","Essentials","GeneralHtmlSupport","Heading","HorizontalLine","ImageBlock","ImageCaption","ImageInline","ImageInsertViaUrl","ImageResize","ImageStyle","ImageToolbar","ImageUpload","Indent","IndentBlock","Italic","Link","List","Autoformat","MediaEmbed","Paragraph","PasteFromMarkdownExperimental","PasteFromOffice","SelectAll","Style","Table","TableCellProperties","TableColumnResize","TableProperties","TableToolbar","Undo","TextTransformation","Base64UploadAdapter","onEditorReady","editorReady","convertItems","multipleCompliantValue","multiple","isArray","castArray","first","getSelectedChoices","loadedChoices","multipleCpliantValue","mcValue","choice","updateSelectedFromValue","resultingValue","taggable","matchingChoice","propsWithDefaults","choices","allowNull","isFocused","loading","emitModelValueDisplay","mcVal","onSelect","chipClose","itemValue","queryOptions","queryValue","idValue","initialValueCheck","VuetifyInputs"],"mappings":"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","x_google_ignoreList":[0,1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59]}