@dynamicforms/vuetify-inputs 0.9.1 → 0.9.2
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.
|
@@ -1 +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","../node_modules/date-fns/locale/sl/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/sl/_lib/formatLong.js","../node_modules/date-fns/locale/sl/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/sl/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/sl/_lib/match.js","../node_modules/date-fns/locale/sl.js","../src/helpers/date-time-locale.ts","../src/helpers/df-input-hint.vue","../src/helpers/df-label.vue","../src/helpers/settings.ts","../src/helpers/input-base.ts","../src/helpers/input-base.vue","../src/helpers/translations.ts","../src/helpers/action/action-display-style.ts","../src/helpers/action/responsive-render-options.ts","../src/helpers/action/action-render-options.ts","../src/helpers/action/action.ts","../src/df-actions.vue","../src/df-checkbox.vue","../src/df-color.vue","../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":["function 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\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\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\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 // It'll append styles *before* the stylesheets that are already present in the head\n // but after the ones that are injected by this function.\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 // It'll append styles *after* the stylesheets already in the head.\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\nfunction isSSR() {\n return typeof window === \"undefined\";\n}\n\nfunction omit(keys, obj) {\n const clone = { ...obj };\n for (const key of keys) {\n if (Object.hasOwn(obj, key)) {\n delete clone[key];\n }\n }\n return clone;\n}\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\nfunction overwriteArray(source, destination) {\n destination.length = 0;\n destination.push(...source);\n return destination;\n}\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\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\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\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\nfunction uniq(source) {\n return Array.from(new Set(source));\n}\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\nfunction filterObjectValues(obj, filter) {\n const filteredEntries = Object.entries(obj).filter(([key, value]) => filter(value, key));\n return Object.fromEntries(filteredEntries);\n}\n\nfunction filterBlankObjectValues(obj) {\n return filterObjectValues(\n obj,\n (value) => value !== null && value !== void 0\n );\n}\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\nfunction without(itemsToRemove, items) {\n return items.filter((item) => !itemsToRemove.includes(item));\n}\n\nfunction isSemanticVersion(version) {\n return !!version && /^\\d+\\.\\d+\\.\\d+/.test(version);\n}\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\nfunction compareSemanticVersions(a, b) {\n const parsedA = destructureSemanticVersion(a);\n const parsedB = destructureSemanticVersion(b);\n return Math.sign(\n parsedA.major - parsedB.major || parsedA.minor - parsedB.minor || parsedA.patch - parsedB.patch\n );\n}\n\nfunction isCKTestingVersion(version) {\n if (!version) {\n return false;\n }\n return [\"nightly\", \"alpha\", \"internal\", \"nightly-\", \"staging\"].some((testVersion) => version.includes(testVersion));\n}\nfunction isCKVersion(version) {\n return isSemanticVersion(version) || isCKTestingVersion(version);\n}\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\nfunction getLicenseVersionFromEditorVersion(version) {\n if (isCKTestingVersion(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\nfunction getCKBaseBundleInstallationInfo() {\n const { CKEDITOR_VERSION, CKEDITOR } = window;\n if (!isCKVersion(CKEDITOR_VERSION)) {\n return null;\n }\n return {\n source: CKEDITOR ? \"cdn\" : \"npm\",\n version: CKEDITOR_VERSION\n };\n}\n\nfunction getSupportedLicenseVersionInstallationInfo() {\n const installationInfo = getCKBaseBundleInstallationInfo();\n if (!installationInfo) {\n return null;\n }\n return getLicenseVersionFromEditorVersion(installationInfo.version);\n}\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\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\nconst CK_CDN_URL = \"https://cdn.ckeditor.com\";\nfunction createCKCdnUrl(bundle, file, version) {\n return `${CK_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\nconst CKBOX_CDN_URL = \"https://cdn.ckbox.io\";\nfunction createCKBoxCdnUrl(bundle, file, version) {\n return `${CKBOX_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\nconst CK_DOCS_URL = \"https://ckeditor.com/docs/ckeditor5\";\nfunction createCKDocsUrl(path, version = \"latest\") {\n return `${CK_DOCS_URL}/${version}/${path}`;\n}\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/migrations/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\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\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\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\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\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\nfunction isCKCdnSupportedByEditorVersion(version) {\n if (isCKTestingVersion(version)) {\n return true;\n }\n const { major } = destructureSemanticVersion(version);\n const licenseVersion = getLicenseVersionFromEditorVersion(version);\n switch (licenseVersion) {\n // For newer license versions, we support all newer versions.\n case 3:\n return true;\n // For the license v1-v2, we support only the 43 version.\n default:\n return major === 43;\n }\n}\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\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 (isCKTestingVersion(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\nfunction compareInstalledCKBaseVersion(version) {\n const installedVersion = getCKBaseBundleInstallationInfo()?.version;\n if (!installedVersion) {\n return null;\n }\n if (!isSemanticVersion(installedVersion) || isCKTestingVersion(installedVersion)) {\n return 1;\n }\n return compareSemanticVersions(installedVersion, version);\n}\n\nfunction getInstalledCKBaseFeatures() {\n const installedVersion = compareInstalledCKBaseVersion(\"48.0.0\");\n const isV48OrNewer = installedVersion !== null && installedVersion >= 0;\n return {\n rootsConfigEntry: isV48OrNewer,\n elementConfigAttachment: isV48OrNewer\n };\n}\n\nfunction assignAttributesPropToMultiRootEditorConfig(attributes, config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n const knownRootsKeys = uniq([\n ...Object.keys(attributes || {}),\n ...Object.keys(config.roots || {}),\n ...Object.keys(config.rootsAttributes || {})\n ]);\n const roots = knownRootsKeys.reduce((acc, rootName) => {\n const legacyRootAttributes = config.rootsAttributes?.[rootName];\n const configRootValue = config.roots?.[rootName];\n acc[rootName] = {\n ...configRootValue,\n modelAttributes: attributes?.[rootName] ?? {\n ...legacyRootAttributes,\n ...configRootValue?.modelAttributes\n }\n };\n return acc;\n }, /* @__PURE__ */ Object.create(null));\n const mappedConfig = {\n ...config,\n roots\n };\n delete mappedConfig.rootsAttributes;\n return mappedConfig;\n }\n return {\n ...config,\n rootsAttributes: attributes\n };\n}\n\nfunction assignInitialDataToMultirootEditorConfig(data, config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n const knownRootsKeys = uniq([\n ...Object.keys(data || {}),\n ...Object.keys(config.roots || {}),\n ...typeof config.initialData === \"string\" ? [] : Object.keys(config.initialData || {})\n ]);\n const roots = knownRootsKeys.reduce((acc, rootName) => {\n const rootConfig = config.roots?.[rootName];\n const rootInitialData = rootConfig?.initialData;\n if (rootInitialData && data?.[rootName]) {\n console.warn(\n `Editor data should be provided either using \\`config.roots['${rootName}'].initialData\\` or the bound component property. The config value takes precedence over the bound component property and will be used when both are specified.`\n );\n }\n acc[rootName] = {\n ...rootConfig,\n initialData: rootInitialData || data?.[rootName] || config.initialData?.[rootName] || \"\"\n };\n return acc;\n }, /* @__PURE__ */ Object.create(null));\n const normalizedConfig = {\n ...config,\n roots\n };\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n if (data && config?.initialData) {\n console.warn(\n \"Editor data should be provided either using `config.initialData` or the bound component property. The config value takes precedence over the bound component property and will be used when both are specified.\"\n );\n }\n return {\n ...config,\n initialData: config?.initialData || data\n };\n}\n\nfunction assignElementToEditorConfig(Editor, element, config) {\n if (!Editor.editorName || Editor.editorName === \"ClassicEditor\") {\n return {\n ...config,\n attachTo: element\n };\n }\n const mappedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...config.roots?.main,\n element\n }\n }\n };\n delete mappedConfig.root;\n return mappedConfig;\n}\n\nfunction getInitialDataFromEditorConfig(config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n return config.roots?.main?.initialData || config.root?.initialData || /* legacy */\n config.initialData;\n }\n return config.initialData;\n}\n\nfunction assignInitialDataToEditorConfig(config, data, ignoreConfigInitialData) {\n const supports = getInstalledCKBaseFeatures();\n const configInitialData = ignoreConfigInitialData ? null : getInitialDataFromEditorConfig(config);\n if (supports.rootsConfigEntry) {\n const normalizedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...config.roots?.main,\n initialData: configInitialData || data || \"\"\n }\n }\n };\n if (data && configInitialData) {\n console.warn(\n \"Editor data should be provided either via the config (`config.root.initialData`) or the component's `data` property, but not both. The configuration value takes precedence.\"\n );\n }\n delete normalizedConfig.root;\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n if (data && configInitialData) {\n console.warn(\n \"Editor data should be provided either via the config (`config.initialData`) or the component's `data` property, but not both. The configuration value takes precedence.\"\n );\n }\n return {\n ...config,\n initialData: configInitialData || data || \"\"\n };\n}\n\nexport { CKBOX_CDN_URL, CK_CDN_URL, INJECTED_SCRIPTS, INJECTED_STYLESHEETS, appendExtraPluginsToEditorConfig, assignAttributesPropToMultiRootEditorConfig, assignElementToEditorConfig, assignInitialDataToEditorConfig, assignInitialDataToMultirootEditorConfig, compareInstalledCKBaseVersion, compareSemanticVersions, createCKBoxCdnUrl, createCKCdnUrl, createDefer, createIntegrationUsageDataPlugin, destructureSemanticVersion, filterBlankObjectValues, filterObjectValues, getCKBaseBundleInstallationInfo, getCKBoxInstallationInfo, getInitialDataFromEditorConfig, getInstalledCKBaseFeatures, injectScript, injectScriptsInParallel, injectStylesheet, isCKEditorFreeLicense, isCKTestingVersion, isCKVersion, isSSR, isSemanticVersion, loadCKEditorCloud, mapObjectValues, omit, once, overwriteArray, overwriteObject, preloadResource, shallowCompareArrays, uid, uniq, waitFor, waitForWindowEntry, without };\n//# sourceMappingURL=index.js.map\n","import * as Vue from \"vue\";\nimport { version, defineComponent, useModel, ref, watch, onMounted, markRaw, onBeforeUnmount, openBlock, createBlock, resolveDynamicComponent, mergeModels, computed, watchEffect, shallowReadonly, toValue } from \"vue\";\nimport { debounce } from \"lodash-es\";\nimport { createIntegrationUsageDataPlugin, isCKEditorFreeLicense, appendExtraPluginsToEditorConfig, getCKBaseBundleInstallationInfo, isSemanticVersion, isCKTestingVersion, destructureSemanticVersion, uid, loadCKEditorCloud } from \"@ckeditor/ckeditor5-integrations-common\";\nimport { loadCKEditorCloud as loadCKEditorCloud2 } from \"@ckeditor/ckeditor5-integrations-common\";\nconst VueIntegrationUsageDataPlugin = createIntegrationUsageDataPlugin(\n \"vue\",\n {\n version: \"7.4.0\",\n frameworkVersion: version\n }\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}\nfunction assignInitialDataToEditorConfig(config, data) {\n var _a;\n if (isRootsMapConfigurationSupported()) {\n const normalizedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...(_a = config.roots) == null ? void 0 : _a.main,\n initialData: data\n }\n }\n };\n delete normalizedConfig.root;\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n return {\n ...config,\n initialData: data\n };\n}\nfunction getInitialDataFromEditorConfig(config) {\n var _a, _b;\n if (isRootsMapConfigurationSupported()) {\n return (_b = (_a = config.roots) == null ? void 0 : _a.main) == null ? void 0 : _b.initialData;\n }\n return config.initialData;\n}\nfunction isRootsMapConfigurationSupported() {\n const bundleInfo = getCKBaseBundleInstallationInfo();\n if (!bundleInfo) {\n return false;\n }\n return !isSemanticVersion(bundleInfo.version) || isCKTestingVersion(bundleInfo.version) || destructureSemanticVersion(bundleInfo.version).major >= 48;\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 let editorConfig = appendAllIntegrationPluginsToConfig(\n Object.assign({}, props.config)\n );\n if (model.value) {\n editorConfig = assignInitialDataToEditorConfig(editorConfig, model.value);\n }\n props.editor.create(element.value, editorConfig).then((editor) => {\n instance.value = markRaw(editor);\n setUpEditorEvents(editor);\n if (model.value !== getInitialDataFromEditorConfig(editorConfig)) {\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(__props.tagName), {\n ref_key: \"element\",\n ref: element\n }, null, 512);\n };\n }\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 console.error(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};\nfunction useCKEditorCloud(config) {\n return useAsync(\n () => loadCKEditorCloud(\n toValue(config)\n )\n );\n}\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","function isPluralType(val) {\n return val.one !== undefined;\n}\n\nconst formatDistanceLocale = {\n lessThanXSeconds: {\n present: {\n one: \"manj kot {{count}} sekunda\",\n two: \"manj kot {{count}} sekundi\",\n few: \"manj kot {{count}} sekunde\",\n other: \"manj kot {{count}} sekund\",\n },\n past: {\n one: \"manj kot {{count}} sekundo\",\n two: \"manj kot {{count}} sekundama\",\n few: \"manj kot {{count}} sekundami\",\n other: \"manj kot {{count}} sekundami\",\n },\n future: {\n one: \"manj kot {{count}} sekundo\",\n two: \"manj kot {{count}} sekundi\",\n few: \"manj kot {{count}} sekunde\",\n other: \"manj kot {{count}} sekund\",\n },\n },\n\n xSeconds: {\n present: {\n one: \"{{count}} sekunda\",\n two: \"{{count}} sekundi\",\n few: \"{{count}} sekunde\",\n other: \"{{count}} sekund\",\n },\n past: {\n one: \"{{count}} sekundo\",\n two: \"{{count}} sekundama\",\n few: \"{{count}} sekundami\",\n other: \"{{count}} sekundami\",\n },\n future: {\n one: \"{{count}} sekundo\",\n two: \"{{count}} sekundi\",\n few: \"{{count}} sekunde\",\n other: \"{{count}} sekund\",\n },\n },\n\n halfAMinute: \"pol minute\",\n\n lessThanXMinutes: {\n present: {\n one: \"manj kot {{count}} minuta\",\n two: \"manj kot {{count}} minuti\",\n few: \"manj kot {{count}} minute\",\n other: \"manj kot {{count}} minut\",\n },\n past: {\n one: \"manj kot {{count}} minuto\",\n two: \"manj kot {{count}} minutama\",\n few: \"manj kot {{count}} minutami\",\n other: \"manj kot {{count}} minutami\",\n },\n future: {\n one: \"manj kot {{count}} minuto\",\n two: \"manj kot {{count}} minuti\",\n few: \"manj kot {{count}} minute\",\n other: \"manj kot {{count}} minut\",\n },\n },\n\n xMinutes: {\n present: {\n one: \"{{count}} minuta\",\n two: \"{{count}} minuti\",\n few: \"{{count}} minute\",\n other: \"{{count}} minut\",\n },\n past: {\n one: \"{{count}} minuto\",\n two: \"{{count}} minutama\",\n few: \"{{count}} minutami\",\n other: \"{{count}} minutami\",\n },\n future: {\n one: \"{{count}} minuto\",\n two: \"{{count}} minuti\",\n few: \"{{count}} minute\",\n other: \"{{count}} minut\",\n },\n },\n\n aboutXHours: {\n present: {\n one: \"približno {{count}} ura\",\n two: \"približno {{count}} uri\",\n few: \"približno {{count}} ure\",\n other: \"približno {{count}} ur\",\n },\n past: {\n one: \"približno {{count}} uro\",\n two: \"približno {{count}} urama\",\n few: \"približno {{count}} urami\",\n other: \"približno {{count}} urami\",\n },\n future: {\n one: \"približno {{count}} uro\",\n two: \"približno {{count}} uri\",\n few: \"približno {{count}} ure\",\n other: \"približno {{count}} ur\",\n },\n },\n\n xHours: {\n present: {\n one: \"{{count}} ura\",\n two: \"{{count}} uri\",\n few: \"{{count}} ure\",\n other: \"{{count}} ur\",\n },\n past: {\n one: \"{{count}} uro\",\n two: \"{{count}} urama\",\n few: \"{{count}} urami\",\n other: \"{{count}} urami\",\n },\n future: {\n one: \"{{count}} uro\",\n two: \"{{count}} uri\",\n few: \"{{count}} ure\",\n other: \"{{count}} ur\",\n },\n },\n\n xDays: {\n present: {\n one: \"{{count}} dan\",\n two: \"{{count}} dni\",\n few: \"{{count}} dni\",\n other: \"{{count}} dni\",\n },\n past: {\n one: \"{{count}} dnem\",\n two: \"{{count}} dnevoma\",\n few: \"{{count}} dnevi\",\n other: \"{{count}} dnevi\",\n },\n future: {\n one: \"{{count}} dan\",\n two: \"{{count}} dni\",\n few: \"{{count}} dni\",\n other: \"{{count}} dni\",\n },\n },\n\n // no tenses for weeks?\n aboutXWeeks: {\n one: \"približno {{count}} teden\",\n two: \"približno {{count}} tedna\",\n few: \"približno {{count}} tedne\",\n other: \"približno {{count}} tednov\",\n },\n\n // no tenses for weeks?\n xWeeks: {\n one: \"{{count}} teden\",\n two: \"{{count}} tedna\",\n few: \"{{count}} tedne\",\n other: \"{{count}} tednov\",\n },\n\n aboutXMonths: {\n present: {\n one: \"približno {{count}} mesec\",\n two: \"približno {{count}} meseca\",\n few: \"približno {{count}} mesece\",\n other: \"približno {{count}} mesecev\",\n },\n past: {\n one: \"približno {{count}} mesecem\",\n two: \"približno {{count}} mesecema\",\n few: \"približno {{count}} meseci\",\n other: \"približno {{count}} meseci\",\n },\n future: {\n one: \"približno {{count}} mesec\",\n two: \"približno {{count}} meseca\",\n few: \"približno {{count}} mesece\",\n other: \"približno {{count}} mesecev\",\n },\n },\n\n xMonths: {\n present: {\n one: \"{{count}} mesec\",\n two: \"{{count}} meseca\",\n few: \"{{count}} meseci\",\n other: \"{{count}} mesecev\",\n },\n past: {\n one: \"{{count}} mesecem\",\n two: \"{{count}} mesecema\",\n few: \"{{count}} meseci\",\n other: \"{{count}} meseci\",\n },\n future: {\n one: \"{{count}} mesec\",\n two: \"{{count}} meseca\",\n few: \"{{count}} mesece\",\n other: \"{{count}} mesecev\",\n },\n },\n\n aboutXYears: {\n present: {\n one: \"približno {{count}} leto\",\n two: \"približno {{count}} leti\",\n few: \"približno {{count}} leta\",\n other: \"približno {{count}} let\",\n },\n past: {\n one: \"približno {{count}} letom\",\n two: \"približno {{count}} letoma\",\n few: \"približno {{count}} leti\",\n other: \"približno {{count}} leti\",\n },\n future: {\n one: \"približno {{count}} leto\",\n two: \"približno {{count}} leti\",\n few: \"približno {{count}} leta\",\n other: \"približno {{count}} let\",\n },\n },\n\n xYears: {\n present: {\n one: \"{{count}} leto\",\n two: \"{{count}} leti\",\n few: \"{{count}} leta\",\n other: \"{{count}} let\",\n },\n past: {\n one: \"{{count}} letom\",\n two: \"{{count}} letoma\",\n few: \"{{count}} leti\",\n other: \"{{count}} leti\",\n },\n future: {\n one: \"{{count}} leto\",\n two: \"{{count}} leti\",\n few: \"{{count}} leta\",\n other: \"{{count}} let\",\n },\n },\n\n overXYears: {\n present: {\n one: \"več kot {{count}} leto\",\n two: \"več kot {{count}} leti\",\n few: \"več kot {{count}} leta\",\n other: \"več kot {{count}} let\",\n },\n past: {\n one: \"več kot {{count}} letom\",\n two: \"več kot {{count}} letoma\",\n few: \"več kot {{count}} leti\",\n other: \"več kot {{count}} leti\",\n },\n future: {\n one: \"več kot {{count}} leto\",\n two: \"več kot {{count}} leti\",\n few: \"več kot {{count}} leta\",\n other: \"več kot {{count}} let\",\n },\n },\n\n almostXYears: {\n present: {\n one: \"skoraj {{count}} leto\",\n two: \"skoraj {{count}} leti\",\n few: \"skoraj {{count}} leta\",\n other: \"skoraj {{count}} let\",\n },\n past: {\n one: \"skoraj {{count}} letom\",\n two: \"skoraj {{count}} letoma\",\n few: \"skoraj {{count}} leti\",\n other: \"skoraj {{count}} leti\",\n },\n future: {\n one: \"skoraj {{count}} leto\",\n two: \"skoraj {{count}} leti\",\n few: \"skoraj {{count}} leta\",\n other: \"skoraj {{count}} let\",\n },\n },\n};\n\nfunction getFormFromCount(count) {\n switch (count % 100) {\n case 1:\n return \"one\";\n case 2:\n return \"two\";\n case 3:\n case 4:\n return \"few\";\n default:\n return \"other\";\n }\n}\n\nexport const formatDistance = (token, count, options) => {\n let result = \"\";\n let tense = \"present\";\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n tense = \"future\";\n result = \"čez \";\n } else {\n tense = \"past\";\n result = \"pred \";\n }\n }\n\n const tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === \"string\") {\n result += tokenValue;\n } else {\n const form = getFormFromCount(count);\n if (isPluralType(tokenValue)) {\n result += tokenValue[form].replace(\"{{count}}\", String(count));\n } else {\n result += tokenValue[tense][form].replace(\"{{count}}\", String(count));\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, dd. MMMM y\",\n long: \"dd. MMMM y\",\n medium: \"d. MMM y\",\n short: \"d. MM. yy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} {{time}}\",\n long: \"{{date}} {{time}}\",\n medium: \"{{date}} {{time}}\",\n short: \"{{date}} {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: (date) => {\n const day = date.getDay();\n\n switch (day) {\n case 0:\n return \"'prejšnjo nedeljo ob' p\";\n case 3:\n return \"'prejšnjo sredo ob' p\";\n case 6:\n return \"'prejšnjo soboto ob' p\";\n default:\n return \"'prejšnji' EEEE 'ob' p\";\n }\n },\n yesterday: \"'včeraj ob' p\",\n today: \"'danes ob' p\",\n tomorrow: \"'jutri ob' p\",\n nextWeek: (date) => {\n const day = date.getDay();\n\n switch (day) {\n case 0:\n return \"'naslednjo nedeljo ob' p\";\n case 3:\n return \"'naslednjo sredo ob' p\";\n case 6:\n return \"'naslednjo soboto ob' p\";\n default:\n return \"'naslednji' EEEE 'ob' p\";\n }\n },\n other: \"P\",\n};\n\nexport const formatRelative = (token, date, _baseDate, _options) => {\n const format = formatRelativeLocale[token];\n\n if (typeof format === \"function\") {\n return format(date);\n }\n\n return format;\n};\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"pr. n. št.\", \"po n. št.\"],\n abbreviated: [\"pr. n. št.\", \"po n. št.\"],\n wide: [\"pred našim štetjem\", \"po našem štetju\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"1. čet.\", \"2. čet.\", \"3. čet.\", \"4. čet.\"],\n wide: [\"1. četrtletje\", \"2. četrtletje\", \"3. četrtletje\", \"4. četrtletje\"],\n};\n\nconst monthValues = {\n narrow: [\"j\", \"f\", \"m\", \"a\", \"m\", \"j\", \"j\", \"a\", \"s\", \"o\", \"n\", \"d\"],\n abbreviated: [\n \"jan.\",\n \"feb.\",\n \"mar.\",\n \"apr.\",\n \"maj\",\n \"jun.\",\n \"jul.\",\n \"avg.\",\n \"sep.\",\n \"okt.\",\n \"nov.\",\n \"dec.\",\n ],\n\n wide: [\n \"januar\",\n \"februar\",\n \"marec\",\n \"april\",\n \"maj\",\n \"junij\",\n \"julij\",\n \"avgust\",\n \"september\",\n \"oktober\",\n \"november\",\n \"december\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"n\", \"p\", \"t\", \"s\", \"č\", \"p\", \"s\"],\n short: [\"ned.\", \"pon.\", \"tor.\", \"sre.\", \"čet.\", \"pet.\", \"sob.\"],\n abbreviated: [\"ned.\", \"pon.\", \"tor.\", \"sre.\", \"čet.\", \"pet.\", \"sob.\"],\n\n wide: [\n \"nedelja\",\n \"ponedeljek\",\n \"torek\",\n \"sreda\",\n \"četrtek\",\n \"petek\",\n \"sobota\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"d\",\n pm: \"p\",\n midnight: \"24.00\",\n noon: \"12.00\",\n morning: \"j\",\n afternoon: \"p\",\n evening: \"v\",\n night: \"n\",\n },\n abbreviated: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"poln.\",\n noon: \"pold.\",\n morning: \"jut.\",\n afternoon: \"pop.\",\n evening: \"več.\",\n night: \"noč\",\n },\n wide: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"polnoč\",\n noon: \"poldne\",\n morning: \"jutro\",\n afternoon: \"popoldne\",\n evening: \"večer\",\n night: \"noč\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"d\",\n pm: \"p\",\n midnight: \"24.00\",\n noon: \"12.00\",\n morning: \"zj\",\n afternoon: \"p\",\n evening: \"zv\",\n night: \"po\",\n },\n abbreviated: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"opoln.\",\n noon: \"opold.\",\n morning: \"zjut.\",\n afternoon: \"pop.\",\n evening: \"zveč.\",\n night: \"ponoči\",\n },\n wide: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"opolnoči\",\n noon: \"opoldne\",\n morning: \"zjutraj\",\n afternoon: \"popoldan\",\n evening: \"zvečer\",\n night: \"ponoči\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n return number + \".\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)\\./i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n abbreviated: /^(pr\\. n\\. št\\.|po n\\. št\\.)/i,\n wide: /^(pred Kristusom|pred na[sš]im [sš]tetjem|po Kristusu|po na[sš]em [sš]tetju|na[sš]ega [sš]tetja)/i,\n};\nconst parseEraPatterns = {\n any: [/^pr/i, /^(po|na[sš]em)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]\\.\\s?[čc]et\\.?/i,\n wide: /^[1234]\\. [čc]etrtletje/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated:\n /^(jan\\.|feb\\.|mar\\.|apr\\.|maj|jun\\.|jul\\.|avg\\.|sep\\.|okt\\.|nov\\.|dec\\.)/i,\n wide: /^(januar|februar|marec|april|maj|junij|julij|avgust|september|oktober|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n abbreviated: [\n /^ja/i,\n /^fe/i,\n /^mar/i,\n /^ap/i,\n /^maj/i,\n /^jun/i,\n /^jul/i,\n /^av/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n wide: [\n /^ja/i,\n /^fe/i,\n /^mar/i,\n /^ap/i,\n /^maj/i,\n /^jun/i,\n /^jul/i,\n /^av/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[nptsčc]/i,\n short: /^(ned\\.|pon\\.|tor\\.|sre\\.|[cč]et\\.|pet\\.|sob\\.)/i,\n abbreviated: /^(ned\\.|pon\\.|tor\\.|sre\\.|[cč]et\\.|pet\\.|sob\\.)/i,\n wide: /^(nedelja|ponedeljek|torek|sreda|[cč]etrtek|petek|sobota)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^n/i, /^p/i, /^t/i, /^s/i, /^[cč]/i, /^p/i, /^s/i],\n any: [/^n/i, /^po/i, /^t/i, /^sr/i, /^[cč]/i, /^pe/i, /^so/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(d|po?|z?v|n|z?j|24\\.00|12\\.00)/i,\n any: /^(dop\\.|pop\\.|o?poln(\\.|o[cč]i?)|o?pold(\\.|ne)|z?ve[cč](\\.|er)|(po)?no[cč]i?|popold(ne|an)|jut(\\.|ro)|zjut(\\.|raj))/i,\n};\nconst parseDayPeriodPatterns = {\n narrow: {\n am: /^d/i,\n pm: /^p/i,\n midnight: /^24/i,\n noon: /^12/i,\n morning: /^(z?j)/i,\n afternoon: /^p/i,\n evening: /^(z?v)/i,\n night: /^(n|po)/i,\n },\n any: {\n am: /^dop\\./i,\n pm: /^pop\\./i,\n midnight: /^o?poln/i,\n noon: /^o?pold/i,\n morning: /j/i,\n afternoon: /^pop\\./i,\n evening: /^z?ve/i,\n night: /(po)?no/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"wide\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./sl/_lib/formatDistance.js\";\nimport { formatLong } from \"./sl/_lib/formatLong.js\";\nimport { formatRelative } from \"./sl/_lib/formatRelative.js\";\nimport { localize } from \"./sl/_lib/localize.js\";\nimport { match } from \"./sl/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Slovenian locale.\n * @language Slovenian\n * @iso-639-2 slv\n * @author Adam Stradovnik [@Neoglyph](https://github.com/Neoglyph)\n * @author Mato Žgajner [@mzgajner](https://github.com/mzgajner)\n */\nexport const sl = {\n code: \"sl\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default sl;\n","import { Locale } from 'date-fns';\nimport { sl } from 'date-fns/locale/sl'; // eslint-disable-line import/extensions\nimport { isRef, ref, Ref } from 'vue';\n\nexport const DateTimeLocaleConfig = {\n dateTimeLocale: ref(sl),\n setDateTimeLocale(locale: Locale | Ref<Locale>) {\n if (isRef(locale)) {\n this.dateTimeLocale = locale;\n } else {\n this.dateTimeLocale.value = locale;\n }\n },\n};\n","<template>\n <messages-widget :message=\"widgetMessage\" :classes=\"widgetClasses\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { ClassTypes, MessagesWidget, ValidationError } from '@dynamicforms/vue-forms';\nimport { computed } from 'vue';\n\ninterface Props {\n errors?: string | ValidationError[];\n message?: string | ValidationError[];\n errorClasses?: ClassTypes;\n messageClasses?: ClassTypes;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n errors: '',\n message: '',\n errorClasses: 'text-error',\n messageClasses: '',\n});\n\nconst isError = computed(() => {\n if (props.errors) {\n if (typeof props.errors === 'string') {\n return props.errors.trim().length > 0;\n }\n return props.errors.length > 0;\n }\n return false;\n});\n\nconst widgetMessage = computed(() => {\n return isError.value ? props.errors : props.message;\n});\n\nconst widgetClasses = computed(() => {\n return isError.value ? props.errorClasses : props.messageClasses;\n});\n</script>\n\n<style scoped></style>\n","<template>\n <div class=\"df-label\" :class=\"{ 'allow-wrap': allowWrap }\">\n <template v-if=\"label.icon\">\n <cached-icon v-if=\"label.iconComponent === 'v-icon'\" :name=\"label.icon\" size=\"1.25em\" />\n <v-img v-else-if=\"label.iconComponent === 'v-img'\" class=\"icon\" :src=\"label.icon\" />\n <component :is=\"label.iconComponent\" v-else :src=\"label.icon\" />\n </template>\n <vue-markdown\n v-if=\"lbl instanceof MdString\"\n class=\"markdown\"\n :source=\"lbl.toString()\"\n :options=\"lbl.options\"\n :plugins=\"lbl.plugins\"\n />\n <template v-else>{{ lbl }}</template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { MdString } from '@dynamicforms/vue-forms';\nimport { computed } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\nimport VueMarkdown from 'vue-markdown-render';\nimport { DefaultInputSlot } from 'vuetify/lib/components/VField/VField';\n\nimport { Label } from './input-base';\n\nconst props = defineProps<{\n data?: DefaultInputSlot & { label?: string | MdString };\n label: Label;\n allowWrap?: boolean;\n}>();\n\nconst lbl = computed(() => (props.data ? props.data.label : props.label.text));\n</script>\n\n<style>\n.df-label {\n display: flex;\n align-items: center;\n gap: 2px;\n white-space: nowrap;\n justify-content: flex-start;\n}\n\n.df-label.allow-wrap {\n white-space: initial;\n}\n\n.df-label .icon {\n width: 1.25em;\n}\n\n.df-label .markdown :first-child,\n.df-label .markdown :last-child {\n margin-top: 0 !important;\n padding-top: 0 !important;\n margin-bottom: 0 !important;\n padding-bottom: 0 !important;\n line-height: 1.35em !important; /* inspired by vitepress' aggressive settings */\n}\n</style>\n","import { FieldDensity, type FieldVariant } from '@/helpers/input-base';\n\nexport interface VuetifyInputsSettings {\n defaultVariant?: FieldVariant;\n defaultDensity?: FieldDensity;\n}\n\nexport const vuetifyInputsSettingsKey = Symbol('vuetifyInputsSettingsKey');\n","import Form, { MdString, ValidationErrorRenderContent } from '@dynamicforms/vue-forms';\nimport { isEmpty, isString } from 'lodash-es';\nimport { computed, inject, nextTick, ref, shallowRef, toRaw } from 'vue';\n\nimport { VuetifyInputsSettings, vuetifyInputsSettingsKey } from './settings';\n\nexport class Label {\n constructor(\n public text: string,\n public icon?: string,\n public iconComponent: string = 'v-icon',\n ) {}\n}\n\nexport type FieldVariant = 'outlined' | 'plain' | 'underlined' | 'filled' | 'solo' | 'solo-inverted' | 'solo-filled';\nexport type VuetifyDensity = 'default' | 'comfortable' | 'compact';\nexport type FieldDensity = 'default' | 'comfortable' | 'compact' | 'inline';\n\n/**\n * The presentation an element carries for the components in this library.\n *\n * Every one of these is also a prop, and the prop wins where both state something: a call site is more specific\n * than the element it renders. What the element carries is what a form declared in code says about itself, so a\n * field that names its own label needs no attribute at the tag that draws it.\n *\n * `Extras` is @dynamicforms/vue-forms' augmentation point for exactly this, so these properties are typed on every\n * element in an application that installs this library, the fields written inline in a `Group` declaration\n * included.\n */\ndeclare module '@dynamicforms/vue-forms' {\n interface Extras {\n label?: string | Label | MdString;\n placeholder?: string;\n helpText?: string;\n hint?: string;\n cssClass?: string;\n density?: FieldDensity;\n variant?: FieldVariant;\n }\n}\n\nexport interface BaseProps<T = any> {\n control?: Form.FieldBase<T>;\n modelValue?: T;\n label?: string | Label | MdString;\n errors?: string[];\n placeholder?: string;\n helpText?: string;\n hint?: string;\n enabled?: boolean;\n visibility?: Form.DisplayMode | string;\n cssClass?: string;\n clearable?: boolean;\n passthroughAttrs?: Record<string, any>;\n density?: FieldDensity;\n variant?: FieldVariant;\n}\n\nexport const defaultBaseProps = { enabled: undefined, clearable: true };\n\nexport interface BaseEmits<T = any> {\n (e: 'update:modelValue', value: T): void;\n (e: 'click:clear'): void;\n}\n\nexport function useInputBase<T = any>(props: BaseProps<T>, emit: BaseEmits<T>) {\n const settings = inject<VuetifyInputsSettings>(vuetifyInputsSettingsKey, {});\n const injectedDensity = inject<FieldDensity | null>('field-density', null);\n const injectedVariant = inject<FieldVariant | null>('field-variant', null);\n const internalValue = ref<T | null>(null);\n\n // A write is not a statement about what the control ends up holding. A ValueChangedAction may write a different\n // value back, a disabled field drops the write, and a handler that throws unwinds it. The rendered control has\n // the written value in its DOM by then, so it is the read here that has to correct it - and where the value the\n // control ends up holding is the one it started with, as under a rule that puts back the five characters a\n // six-character write exceeded, the read does not move and Vue schedules no render at all. Holding the written\n // value for one tick makes the read change twice, so the repaint that restores what the control holds happens.\n const pendingWrite = shallowRef<{ value: T } | null>(null);\n\n const value = computed({\n get(): T {\n if (pendingWrite.value) return pendingWrite.value.value;\n if (props.control) return props.control.value as T;\n if (props.modelValue === undefined) return internalValue.value as T;\n return props.modelValue as T;\n },\n set(newValue: T) {\n try {\n if (props.control) props.control.value = newValue;\n } finally {\n // compared as the write was made: an element holds its state behind reactive(), so an array or an object\n // reads back as a proxy of what was written and an identity comparison would answer that every such write\n // was refused. Object.is over the raw objects answers for NaN as well\n if (props.control && !Object.is(toRaw(props.control.value as any), toRaw(newValue as any))) {\n pendingWrite.value = { value: newValue };\n nextTick(() => {\n pendingWrite.value = null;\n });\n }\n }\n if (props.modelValue === undefined) internalValue.value = newValue;\n emit('update:modelValue', props.control ? (props.control.value as T) : 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 controlTouch = computed({\n get() {\n return props.control!.touched;\n },\n set(val: boolean) {\n props.control!.touched = val;\n },\n });\n const touched = props.control ? controlTouch : ref(false);\n const valid = computed(() => (props.control ? props.control.valid : true));\n const errors = computed(() =>\n props.control ? props.control.errors : (props.errors || []).map((error) => new ValidationErrorRenderContent(error)),\n );\n const anyErrors = computed(() => (touched.value && errors.value.length > 0 ? ' ' : undefined));\n const showErrors = computed(() => (touched.value ? errors.value : undefined));\n // a field inside a disabled section is drawn disabled: effectiveEnabled is false where the element or any\n // container above it is disabled, which is the question a rendered input asks\n const enabled = computed(() => (props.control ? props.control.effectiveEnabled : props.enabled !== false));\n // A control resolves its own mode - vue-forms refuses anything that is not a DisplayMode constant and reads a\n // name case-insensitively. The prop is resolved the same way, so `visibility=\"hidden\"` states what it looks\n // like it states and an unrecognised mode is refused here as loudly as it is there.\n const visibility = computed(() => {\n if (props.control) return props.control.visibility;\n if (props.visibility == null) return Form.DisplayMode.FULL;\n return Form.DisplayMode.fromAny(props.visibility);\n });\n const isRendered = computed(() => visibility.value !== Form.DisplayMode.SUPPRESS);\n const visibilityClass = computed(() => ({\n 'd-none': visibility.value === Form.DisplayMode.HIDDEN,\n invisible: visibility.value === Form.DisplayMode.INVISIBLE,\n }));\n // the presentation the bound element carries: what a prop does not state is taken from here before any default\n const extra = computed(() => props.control?.extra ?? {});\n\n const label = computed((): Label => {\n const stated = props.label ?? extra.value.label;\n return isString(stated || '') ? new Label(<string>stated || '') : <Label>stated;\n });\n const placeholder = computed(() => props.placeholder ?? extra.value.placeholder ?? '');\n const helpText = computed(() => props.helpText ?? extra.value.helpText ?? '');\n const hint = computed(() => props.hint ?? extra.value.hint ?? '');\n const cssClass = computed(() => props.cssClass ?? extra.value.cssClass ?? '');\n\n const density = computed(\n (): FieldDensity => props.density ?? extra.value.density ?? injectedDensity ?? settings.defaultDensity ?? 'default',\n );\n const boundDensity = computed((): VuetifyDensity => (density.value === 'inline' ? 'default' : density.value));\n const variant = computed(\n (): FieldVariant =>\n props.variant ?? extra.value.variant ?? injectedVariant ?? settings.defaultVariant ?? 'underlined',\n );\n\n return {\n value,\n valid,\n enabled,\n errors,\n showErrors,\n visibility,\n isRendered,\n visibilityClass,\n label,\n touched,\n density,\n densityClass: computed(() => `df-density-${density.value}`),\n\n vuetifyBindings: computed(() => ({\n name: props.control?.fieldName,\n class: cssClass.value,\n\n density: boundDensity.value,\n variant: variant.value,\n\n label: label.value.text,\n errorMessages: 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 ...(props.passthroughAttrs || {}),\n })),\n };\n}\n","<template>\n <v-input\n v-if=\"isRendered\"\n :name=\"vuetifyBindings.name\"\n :density=\"vuetifyBindings.density\"\n :hint=\"vuetifyBindings.hint\"\n :persistent-hint=\"vuetifyBindings.persistentHint\"\n :hide-details=\"vuetifyBindings.hideDetails\"\n :error-messages=\"vuetifyBindings.errorMessages\"\n :class=\"[cssClass, visibilityClass]\"\n >\n <v-field\n :variant=\"vuetifyBindings.variant\"\n :density=\"vuetifyBindings.density\"\n :label=\"vuetifyBindings.label\"\n :disabled=\"vuetifyBindings.disabled\"\n :clearable=\"isClearable\"\n :persistent-clear=\"true\"\n :dirty=\"!!value || !!vuetifyBindings.placeholder\"\n :active=\"focused\"\n :loading=\"loading\"\n @click:clear=\"emits('click:clear')\"\n @update:focused=\"(isFocused) => setFocused(isFocused)\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #default=\"slotProps\">\n <div class=\"d-flex w-100 df-style-resetting df-sub-field\"><slot v-bind=\"slotProps\" /></div>\n </template>\n <template #loader=\"loaderProps\"><slot name=\"loader\" v-bind=\"loaderProps\" /></template>\n <template v-if=\"$slots['prepend-inner']\" #prepend-inner=\"prependInnerProps\">\n <slot name=\"prepend-inner\" v-bind=\"prependInnerProps\" />\n </template>\n </v-field>\n <template #message=\"{ message }\">\n <df-input-hint :message=\"message\" :errors=\"showErrors\" />\n </template>\n <template v-if=\"$slots.prepend\" #prepend=\"prependProps\"><slot name=\"prepend\" v-bind=\"prependProps\" /></template>\n </v-input>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, unref } from 'vue';\n\nimport DfInputHint from './df-input-hint.vue';\nimport DfLabel from './df-label.vue';\nimport { BaseEmits, BaseProps, useInputBase } from './input-base';\n\nconst props = defineProps<BaseProps & { loading?: boolean }>();\nconst emits = defineEmits<BaseEmits & { (e: 'blur'): void }>();\n\nconst { isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(props, emits);\n\nconst isClearable = computed(() => !!(unref(props.clearable) && unref(value)));\nconst focused = ref<boolean>(false);\n\nfunction setFocused(isFocused: boolean) {\n focused.value = isFocused;\n if (!isFocused) {\n touched.value = true;\n emits('blur');\n }\n}\n</script>\n\n<style>\n.df-style-resetting .v-field__overlay {\n background-color: transparent;\n}\n.df-style-resetting .v-field__outline::before,\n.df-style-resetting .v-field__outline::after {\n content: none !important;\n}\n\n.df-sub-field {\n max-height: var(--v-input-control-height);\n min-height: max(\n var(--v-input-control-height, 56px),\n 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom)\n );\n}\n\n.df-density-inline .df-sub-field {\n min-height: revert;\n}\n\n.ck-editor-custom .df-sub-field {\n max-height: revert;\n}\n</style>\n","export const translatableStrings = {\n Yes: 'Yes',\n No: 'No',\n Close: 'Close',\n Paragraph: 'Paragraph',\n Heading1: 'Heading 1',\n Heading2: 'Heading 2',\n Heading3: 'Heading 3',\n Heading4: 'Heading 4',\n Heading5: 'Heading 5',\n Heading6: 'Heading 6',\n Downloadable: 'Downloadable',\n ArticleCategory: 'Article category',\n Title: 'Title',\n Subtitle: 'Subtitle',\n InfoBox: 'Info box',\n SideQuote: 'Side quote',\n Marker: 'Marker',\n Spoiler: 'Spoiler',\n CodeDark: 'Code (dark)',\n CodeBright: 'Code (bright)',\n};\n\nexport function translateStrings(translationCallback: (s: string) => string) {\n Object.keys(translatableStrings).forEach((key) => {\n const translation = translationCallback(key);\n if (translation != null) {\n translatableStrings[key as keyof typeof translatableStrings] = translation;\n }\n });\n}\n\nexport function setCkEditorLanguage(language: string, translations: any) {\n ckEditorLanguage.language = language;\n ckEditorLanguage.translations = translations;\n}\n\nexport const ckEditorLanguage = {\n language: 'en',\n translations: undefined,\n};\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\n// eslint-disable-next-line @typescript-eslint/no-namespace, no-redeclare\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 { isPlainObject } from 'lodash-es';\nimport { computed } from 'vue';\nimport { useDisplay } from 'vuetify';\n\nexport const responsiveBreakpoints = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type BreakpointNames = (typeof responsiveBreakpoints)[number];\nexport type BreakpointsJSON<T extends Record<string, any>> = T & Partial<Record<BreakpointNames, T>>;\n\nexport abstract class ResponsiveRenderOptions<T extends Record<string, any>> {\n protected readonly _value: BreakpointsJSON<T>;\n\n constructor(data?: BreakpointsJSON<T>) {\n this._value = this.cleanBreakpoint(data as T, true)!;\n if (data) {\n responsiveBreakpoints.forEach((bp) => {\n const options = this.cleanBreakpoint(data[bp]);\n if (options) this._value[bp] = options;\n });\n }\n }\n\n getOptionsForBreakpoint(breakpoint: BreakpointNames): T {\n const result = this.cleanBreakpoint(this._value as T) as BreakpointsJSON<T>;\n const fields = Object.keys(result);\n for (const bp of responsiveBreakpoints) {\n const bpData = this._value[bp];\n for (const field of fields) {\n const value = bpData?.[field];\n // a breakpoint states what it changes; a field it says nothing about keeps cascading\n if (value == null) continue;\n if (isPlainObject(value)) {\n // shallow, so a breakpoint restates single keys of an options object rather than the whole of it. A\n // nested object is a value like any other and is replaced whole. Only plain objects merge: a Date, a\n // Map or a class instance would come out of a spread as its own properties without its prototype.\n (<any>result)[field] = { ...(<any>result)[field], ...value };\n } else {\n (<any>result)[field] = value;\n }\n }\n if (bp === breakpoint) break;\n }\n return result;\n }\n\n /**\n * Normalizes one breakpoint's options. The merge reads `null` and `undefined` as \"this breakpoint says\n * nothing about that field\", so a field the breakpoint does not state has to come back as `undefined` rather\n * than as an empty value - an empty array or string returned here reads as a breakpoint deliberately emptying\n * what it inherited. The value returned for `defaultIfEmpty` carries every field the class merges, since the\n * field set is taken from it.\n */\n protected abstract cleanBreakpoint(bp?: T, defaultIfEmpty?: boolean): T | null;\n}\n\nexport function 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\nexport function useBreakpoint() {\n const display = useDisplay();\n\n return computed<BreakpointNames>(() => getBreakpointName(display));\n}\n","import { ActionValue } from '@dynamicforms/vue-forms';\nimport { isBoolean, isEmpty, isObjectLike, isString } from 'lodash-es';\n\nimport { ActionDisplayStyle } from './action-display-style';\nimport { BreakpointNames, BreakpointsJSON, ResponsiveRenderOptions } from './responsive-render-options';\n\nexport interface ActionRenderOptions extends ActionValue {\n /** The text of the action, rendered when {@link showLabel} is set and the text is not empty. `ActionValue`\n * types this `unknown`, leaving what a label is to the rendering library; here it is a string. */\n label?: string;\n /** The icon of the action, a name `vue-cached-icon` resolves, rendered when {@link showIcon} is set and the\n * name is not empty. Typed here for the same reason `label` is. */\n icon?: string;\n /** Unique identifier for the action. Purely informational to `<df-actions>` itself - it is not used for\n * rendering - but by convention should match the key under which the action is registered in a\n * `FormActions` (`Record<string, Action>`) map passed to `@dynamicforms/vuetify-modal-form-kit`'s\n * `modal.message()`/`modal.yesNo()`/etc. That map key (or the action's `fieldName`, when it's part of a\n * `Form.Group`) - not this `name` field - is what the modal's promise actually resolves with; keeping them\n * in sync is what lets callers do e.g. `if (await modal.yesNo(...) === 'yes')`. */\n name?: string;\n /** How the action is rendered: {@link ActionDisplayStyle.BUTTON} for a tonal `<v-btn>`, or\n * {@link ActionDisplayStyle.TEXT} for a text-variant `<v-btn>`. */\n renderAs?: ActionDisplayStyle;\n /** Whether the label is shown. If `label` is empty, the label is never shown regardless of this flag. */\n showLabel?: boolean;\n /** Whether the icon is shown. If `icon` is empty, the icon is never shown regardless of this flag. */\n showIcon?: boolean;\n /** Marks this as the action to trigger on Enter when rendered inside `<df-modal>` (see that component's\n * `onKeydown` in `@dynamicforms/vuetify-modal-form-kit`) - e.g. a \"Save\" or \"Yes\" action. In `<df-actions>` it\n * also colors the button `primary`, unless overridden via `passthroughAttrs.color`. At most one action in a\n * given set should set this. */\n defaultConfirm?: boolean;\n /** Marks this as the action to trigger on Escape when rendered inside `<df-modal>` (see that component's\n * `onKeydown` in `@dynamicforms/vuetify-modal-form-kit`) - e.g. a \"Cancel\" or \"No\" action. In `<df-actions>` it\n * also colors the button `secondary`, unless overridden via `passthroughAttrs.color`. At most one action in a\n * given set should set this (an action such as `Action.closeAction()` may set both `defaultConfirm` and\n * `defaultReject` so it fires on either key). */\n defaultReject?: boolean;\n /** Additional props/attrs forwarded verbatim to the rendered `<v-btn>` (e.g. `color`, `loading`, `density`,\n * `rounded`, `block`, `prependIcon`, ...), taking precedence over `<df-actions>`'s own computed bindings\n * (`variant`, `color`, `disabled`). Mirrors the `passthroughAttrs` convention used by `df-input`/`df-file`/etc\n * (see `helpers/input-base.ts`); it has to live on the action's value here because `<df-actions>` renders a\n * whole array of buttons, not just one. */\n passthroughAttrs?: Record<string, any>;\n}\nexport type ActionBreakpointOptions = BreakpointsJSON<ActionRenderOptions>;\n\nexport class ResponsiveActionRenderOptions extends ResponsiveRenderOptions<ActionRenderOptions> {\n protected cleanBreakpoint(bp?: ActionRenderOptions, defaultIfEmpty: boolean = false): ActionRenderOptions | null {\n if ((!bp || !isObjectLike(bp)) && !defaultIfEmpty) return null;\n\n const result: ActionRenderOptions = {};\n if (defaultIfEmpty) {\n result.renderAs = ActionDisplayStyle.BUTTON;\n result.showLabel = true;\n result.showIcon = true;\n }\n\n if (bp) {\n if (bp.renderAs != null) result.renderAs = ActionDisplayStyle.fromAny(bp.renderAs);\n if (isString(bp.label)) result.label = bp.label;\n if (isString(bp.icon)) result.icon = bp.icon;\n if (isBoolean(bp.showLabel)) result.showLabel = bp.showLabel;\n if (isBoolean(bp.showIcon)) result.showIcon = bp.showIcon;\n }\n\n return Object.keys(result).length ? result : null;\n }\n}\n\n/**\n * What one action renders as at `breakpoint`, read off the value of any `Action`. The members\n * `ActionRenderOptions` adds over `ActionValue` are taken where the value carries them and defaulted where it does\n * not, so an action holding nothing but a label - which is all a `@dynamicforms/vue-forms` `Action` declares -\n * renders as a button showing that label.\n *\n * `label` and `icon` come back only where the matching flag says they are shown, and the flags come back false\n * where there is no text or name to show, so a caller renders each member on its own flag and never on emptiness.\n */\nexport function getRenderOptionsForBreakpoint(value: ActionValue, breakpoint: BreakpointNames): ActionRenderOptions {\n const options = new ResponsiveActionRenderOptions(value as ActionBreakpointOptions);\n const partial = options.getOptionsForBreakpoint(breakpoint);\n return {\n name: partial.name,\n label: partial.showLabel ? partial.label : undefined,\n icon: partial.showIcon ? partial.icon : undefined,\n renderAs: partial.renderAs,\n showLabel: isString(partial.label) && !isEmpty(partial.label) ? partial.showLabel : false,\n showIcon: isString(partial.icon) && !isEmpty(partial.icon) ? partial.showIcon : false,\n };\n}\n","import { Action as FormAction, IFieldConstructorParams } from '@dynamicforms/vue-forms';\nimport { isEmpty, isString } from 'lodash-es';\nimport { computed, Ref } from 'vue';\n\nimport { translatableStrings } from '../translations';\n\nimport { ActionDisplayStyle } from './action-display-style';\nimport { ActionBreakpointOptions, getRenderOptionsForBreakpoint } from './action-render-options';\nimport { BreakpointNames } from './responsive-render-options';\n\nclass Action extends FormAction<ActionBreakpointOptions> {\n /** @see getRenderOptionsForBreakpoint, which answers the same for the value of any `Action` */\n getBreakpointValue(breakpoint: Ref<BreakpointNames>) {\n return computed(() => getRenderOptionsForBreakpoint(this.value, breakpoint.value));\n }\n\n /** @see ActionRenderOptions.name */\n get name() {\n return this.value.name;\n }\n\n /**\n * The label as this action renders it: the text where {@link ActionRenderOptions.showLabel} states it is shown,\n * and `undefined` where it is not. `label` is the base class's, and answers the text whatever the flag says.\n */\n get renderedLabel() {\n return this.value.showLabel ? this.value.label : undefined;\n }\n\n /** @see ActionRenderOptions.showLabel */\n get showLabel() {\n return isString(this.value.label) && !isEmpty(this.value.label) ? this.value.showLabel : false;\n }\n\n /**\n * The icon as this action renders it: the name where {@link ActionRenderOptions.showIcon} states it is shown,\n * and `undefined` where it is not. `icon` is the base class's, and answers the name whatever the flag says.\n */\n get renderedIcon() {\n return this.value.showIcon ? this.value.icon : undefined;\n }\n\n /** @see ActionRenderOptions.showIcon */\n get showIcon() {\n return isString(this.value.icon) && !isEmpty(this.value.icon) ? this.value.showIcon : false;\n }\n\n /** @see ActionRenderOptions.renderAs */\n get renderAs() {\n return this.value.renderAs;\n }\n\n /** @see ActionRenderOptions.defaultConfirm */\n get defaultConfirm() {\n return this.value.defaultConfirm;\n }\n\n /** @see ActionRenderOptions.defaultReject */\n get defaultReject() {\n return this.value.defaultReject;\n }\n\n /** @see ActionRenderOptions.passthroughAttrs */\n get passthroughAttrs() {\n return this.value.passthroughAttrs;\n }\n\n static closeAction(data?: Partial<IFieldConstructorParams<ActionBreakpointOptions>>) {\n const init: Partial<IFieldConstructorParams<ActionBreakpointOptions>> = {\n ...(data ?? {}), // any properties in data should overwrite properties in the constant\n value: {\n name: 'close',\n label: translatableStrings.Close,\n icon: 'ion-close-outline',\n renderAs: ActionDisplayStyle.BUTTON,\n showLabel: true,\n showIcon: true,\n },\n };\n init.value = { ...init.value, ...(data?.value ?? {}) }; // data may only contain partial info of the value\n return new Action(init);\n }\n\n static yesAction(data?: Partial<IFieldConstructorParams<ActionBreakpointOptions>>) {\n const init: Partial<IFieldConstructorParams<ActionBreakpointOptions>> = {\n ...(data ?? {}), // any properties in data should overwrite properties in the constant\n value: {\n name: 'yes',\n label: translatableStrings.Yes,\n icon: 'ion-thumbs-up-outline',\n renderAs: ActionDisplayStyle.BUTTON,\n showLabel: true,\n showIcon: true,\n },\n };\n init.value = { ...init.value, ...(data?.value ?? {}) }; // data may only contain partial info of the value\n return new Action(init);\n }\n\n static noAction(data?: Partial<IFieldConstructorParams<ActionBreakpointOptions>>) {\n const init: Partial<IFieldConstructorParams<ActionBreakpointOptions>> = {\n ...(data ?? {}), // any properties in data should overwrite properties in the constant\n value: {\n name: 'no',\n label: translatableStrings.No,\n icon: 'ion-thumbs-down-outline',\n renderAs: ActionDisplayStyle.BUTTON,\n showLabel: true,\n showIcon: true,\n },\n };\n init.value = { ...init.value, ...(data?.value ?? {}) }; // data may only contain partial info of the value\n return new Action(init);\n }\n}\n\nexport { Action };\n","<template>\n <div\n v-if=\"actionsRef.length > 0\"\n class=\"text-end df-actions\"\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 actionsWithBreakpoint\"\n :key=\"idx\"\n :variant=\"action.renderAs === ActionDisplayStyle.BUTTON ? 'tonal' : 'text'\"\n :color=\"defaultActionColor(action.value)\"\n :disabled=\"!action.action.effectiveEnabled || action.action.busy\"\n :loading=\"action.action.busy\"\n :elevation=\"0\"\n :size=\"buttonSize\"\n :class=\"{\n 'd-none': action.action.visibility === DisplayMode.HIDDEN,\n invisible: action.action.visibility === DisplayMode.INVISIBLE,\n }\"\n v-bind=\"action.value.passthroughAttrs\"\n @click.stop=\"(event: MouseEvent) => action.action.execute(event)\"\n >\n <cached-icon v-if=\"action.icon\" :name=\"action.icon\" />\n <span v-if=\"action.icon && action.label\" style=\"width: 0.5rem\" />\n <span v-if=\"action.label\">{{ action.label }}</span>\n </v-btn>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { DisplayMode } from '@dynamicforms/vue-forms';\nimport { computed, unref } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\n\nimport { DfActionsProps } from './dynamicforms-component-props';\nimport { ActionDisplayStyle, ActionRenderOptions, getRenderOptionsForBreakpoint, useBreakpoint } from './helpers';\n\nconst props = withDefaults(defineProps<DfActionsProps>(), {\n buttonSize: 'default',\n showAsGroup: 'no',\n});\n\nconst breakpoint = useBreakpoint();\nconst actionsRef = computed(() => unref(props.actions).filter((action) => action.visibility !== DisplayMode.SUPPRESS));\n// What each button draws is read off the action's value rather than through the accessors this library's `Action`\n// adds over it, so an action declared as a `@dynamicforms/vue-forms` one - which declares none of them - is drawn\n// as well. `value` is the value as it stands, which is where the members no breakpoint resolves are read from;\n// the spread is that same value resolved at the current breakpoint.\nconst actionsWithBreakpoint = computed(() =>\n actionsRef.value.map((action) => ({\n action,\n value: action.value as ActionRenderOptions,\n ...getRenderOptionsForBreakpoint(action.value, breakpoint.value),\n })),\n);\n\nfunction defaultActionColor(value: ActionRenderOptions): string | undefined {\n if (value.defaultConfirm) return 'primary';\n if (value.defaultReject) return 'secondary';\n return undefined;\n}\n</script>\n\n<style>\n.df-actions.button-group {\n border-radius: 0.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.df-actions.button-group .v-btn {\n border: none;\n border-radius: 0;\n margin: 0 !important;\n padding: 0 0.25em;\n}\n.df-actions.button-group .v-btn:first-child {\n border-start-start-radius: 0.5em;\n border-end-start-radius: 0.5em;\n}\n.df-actions.button-group .v-btn:last-child {\n border-start-end-radius: 0.5em;\n border-end-end-radius: 0.5em;\n}\n.df-actions.button-group.with-border {\n border: 0.1em solid currentColor;\n}\n.df-actions.button-group.with-border .v-btn:not(:first-child) {\n border-inline-start: 0.1em solid currentColor;\n}\n.df-actions .v-btn:not(:first-child) {\n margin-left: 0.5em;\n}\n</style>\n","<template>\n <v-checkbox\n v-if=\"isRendered\"\n v-model=\"boolValue\"\n density=\"compact\"\n :class=\"[densityClass, visibilityClass]\"\n :indeterminate=\"indeterminate\"\n :false-value=\"false\"\n :true-value=\"true\"\n v-bind=\"vuetifyBindings as any\"\n @change=\"change\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :allow-wrap=\"true\" :data=\"labelData as any\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-checkbox>\n</template>\n\n<script setup lang=\"ts\">\nimport { clone } from 'lodash-es';\nimport { computed } from 'vue';\n\nimport { DfCheckboxProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfCheckboxProps>(), { ...defaultBaseProps, allowNull: false });\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\n\nconst indeterminate = computed(() => props.allowNull && value.value == null);\n\nconst boolValue = computed({\n get(): any {\n return value.value;\n },\n set() {},\n});\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-text-field\n v-if=\"isRendered\"\n v-model=\"value\"\n :class=\"[densityClass, visibilityClass]\"\n :clearable=\"allowNull\"\n type=\"text\"\n :rules=\"rules\"\n v-bind=\"vuetifyBindings\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></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 <template #default>\n <v-menu v-model=\"dropdownShown\" :close-on-content-click=\"false\" activator=\"parent\">\n <v-color-picker v-model=\"value\" mode=\"hexa\" />\n </v-menu>\n </template>\n </v-text-field>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\n\nimport { DfColorProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfColorProps>(), { ...defaultBaseProps, allowNull: false });\n\ninterface Emits extends BaseEmits {}\n\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\nconst dropdownShown = ref(false);\n\nconst rules = computed<((val: string) => boolean | string)[]>(() => [\n (val: string) => {\n if (props.control) return true; // if there's a form field, we expect there to be a validator\n if (!val && props.allowNull) return true; // allowed empty values are also not a problem\n\n const regex = /^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/;\n return regex.test(val) ? true : 'Not a valid hex string.';\n },\n]);\n</script>\n","<template>\n <input-base\n v-bind=\"props\"\n :class=\"densityClass\"\n :clearable=\"clearable\"\n @click:clear=\"value = null\"\n @blur=\"touched = true\"\n >\n <template #default=\"slotProps\">\n <div\n :class=\"[\n 'd-flex',\n 'w-100',\n ['plain', 'underlined'].includes(vuetifyBindings.variant) ? undefined : 'ml-4',\n 'df-input-wrapper',\n density,\n ]\"\n >\n <v-text-field\n v-if=\"['date', 'datetime'].includes(inputType)\"\n v-model=\"dateFormatted\"\n style=\"flex-grow: 4\"\n density=\"compact\"\n variant=\"plain\"\n :clearable=\"false\"\n :hide-details=\"true\"\n :readonly=\"vuetifyBindings.readonly\"\n :disabled=\"vuetifyBindings.disabled\"\n :name=\"`${vuetifyBindings.name}-date`\"\n :placeholder=\"vuetifyBindings.placeholder\"\n v-bind=\"passthroughAttrs\"\n @click=\"dropdown = 'date'\"\n @keydown.space=\"dropdown = 'date'\"\n @focus=\"slotProps.focus()\"\n @blur=\"slotProps.blur()\"\n >\n <template #default>\n <v-menu v-model=\"dateMenuShown\" :close-on-content-click=\"false\" activator=\"parent\">\n <v-confirm-edit v-model=\"valueAsDate\" @cancel=\"dropdown = ''\" @save=\"dropdown = ''\">\n <template #default=\"{ model: proxyModel, actions }\">\n <v-date-picker\n v-model=\"proxyModel.value\"\n :hide-header=\"true\"\n :first-day-of-week=\"firstDayOfWeek\"\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-menu>\n </template>\n </v-text-field>\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 variant=\"plain\"\n :clearable=\"false\"\n :hide-details=\"true\"\n :readonly=\"vuetifyBindings.readonly\"\n :disabled=\"vuetifyBindings.disabled\"\n :name=\"`${vuetifyBindings.name}-time`\"\n :placeholder=\"inputType === 'time' ? vuetifyBindings.placeholder : undefined\"\n v-bind=\"passthroughAttrs\"\n @click=\"dropdown = 'time'\"\n @keydown.space=\"dropdown = 'time'\"\n @focus=\"slotProps.focus()\"\n @blur=\"slotProps.blur()\"\n >\n <template #default>\n <v-menu v-model=\"timeMenuShown\" :close-on-content-click=\"false\" activator=\"parent\">\n <v-confirm-edit v-model=\"valueAsTimeString\" @cancel=\"dropdown = ''\" @save=\"dropdown = ''\">\n <template #default=\"{ model: proxyModel, actions }\">\n <v-time-picker v-model=\"proxyModel.value\" :hide-header=\"true\" format=\"24hr\">\n <template #actions><component :is=\"actions\" /></template>\n </v-time-picker>\n </template>\n </v-confirm-edit>\n </v-menu>\n </template>\n </v-text-field>\n </div>\n </template>\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';\n\nimport { DfDateTimeProps } from './dynamicforms-component-props';\nimport { BaseEmits, DateTimeLocaleConfig, defaultBaseProps, InputBase, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfDateTimeProps>(), {\n ...defaultBaseProps,\n inputType: 'datetime',\n displayFormatDate: 'P',\n displayFormatTime: 'p',\n});\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst currentLocale = computed(() => props.locale ?? unref(DateTimeLocaleConfig.dateTimeLocale));\nconst firstDayOfWeek = computed(() => currentLocale.value.options?.weekStartsOn ?? 1);\nconst { density, densityClass, touched, value, vuetifyBindings } = useInputBase<string | null>(props, emits);\nconst { inputType, displayFormatDate, displayFormatTime } = toRefs(props);\n\nconst dropdown = ref('');\nconst dateMenuShown = computed({\n get() {\n return unref(dropdown) === 'date';\n },\n set(newValue: boolean) {\n dropdown.value = newValue ? 'date' : '';\n },\n});\nconst timeMenuShown = computed({\n get() {\n return unref(dropdown) === 'time';\n },\n set(newValue: boolean) {\n dropdown.value = newValue ? 'time' : '';\n },\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) + format(new Date(), 'XXX');\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) {\n setValueISOFull(formatNaive(newValue), 0);\n },\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) {\n setValueISOFull(`T${newValue}`, 1);\n },\n});\n\nconst dateFormatted = computed({\n get() {\n const vad = unref(valueAsDate);\n if (vad == null) return '';\n return format(vad, unref(displayFormatDate), { locale: currentLocale.value });\n },\n set(newValue: string) {\n try {\n const d = parse(newValue, unref(displayFormatDate), new Date(), { locale: currentLocale.value });\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), { locale: currentLocale.value });\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","<template>\n <input-base\n v-bind=\"{ ...props, loading } as any\"\n :class=\"densityClass\"\n clearable\n @click:clear=\"removeFile\"\n @blur=\"touched = true\"\n >\n <template #prepend-inner><cached-icon name=\"mdi-paperclip\" /></template>\n <template #loader>\n <v-progress-linear\n v-if=\"currentFile && progress < 100\"\n :model-value=\"progress\"\n :indeterminate=\"progress === -1\"\n />\n </template>\n <template #default=\"slotProps\">\n <div class=\"d-flex w-100 position-relative df-input-wrapper\" :class=\"density\">\n <v-file-input\n v-model=\"selectedFile\"\n :label=\"fileLabel\"\n density=\"compact\"\n variant=\"plain\"\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 v-bind=\"passthroughAttrs\"\n prepend-icon=\"\"\n @update:model-value=\"handleFileChange\"\n @focus=\"slotProps.focus()\"\n @blur=\"slotProps.blur()\"\n />\n </div>\n </template>\n </input-base>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onBeforeUnmount, watch } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\n\nimport { DfFileProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, InputBase, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfFileProps>(), defaultBaseProps);\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { density, densityClass, touched, 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>();\nconst loading = computed(() => currentFile.value && progress.value < 100);\n\nconst fileLabel = computed(() => {\n if (!selectedFile.value && value.value) {\n return props.modelValue;\n }\n return '';\n});\n\nfunction clearTouchInterval() {\n if (touchInterval.value) window.clearInterval(touchInterval.value);\n}\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) => {\n if (newValue) setupTouchInterval();\n else clearTouchInterval();\n});\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 try {\n value.value = await props.comms.upload(file, (loaded: number, total: number) => {\n progress.value = Math.round((loaded * 100) / total);\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 v-if=\"isRendered\" class=\"df-input-container\" :class=\"[densityClass, visibilityClass]\">\n <v-text-field\n v-if=\"!isNumber\"\n v-model=\"value\"\n :type=\"inputType\"\n v-bind=\"vuetifyBindings as any\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-text-field>\n <v-number-input\n v-else\n v-model=\"value\"\n density=\"compact\"\n control-variant=\"stacked\"\n v-bind=\"{ ...vuetifyBindings, ...numberInputBindings } as any\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-number-input>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs, unref } from 'vue';\n\nimport { DfInputProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfInputProps>(), {\n ...defaultBaseProps,\n inputType: 'text',\n precision: null,\n step: undefined,\n min: undefined,\n max: undefined,\n});\n\ninterface Emits extends BaseEmits {}\n\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\nconst { inputType, max, min, precision, step } = toRefs(props);\n\nconst isNumber = computed(() => inputType.value === 'number');\nconst numberInputBindings = computed(() =>\n !isNumber.value ? {} : { min: unref(min), max: unref(max), precision: unref(precision), step: unref(step) },\n);\n</script>\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 :style=\"`min-height: ${minHeight}`\"\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 AccessibilityHelp,\n Alignment,\n Autoformat,\n AutoImage,\n AutoLink,\n Autosave,\n BalloonToolbar,\n Base64UploadAdapter,\n BlockQuote,\n Bold,\n ClassicEditor,\n CloudServices,\n Essentials,\n GeneralHtmlSupport,\n Heading,\n HeadingConfig,\n HorizontalLine,\n ImageBlock,\n ImageCaption,\n ImageInline,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageToolbar,\n ImageUpload,\n Indent,\n IndentBlock,\n Italic,\n Link,\n List,\n MediaEmbed,\n Paragraph,\n PasteFromMarkdownExperimental,\n PasteFromOffice,\n SelectAll,\n Style,\n Table,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n TextTransformation,\n Undo,\n} from 'ckeditor5';\nimport { onMounted, ref } from 'vue';\n\nimport { ckEditorLanguage, translatableStrings } from './translations';\n\nwithDefaults(\n defineProps<{\n modelValue?: string;\n minHeight?: string;\n disabled?: boolean;\n }>(),\n { modelValue: '', minHeight: '7em', disabled: false },\n);\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',\n 'redo',\n '|',\n 'selectAll',\n '|',\n 'heading',\n 'style',\n '|',\n 'bold',\n 'italic',\n '|',\n 'horizontalLine',\n 'link',\n 'mediaEmbed',\n 'insertTable',\n 'blockQuote',\n '|',\n 'alignment',\n '|',\n 'bulletedList',\n 'numberedList',\n 'outdent',\n 'indent',\n '|',\n 'accessibilityHelp',\n ],\n shouldNotGroupWhenFull: false,\n};\nconst editorPlugins = [\n AccessibilityHelp,\n Alignment,\n AutoImage,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n Bold,\n CloudServices,\n Essentials,\n GeneralHtmlSupport,\n Heading,\n HorizontalLine,\n ImageBlock,\n ImageCaption,\n ImageInline,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageToolbar,\n ImageUpload,\n Indent,\n IndentBlock,\n Italic,\n Link,\n List,\n Autoformat,\n MediaEmbed,\n Paragraph,\n PasteFromMarkdownExperimental,\n PasteFromOffice,\n SelectAll,\n Style,\n Table,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Undo,\n TextTransformation,\n Base64UploadAdapter,\n];\nconst editorHeadings: HeadingConfig = {\n options: [\n { model: 'paragraph', title: translatableStrings.Paragraph, class: 'ck-heading_paragraph' },\n { model: 'heading1', view: 'h1', title: translatableStrings.Heading1, class: 'ck-heading_heading1' },\n { model: 'heading2', view: 'h2', title: translatableStrings.Heading2, class: 'ck-heading_heading2' },\n { model: 'heading3', view: 'h3', title: translatableStrings.Heading3, class: 'ck-heading_heading3' },\n { model: 'heading4', view: 'h4', title: translatableStrings.Heading4, class: 'ck-heading_heading4' },\n { model: 'heading5', view: 'h5', title: translatableStrings.Heading5, class: 'ck-heading_heading5' },\n { model: 'heading6', view: 'h6', title: translatableStrings.Heading6, class: 'ck-heading_heading6' },\n ],\n};\nconst editorConfig: EditorConfig = {\n language: ckEditorLanguage.language,\n toolbar: editorToolbarConfig,\n plugins: editorPlugins,\n balloonToolbar: ['bold', 'italic', '|', 'link', '|', 'bulletedList', 'numberedList'],\n heading: editorHeadings,\n htmlSupport: {\n allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }],\n },\n image: {\n toolbar: [\n 'toggleImageCaption',\n 'imageTextAlternative',\n '|',\n 'imageStyle:inline',\n 'imageStyle:wrapText',\n 'imageStyle:breakText',\n '|',\n 'resizeImage',\n ],\n },\n // initialData: '',\n link: {\n addTargetToExternalLinks: true,\n defaultProtocol: 'https://',\n decorators: {\n toggleDownloadable: {\n mode: 'manual',\n label: translatableStrings.Downloadable,\n attributes: { download: 'file' },\n },\n },\n },\n placeholder: '',\n style: {\n definitions: [\n { name: translatableStrings.ArticleCategory, element: 'h3', classes: ['category'] },\n { name: translatableStrings.Title, element: 'h2', classes: ['document-title'] },\n { name: translatableStrings.Subtitle, element: 'h3', classes: ['document-subtitle'] },\n { name: translatableStrings.InfoBox, element: 'p', classes: ['info-box'] },\n { name: translatableStrings.SideQuote, element: 'blockquote', classes: ['side-quote'] },\n { name: translatableStrings.Marker, element: 'span', classes: ['marker'] },\n { name: translatableStrings.Spoiler, element: 'span', classes: ['spoiler'] },\n { name: translatableStrings.CodeDark, element: 'pre', classes: ['fancy-code', 'fancy-code-dark'] },\n { name: translatableStrings.CodeBright, element: 'pre', classes: ['fancy-code', 'fancy-code-bright'] },\n ],\n },\n table: { contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells', 'tableProperties', 'tableCellProperties'] },\n translations: ckEditorLanguage.translations,\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,\n.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:\n 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\" class=\"ck-editor-custom\" :class=\"densityClass\">\n <template #default=\"slotProps\">\n <ck-editor-custom\n ref=\"$editor\"\n v-model=\"value\"\n :class=\"{ 'mt-6': !!label }\"\n :min-height=\"minHeight\"\n :disabled=\"vuetifyBindings.disabled\"\n v-bind=\"passthroughAttrs\"\n @focusin=\"slotProps.focus()\"\n @focusout=\"slotProps.blur()\"\n />\n </template>\n </input-base>\n</template>\n\n<script setup lang=\"ts\">\nimport { DfRtfEditorProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, InputBase, useInputBase } from './helpers';\nimport CkEditorCustom from './helpers/ck-editor-custom.vue';\n\nconst props = withDefaults(defineProps<DfRtfEditorProps>(), { ...defaultBaseProps, minHeight: undefined });\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, value, vuetifyBindings } = useInputBase(props, emits);\n</script>\n\n<style>\n.ck-editor-custom .v-field:not(.v-field--active) .v-label.v-field-label:not(.v-field-label--floating) {\n transform: translate(0.5em, 3em);\n}\n\n.ck-editor-custom .v-input__control {\n /* So the dropdowns of ckeditor will draw over vuetify inputs that are positioned underneath */\n z-index: 1;\n}\n\n.ck {\n /* ========== BASE ========== */\n --ck-color-base-background: rgb(var(--v-theme-surface));\n --ck-color-base-foreground: rgb(var(--v-theme-background));\n --ck-color-base-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-text: rgb(var(--v-theme-on-surface));\n --ck-color-shadow-drop: rgba(0, 0, 0, 0.5);\n --ck-color-shadow-inner: rgba(255, 255, 255, 0.05);\n\n /* ========== TOOLBAR ========== */\n --ck-color-toolbar-background: rgb(var(--v-theme-surface));\n --ck-color-toolbar-border: rgb(var(--v-theme-surface-variant));\n\n /* ========== BUTTONS (default) ========== */\n --ck-color-button-default-background: transparent;\n --ck-color-button-default-hover-background: rgba(var(--v-theme-on-surface), 0.08);\n --ck-color-button-default-active-background: rgba(var(--v-theme-on-surface), 0.12);\n --ck-color-button-default-active-shadow: inset 0 0 0 1px rgb(var(--v-theme-primary));\n --ck-color-button-default-disabled-background: transparent;\n\n /* ========== BUTTONS (ON state) ========== */\n --ck-color-button-on-background: rgba(var(--v-theme-primary), 0.15);\n --ck-color-button-on-hover-background: rgba(var(--v-theme-primary), 0.25);\n --ck-color-button-on-color: rgb(var(--v-theme-primary));\n --ck-color-button-on-disabled-background: rgba(var(--v-theme-on-surface), 0.05);\n\n /* ========== DROPDOWN / PANELS ========== */\n --ck-color-dropdown-panel-background: rgb(var(--v-theme-surface));\n --ck-color-dropdown-panel-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-panel-background: rgb(var(--v-theme-surface));\n --ck-color-panel-border: rgb(var(--v-theme-surface-variant));\n\n /* ========== LISTS ========== */\n --ck-color-list-background: rgb(var(--v-theme-surface));\n --ck-color-list-button-hover-background: rgba(var(--v-theme-on-surface), 0.08);\n --ck-color-list-button-on-background: rgba(var(--v-theme-primary), 0.15);\n --ck-color-list-button-on-color: rgb(var(--v-theme-primary));\n\n /* ========== INPUTS ========== */\n --ck-color-input-background: rgb(var(--v-theme-surface));\n --ck-color-input-border: rgb(var(--v-theme-surface-variant));\n --ck-color-input-text: rgb(var(--v-theme-on-surface));\n --ck-color-input-disabled-background: rgba(var(--v-theme-on-surface), 0.05);\n --ck-color-labeled-field-label-background: rgb(var(--v-theme-surface));\n\n /* ========== FOCUS / ACTION ========== */\n --ck-color-focus-border: rgb(var(--v-theme-primary));\n --ck-color-focus-outer-shadow: rgba(var(--v-theme-primary), 0.25);\n\n /* ========== LINKS ========== */\n --ck-color-link-default: rgb(var(--v-theme-info));\n\n /* ========== SELECTION ========== */\n --ck-color-selection-background: rgba(var(--v-theme-primary), 0.3);\n --ck-color-selection-text: rgb(var(--v-theme-on-primary));\n\n /* ========== DIALOGS ========== */\n --ck-color-dialog-background: rgb(var(--v-theme-surface));\n --ck-color-dialog-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-dialog-header-background: rgb(var(--v-theme-surface));\n --ck-color-dialog-header-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-dialog-footer-background: rgb(var(--v-theme-surface));\n --ck-color-dialog-footer-border: rgb(var(--v-theme-surface-variant));\n\n --ck-accessibility-help-dialog-code-background-color: rgb(var(--v-theme-background));\n\n /* ========== STYLE PANEL ========== */\n --ck-style-panel-button-label-background: rgb(var(--v-theme-surface));\n --ck-style-panel-button-hover-label-background: rgba(var(--v-theme-on-surface), 0.08);\n}\n\n/* Editable (content area) */\n.ck-editor__editable {\n background: rgb(var(--v-theme-surface));\n color: rgb(var(--v-theme-on-surface));\n}\n\n/* Borders & separators fix */\n.ck.ck-toolbar,\n.ck.ck-editor__top {\n border-color: rgb(var(--v-theme-surface-variant));\n}\n\n/* Balloon panels (npr. link popup) */\n.ck.ck-balloon-panel {\n background: rgb(var(--v-theme-surface));\n border: 1px solid rgb(var(--v-theme-surface-variant));\n}\n\n.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text {\n color: rgb(var(--v-theme-on-surface)) !important;\n}\n\n.ck .marker {\n background: rgb(var(--v-theme-accent), 0.6) !important;\n}\n\n/* Scrollbar */\n.ck ::-webkit-scrollbar {\n width: 10px;\n}\n\n.ck ::-webkit-scrollbar-thumb {\n background: rgba(var(--v-theme-on-surface), 0.2);\n border-radius: 6px;\n}\n</style>\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 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=\"isRendered\"\n ref=\"dfSelectRef\"\n v-model=\"selected\"\n :class=\"[cssClass, densityClass, visibilityClass, { 'df-select-multirow': isMultiline }]\"\n :items=\"options\"\n :return-object=\"false\"\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 :search=\"searchText\"\n v-bind=\"vuetifyBindings\"\n @update:search=\"(query: any) => queryOptions(query, undefined)\"\n @update:model-value=\"onSelect\"\n @click:clear=\"selected = null\"\n @blur=\"touched = true\"\n @mousedown.capture=\"onMouseDown($event)\"\n >\n <template #chip=\"{ item }\">\n <v-chip\n :key=\"item.value\"\n label\n size=\"small\"\n class=\"d-flex align-middle\"\n :variant=\"multiple ? 'tonal' : 'text'\"\n :closable=\"multiple\"\n @click:close=\"chipClose($event, item.value)\"\n >\n <template #prepend>\n <cached-icon v-if=\"item.raw?.icon\" class=\"me-1\" :name=\"item.raw.icon\" />\n </template>\n <span :class=\"{ 'text-body-1': !multiple }\">{{ item.title }}</span>\n </v-chip>\n </template>\n <template #label=\"labelData\">\n <df-label :data=\"labelData\" :label=\"label\" />\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 <cached-icon class=\"action-icon\" :name=\"item.raw.icon\" />\n </span>\n </template>\n </v-list-item>\n </template>\n <template #message=\"{ message }\">\n <df-input-hint :message=\"message\" :errors=\"showErrors\" />\n </template>\n <template v-if=\"$slots['append-inner']\" #append-inner=\"props\">\n <slot name=\"append-inner\" v-bind=\"props\" />\n </template>\n <template v-if=\"$slots['prepend-inner']\" #prepend-inner=\"props\">\n <slot name=\"prepend-inner\" v-bind=\"props\" />\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { isEqual, unionBy } from 'lodash-es';\nimport { computed, nextTick, ref, toRefs, unref, watch } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\nimport { VAutocomplete, VCombobox } from 'vuetify/components';\n\nimport { DfSelectProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, SelectChoice, useInputBase } from './helpers';\nimport {\n convertItems,\n getSelectedChoices,\n multipleCompliantValue,\n updateSelectedFromValue,\n} from './helpers/df-select.helper';\n\nconst propsWithDefaults = withDefaults(defineProps<DfSelectProps>(), {\n ...defaultBaseProps,\n choices: undefined,\n multiple: false,\n allowTags: false,\n allowNull: true,\n fetchChoices: undefined,\n});\n\nconst { choices, multiple, allowTags: taggable, allowNull, cssClass } = toRefs(propsWithDefaults);\n\ninterface Emits extends BaseEmits {\n (e: 'update:modelValueDisplay', value: SelectChoice[]): any;\n}\n\nconst emits = defineEmits<Emits>();\ndefineSlots<{\n 'append-inner'?: (props: any) => any;\n 'prepend-inner'?: (props: any) => any;\n}>();\n\nconst dfSelectRef = ref<InstanceType<typeof VAutocomplete> | InstanceType<typeof VCombobox> | null>(null);\n\nconst {\n densityClass,\n isRendered,\n label,\n showErrors,\n touched,\n value: resultingValue,\n visibilityClass,\n vuetifyBindings,\n} = useInputBase(propsWithDefaults, emits);\n\nconst selected = ref<any>(null);\nconst takeLoaded = ref(false);\nconst loaded = ref<SelectChoice[]>([]);\nconst loadedChoices = computed<SelectChoice[]>(() => (unref(takeLoaded) ? unref(loaded) : unref(choices) || []));\nconst loading = ref<boolean>(false);\n\nconst options = computed(() => convertItems(loadedChoices.value));\nconst searchText = ref<string | null>(null);\nconst fetchCounterGlobal = ref(0);\nconst isMultiline = ref(false);\n\nif (choices.value?.length && propsWithDefaults.fetchChoices !== undefined) {\n console.warn('Both choices and fetchChoices are set. Only one of them should be set.');\n}\n\nfunction emitModelValueDisplay(mcVal: any) {\n emits('update:modelValueDisplay', getSelectedChoices(loadedChoices.value, mcVal));\n}\n\nconst setResultingValueGuard = ref(false);\n\nfunction setResultingValue(newValue: any) {\n setResultingValueGuard.value = true;\n try {\n resultingValue.value = newValue;\n } finally {\n // The guard suppresses the watch that pushes the model's value back into `selected`. A write the control does\n // not take verbatim - a ValueChangedAction that writes another value back, a disabled field that drops it, a\n // handler that throws and unwinds it - never reaches that watch, so the chips would go on showing a selection\n // the control never took. Comparing what the control holds against what was written is what restores it, and\n // it needs a deep comparison: for multiple selection the value reads back as a different array holding the\n // same items.\n if (!isEqual(multipleCompliantValue(resultingValue.value, multiple.value), newValue)) {\n updateSelectedFromValue(\n multipleCompliantValue(resultingValue.value, multiple.value),\n selected,\n multiple.value,\n taggable.value,\n loadedChoices.value,\n );\n }\n nextTick(() => {\n setResultingValueGuard.value = false;\n });\n }\n}\n\nfunction getFullWidth(item: HTMLElement | null) {\n if (!item) return 0;\n const rect = item.getBoundingClientRect();\n const style = window.getComputedStyle(item);\n\n return rect.width + parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n}\n\nfunction checkMultiline() {\n if (multiple.value && allowNull.value && selected.value != null && selected.value.length > 0 && dfSelectRef.value) {\n const dfSelect = dfSelectRef.value.$el;\n const inputWidth = dfSelect.querySelector('.v-input__control')?.clientWidth;\n const container = dfSelect.querySelector('.v-field__input');\n const items = container.querySelectorAll('.v-autocomplete__selection, .v-combobox__selection');\n\n const style = window.getComputedStyle(container);\n let selectedWidth = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n\n items.forEach((item: HTMLElement) => {\n selectedWidth += getFullWidth(item);\n });\n\n const clearableWidth = getFullWidth(dfSelect.querySelector('.v-field .v-field__clearable'));\n const appendWidth = getFullWidth(dfSelect.querySelector('.v-field .v-field__append-inner'));\n const chipGap = 2;\n isMultiline.value = inputWidth - selectedWidth - items.length * chipGap - appendWidth < clearableWidth;\n } else {\n isMultiline.value = false;\n }\n}\n\nfunction onMouseDown(event: MouseEvent) {\n // če je klik na close ikoni ali njenem childu\n const target = event.target;\n if (target instanceof HTMLElement && target.closest('.v-chip__close')) {\n event.stopPropagation();\n event.preventDefault();\n }\n}\n\nwatch(\n selected,\n (newValue) => {\n if (vuetifyBindings.value.readonly) return;\n nextTick(() => {\n const mcVal = multipleCompliantValue(newValue, multiple.value);\n emitModelValueDisplay(mcVal);\n setResultingValue(mcVal);\n });\n },\n { deep: true },\n);\nwatch(\n resultingValue,\n (newValue: any) => {\n if (!setResultingValueGuard.value) {\n const mcVal = multipleCompliantValue(newValue, multiple.value);\n updateSelectedFromValue(mcVal, selected, multiple.value, false, loadedChoices.value);\n }\n },\n { deep: true },\n);\n\nwatch(setResultingValueGuard, () => {\n if (!setResultingValueGuard.value) {\n checkMultiline();\n }\n});\n\nfunction resetQuery() {\n if (searchText.value != null && searchText.value.length > 0) {\n searchText.value = null;\n queryOptions();\n }\n}\n\nfunction onSelect(/* val: any */) {\n resetQuery();\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 setResultingValue(mcVal);\n}\n\nfunction chipClose(event: MouseEvent, itemValue: any) {\n event.stopPropagation();\n if (vuetifyBindings.value.readonly || taggable.value) {\n if (taggable.value) {\n selected.value = selected.value.filter((v: any) => v !== itemValue);\n }\n return;\n }\n let mcVal;\n if (multiple.value && Array.isArray(selected.value)) {\n mcVal = multipleCompliantValue(\n selected.value.filter((v) => v !== itemValue),\n multiple.value,\n );\n } else {\n mcVal = null;\n }\n updateSelectedFromValue(mcVal, selected, multiple.value, false, loadedChoices.value);\n setResultingValue(mcVal);\n}\n\nasync function queryOptions(queryValue?: any, idValue?: any): Promise<void> {\n if (vuetifyBindings.value.readonly) return;\n searchText.value = queryValue;\n if (choices.value || propsWithDefaults.fetchChoices === undefined) return;\n const fetchCounter = ++fetchCounterGlobal.value;\n loading.value = true;\n try {\n const selectedChoices = getSelectedChoices(\n loadedChoices.value,\n multipleCompliantValue(selected.value, multiple.value),\n );\n const newChoices = await propsWithDefaults.fetchChoices(queryValue, idValue);\n if (fetchCounter !== fetchCounterGlobal.value) return;\n loaded.value = unionBy([...selectedChoices, ...newChoices], 'id');\n takeLoaded.value = true;\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 setResultingValue(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\n<style scoped>\n.df-select-multirow :deep(.v-field__clearable) {\n position: absolute;\n}\n\n.df-select-multirow :deep(.v-field__append-inner) {\n margin-top: 24px;\n}\n\n.df-select-multirow :deep(.v-autocomplete .v-field:not(.v-field--focused) input) {\n min-width: 24px;\n}\n</style>\n","<template>\n <div v-if=\"isRendered\" class=\"df-textarea-container\" :class=\"[densityClass, visibilityClass]\">\n <v-textarea\n v-model=\"value\"\n :class=\"cssClass\"\n :rows=\"rows\"\n :auto-grow=\"(maxRows || 0) > 0\"\n :max-rows=\"maxRows\"\n v-bind=\"vuetifyBindings as any\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-textarea>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { toRefs } from 'vue';\n\nimport { DfTextAreaProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfTextAreaProps>(), {\n ...defaultBaseProps,\n rows: undefined,\n maxRows: undefined,\n});\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\nconst { cssClass } = toRefs(props);\n</script>\n","import { CkeditorPlugin } from '@ckeditor/ckeditor5-vue';\nimport { App } from 'vue';\n\nimport * as Inputs from './dynamicforms-components';\nimport { VuetifyInputsSettings, vuetifyInputsSettingsKey } from './helpers';\nimport * as VuetifyComponents from './vuetify-components';\n\nexport * from './helpers';\nexport * as VuetifyComponents from './vuetify-components';\nexport * from './dynamicforms-components';\nexport * as DfInputComponents from './dynamicforms-components';\nexport * as DfInputComponentProps from './dynamicforms-component-props';\n\nexport interface DynamicFormsInputsOptions extends VuetifyInputsSettings {\n registerComponents: boolean;\n registerVuetifyComponents: boolean;\n}\n\nexport const DynamicFormsInputs = {\n install: (app: App, options?: Partial<DynamicFormsInputsOptions>) => {\n app.use(CkeditorPlugin);\n app.provide(vuetifyInputsSettingsKey, options ?? {});\n if (options?.registerComponents ?? false) {\n Object.entries(Inputs).map(([name, component]) => app.component(name, component));\n }\n if (options?.registerVuetifyComponents ?? false) {\n Object.entries(VuetifyComponents).map(([name, component]) => app.component(name, component));\n }\n },\n};\n"],"names":["_","index","isSemanticVersion","version","destructureSemanticVersion","major","minor","patch","isCKTestingVersion","testVersion","isCKVersion","appendExtraPluginsToEditorConfig","config","plugins","extraPlugins","__spreadProps","__spreadValues","item","getLicenseVersionFromEditorVersion","getCKBaseBundleInstallationInfo","CKEDITOR_VERSION","CKEDITOR","getSupportedLicenseVersionInstallationInfo","installationInfo","isCKEditorFreeLicense","licenseKey","licenseVersion","createIntegrationUsageDataPlugin","integrationName","usageData","editor","source","setUsageData","VueIntegrationUsageDataPlugin","appendAllIntegrationPluginsToConfig","editorConfig","assignInitialDataToEditorConfig","data","_a","isRootsMapConfigurationSupported","normalizedConfig","getInitialDataFromEditorConfig","_b","bundleInfo","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","onMounted","markRaw","error","onBeforeUnmount","_ctx","_cache","openBlock","createBlock","resolveDynamicComponent","Vue","CkeditorPlugin","app","isPluralType","val","formatDistanceLocale","getFormFromCount","count","formatDistance","token","options","result","tense","tokenValue","form","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","date","formatRelative","_baseDate","_options","format","buildLocalizeFn","value","context","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","key","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","sl","DateTimeLocaleConfig","locale","isRef","isError","computed","widgetMessage","widgetClasses","_createBlock","_unref","MessagesWidget","lbl","_createElementBlock","_normalizeClass","_Fragment","CachedIcon","_component_v_img","_resolveDynamicComponent","MdString","VueMarkdown","vuetifyInputsSettingsKey","Label","text","icon","iconComponent","__publicField","defaultBaseProps","useInputBase","settings","inject","injectedDensity","injectedVariant","internalValue","pendingWrite","shallowRef","newValue","toRaw","nextTick","Form","controlTouch","touched","valid","errors","ValidationErrorRenderContent","anyErrors","showErrors","enabled","visibility","isRendered","visibilityClass","extra","label","stated","isString","placeholder","helpText","hint","cssClass","density","_d","_c","boundDensity","variant","isEmpty","emits","vuetifyBindings","isClearable","unref","focused","setFocused","isFocused","_component_v_input","_withCtx","message","_createVNode","DfInputHint","_component_v_field","labelData","DfLabel","slotProps","_createElementVNode","_hoisted_1","_renderSlot","loaderProps","$slots","prependInnerProps","prependProps","translatableStrings","translateStrings","translationCallback","translation","setCkEditorLanguage","language","translations","ckEditorLanguage","ActionDisplayStyle","defaultDisplayStyle","fromString","mode","fromAny","input","isDefined","check","responsiveBreakpoints","ResponsiveRenderOptions","bp","breakpoint","fields","bpData","field","isPlainObject","getBreakpointName","dp","useBreakpoint","display","useDisplay","ResponsiveActionRenderOptions","defaultIfEmpty","isObjectLike","isBoolean","getRenderOptionsForBreakpoint","partial","Action","FormAction","init","actionsRef","action","DisplayMode","actionsWithBreakpoint","defaultActionColor","_openBlock","_renderList","idx","_component_v_btn","_mergeProps","_withModifiers","event","_hoisted_2","_toDisplayString","densityClass","indeterminate","boolValue","change","oldVal","clone","_component_v_checkbox","$event","dropdownShown","rules","_component_v_text_field","_normalizeStyle","_component_v_menu","_component_v_color_picker","currentLocale","firstDayOfWeek","inputType","displayFormatDate","displayFormatTime","toRefs","dropdown","dateMenuShown","timeMenuShown","formatNaive","valueISOFull","setValueISOFull","newISOValue","dateOrTimeIdx","vif","nv","valueAsDate","uValue","res","valueAsTimeString","dateFormatted","vad","d","parse","err","timeFormatted","hour","toNumber","minute","isNaN","InputBase","_component_v_confirm_edit","proxyModel","actions","_component_v_date_picker","_component_v_time_picker","touchInterval","currentFile","progress","fileInputKey","selectedFile","loading","fileLabel","clearTouchInterval","setupTouchInterval","removeFile","__async","upload","file","loaded","total","handleFileChange","_component_v_progress_linear","_component_v_file_input","max","min","precision","step","isNumber","numberInputBindings","_component_v_number_input","isLayoutReady","ClassicEditor","editorToolbarConfig","editorPlugins","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","editorHeadings","onEditorReady","editorReady","_hoisted_3","_component_ckeditor","CkEditorCustom","convertItems","items","multipleCompliantValue","multiple","isArray","castArray","first","getSelectedChoices","loadedChoices","multipleCpliantValue","mcValue","choice","updateSelectedFromValue","resultingValue","selected","taggable","matchingChoice","propsWithDefaults","choices","allowNull","dfSelectRef","takeLoaded","searchText","fetchCounterGlobal","isMultiline","emitModelValueDisplay","mcVal","setResultingValueGuard","setResultingValue","isEqual","getFullWidth","rect","style","checkMultiline","dfSelect","inputWidth","container","selectedWidth","clearableWidth","appendWidth","chipGap","onMouseDown","target","resetQuery","queryOptions","onSelect","chipClose","itemValue","v","queryValue","idValue","fetchCounter","selectedChoices","newChoices","unionBy","initialValueCheck","query","_component_v_chip","prps","_component_v_list_item","_component_v_textarea","DynamicFormsInputs","Inputs","name","component","VuetifyComponents"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|
|
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","../node_modules/date-fns/locale/sl/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/sl/_lib/formatLong.js","../node_modules/date-fns/locale/sl/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/sl/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/sl/_lib/match.js","../node_modules/date-fns/locale/sl.js","../src/helpers/date-time-locale.ts","../src/helpers/df-input-hint.vue","../src/helpers/df-label.vue","../src/helpers/settings.ts","../src/helpers/input-base.ts","../src/helpers/input-base.vue","../src/helpers/translations.ts","../src/helpers/action/action-display-style.ts","../src/helpers/action/responsive-render-options.ts","../src/helpers/action/action-render-options.ts","../src/helpers/action/action.ts","../src/df-actions.vue","../src/df-checkbox.vue","../src/df-color.vue","../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/dynamicforms-components-by-tag.ts","../src/index.ts"],"sourcesContent":["function 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\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\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\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 // It'll append styles *before* the stylesheets that are already present in the head\n // but after the ones that are injected by this function.\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 // It'll append styles *after* the stylesheets already in the head.\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\nfunction isSSR() {\n return typeof window === \"undefined\";\n}\n\nfunction omit(keys, obj) {\n const clone = { ...obj };\n for (const key of keys) {\n if (Object.hasOwn(obj, key)) {\n delete clone[key];\n }\n }\n return clone;\n}\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\nfunction overwriteArray(source, destination) {\n destination.length = 0;\n destination.push(...source);\n return destination;\n}\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\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\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\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\nfunction uniq(source) {\n return Array.from(new Set(source));\n}\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\nfunction filterObjectValues(obj, filter) {\n const filteredEntries = Object.entries(obj).filter(([key, value]) => filter(value, key));\n return Object.fromEntries(filteredEntries);\n}\n\nfunction filterBlankObjectValues(obj) {\n return filterObjectValues(\n obj,\n (value) => value !== null && value !== void 0\n );\n}\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\nfunction without(itemsToRemove, items) {\n return items.filter((item) => !itemsToRemove.includes(item));\n}\n\nfunction isSemanticVersion(version) {\n return !!version && /^\\d+\\.\\d+\\.\\d+/.test(version);\n}\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\nfunction compareSemanticVersions(a, b) {\n const parsedA = destructureSemanticVersion(a);\n const parsedB = destructureSemanticVersion(b);\n return Math.sign(\n parsedA.major - parsedB.major || parsedA.minor - parsedB.minor || parsedA.patch - parsedB.patch\n );\n}\n\nfunction isCKTestingVersion(version) {\n if (!version) {\n return false;\n }\n return [\"nightly\", \"alpha\", \"internal\", \"nightly-\", \"staging\"].some((testVersion) => version.includes(testVersion));\n}\nfunction isCKVersion(version) {\n return isSemanticVersion(version) || isCKTestingVersion(version);\n}\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\nfunction getLicenseVersionFromEditorVersion(version) {\n if (isCKTestingVersion(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\nfunction getCKBaseBundleInstallationInfo() {\n const { CKEDITOR_VERSION, CKEDITOR } = window;\n if (!isCKVersion(CKEDITOR_VERSION)) {\n return null;\n }\n return {\n source: CKEDITOR ? \"cdn\" : \"npm\",\n version: CKEDITOR_VERSION\n };\n}\n\nfunction getSupportedLicenseVersionInstallationInfo() {\n const installationInfo = getCKBaseBundleInstallationInfo();\n if (!installationInfo) {\n return null;\n }\n return getLicenseVersionFromEditorVersion(installationInfo.version);\n}\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\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\nconst CK_CDN_URL = \"https://cdn.ckeditor.com\";\nfunction createCKCdnUrl(bundle, file, version) {\n return `${CK_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\nconst CKBOX_CDN_URL = \"https://cdn.ckbox.io\";\nfunction createCKBoxCdnUrl(bundle, file, version) {\n return `${CKBOX_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\nconst CK_DOCS_URL = \"https://ckeditor.com/docs/ckeditor5\";\nfunction createCKDocsUrl(path, version = \"latest\") {\n return `${CK_DOCS_URL}/${version}/${path}`;\n}\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/migrations/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\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\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\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\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\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\nfunction isCKCdnSupportedByEditorVersion(version) {\n if (isCKTestingVersion(version)) {\n return true;\n }\n const { major } = destructureSemanticVersion(version);\n const licenseVersion = getLicenseVersionFromEditorVersion(version);\n switch (licenseVersion) {\n // For newer license versions, we support all newer versions.\n case 3:\n return true;\n // For the license v1-v2, we support only the 43 version.\n default:\n return major === 43;\n }\n}\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\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 (isCKTestingVersion(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\nfunction compareInstalledCKBaseVersion(version) {\n const installedVersion = getCKBaseBundleInstallationInfo()?.version;\n if (!installedVersion) {\n return null;\n }\n if (!isSemanticVersion(installedVersion) || isCKTestingVersion(installedVersion)) {\n return 1;\n }\n return compareSemanticVersions(installedVersion, version);\n}\n\nfunction getInstalledCKBaseFeatures() {\n const installedVersion = compareInstalledCKBaseVersion(\"48.0.0\");\n const isV48OrNewer = installedVersion !== null && installedVersion >= 0;\n return {\n rootsConfigEntry: isV48OrNewer,\n elementConfigAttachment: isV48OrNewer\n };\n}\n\nfunction assignAttributesPropToMultiRootEditorConfig(attributes, config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n const knownRootsKeys = uniq([\n ...Object.keys(attributes || {}),\n ...Object.keys(config.roots || {}),\n ...Object.keys(config.rootsAttributes || {})\n ]);\n const roots = knownRootsKeys.reduce((acc, rootName) => {\n const legacyRootAttributes = config.rootsAttributes?.[rootName];\n const configRootValue = config.roots?.[rootName];\n acc[rootName] = {\n ...configRootValue,\n modelAttributes: attributes?.[rootName] ?? {\n ...legacyRootAttributes,\n ...configRootValue?.modelAttributes\n }\n };\n return acc;\n }, /* @__PURE__ */ Object.create(null));\n const mappedConfig = {\n ...config,\n roots\n };\n delete mappedConfig.rootsAttributes;\n return mappedConfig;\n }\n return {\n ...config,\n rootsAttributes: attributes\n };\n}\n\nfunction assignInitialDataToMultirootEditorConfig(data, config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n const knownRootsKeys = uniq([\n ...Object.keys(data || {}),\n ...Object.keys(config.roots || {}),\n ...typeof config.initialData === \"string\" ? [] : Object.keys(config.initialData || {})\n ]);\n const roots = knownRootsKeys.reduce((acc, rootName) => {\n const rootConfig = config.roots?.[rootName];\n const rootInitialData = rootConfig?.initialData;\n if (rootInitialData && data?.[rootName]) {\n console.warn(\n `Editor data should be provided either using \\`config.roots['${rootName}'].initialData\\` or the bound component property. The config value takes precedence over the bound component property and will be used when both are specified.`\n );\n }\n acc[rootName] = {\n ...rootConfig,\n initialData: rootInitialData || data?.[rootName] || config.initialData?.[rootName] || \"\"\n };\n return acc;\n }, /* @__PURE__ */ Object.create(null));\n const normalizedConfig = {\n ...config,\n roots\n };\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n if (data && config?.initialData) {\n console.warn(\n \"Editor data should be provided either using `config.initialData` or the bound component property. The config value takes precedence over the bound component property and will be used when both are specified.\"\n );\n }\n return {\n ...config,\n initialData: config?.initialData || data\n };\n}\n\nfunction assignElementToEditorConfig(Editor, element, config) {\n if (!Editor.editorName || Editor.editorName === \"ClassicEditor\") {\n return {\n ...config,\n attachTo: element\n };\n }\n const mappedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...config.roots?.main,\n element\n }\n }\n };\n delete mappedConfig.root;\n return mappedConfig;\n}\n\nfunction getInitialDataFromEditorConfig(config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n return config.roots?.main?.initialData || config.root?.initialData || /* legacy */\n config.initialData;\n }\n return config.initialData;\n}\n\nfunction assignInitialDataToEditorConfig(config, data, ignoreConfigInitialData) {\n const supports = getInstalledCKBaseFeatures();\n const configInitialData = ignoreConfigInitialData ? null : getInitialDataFromEditorConfig(config);\n if (supports.rootsConfigEntry) {\n const normalizedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...config.roots?.main,\n initialData: configInitialData || data || \"\"\n }\n }\n };\n if (data && configInitialData) {\n console.warn(\n \"Editor data should be provided either via the config (`config.root.initialData`) or the component's `data` property, but not both. The configuration value takes precedence.\"\n );\n }\n delete normalizedConfig.root;\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n if (data && configInitialData) {\n console.warn(\n \"Editor data should be provided either via the config (`config.initialData`) or the component's `data` property, but not both. The configuration value takes precedence.\"\n );\n }\n return {\n ...config,\n initialData: configInitialData || data || \"\"\n };\n}\n\nexport { CKBOX_CDN_URL, CK_CDN_URL, INJECTED_SCRIPTS, INJECTED_STYLESHEETS, appendExtraPluginsToEditorConfig, assignAttributesPropToMultiRootEditorConfig, assignElementToEditorConfig, assignInitialDataToEditorConfig, assignInitialDataToMultirootEditorConfig, compareInstalledCKBaseVersion, compareSemanticVersions, createCKBoxCdnUrl, createCKCdnUrl, createDefer, createIntegrationUsageDataPlugin, destructureSemanticVersion, filterBlankObjectValues, filterObjectValues, getCKBaseBundleInstallationInfo, getCKBoxInstallationInfo, getInitialDataFromEditorConfig, getInstalledCKBaseFeatures, injectScript, injectScriptsInParallel, injectStylesheet, isCKEditorFreeLicense, isCKTestingVersion, isCKVersion, isSSR, isSemanticVersion, loadCKEditorCloud, mapObjectValues, omit, once, overwriteArray, overwriteObject, preloadResource, shallowCompareArrays, uid, uniq, waitFor, waitForWindowEntry, without };\n//# sourceMappingURL=index.js.map\n","import * as Vue from \"vue\";\nimport { version, defineComponent, useModel, ref, watch, onMounted, markRaw, onBeforeUnmount, openBlock, createBlock, resolveDynamicComponent, mergeModels, computed, watchEffect, shallowReadonly, toValue } from \"vue\";\nimport { debounce } from \"lodash-es\";\nimport { createIntegrationUsageDataPlugin, isCKEditorFreeLicense, appendExtraPluginsToEditorConfig, getCKBaseBundleInstallationInfo, isSemanticVersion, isCKTestingVersion, destructureSemanticVersion, uid, loadCKEditorCloud } from \"@ckeditor/ckeditor5-integrations-common\";\nimport { loadCKEditorCloud as loadCKEditorCloud2 } from \"@ckeditor/ckeditor5-integrations-common\";\nconst VueIntegrationUsageDataPlugin = createIntegrationUsageDataPlugin(\n \"vue\",\n {\n version: \"7.4.0\",\n frameworkVersion: version\n }\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}\nfunction assignInitialDataToEditorConfig(config, data) {\n var _a;\n if (isRootsMapConfigurationSupported()) {\n const normalizedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...(_a = config.roots) == null ? void 0 : _a.main,\n initialData: data\n }\n }\n };\n delete normalizedConfig.root;\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n return {\n ...config,\n initialData: data\n };\n}\nfunction getInitialDataFromEditorConfig(config) {\n var _a, _b;\n if (isRootsMapConfigurationSupported()) {\n return (_b = (_a = config.roots) == null ? void 0 : _a.main) == null ? void 0 : _b.initialData;\n }\n return config.initialData;\n}\nfunction isRootsMapConfigurationSupported() {\n const bundleInfo = getCKBaseBundleInstallationInfo();\n if (!bundleInfo) {\n return false;\n }\n return !isSemanticVersion(bundleInfo.version) || isCKTestingVersion(bundleInfo.version) || destructureSemanticVersion(bundleInfo.version).major >= 48;\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 let editorConfig = appendAllIntegrationPluginsToConfig(\n Object.assign({}, props.config)\n );\n if (model.value) {\n editorConfig = assignInitialDataToEditorConfig(editorConfig, model.value);\n }\n props.editor.create(element.value, editorConfig).then((editor) => {\n instance.value = markRaw(editor);\n setUpEditorEvents(editor);\n if (model.value !== getInitialDataFromEditorConfig(editorConfig)) {\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(__props.tagName), {\n ref_key: \"element\",\n ref: element\n }, null, 512);\n };\n }\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 console.error(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};\nfunction useCKEditorCloud(config) {\n return useAsync(\n () => loadCKEditorCloud(\n toValue(config)\n )\n );\n}\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","function isPluralType(val) {\n return val.one !== undefined;\n}\n\nconst formatDistanceLocale = {\n lessThanXSeconds: {\n present: {\n one: \"manj kot {{count}} sekunda\",\n two: \"manj kot {{count}} sekundi\",\n few: \"manj kot {{count}} sekunde\",\n other: \"manj kot {{count}} sekund\",\n },\n past: {\n one: \"manj kot {{count}} sekundo\",\n two: \"manj kot {{count}} sekundama\",\n few: \"manj kot {{count}} sekundami\",\n other: \"manj kot {{count}} sekundami\",\n },\n future: {\n one: \"manj kot {{count}} sekundo\",\n two: \"manj kot {{count}} sekundi\",\n few: \"manj kot {{count}} sekunde\",\n other: \"manj kot {{count}} sekund\",\n },\n },\n\n xSeconds: {\n present: {\n one: \"{{count}} sekunda\",\n two: \"{{count}} sekundi\",\n few: \"{{count}} sekunde\",\n other: \"{{count}} sekund\",\n },\n past: {\n one: \"{{count}} sekundo\",\n two: \"{{count}} sekundama\",\n few: \"{{count}} sekundami\",\n other: \"{{count}} sekundami\",\n },\n future: {\n one: \"{{count}} sekundo\",\n two: \"{{count}} sekundi\",\n few: \"{{count}} sekunde\",\n other: \"{{count}} sekund\",\n },\n },\n\n halfAMinute: \"pol minute\",\n\n lessThanXMinutes: {\n present: {\n one: \"manj kot {{count}} minuta\",\n two: \"manj kot {{count}} minuti\",\n few: \"manj kot {{count}} minute\",\n other: \"manj kot {{count}} minut\",\n },\n past: {\n one: \"manj kot {{count}} minuto\",\n two: \"manj kot {{count}} minutama\",\n few: \"manj kot {{count}} minutami\",\n other: \"manj kot {{count}} minutami\",\n },\n future: {\n one: \"manj kot {{count}} minuto\",\n two: \"manj kot {{count}} minuti\",\n few: \"manj kot {{count}} minute\",\n other: \"manj kot {{count}} minut\",\n },\n },\n\n xMinutes: {\n present: {\n one: \"{{count}} minuta\",\n two: \"{{count}} minuti\",\n few: \"{{count}} minute\",\n other: \"{{count}} minut\",\n },\n past: {\n one: \"{{count}} minuto\",\n two: \"{{count}} minutama\",\n few: \"{{count}} minutami\",\n other: \"{{count}} minutami\",\n },\n future: {\n one: \"{{count}} minuto\",\n two: \"{{count}} minuti\",\n few: \"{{count}} minute\",\n other: \"{{count}} minut\",\n },\n },\n\n aboutXHours: {\n present: {\n one: \"približno {{count}} ura\",\n two: \"približno {{count}} uri\",\n few: \"približno {{count}} ure\",\n other: \"približno {{count}} ur\",\n },\n past: {\n one: \"približno {{count}} uro\",\n two: \"približno {{count}} urama\",\n few: \"približno {{count}} urami\",\n other: \"približno {{count}} urami\",\n },\n future: {\n one: \"približno {{count}} uro\",\n two: \"približno {{count}} uri\",\n few: \"približno {{count}} ure\",\n other: \"približno {{count}} ur\",\n },\n },\n\n xHours: {\n present: {\n one: \"{{count}} ura\",\n two: \"{{count}} uri\",\n few: \"{{count}} ure\",\n other: \"{{count}} ur\",\n },\n past: {\n one: \"{{count}} uro\",\n two: \"{{count}} urama\",\n few: \"{{count}} urami\",\n other: \"{{count}} urami\",\n },\n future: {\n one: \"{{count}} uro\",\n two: \"{{count}} uri\",\n few: \"{{count}} ure\",\n other: \"{{count}} ur\",\n },\n },\n\n xDays: {\n present: {\n one: \"{{count}} dan\",\n two: \"{{count}} dni\",\n few: \"{{count}} dni\",\n other: \"{{count}} dni\",\n },\n past: {\n one: \"{{count}} dnem\",\n two: \"{{count}} dnevoma\",\n few: \"{{count}} dnevi\",\n other: \"{{count}} dnevi\",\n },\n future: {\n one: \"{{count}} dan\",\n two: \"{{count}} dni\",\n few: \"{{count}} dni\",\n other: \"{{count}} dni\",\n },\n },\n\n // no tenses for weeks?\n aboutXWeeks: {\n one: \"približno {{count}} teden\",\n two: \"približno {{count}} tedna\",\n few: \"približno {{count}} tedne\",\n other: \"približno {{count}} tednov\",\n },\n\n // no tenses for weeks?\n xWeeks: {\n one: \"{{count}} teden\",\n two: \"{{count}} tedna\",\n few: \"{{count}} tedne\",\n other: \"{{count}} tednov\",\n },\n\n aboutXMonths: {\n present: {\n one: \"približno {{count}} mesec\",\n two: \"približno {{count}} meseca\",\n few: \"približno {{count}} mesece\",\n other: \"približno {{count}} mesecev\",\n },\n past: {\n one: \"približno {{count}} mesecem\",\n two: \"približno {{count}} mesecema\",\n few: \"približno {{count}} meseci\",\n other: \"približno {{count}} meseci\",\n },\n future: {\n one: \"približno {{count}} mesec\",\n two: \"približno {{count}} meseca\",\n few: \"približno {{count}} mesece\",\n other: \"približno {{count}} mesecev\",\n },\n },\n\n xMonths: {\n present: {\n one: \"{{count}} mesec\",\n two: \"{{count}} meseca\",\n few: \"{{count}} meseci\",\n other: \"{{count}} mesecev\",\n },\n past: {\n one: \"{{count}} mesecem\",\n two: \"{{count}} mesecema\",\n few: \"{{count}} meseci\",\n other: \"{{count}} meseci\",\n },\n future: {\n one: \"{{count}} mesec\",\n two: \"{{count}} meseca\",\n few: \"{{count}} mesece\",\n other: \"{{count}} mesecev\",\n },\n },\n\n aboutXYears: {\n present: {\n one: \"približno {{count}} leto\",\n two: \"približno {{count}} leti\",\n few: \"približno {{count}} leta\",\n other: \"približno {{count}} let\",\n },\n past: {\n one: \"približno {{count}} letom\",\n two: \"približno {{count}} letoma\",\n few: \"približno {{count}} leti\",\n other: \"približno {{count}} leti\",\n },\n future: {\n one: \"približno {{count}} leto\",\n two: \"približno {{count}} leti\",\n few: \"približno {{count}} leta\",\n other: \"približno {{count}} let\",\n },\n },\n\n xYears: {\n present: {\n one: \"{{count}} leto\",\n two: \"{{count}} leti\",\n few: \"{{count}} leta\",\n other: \"{{count}} let\",\n },\n past: {\n one: \"{{count}} letom\",\n two: \"{{count}} letoma\",\n few: \"{{count}} leti\",\n other: \"{{count}} leti\",\n },\n future: {\n one: \"{{count}} leto\",\n two: \"{{count}} leti\",\n few: \"{{count}} leta\",\n other: \"{{count}} let\",\n },\n },\n\n overXYears: {\n present: {\n one: \"več kot {{count}} leto\",\n two: \"več kot {{count}} leti\",\n few: \"več kot {{count}} leta\",\n other: \"več kot {{count}} let\",\n },\n past: {\n one: \"več kot {{count}} letom\",\n two: \"več kot {{count}} letoma\",\n few: \"več kot {{count}} leti\",\n other: \"več kot {{count}} leti\",\n },\n future: {\n one: \"več kot {{count}} leto\",\n two: \"več kot {{count}} leti\",\n few: \"več kot {{count}} leta\",\n other: \"več kot {{count}} let\",\n },\n },\n\n almostXYears: {\n present: {\n one: \"skoraj {{count}} leto\",\n two: \"skoraj {{count}} leti\",\n few: \"skoraj {{count}} leta\",\n other: \"skoraj {{count}} let\",\n },\n past: {\n one: \"skoraj {{count}} letom\",\n two: \"skoraj {{count}} letoma\",\n few: \"skoraj {{count}} leti\",\n other: \"skoraj {{count}} leti\",\n },\n future: {\n one: \"skoraj {{count}} leto\",\n two: \"skoraj {{count}} leti\",\n few: \"skoraj {{count}} leta\",\n other: \"skoraj {{count}} let\",\n },\n },\n};\n\nfunction getFormFromCount(count) {\n switch (count % 100) {\n case 1:\n return \"one\";\n case 2:\n return \"two\";\n case 3:\n case 4:\n return \"few\";\n default:\n return \"other\";\n }\n}\n\nexport const formatDistance = (token, count, options) => {\n let result = \"\";\n let tense = \"present\";\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n tense = \"future\";\n result = \"čez \";\n } else {\n tense = \"past\";\n result = \"pred \";\n }\n }\n\n const tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === \"string\") {\n result += tokenValue;\n } else {\n const form = getFormFromCount(count);\n if (isPluralType(tokenValue)) {\n result += tokenValue[form].replace(\"{{count}}\", String(count));\n } else {\n result += tokenValue[tense][form].replace(\"{{count}}\", String(count));\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, dd. MMMM y\",\n long: \"dd. MMMM y\",\n medium: \"d. MMM y\",\n short: \"d. MM. yy\",\n};\n\nconst timeFormats = {\n full: \"HH:mm:ss zzzz\",\n long: \"HH:mm:ss z\",\n medium: \"HH:mm:ss\",\n short: \"HH:mm\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} {{time}}\",\n long: \"{{date}} {{time}}\",\n medium: \"{{date}} {{time}}\",\n short: \"{{date}} {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: (date) => {\n const day = date.getDay();\n\n switch (day) {\n case 0:\n return \"'prejšnjo nedeljo ob' p\";\n case 3:\n return \"'prejšnjo sredo ob' p\";\n case 6:\n return \"'prejšnjo soboto ob' p\";\n default:\n return \"'prejšnji' EEEE 'ob' p\";\n }\n },\n yesterday: \"'včeraj ob' p\",\n today: \"'danes ob' p\",\n tomorrow: \"'jutri ob' p\",\n nextWeek: (date) => {\n const day = date.getDay();\n\n switch (day) {\n case 0:\n return \"'naslednjo nedeljo ob' p\";\n case 3:\n return \"'naslednjo sredo ob' p\";\n case 6:\n return \"'naslednjo soboto ob' p\";\n default:\n return \"'naslednji' EEEE 'ob' p\";\n }\n },\n other: \"P\",\n};\n\nexport const formatRelative = (token, date, _baseDate, _options) => {\n const format = formatRelativeLocale[token];\n\n if (typeof format === \"function\") {\n return format(date);\n }\n\n return format;\n};\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"pr. n. št.\", \"po n. št.\"],\n abbreviated: [\"pr. n. št.\", \"po n. št.\"],\n wide: [\"pred našim štetjem\", \"po našem štetju\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"1. čet.\", \"2. čet.\", \"3. čet.\", \"4. čet.\"],\n wide: [\"1. četrtletje\", \"2. četrtletje\", \"3. četrtletje\", \"4. četrtletje\"],\n};\n\nconst monthValues = {\n narrow: [\"j\", \"f\", \"m\", \"a\", \"m\", \"j\", \"j\", \"a\", \"s\", \"o\", \"n\", \"d\"],\n abbreviated: [\n \"jan.\",\n \"feb.\",\n \"mar.\",\n \"apr.\",\n \"maj\",\n \"jun.\",\n \"jul.\",\n \"avg.\",\n \"sep.\",\n \"okt.\",\n \"nov.\",\n \"dec.\",\n ],\n\n wide: [\n \"januar\",\n \"februar\",\n \"marec\",\n \"april\",\n \"maj\",\n \"junij\",\n \"julij\",\n \"avgust\",\n \"september\",\n \"oktober\",\n \"november\",\n \"december\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"n\", \"p\", \"t\", \"s\", \"č\", \"p\", \"s\"],\n short: [\"ned.\", \"pon.\", \"tor.\", \"sre.\", \"čet.\", \"pet.\", \"sob.\"],\n abbreviated: [\"ned.\", \"pon.\", \"tor.\", \"sre.\", \"čet.\", \"pet.\", \"sob.\"],\n\n wide: [\n \"nedelja\",\n \"ponedeljek\",\n \"torek\",\n \"sreda\",\n \"četrtek\",\n \"petek\",\n \"sobota\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"d\",\n pm: \"p\",\n midnight: \"24.00\",\n noon: \"12.00\",\n morning: \"j\",\n afternoon: \"p\",\n evening: \"v\",\n night: \"n\",\n },\n abbreviated: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"poln.\",\n noon: \"pold.\",\n morning: \"jut.\",\n afternoon: \"pop.\",\n evening: \"več.\",\n night: \"noč\",\n },\n wide: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"polnoč\",\n noon: \"poldne\",\n morning: \"jutro\",\n afternoon: \"popoldne\",\n evening: \"večer\",\n night: \"noč\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"d\",\n pm: \"p\",\n midnight: \"24.00\",\n noon: \"12.00\",\n morning: \"zj\",\n afternoon: \"p\",\n evening: \"zv\",\n night: \"po\",\n },\n abbreviated: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"opoln.\",\n noon: \"opold.\",\n morning: \"zjut.\",\n afternoon: \"pop.\",\n evening: \"zveč.\",\n night: \"ponoči\",\n },\n wide: {\n am: \"dop.\",\n pm: \"pop.\",\n midnight: \"opolnoči\",\n noon: \"opoldne\",\n morning: \"zjutraj\",\n afternoon: \"popoldan\",\n evening: \"zvečer\",\n night: \"ponoči\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n return number + \".\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)\\./i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n abbreviated: /^(pr\\. n\\. št\\.|po n\\. št\\.)/i,\n wide: /^(pred Kristusom|pred na[sš]im [sš]tetjem|po Kristusu|po na[sš]em [sš]tetju|na[sš]ega [sš]tetja)/i,\n};\nconst parseEraPatterns = {\n any: [/^pr/i, /^(po|na[sš]em)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^[1234]\\.\\s?[čc]et\\.?/i,\n wide: /^[1234]\\. [čc]etrtletje/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated:\n /^(jan\\.|feb\\.|mar\\.|apr\\.|maj|jun\\.|jul\\.|avg\\.|sep\\.|okt\\.|nov\\.|dec\\.)/i,\n wide: /^(januar|februar|marec|april|maj|junij|julij|avgust|september|oktober|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n abbreviated: [\n /^ja/i,\n /^fe/i,\n /^mar/i,\n /^ap/i,\n /^maj/i,\n /^jun/i,\n /^jul/i,\n /^av/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n wide: [\n /^ja/i,\n /^fe/i,\n /^mar/i,\n /^ap/i,\n /^maj/i,\n /^jun/i,\n /^jul/i,\n /^av/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[nptsčc]/i,\n short: /^(ned\\.|pon\\.|tor\\.|sre\\.|[cč]et\\.|pet\\.|sob\\.)/i,\n abbreviated: /^(ned\\.|pon\\.|tor\\.|sre\\.|[cč]et\\.|pet\\.|sob\\.)/i,\n wide: /^(nedelja|ponedeljek|torek|sreda|[cč]etrtek|petek|sobota)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^n/i, /^p/i, /^t/i, /^s/i, /^[cč]/i, /^p/i, /^s/i],\n any: [/^n/i, /^po/i, /^t/i, /^sr/i, /^[cč]/i, /^pe/i, /^so/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(d|po?|z?v|n|z?j|24\\.00|12\\.00)/i,\n any: /^(dop\\.|pop\\.|o?poln(\\.|o[cč]i?)|o?pold(\\.|ne)|z?ve[cč](\\.|er)|(po)?no[cč]i?|popold(ne|an)|jut(\\.|ro)|zjut(\\.|raj))/i,\n};\nconst parseDayPeriodPatterns = {\n narrow: {\n am: /^d/i,\n pm: /^p/i,\n midnight: /^24/i,\n noon: /^12/i,\n morning: /^(z?j)/i,\n afternoon: /^p/i,\n evening: /^(z?v)/i,\n night: /^(n|po)/i,\n },\n any: {\n am: /^dop\\./i,\n pm: /^pop\\./i,\n midnight: /^o?poln/i,\n noon: /^o?pold/i,\n morning: /j/i,\n afternoon: /^pop\\./i,\n evening: /^z?ve/i,\n night: /(po)?no/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"wide\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./sl/_lib/formatDistance.js\";\nimport { formatLong } from \"./sl/_lib/formatLong.js\";\nimport { formatRelative } from \"./sl/_lib/formatRelative.js\";\nimport { localize } from \"./sl/_lib/localize.js\";\nimport { match } from \"./sl/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary Slovenian locale.\n * @language Slovenian\n * @iso-639-2 slv\n * @author Adam Stradovnik [@Neoglyph](https://github.com/Neoglyph)\n * @author Mato Žgajner [@mzgajner](https://github.com/mzgajner)\n */\nexport const sl = {\n code: \"sl\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default sl;\n","import { Locale } from 'date-fns';\nimport { sl } from 'date-fns/locale/sl'; // eslint-disable-line import/extensions\nimport { isRef, ref, Ref } from 'vue';\n\nexport const DateTimeLocaleConfig = {\n dateTimeLocale: ref(sl),\n setDateTimeLocale(locale: Locale | Ref<Locale>) {\n if (isRef(locale)) {\n this.dateTimeLocale = locale;\n } else {\n this.dateTimeLocale.value = locale;\n }\n },\n};\n","<template>\n <messages-widget :message=\"widgetMessage\" :classes=\"widgetClasses\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { MessagesWidget } from '@dynamicforms/vue-forms';\nimport { computed } from 'vue';\n\nimport type { DfInputHintProps } from '../dynamicforms-component-props';\n\nconst props = withDefaults(defineProps<DfInputHintProps>(), {\n errors: '',\n message: '',\n errorClasses: 'text-error',\n messageClasses: '',\n});\n\nconst isError = computed(() => {\n if (props.errors) {\n if (typeof props.errors === 'string') {\n return props.errors.trim().length > 0;\n }\n return props.errors.length > 0;\n }\n return false;\n});\n\nconst widgetMessage = computed(() => {\n return isError.value ? props.errors : props.message;\n});\n\nconst widgetClasses = computed(() => {\n return isError.value ? props.errorClasses : props.messageClasses;\n});\n</script>\n\n<style scoped></style>\n","<template>\n <div class=\"df-label\" :class=\"{ 'allow-wrap': allowWrap }\">\n <template v-if=\"label.icon\">\n <cached-icon v-if=\"label.iconComponent === 'v-icon'\" :name=\"label.icon\" size=\"1.25em\" />\n <v-img v-else-if=\"label.iconComponent === 'v-img'\" class=\"icon\" :src=\"label.icon\" />\n <component :is=\"label.iconComponent\" v-else :src=\"label.icon\" />\n </template>\n <vue-markdown\n v-if=\"lbl instanceof MdString\"\n class=\"markdown\"\n :source=\"lbl.toString()\"\n :options=\"lbl.options\"\n :plugins=\"lbl.plugins\"\n />\n <template v-else>{{ lbl }}</template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { MdString } from '@dynamicforms/vue-forms';\nimport { computed } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\nimport VueMarkdown from 'vue-markdown-render';\n\nimport type { DfLabelProps } from '../dynamicforms-component-props';\n\nconst props = defineProps<DfLabelProps>();\n\nconst lbl = computed(() => (props.data ? props.data.label : props.label.text));\n</script>\n\n<style>\n.df-label {\n display: flex;\n align-items: center;\n gap: 2px;\n white-space: nowrap;\n justify-content: flex-start;\n}\n\n.df-label.allow-wrap {\n white-space: initial;\n}\n\n.df-label .icon {\n width: 1.25em;\n}\n\n.df-label .markdown :first-child,\n.df-label .markdown :last-child {\n margin-top: 0 !important;\n padding-top: 0 !important;\n margin-bottom: 0 !important;\n padding-bottom: 0 !important;\n line-height: 1.35em !important; /* inspired by vitepress' aggressive settings */\n}\n</style>\n","import { FieldDensity, type FieldVariant } from '@/helpers/input-base';\n\nexport interface VuetifyInputsSettings {\n defaultVariant?: FieldVariant;\n defaultDensity?: FieldDensity;\n}\n\nexport const vuetifyInputsSettingsKey = Symbol('vuetifyInputsSettingsKey');\n","import Form, { MdString, ValidationErrorRenderContent } from '@dynamicforms/vue-forms';\nimport { isEmpty, isString } from 'lodash-es';\nimport { computed, inject, nextTick, ref, shallowRef, toRaw } from 'vue';\n\nimport { VuetifyInputsSettings, vuetifyInputsSettingsKey } from './settings';\n\nexport class Label {\n constructor(\n public text: string,\n public icon?: string,\n public iconComponent: string = 'v-icon',\n ) {}\n}\n\nexport type FieldVariant = 'outlined' | 'plain' | 'underlined' | 'filled' | 'solo' | 'solo-inverted' | 'solo-filled';\nexport type VuetifyDensity = 'default' | 'comfortable' | 'compact';\nexport type FieldDensity = 'default' | 'comfortable' | 'compact' | 'inline';\n\n/**\n * The presentation an element carries for the components in this library.\n *\n * Every one of these is also a prop, and the prop wins where both state something: a call site is more specific\n * than the element it renders. What the element carries is what a form declared in code says about itself, so a\n * field that names its own label needs no attribute at the tag that draws it.\n *\n * `Extras` is @dynamicforms/vue-forms' augmentation point for exactly this, so these properties are typed on every\n * element in an application that installs this library, the fields written inline in a `Group` declaration\n * included.\n */\ndeclare module '@dynamicforms/vue-forms' {\n interface Extras {\n label?: string | Label | MdString;\n placeholder?: string;\n helpText?: string;\n hint?: string;\n cssClass?: string;\n density?: FieldDensity;\n variant?: FieldVariant;\n }\n}\n\nexport interface BaseProps<T = any> {\n control?: Form.FieldBase<T>;\n modelValue?: T;\n label?: string | Label | MdString;\n errors?: string[];\n placeholder?: string;\n helpText?: string;\n hint?: string;\n enabled?: boolean;\n visibility?: Form.DisplayMode | string;\n cssClass?: string;\n clearable?: boolean;\n passthroughAttrs?: Record<string, any>;\n density?: FieldDensity;\n variant?: FieldVariant;\n}\n\nexport const defaultBaseProps = { enabled: undefined, clearable: true };\n\nexport interface BaseEmits<T = any> {\n (e: 'update:modelValue', value: T): void;\n (e: 'click:clear'): void;\n}\n\nexport function useInputBase<T = any>(props: BaseProps<T>, emit: BaseEmits<T>) {\n const settings = inject<VuetifyInputsSettings>(vuetifyInputsSettingsKey, {});\n const injectedDensity = inject<FieldDensity | null>('field-density', null);\n const injectedVariant = inject<FieldVariant | null>('field-variant', null);\n const internalValue = ref<T | null>(null);\n\n // A write is not a statement about what the control ends up holding. A ValueChangedAction may write a different\n // value back, a disabled field drops the write, and a handler that throws unwinds it. The rendered control has\n // the written value in its DOM by then, so it is the read here that has to correct it - and where the value the\n // control ends up holding is the one it started with, as under a rule that puts back the five characters a\n // six-character write exceeded, the read does not move and Vue schedules no render at all. Holding the written\n // value for one tick makes the read change twice, so the repaint that restores what the control holds happens.\n const pendingWrite = shallowRef<{ value: T } | null>(null);\n\n const value = computed({\n get(): T {\n if (pendingWrite.value) return pendingWrite.value.value;\n if (props.control) return props.control.value as T;\n if (props.modelValue === undefined) return internalValue.value as T;\n return props.modelValue as T;\n },\n set(newValue: T) {\n try {\n if (props.control) props.control.value = newValue;\n } finally {\n // compared as the write was made: an element holds its state behind reactive(), so an array or an object\n // reads back as a proxy of what was written and an identity comparison would answer that every such write\n // was refused. Object.is over the raw objects answers for NaN as well\n if (props.control && !Object.is(toRaw(props.control.value as any), toRaw(newValue as any))) {\n pendingWrite.value = { value: newValue };\n nextTick(() => {\n pendingWrite.value = null;\n });\n }\n }\n if (props.modelValue === undefined) internalValue.value = newValue;\n emit('update:modelValue', props.control ? (props.control.value as T) : 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 controlTouch = computed({\n get() {\n return props.control!.touched;\n },\n set(val: boolean) {\n props.control!.touched = val;\n },\n });\n const touched = props.control ? controlTouch : ref(false);\n const valid = computed(() => (props.control ? props.control.valid : true));\n const errors = computed(() =>\n props.control ? props.control.errors : (props.errors || []).map((error) => new ValidationErrorRenderContent(error)),\n );\n const anyErrors = computed(() => (touched.value && errors.value.length > 0 ? ' ' : undefined));\n const showErrors = computed(() => (touched.value ? errors.value : undefined));\n // a field inside a disabled section is drawn disabled: effectiveEnabled is false where the element or any\n // container above it is disabled, which is the question a rendered input asks\n const enabled = computed(() => (props.control ? props.control.effectiveEnabled : props.enabled !== false));\n // A control resolves its own mode - vue-forms refuses anything that is not a DisplayMode constant and reads a\n // name case-insensitively. The prop is resolved the same way, so `visibility=\"hidden\"` states what it looks\n // like it states and an unrecognised mode is refused here as loudly as it is there.\n const visibility = computed(() => {\n if (props.control) return props.control.visibility;\n if (props.visibility == null) return Form.DisplayMode.FULL;\n return Form.DisplayMode.fromAny(props.visibility);\n });\n const isRendered = computed(() => visibility.value !== Form.DisplayMode.SUPPRESS);\n const visibilityClass = computed(() => ({\n 'd-none': visibility.value === Form.DisplayMode.HIDDEN,\n invisible: visibility.value === Form.DisplayMode.INVISIBLE,\n }));\n // the presentation the bound element carries: what a prop does not state is taken from here before any default\n const extra = computed(() => props.control?.extra ?? {});\n\n const label = computed((): Label => {\n const stated = props.label ?? extra.value.label;\n return isString(stated || '') ? new Label(<string>stated || '') : <Label>stated;\n });\n const placeholder = computed(() => props.placeholder ?? extra.value.placeholder ?? '');\n const helpText = computed(() => props.helpText ?? extra.value.helpText ?? '');\n const hint = computed(() => props.hint ?? extra.value.hint ?? '');\n const cssClass = computed(() => props.cssClass ?? extra.value.cssClass ?? '');\n\n const density = computed(\n (): FieldDensity => props.density ?? extra.value.density ?? injectedDensity ?? settings.defaultDensity ?? 'default',\n );\n const boundDensity = computed((): VuetifyDensity => (density.value === 'inline' ? 'default' : density.value));\n const variant = computed(\n (): FieldVariant =>\n props.variant ?? extra.value.variant ?? injectedVariant ?? settings.defaultVariant ?? 'underlined',\n );\n\n return {\n value,\n valid,\n enabled,\n errors,\n showErrors,\n visibility,\n isRendered,\n visibilityClass,\n label,\n touched,\n density,\n densityClass: computed(() => `df-density-${density.value}`),\n\n vuetifyBindings: computed(() => ({\n name: props.control?.fieldName,\n class: cssClass.value,\n\n density: boundDensity.value,\n variant: variant.value,\n\n label: label.value.text,\n errorMessages: 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 ...(props.passthroughAttrs || {}),\n })),\n };\n}\n","<template>\n <v-input\n v-if=\"isRendered\"\n :name=\"vuetifyBindings.name\"\n :density=\"vuetifyBindings.density\"\n :hint=\"vuetifyBindings.hint\"\n :persistent-hint=\"vuetifyBindings.persistentHint\"\n :hide-details=\"vuetifyBindings.hideDetails\"\n :error-messages=\"vuetifyBindings.errorMessages\"\n :class=\"[cssClass, visibilityClass]\"\n >\n <v-field\n :variant=\"vuetifyBindings.variant\"\n :density=\"vuetifyBindings.density\"\n :label=\"vuetifyBindings.label\"\n :disabled=\"vuetifyBindings.disabled\"\n :clearable=\"isClearable\"\n :persistent-clear=\"true\"\n :dirty=\"!!value || !!vuetifyBindings.placeholder\"\n :active=\"focused\"\n :loading=\"loading\"\n @click:clear=\"emits('click:clear')\"\n @update:focused=\"(isFocused) => setFocused(isFocused)\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #default=\"slotProps\">\n <div class=\"d-flex w-100 df-style-resetting df-sub-field\"><slot v-bind=\"slotProps\" /></div>\n </template>\n <template #loader=\"loaderProps\"><slot name=\"loader\" v-bind=\"loaderProps\" /></template>\n <template v-if=\"$slots['prepend-inner']\" #prepend-inner=\"prependInnerProps\">\n <slot name=\"prepend-inner\" v-bind=\"prependInnerProps\" />\n </template>\n </v-field>\n <template #message=\"{ message }\">\n <df-input-hint :message=\"message\" :errors=\"showErrors\" />\n </template>\n <template v-if=\"$slots.prepend\" #prepend=\"prependProps\"><slot name=\"prepend\" v-bind=\"prependProps\" /></template>\n </v-input>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, unref } from 'vue';\n\nimport DfInputHint from './df-input-hint.vue';\nimport DfLabel from './df-label.vue';\nimport { BaseEmits, BaseProps, useInputBase } from './input-base';\n\nconst props = defineProps<BaseProps & { loading?: boolean }>();\nconst emits = defineEmits<BaseEmits & { (e: 'blur'): void }>();\n\nconst { isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(props, emits);\n\nconst isClearable = computed(() => !!(unref(props.clearable) && unref(value)));\nconst focused = ref<boolean>(false);\n\nfunction setFocused(isFocused: boolean) {\n focused.value = isFocused;\n if (!isFocused) {\n touched.value = true;\n emits('blur');\n }\n}\n</script>\n\n<style>\n.df-style-resetting .v-field__overlay {\n background-color: transparent;\n}\n.df-style-resetting .v-field__outline::before,\n.df-style-resetting .v-field__outline::after {\n content: none !important;\n}\n\n.df-sub-field {\n max-height: var(--v-input-control-height);\n min-height: max(\n var(--v-input-control-height, 56px),\n 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom)\n );\n}\n\n.df-density-inline .df-sub-field {\n min-height: revert;\n}\n\n.ck-editor-custom .df-sub-field {\n max-height: revert;\n}\n</style>\n","export const translatableStrings = {\n Yes: 'Yes',\n No: 'No',\n Close: 'Close',\n Paragraph: 'Paragraph',\n Heading1: 'Heading 1',\n Heading2: 'Heading 2',\n Heading3: 'Heading 3',\n Heading4: 'Heading 4',\n Heading5: 'Heading 5',\n Heading6: 'Heading 6',\n Downloadable: 'Downloadable',\n ArticleCategory: 'Article category',\n Title: 'Title',\n Subtitle: 'Subtitle',\n InfoBox: 'Info box',\n SideQuote: 'Side quote',\n Marker: 'Marker',\n Spoiler: 'Spoiler',\n CodeDark: 'Code (dark)',\n CodeBright: 'Code (bright)',\n};\n\nexport function translateStrings(translationCallback: (s: string) => string) {\n Object.keys(translatableStrings).forEach((key) => {\n const translation = translationCallback(key);\n if (translation != null) {\n translatableStrings[key as keyof typeof translatableStrings] = translation;\n }\n });\n}\n\nexport function setCkEditorLanguage(language: string, translations: any) {\n ckEditorLanguage.language = language;\n ckEditorLanguage.translations = translations;\n}\n\nexport const ckEditorLanguage = {\n language: 'en',\n translations: undefined,\n};\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\n// eslint-disable-next-line @typescript-eslint/no-namespace, no-redeclare\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 { isPlainObject } from 'lodash-es';\nimport { computed } from 'vue';\nimport { useDisplay } from 'vuetify';\n\nexport const responsiveBreakpoints = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type BreakpointNames = (typeof responsiveBreakpoints)[number];\n/**\n * A set of options and the per-breakpoint sets that restate parts of it. `B` is what a breakpoint may state,\n * and defaults to the whole of `T`; a subclass narrows it where a member belongs to the object as a whole rather\n * than to one screen width.\n */\nexport type BreakpointsJSON<T extends Record<string, any>, B extends Record<string, any> = T> = T &\n Partial<Record<BreakpointNames, B>>;\n\nexport abstract class ResponsiveRenderOptions<T extends Record<string, any>> {\n protected readonly _value: BreakpointsJSON<T>;\n\n constructor(data?: BreakpointsJSON<T>) {\n this._value = this.cleanBreakpoint(data as T, true)!;\n if (data) {\n responsiveBreakpoints.forEach((bp) => {\n const options = this.cleanBreakpoint(data[bp]);\n if (options) this._value[bp] = options;\n });\n }\n }\n\n getOptionsForBreakpoint(breakpoint: BreakpointNames): T {\n // a base that states nothing cleans to null, and the breakpoints above it still have options to resolve\n const result = (this.cleanBreakpoint(this._value as T) ?? ({} as T)) as BreakpointsJSON<T>;\n for (const bp of responsiveBreakpoints) {\n // the fields that cascade are the ones each breakpoint states, so a field named at a breakpoint and\n // nowhere else still reaches the result\n const bpData = this._value[bp] ?? {};\n for (const field of Object.keys(bpData)) {\n const value = (<any>bpData)[field];\n // a breakpoint states what it changes; a field it says nothing about keeps cascading\n if (value == null) continue;\n if (isPlainObject(value)) {\n // shallow, so a breakpoint restates single keys of an options object rather than the whole of it. A\n // nested object is a value like any other and is replaced whole. Only plain objects merge: a Date, a\n // Map or a class instance would come out of a spread as its own properties without its prototype.\n (<any>result)[field] = { ...(<any>result)[field], ...value };\n } else {\n (<any>result)[field] = value;\n }\n }\n if (bp === breakpoint) break;\n }\n return result;\n }\n\n /**\n * Normalizes one breakpoint's options. The merge reads `null` and `undefined` as \"this breakpoint says\n * nothing about that field\", so a field the breakpoint does not state has to come back as `undefined` rather\n * than as an empty value - an empty array or string returned here reads as a breakpoint deliberately emptying\n * what it inherited.\n */\n protected abstract cleanBreakpoint(bp?: T, defaultIfEmpty?: boolean): T | null;\n}\n\nexport function 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\nexport function useBreakpoint() {\n const display = useDisplay();\n\n return computed<BreakpointNames>(() => getBreakpointName(display));\n}\n","import { ActionValue } from '@dynamicforms/vue-forms';\nimport { isBoolean, isEmpty, isObjectLike, isPlainObject, isString } from 'lodash-es';\n\nimport { ActionDisplayStyle } from './action-display-style';\nimport { BreakpointNames, BreakpointsJSON, ResponsiveRenderOptions } from './responsive-render-options';\n\nexport interface ActionRenderOptions extends ActionValue {\n /** The text of the action, rendered when {@link showLabel} is set and the text is not empty. `ActionValue`\n * types this `unknown`, leaving what a label is to the rendering library; here it is a string. */\n label?: string;\n /** The icon of the action, a name `vue-cached-icon` resolves, rendered when {@link showIcon} is set and the\n * name is not empty. Typed here for the same reason `label` is. */\n icon?: string;\n /** Unique identifier for the action. Purely informational to `<df-actions>` itself - it is not used for\n * rendering - but by convention should match the key under which the action is registered in a\n * `FormActions` (`Record<string, Action>`) map passed to `@dynamicforms/vuetify-modal-form-kit`'s\n * `modal.message()`/`modal.yesNo()`/etc. That map key (or the action's `fieldName`, when it's part of a\n * `Form.Group`) - not this `name` field - is what the modal's promise actually resolves with; keeping them\n * in sync is what lets callers do e.g. `if (await modal.yesNo(...) === 'yes')`. */\n name?: string;\n /** How the action is rendered: {@link ActionDisplayStyle.BUTTON} for a tonal `<v-btn>`, or\n * {@link ActionDisplayStyle.TEXT} for a text-variant `<v-btn>`. */\n renderAs?: ActionDisplayStyle;\n /** Whether the label is shown. If `label` is empty, the label is never shown regardless of this flag. */\n showLabel?: boolean;\n /** Whether the icon is shown. If `icon` is empty, the icon is never shown regardless of this flag. */\n showIcon?: boolean;\n /** Marks this as the action to trigger on Enter when rendered inside `<df-modal>` (see that component's\n * `onKeydown` in `@dynamicforms/vuetify-modal-form-kit`) - e.g. a \"Save\" or \"Yes\" action. In `<df-actions>` it\n * also colors the button `primary`, unless overridden via `passthroughAttrs.color`. At most one action in a\n * given set should set this. */\n defaultConfirm?: boolean;\n /** Marks this as the action to trigger on Escape when rendered inside `<df-modal>` (see that component's\n * `onKeydown` in `@dynamicforms/vuetify-modal-form-kit`) - e.g. a \"Cancel\" or \"No\" action. In `<df-actions>` it\n * also colors the button `secondary`, unless overridden via `passthroughAttrs.color`. At most one action in a\n * given set should set this (an action such as `Action.closeAction()` may set both `defaultConfirm` and\n * `defaultReject` so it fires on either key). */\n defaultReject?: boolean;\n /** Additional props/attrs forwarded verbatim to the rendered `<v-btn>` (e.g. `color`, `loading`, `density`,\n * `rounded`, `block`, `prependIcon`, ...), taking precedence over `<df-actions>`'s own computed bindings\n * (`variant`, `color`, `disabled`). Mirrors the `passthroughAttrs` convention used by `df-input`/`df-file`/etc\n * (see `helpers/input-base.ts`); it has to live on the action's value here because `<df-actions>` renders a\n * whole array of buttons, not just one. */\n passthroughAttrs?: Record<string, any>;\n}\n/**\n * What one breakpoint of an action's value may state: the members that describe how the action is drawn.\n * `name`, `defaultConfirm` and `defaultReject` are not among them - which key a modal resolves with, and which\n * key fires the action, are properties of the action itself and do not depend on the width of the screen.\n */\nexport type ActionBreakpointRenderOptions = Omit<ActionRenderOptions, 'name' | 'defaultConfirm' | 'defaultReject'>;\nexport type ActionBreakpointOptions = BreakpointsJSON<ActionRenderOptions, ActionBreakpointRenderOptions>;\n\nexport class ResponsiveActionRenderOptions extends ResponsiveRenderOptions<ActionRenderOptions> {\n protected cleanBreakpoint(bp?: ActionRenderOptions, defaultIfEmpty: boolean = false): ActionRenderOptions | null {\n if ((!bp || !isObjectLike(bp)) && !defaultIfEmpty) return null;\n\n const result: ActionRenderOptions = {};\n if (defaultIfEmpty) {\n result.renderAs = ActionDisplayStyle.BUTTON;\n result.showLabel = true;\n result.showIcon = true;\n }\n\n if (bp) {\n if (bp.renderAs != null) result.renderAs = ActionDisplayStyle.fromAny(bp.renderAs);\n if (isString(bp.label)) result.label = bp.label;\n if (isString(bp.icon)) result.icon = bp.icon;\n if (isBoolean(bp.showLabel)) result.showLabel = bp.showLabel;\n if (isBoolean(bp.showIcon)) result.showIcon = bp.showIcon;\n if (isString(bp.name)) result.name = bp.name;\n if (isBoolean(bp.defaultConfirm)) result.defaultConfirm = bp.defaultConfirm;\n if (isBoolean(bp.defaultReject)) result.defaultReject = bp.defaultReject;\n // copied rather than kept by identity, so the cascade's shallow merge of a later breakpoint's attrs does\n // not write into the object the action holds\n if (isPlainObject(bp.passthroughAttrs)) result.passthroughAttrs = { ...bp.passthroughAttrs };\n }\n\n return Object.keys(result).length ? result : null;\n }\n}\n\n/**\n * What one action renders as at `breakpoint`, read off the value of any `Action`. The members\n * `ActionRenderOptions` adds over `ActionValue` are taken where the value carries them and defaulted where it does\n * not, so an action holding nothing but a label - which is all a `@dynamicforms/vue-forms` `Action` declares -\n * renders as a button showing that label.\n *\n * `label` and `icon` come back only where the matching flag says they are shown, and the flags come back false\n * where there is no text or name to show, so a caller renders each member on its own flag and never on emptiness.\n */\nexport function getRenderOptionsForBreakpoint(value: ActionValue, breakpoint: BreakpointNames): ActionRenderOptions {\n const options = new ResponsiveActionRenderOptions(value as ActionBreakpointOptions);\n const partial = options.getOptionsForBreakpoint(breakpoint);\n return {\n name: partial.name,\n label: partial.showLabel ? partial.label : undefined,\n icon: partial.showIcon ? partial.icon : undefined,\n renderAs: partial.renderAs,\n showLabel: isString(partial.label) && !isEmpty(partial.label) ? partial.showLabel : false,\n showIcon: isString(partial.icon) && !isEmpty(partial.icon) ? partial.showIcon : false,\n defaultConfirm: partial.defaultConfirm,\n defaultReject: partial.defaultReject,\n passthroughAttrs: partial.passthroughAttrs,\n };\n}\n","import { Action as FormAction, IFieldConstructorParams } from '@dynamicforms/vue-forms';\nimport { isEmpty, isString } from 'lodash-es';\nimport { computed, Ref } from 'vue';\n\nimport { translatableStrings } from '../translations';\n\nimport { ActionDisplayStyle } from './action-display-style';\nimport { ActionBreakpointOptions, getRenderOptionsForBreakpoint } from './action-render-options';\nimport { BreakpointNames } from './responsive-render-options';\n\nclass Action extends FormAction<ActionBreakpointOptions> {\n /** @see getRenderOptionsForBreakpoint, which answers the same for the value of any `Action` */\n getBreakpointValue(breakpoint: Ref<BreakpointNames>) {\n return computed(() => getRenderOptionsForBreakpoint(this.value, breakpoint.value));\n }\n\n /** @see ActionRenderOptions.name */\n get name() {\n return this.value.name;\n }\n\n /**\n * The label as this action renders it: the text where {@link ActionRenderOptions.showLabel} states it is shown,\n * and `undefined` where it is not. `label` is the base class's, and answers the text whatever the flag says.\n */\n get renderedLabel() {\n return this.value.showLabel ? this.value.label : undefined;\n }\n\n /** @see ActionRenderOptions.showLabel */\n get showLabel() {\n return isString(this.value.label) && !isEmpty(this.value.label) ? this.value.showLabel : false;\n }\n\n /**\n * The icon as this action renders it: the name where {@link ActionRenderOptions.showIcon} states it is shown,\n * and `undefined` where it is not. `icon` is the base class's, and answers the name whatever the flag says.\n */\n get renderedIcon() {\n return this.value.showIcon ? this.value.icon : undefined;\n }\n\n /** @see ActionRenderOptions.showIcon */\n get showIcon() {\n return isString(this.value.icon) && !isEmpty(this.value.icon) ? this.value.showIcon : false;\n }\n\n /** @see ActionRenderOptions.renderAs */\n get renderAs() {\n return this.value.renderAs;\n }\n\n /** @see ActionRenderOptions.defaultConfirm */\n get defaultConfirm() {\n return this.value.defaultConfirm;\n }\n\n /** @see ActionRenderOptions.defaultReject */\n get defaultReject() {\n return this.value.defaultReject;\n }\n\n /** @see ActionRenderOptions.passthroughAttrs */\n get passthroughAttrs() {\n return this.value.passthroughAttrs;\n }\n\n static closeAction(data?: Partial<IFieldConstructorParams<ActionBreakpointOptions>>) {\n const init: Partial<IFieldConstructorParams<ActionBreakpointOptions>> = {\n ...(data ?? {}), // any properties in data should overwrite properties in the constant\n value: {\n name: 'close',\n label: translatableStrings.Close,\n icon: 'ion-close-outline',\n renderAs: ActionDisplayStyle.BUTTON,\n showLabel: true,\n showIcon: true,\n },\n };\n init.value = { ...init.value, ...(data?.value ?? {}) }; // data may only contain partial info of the value\n return new Action(init);\n }\n\n static yesAction(data?: Partial<IFieldConstructorParams<ActionBreakpointOptions>>) {\n const init: Partial<IFieldConstructorParams<ActionBreakpointOptions>> = {\n ...(data ?? {}), // any properties in data should overwrite properties in the constant\n value: {\n name: 'yes',\n label: translatableStrings.Yes,\n icon: 'ion-thumbs-up-outline',\n renderAs: ActionDisplayStyle.BUTTON,\n showLabel: true,\n showIcon: true,\n },\n };\n init.value = { ...init.value, ...(data?.value ?? {}) }; // data may only contain partial info of the value\n return new Action(init);\n }\n\n static noAction(data?: Partial<IFieldConstructorParams<ActionBreakpointOptions>>) {\n const init: Partial<IFieldConstructorParams<ActionBreakpointOptions>> = {\n ...(data ?? {}), // any properties in data should overwrite properties in the constant\n value: {\n name: 'no',\n label: translatableStrings.No,\n icon: 'ion-thumbs-down-outline',\n renderAs: ActionDisplayStyle.BUTTON,\n showLabel: true,\n showIcon: true,\n },\n };\n init.value = { ...init.value, ...(data?.value ?? {}) }; // data may only contain partial info of the value\n return new Action(init);\n }\n}\n\nexport { Action };\n","<template>\n <div\n v-if=\"actionsRef.length > 0\"\n class=\"text-end df-actions\"\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 actionsWithBreakpoint\"\n :key=\"idx\"\n :variant=\"action.renderAs === ActionDisplayStyle.BUTTON ? 'tonal' : 'text'\"\n :color=\"defaultActionColor(action)\"\n :disabled=\"!action.action.effectiveEnabled || action.action.busy\"\n :loading=\"action.action.busy\"\n :elevation=\"0\"\n :size=\"buttonSize\"\n :class=\"{\n 'd-none': action.action.visibility === DisplayMode.HIDDEN,\n invisible: action.action.visibility === DisplayMode.INVISIBLE,\n }\"\n v-bind=\"action.passthroughAttrs\"\n @click.stop=\"(event: MouseEvent) => action.action.execute(event)\"\n >\n <cached-icon v-if=\"action.icon\" :name=\"action.icon\" />\n <span v-if=\"action.icon && action.label\" style=\"width: 0.5rem\" />\n <span v-if=\"action.label\">{{ action.label }}</span>\n </v-btn>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { DisplayMode } from '@dynamicforms/vue-forms';\nimport { computed, unref } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\n\nimport { DfActionsProps } from './dynamicforms-component-props';\nimport { ActionDisplayStyle, ActionRenderOptions, getRenderOptionsForBreakpoint, useBreakpoint } from './helpers';\n\nconst props = withDefaults(defineProps<DfActionsProps>(), {\n buttonSize: 'default',\n showAsGroup: 'no',\n});\n\nconst breakpoint = useBreakpoint();\nconst actionsRef = computed(() => unref(props.actions).filter((action) => action.visibility !== DisplayMode.SUPPRESS));\n// What each button draws is read off the action's value rather than through the accessors this library's `Action`\n// adds over it, so an action declared as a `@dynamicforms/vue-forms` one - which declares none of them - is drawn\n// as well. The spread is that value resolved at the current breakpoint.\nconst actionsWithBreakpoint = computed(() =>\n actionsRef.value.map((action) => ({\n action,\n ...getRenderOptionsForBreakpoint(action.value, breakpoint.value),\n })),\n);\n\nfunction defaultActionColor(options: ActionRenderOptions): string | undefined {\n if (options.defaultConfirm) return 'primary';\n if (options.defaultReject) return 'secondary';\n return undefined;\n}\n</script>\n\n<style>\n.df-actions.button-group {\n border-radius: 0.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.df-actions.button-group .v-btn {\n border: none;\n border-radius: 0;\n margin: 0 !important;\n padding: 0 0.25em;\n}\n.df-actions.button-group .v-btn:first-child {\n border-start-start-radius: 0.5em;\n border-end-start-radius: 0.5em;\n}\n.df-actions.button-group .v-btn:last-child {\n border-start-end-radius: 0.5em;\n border-end-end-radius: 0.5em;\n}\n.df-actions.button-group.with-border {\n border: 0.1em solid currentColor;\n}\n.df-actions.button-group.with-border .v-btn:not(:first-child) {\n border-inline-start: 0.1em solid currentColor;\n}\n.df-actions .v-btn:not(:first-child) {\n margin-left: 0.5em;\n}\n</style>\n","<template>\n <v-checkbox\n v-if=\"isRendered\"\n v-model=\"boolValue\"\n density=\"compact\"\n :class=\"[densityClass, visibilityClass]\"\n :indeterminate=\"indeterminate\"\n :false-value=\"false\"\n :true-value=\"true\"\n v-bind=\"vuetifyBindings as any\"\n @change=\"change\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :allow-wrap=\"true\" :data=\"labelData as any\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-checkbox>\n</template>\n\n<script setup lang=\"ts\">\nimport { clone } from 'lodash-es';\nimport { computed } from 'vue';\n\nimport { DfCheckboxProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfCheckboxProps>(), { ...defaultBaseProps, allowNull: false });\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\n\nconst indeterminate = computed(() => props.allowNull && value.value == null);\n\nconst boolValue = computed({\n get(): any {\n return value.value;\n },\n set() {},\n});\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-text-field\n v-if=\"isRendered\"\n v-model=\"value\"\n :class=\"[densityClass, visibilityClass]\"\n :clearable=\"allowNull\"\n type=\"text\"\n :rules=\"rules\"\n v-bind=\"vuetifyBindings\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></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 <template #default>\n <v-menu v-model=\"dropdownShown\" :close-on-content-click=\"false\" activator=\"parent\">\n <v-color-picker v-model=\"value\" mode=\"hexa\" />\n </v-menu>\n </template>\n </v-text-field>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\n\nimport { DfColorProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfColorProps>(), { ...defaultBaseProps, allowNull: false });\n\ninterface Emits extends BaseEmits {}\n\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\nconst dropdownShown = ref(false);\n\nconst rules = computed<((val: string) => boolean | string)[]>(() => [\n (val: string) => {\n if (props.control) return true; // if there's a form field, we expect there to be a validator\n if (!val && props.allowNull) return true; // allowed empty values are also not a problem\n\n const regex = /^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/;\n return regex.test(val) ? true : 'Not a valid hex string.';\n },\n]);\n</script>\n","<template>\n <input-base\n v-bind=\"props\"\n :class=\"densityClass\"\n :clearable=\"clearable\"\n @click:clear=\"value = null\"\n @blur=\"touched = true\"\n >\n <template #default=\"slotProps\">\n <div\n :class=\"[\n 'd-flex',\n 'w-100',\n ['plain', 'underlined'].includes(vuetifyBindings.variant) ? undefined : 'ml-4',\n 'df-input-wrapper',\n density,\n ]\"\n >\n <v-text-field\n v-if=\"['date', 'datetime'].includes(inputType)\"\n v-model=\"dateFormatted\"\n style=\"flex-grow: 4\"\n density=\"compact\"\n variant=\"plain\"\n :clearable=\"false\"\n :hide-details=\"true\"\n :readonly=\"vuetifyBindings.readonly\"\n :disabled=\"vuetifyBindings.disabled\"\n :name=\"`${vuetifyBindings.name}-date`\"\n :placeholder=\"vuetifyBindings.placeholder\"\n v-bind=\"passthroughAttrs\"\n @click=\"dropdown = 'date'\"\n @keydown.space=\"dropdown = 'date'\"\n @focus=\"slotProps.focus()\"\n @blur=\"slotProps.blur()\"\n >\n <template #default>\n <v-menu v-model=\"dateMenuShown\" :close-on-content-click=\"false\" activator=\"parent\">\n <v-confirm-edit v-model=\"valueAsDate\" @cancel=\"dropdown = ''\" @save=\"dropdown = ''\">\n <template #default=\"{ model: proxyModel, actions }\">\n <v-date-picker\n v-model=\"proxyModel.value\"\n :hide-header=\"true\"\n :first-day-of-week=\"firstDayOfWeek\"\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-menu>\n </template>\n </v-text-field>\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 variant=\"plain\"\n :clearable=\"false\"\n :hide-details=\"true\"\n :readonly=\"vuetifyBindings.readonly\"\n :disabled=\"vuetifyBindings.disabled\"\n :name=\"`${vuetifyBindings.name}-time`\"\n :placeholder=\"inputType === 'time' ? vuetifyBindings.placeholder : undefined\"\n v-bind=\"passthroughAttrs\"\n @click=\"dropdown = 'time'\"\n @keydown.space=\"dropdown = 'time'\"\n @focus=\"slotProps.focus()\"\n @blur=\"slotProps.blur()\"\n >\n <template #default>\n <v-menu v-model=\"timeMenuShown\" :close-on-content-click=\"false\" activator=\"parent\">\n <v-confirm-edit v-model=\"valueAsTimeString\" @cancel=\"dropdown = ''\" @save=\"dropdown = ''\">\n <template #default=\"{ model: proxyModel, actions }\">\n <v-time-picker v-model=\"proxyModel.value\" :hide-header=\"true\" format=\"24hr\">\n <template #actions><component :is=\"actions\" /></template>\n </v-time-picker>\n </template>\n </v-confirm-edit>\n </v-menu>\n </template>\n </v-text-field>\n </div>\n </template>\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';\n\nimport { DfDateTimeProps } from './dynamicforms-component-props';\nimport { BaseEmits, DateTimeLocaleConfig, defaultBaseProps, InputBase, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfDateTimeProps>(), {\n ...defaultBaseProps,\n inputType: 'datetime',\n displayFormatDate: 'P',\n displayFormatTime: 'p',\n});\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst currentLocale = computed(() => props.locale ?? unref(DateTimeLocaleConfig.dateTimeLocale));\nconst firstDayOfWeek = computed(() => currentLocale.value.options?.weekStartsOn ?? 1);\nconst { density, densityClass, touched, value, vuetifyBindings } = useInputBase<string | null>(props, emits);\nconst { inputType, displayFormatDate, displayFormatTime } = toRefs(props);\n\nconst dropdown = ref('');\nconst dateMenuShown = computed({\n get() {\n return unref(dropdown) === 'date';\n },\n set(newValue: boolean) {\n dropdown.value = newValue ? 'date' : '';\n },\n});\nconst timeMenuShown = computed({\n get() {\n return unref(dropdown) === 'time';\n },\n set(newValue: boolean) {\n dropdown.value = newValue ? 'time' : '';\n },\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) + format(new Date(), 'XXX');\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) {\n setValueISOFull(formatNaive(newValue), 0);\n },\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) {\n setValueISOFull(`T${newValue}`, 1);\n },\n});\n\nconst dateFormatted = computed({\n get() {\n const vad = unref(valueAsDate);\n if (vad == null) return '';\n return format(vad, unref(displayFormatDate), { locale: currentLocale.value });\n },\n set(newValue: string) {\n try {\n const d = parse(newValue, unref(displayFormatDate), new Date(), { locale: currentLocale.value });\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), { locale: currentLocale.value });\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","<template>\n <input-base\n v-bind=\"{ ...props, loading } as any\"\n :class=\"densityClass\"\n clearable\n @click:clear=\"removeFile\"\n @blur=\"touched = true\"\n >\n <template #prepend-inner><cached-icon name=\"mdi-paperclip\" /></template>\n <template #loader>\n <v-progress-linear\n v-if=\"currentFile && progress < 100\"\n :model-value=\"progress\"\n :indeterminate=\"progress === -1\"\n />\n </template>\n <template #default=\"slotProps\">\n <div class=\"d-flex w-100 position-relative df-input-wrapper\" :class=\"density\">\n <v-file-input\n v-model=\"selectedFile\"\n :label=\"fileLabel\"\n density=\"compact\"\n variant=\"plain\"\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 v-bind=\"passthroughAttrs\"\n prepend-icon=\"\"\n @update:model-value=\"handleFileChange\"\n @focus=\"slotProps.focus()\"\n @blur=\"slotProps.blur()\"\n />\n </div>\n </template>\n </input-base>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onBeforeUnmount, watch } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\n\nimport { DfFileProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, InputBase, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfFileProps>(), defaultBaseProps);\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { density, densityClass, touched, 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>();\nconst loading = computed(() => currentFile.value && progress.value < 100);\n\nconst fileLabel = computed(() => {\n if (!selectedFile.value && value.value) {\n return props.modelValue;\n }\n return '';\n});\n\nfunction clearTouchInterval() {\n if (touchInterval.value) window.clearInterval(touchInterval.value);\n}\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) => {\n if (newValue) setupTouchInterval();\n else clearTouchInterval();\n});\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 try {\n value.value = await props.comms.upload(file, (loaded: number, total: number) => {\n progress.value = Math.round((loaded * 100) / total);\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 v-if=\"isRendered\" class=\"df-input-container\" :class=\"[densityClass, visibilityClass]\">\n <v-text-field\n v-if=\"!isNumber\"\n v-model=\"value\"\n :type=\"inputType\"\n v-bind=\"vuetifyBindings as any\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-text-field>\n <v-number-input\n v-else\n v-model=\"value\"\n density=\"compact\"\n control-variant=\"stacked\"\n v-bind=\"{ ...vuetifyBindings, ...numberInputBindings } as any\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-number-input>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, toRefs, unref } from 'vue';\n\nimport { DfInputProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfInputProps>(), {\n ...defaultBaseProps,\n inputType: 'text',\n precision: null,\n step: undefined,\n min: undefined,\n max: undefined,\n});\n\ninterface Emits extends BaseEmits {}\n\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\nconst { inputType, max, min, precision, step } = toRefs(props);\n\nconst isNumber = computed(() => inputType.value === 'number');\nconst numberInputBindings = computed(() =>\n !isNumber.value ? {} : { min: unref(min), max: unref(max), precision: unref(precision), step: unref(step) },\n);\n</script>\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 :style=\"`min-height: ${minHeight}`\"\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 AccessibilityHelp,\n Alignment,\n Autoformat,\n AutoImage,\n AutoLink,\n Autosave,\n BalloonToolbar,\n Base64UploadAdapter,\n BlockQuote,\n Bold,\n ClassicEditor,\n CloudServices,\n Essentials,\n GeneralHtmlSupport,\n Heading,\n HeadingConfig,\n HorizontalLine,\n ImageBlock,\n ImageCaption,\n ImageInline,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageToolbar,\n ImageUpload,\n Indent,\n IndentBlock,\n Italic,\n Link,\n List,\n MediaEmbed,\n Paragraph,\n PasteFromMarkdownExperimental,\n PasteFromOffice,\n SelectAll,\n Style,\n Table,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n TextTransformation,\n Undo,\n} from 'ckeditor5';\nimport { onMounted, ref } from 'vue';\n\nimport { ckEditorLanguage, translatableStrings } from './translations';\n\nwithDefaults(\n defineProps<{\n modelValue?: string;\n minHeight?: string;\n disabled?: boolean;\n }>(),\n { modelValue: '', minHeight: '7em', disabled: false },\n);\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',\n 'redo',\n '|',\n 'selectAll',\n '|',\n 'heading',\n 'style',\n '|',\n 'bold',\n 'italic',\n '|',\n 'horizontalLine',\n 'link',\n 'mediaEmbed',\n 'insertTable',\n 'blockQuote',\n '|',\n 'alignment',\n '|',\n 'bulletedList',\n 'numberedList',\n 'outdent',\n 'indent',\n '|',\n 'accessibilityHelp',\n ],\n shouldNotGroupWhenFull: false,\n};\nconst editorPlugins = [\n AccessibilityHelp,\n Alignment,\n AutoImage,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n Bold,\n CloudServices,\n Essentials,\n GeneralHtmlSupport,\n Heading,\n HorizontalLine,\n ImageBlock,\n ImageCaption,\n ImageInline,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageToolbar,\n ImageUpload,\n Indent,\n IndentBlock,\n Italic,\n Link,\n List,\n Autoformat,\n MediaEmbed,\n Paragraph,\n PasteFromMarkdownExperimental,\n PasteFromOffice,\n SelectAll,\n Style,\n Table,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Undo,\n TextTransformation,\n Base64UploadAdapter,\n];\nconst editorHeadings: HeadingConfig = {\n options: [\n { model: 'paragraph', title: translatableStrings.Paragraph, class: 'ck-heading_paragraph' },\n { model: 'heading1', view: 'h1', title: translatableStrings.Heading1, class: 'ck-heading_heading1' },\n { model: 'heading2', view: 'h2', title: translatableStrings.Heading2, class: 'ck-heading_heading2' },\n { model: 'heading3', view: 'h3', title: translatableStrings.Heading3, class: 'ck-heading_heading3' },\n { model: 'heading4', view: 'h4', title: translatableStrings.Heading4, class: 'ck-heading_heading4' },\n { model: 'heading5', view: 'h5', title: translatableStrings.Heading5, class: 'ck-heading_heading5' },\n { model: 'heading6', view: 'h6', title: translatableStrings.Heading6, class: 'ck-heading_heading6' },\n ],\n};\nconst editorConfig: EditorConfig = {\n language: ckEditorLanguage.language,\n toolbar: editorToolbarConfig,\n plugins: editorPlugins,\n balloonToolbar: ['bold', 'italic', '|', 'link', '|', 'bulletedList', 'numberedList'],\n heading: editorHeadings,\n htmlSupport: {\n allow: [{ name: /^.*$/, styles: true, attributes: true, classes: true }],\n },\n image: {\n toolbar: [\n 'toggleImageCaption',\n 'imageTextAlternative',\n '|',\n 'imageStyle:inline',\n 'imageStyle:wrapText',\n 'imageStyle:breakText',\n '|',\n 'resizeImage',\n ],\n },\n // initialData: '',\n link: {\n addTargetToExternalLinks: true,\n defaultProtocol: 'https://',\n decorators: {\n toggleDownloadable: {\n mode: 'manual',\n label: translatableStrings.Downloadable,\n attributes: { download: 'file' },\n },\n },\n },\n placeholder: '',\n style: {\n definitions: [\n { name: translatableStrings.ArticleCategory, element: 'h3', classes: ['category'] },\n { name: translatableStrings.Title, element: 'h2', classes: ['document-title'] },\n { name: translatableStrings.Subtitle, element: 'h3', classes: ['document-subtitle'] },\n { name: translatableStrings.InfoBox, element: 'p', classes: ['info-box'] },\n { name: translatableStrings.SideQuote, element: 'blockquote', classes: ['side-quote'] },\n { name: translatableStrings.Marker, element: 'span', classes: ['marker'] },\n { name: translatableStrings.Spoiler, element: 'span', classes: ['spoiler'] },\n { name: translatableStrings.CodeDark, element: 'pre', classes: ['fancy-code', 'fancy-code-dark'] },\n { name: translatableStrings.CodeBright, element: 'pre', classes: ['fancy-code', 'fancy-code-bright'] },\n ],\n },\n table: { contentToolbar: ['tableColumn', 'tableRow', 'mergeTableCells', 'tableProperties', 'tableCellProperties'] },\n translations: ckEditorLanguage.translations,\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,\n.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:\n 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\" class=\"ck-editor-custom\" :class=\"densityClass\">\n <template #default=\"slotProps\">\n <ck-editor-custom\n ref=\"$editor\"\n v-model=\"value\"\n :class=\"{ 'mt-6': !!label }\"\n :min-height=\"minHeight\"\n :disabled=\"vuetifyBindings.disabled\"\n v-bind=\"passthroughAttrs\"\n @focusin=\"slotProps.focus()\"\n @focusout=\"slotProps.blur()\"\n />\n </template>\n </input-base>\n</template>\n\n<script setup lang=\"ts\">\nimport { DfRtfEditorProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, InputBase, useInputBase } from './helpers';\nimport CkEditorCustom from './helpers/ck-editor-custom.vue';\n\nconst props = withDefaults(defineProps<DfRtfEditorProps>(), { ...defaultBaseProps, minHeight: undefined });\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, value, vuetifyBindings } = useInputBase(props, emits);\n</script>\n\n<style>\n.ck-editor-custom .v-field:not(.v-field--active) .v-label.v-field-label:not(.v-field-label--floating) {\n transform: translate(0.5em, 3em);\n}\n\n.ck-editor-custom .v-input__control {\n /* So the dropdowns of ckeditor will draw over vuetify inputs that are positioned underneath */\n z-index: 1;\n}\n\n.ck {\n /* ========== BASE ========== */\n --ck-color-base-background: rgb(var(--v-theme-surface));\n --ck-color-base-foreground: rgb(var(--v-theme-background));\n --ck-color-base-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-text: rgb(var(--v-theme-on-surface));\n --ck-color-shadow-drop: rgba(0, 0, 0, 0.5);\n --ck-color-shadow-inner: rgba(255, 255, 255, 0.05);\n\n /* ========== TOOLBAR ========== */\n --ck-color-toolbar-background: rgb(var(--v-theme-surface));\n --ck-color-toolbar-border: rgb(var(--v-theme-surface-variant));\n\n /* ========== BUTTONS (default) ========== */\n --ck-color-button-default-background: transparent;\n --ck-color-button-default-hover-background: rgba(var(--v-theme-on-surface), 0.08);\n --ck-color-button-default-active-background: rgba(var(--v-theme-on-surface), 0.12);\n --ck-color-button-default-active-shadow: inset 0 0 0 1px rgb(var(--v-theme-primary));\n --ck-color-button-default-disabled-background: transparent;\n\n /* ========== BUTTONS (ON state) ========== */\n --ck-color-button-on-background: rgba(var(--v-theme-primary), 0.15);\n --ck-color-button-on-hover-background: rgba(var(--v-theme-primary), 0.25);\n --ck-color-button-on-color: rgb(var(--v-theme-primary));\n --ck-color-button-on-disabled-background: rgba(var(--v-theme-on-surface), 0.05);\n\n /* ========== DROPDOWN / PANELS ========== */\n --ck-color-dropdown-panel-background: rgb(var(--v-theme-surface));\n --ck-color-dropdown-panel-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-panel-background: rgb(var(--v-theme-surface));\n --ck-color-panel-border: rgb(var(--v-theme-surface-variant));\n\n /* ========== LISTS ========== */\n --ck-color-list-background: rgb(var(--v-theme-surface));\n --ck-color-list-button-hover-background: rgba(var(--v-theme-on-surface), 0.08);\n --ck-color-list-button-on-background: rgba(var(--v-theme-primary), 0.15);\n --ck-color-list-button-on-color: rgb(var(--v-theme-primary));\n\n /* ========== INPUTS ========== */\n --ck-color-input-background: rgb(var(--v-theme-surface));\n --ck-color-input-border: rgb(var(--v-theme-surface-variant));\n --ck-color-input-text: rgb(var(--v-theme-on-surface));\n --ck-color-input-disabled-background: rgba(var(--v-theme-on-surface), 0.05);\n --ck-color-labeled-field-label-background: rgb(var(--v-theme-surface));\n\n /* ========== FOCUS / ACTION ========== */\n --ck-color-focus-border: rgb(var(--v-theme-primary));\n --ck-color-focus-outer-shadow: rgba(var(--v-theme-primary), 0.25);\n\n /* ========== LINKS ========== */\n --ck-color-link-default: rgb(var(--v-theme-info));\n\n /* ========== SELECTION ========== */\n --ck-color-selection-background: rgba(var(--v-theme-primary), 0.3);\n --ck-color-selection-text: rgb(var(--v-theme-on-primary));\n\n /* ========== DIALOGS ========== */\n --ck-color-dialog-background: rgb(var(--v-theme-surface));\n --ck-color-dialog-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-dialog-header-background: rgb(var(--v-theme-surface));\n --ck-color-dialog-header-border: rgb(var(--v-theme-surface-variant));\n\n --ck-color-dialog-footer-background: rgb(var(--v-theme-surface));\n --ck-color-dialog-footer-border: rgb(var(--v-theme-surface-variant));\n\n --ck-accessibility-help-dialog-code-background-color: rgb(var(--v-theme-background));\n\n /* ========== STYLE PANEL ========== */\n --ck-style-panel-button-label-background: rgb(var(--v-theme-surface));\n --ck-style-panel-button-hover-label-background: rgba(var(--v-theme-on-surface), 0.08);\n}\n\n/* Editable (content area) */\n.ck-editor__editable {\n background: rgb(var(--v-theme-surface));\n color: rgb(var(--v-theme-on-surface));\n}\n\n/* Borders & separators fix */\n.ck.ck-toolbar,\n.ck.ck-editor__top {\n border-color: rgb(var(--v-theme-surface-variant));\n}\n\n/* Balloon panels (npr. link popup) */\n.ck.ck-balloon-panel {\n background: rgb(var(--v-theme-surface));\n border: 1px solid rgb(var(--v-theme-surface-variant));\n}\n\n.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text {\n color: rgb(var(--v-theme-on-surface)) !important;\n}\n\n.ck .marker {\n background: rgb(var(--v-theme-accent), 0.6) !important;\n}\n\n/* Scrollbar */\n.ck ::-webkit-scrollbar {\n width: 10px;\n}\n\n.ck ::-webkit-scrollbar-thumb {\n background: rgba(var(--v-theme-on-surface), 0.2);\n border-radius: 6px;\n}\n</style>\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 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=\"isRendered\"\n ref=\"dfSelectRef\"\n v-model=\"selected\"\n :class=\"[cssClass, densityClass, visibilityClass, { 'df-select-multirow': isMultiline }]\"\n :items=\"options\"\n :return-object=\"false\"\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 :search=\"searchText\"\n v-bind=\"vuetifyBindings\"\n @update:search=\"(query: any) => queryOptions(query, undefined)\"\n @update:model-value=\"onSelect\"\n @click:clear=\"selected = null\"\n @blur=\"touched = true\"\n @mousedown.capture=\"onMouseDown($event)\"\n >\n <template #chip=\"{ item }\">\n <v-chip\n :key=\"item.value\"\n label\n size=\"small\"\n class=\"d-flex align-middle\"\n :variant=\"multiple ? 'tonal' : 'text'\"\n :closable=\"multiple\"\n @click:close=\"chipClose($event, item.value)\"\n >\n <template #prepend>\n <cached-icon v-if=\"item.raw?.icon\" class=\"me-1\" :name=\"item.raw.icon\" />\n </template>\n <span :class=\"{ 'text-body-1': !multiple }\">{{ item.title }}</span>\n </v-chip>\n </template>\n <template #label=\"labelData\">\n <df-label :data=\"labelData\" :label=\"label\" />\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 <cached-icon class=\"action-icon\" :name=\"item.raw.icon\" />\n </span>\n </template>\n </v-list-item>\n </template>\n <template #message=\"{ message }\">\n <df-input-hint :message=\"message\" :errors=\"showErrors\" />\n </template>\n <template v-if=\"$slots['append-inner']\" #append-inner=\"props\">\n <slot name=\"append-inner\" v-bind=\"props\" />\n </template>\n <template v-if=\"$slots['prepend-inner']\" #prepend-inner=\"props\">\n <slot name=\"prepend-inner\" v-bind=\"props\" />\n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { isEqual, unionBy } from 'lodash-es';\nimport { computed, nextTick, ref, toRefs, unref, watch } from 'vue';\nimport { CachedIcon } from 'vue-cached-icon';\nimport { VAutocomplete, VCombobox } from 'vuetify/components';\n\nimport { DfSelectProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, SelectChoice, useInputBase } from './helpers';\nimport {\n convertItems,\n getSelectedChoices,\n multipleCompliantValue,\n updateSelectedFromValue,\n} from './helpers/df-select.helper';\n\nconst propsWithDefaults = withDefaults(defineProps<DfSelectProps>(), {\n ...defaultBaseProps,\n choices: undefined,\n multiple: false,\n allowTags: false,\n allowNull: true,\n fetchChoices: undefined,\n});\n\nconst { choices, multiple, allowTags: taggable, allowNull, cssClass } = toRefs(propsWithDefaults);\n\ninterface Emits extends BaseEmits {\n (e: 'update:modelValueDisplay', value: SelectChoice[]): any;\n}\n\nconst emits = defineEmits<Emits>();\ndefineSlots<{\n 'append-inner'?: (props: any) => any;\n 'prepend-inner'?: (props: any) => any;\n}>();\n\nconst dfSelectRef = ref<InstanceType<typeof VAutocomplete> | InstanceType<typeof VCombobox> | null>(null);\n\nconst {\n densityClass,\n isRendered,\n label,\n showErrors,\n touched,\n value: resultingValue,\n visibilityClass,\n vuetifyBindings,\n} = useInputBase(propsWithDefaults, emits);\n\nconst selected = ref<any>(null);\nconst takeLoaded = ref(false);\nconst loaded = ref<SelectChoice[]>([]);\nconst loadedChoices = computed<SelectChoice[]>(() => (unref(takeLoaded) ? unref(loaded) : unref(choices) || []));\nconst loading = ref<boolean>(false);\n\nconst options = computed(() => convertItems(loadedChoices.value));\nconst searchText = ref<string | null>(null);\nconst fetchCounterGlobal = ref(0);\nconst isMultiline = ref(false);\n\nif (choices.value?.length && propsWithDefaults.fetchChoices !== undefined) {\n console.warn('Both choices and fetchChoices are set. Only one of them should be set.');\n}\n\nfunction emitModelValueDisplay(mcVal: any) {\n emits('update:modelValueDisplay', getSelectedChoices(loadedChoices.value, mcVal));\n}\n\nconst setResultingValueGuard = ref(false);\n\nfunction setResultingValue(newValue: any) {\n setResultingValueGuard.value = true;\n try {\n resultingValue.value = newValue;\n } finally {\n // The guard suppresses the watch that pushes the model's value back into `selected`. A write the control does\n // not take verbatim - a ValueChangedAction that writes another value back, a disabled field that drops it, a\n // handler that throws and unwinds it - never reaches that watch, so the chips would go on showing a selection\n // the control never took. Comparing what the control holds against what was written is what restores it, and\n // it needs a deep comparison: for multiple selection the value reads back as a different array holding the\n // same items.\n if (!isEqual(multipleCompliantValue(resultingValue.value, multiple.value), newValue)) {\n updateSelectedFromValue(\n multipleCompliantValue(resultingValue.value, multiple.value),\n selected,\n multiple.value,\n taggable.value,\n loadedChoices.value,\n );\n }\n nextTick(() => {\n setResultingValueGuard.value = false;\n });\n }\n}\n\nfunction getFullWidth(item: HTMLElement | null) {\n if (!item) return 0;\n const rect = item.getBoundingClientRect();\n const style = window.getComputedStyle(item);\n\n return rect.width + parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n}\n\nfunction checkMultiline() {\n if (multiple.value && allowNull.value && selected.value != null && selected.value.length > 0 && dfSelectRef.value) {\n const dfSelect = dfSelectRef.value.$el;\n const inputWidth = dfSelect.querySelector('.v-input__control')?.clientWidth;\n const container = dfSelect.querySelector('.v-field__input');\n const items = container.querySelectorAll('.v-autocomplete__selection, .v-combobox__selection');\n\n const style = window.getComputedStyle(container);\n let selectedWidth = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n\n items.forEach((item: HTMLElement) => {\n selectedWidth += getFullWidth(item);\n });\n\n const clearableWidth = getFullWidth(dfSelect.querySelector('.v-field .v-field__clearable'));\n const appendWidth = getFullWidth(dfSelect.querySelector('.v-field .v-field__append-inner'));\n const chipGap = 2;\n isMultiline.value = inputWidth - selectedWidth - items.length * chipGap - appendWidth < clearableWidth;\n } else {\n isMultiline.value = false;\n }\n}\n\nfunction onMouseDown(event: MouseEvent) {\n // če je klik na close ikoni ali njenem childu\n const target = event.target;\n if (target instanceof HTMLElement && target.closest('.v-chip__close')) {\n event.stopPropagation();\n event.preventDefault();\n }\n}\n\nwatch(\n selected,\n (newValue) => {\n if (vuetifyBindings.value.readonly) return;\n nextTick(() => {\n const mcVal = multipleCompliantValue(newValue, multiple.value);\n emitModelValueDisplay(mcVal);\n setResultingValue(mcVal);\n });\n },\n { deep: true },\n);\nwatch(\n resultingValue,\n (newValue: any) => {\n if (!setResultingValueGuard.value) {\n const mcVal = multipleCompliantValue(newValue, multiple.value);\n updateSelectedFromValue(mcVal, selected, multiple.value, false, loadedChoices.value);\n }\n },\n { deep: true },\n);\n\nwatch(setResultingValueGuard, () => {\n if (!setResultingValueGuard.value) {\n checkMultiline();\n }\n});\n\nfunction resetQuery() {\n if (searchText.value != null && searchText.value.length > 0) {\n searchText.value = null;\n queryOptions();\n }\n}\n\nfunction onSelect(/* val: any */) {\n resetQuery();\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 setResultingValue(mcVal);\n}\n\nfunction chipClose(event: MouseEvent, itemValue: any) {\n event.stopPropagation();\n if (vuetifyBindings.value.readonly || taggable.value) {\n if (taggable.value) {\n selected.value = selected.value.filter((v: any) => v !== itemValue);\n }\n return;\n }\n let mcVal;\n if (multiple.value && Array.isArray(selected.value)) {\n mcVal = multipleCompliantValue(\n selected.value.filter((v) => v !== itemValue),\n multiple.value,\n );\n } else {\n mcVal = null;\n }\n updateSelectedFromValue(mcVal, selected, multiple.value, false, loadedChoices.value);\n setResultingValue(mcVal);\n}\n\nasync function queryOptions(queryValue?: any, idValue?: any): Promise<void> {\n if (vuetifyBindings.value.readonly) return;\n searchText.value = queryValue;\n if (choices.value || propsWithDefaults.fetchChoices === undefined) return;\n const fetchCounter = ++fetchCounterGlobal.value;\n loading.value = true;\n try {\n const selectedChoices = getSelectedChoices(\n loadedChoices.value,\n multipleCompliantValue(selected.value, multiple.value),\n );\n const newChoices = await propsWithDefaults.fetchChoices(queryValue, idValue);\n if (fetchCounter !== fetchCounterGlobal.value) return;\n loaded.value = unionBy([...selectedChoices, ...newChoices], 'id');\n takeLoaded.value = true;\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 setResultingValue(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\n<style scoped>\n.df-select-multirow :deep(.v-field__clearable) {\n position: absolute;\n}\n\n.df-select-multirow :deep(.v-field__append-inner) {\n margin-top: 24px;\n}\n\n.df-select-multirow :deep(.v-autocomplete .v-field:not(.v-field--focused) input) {\n min-width: 24px;\n}\n</style>\n","<template>\n <div v-if=\"isRendered\" class=\"df-textarea-container\" :class=\"[densityClass, visibilityClass]\">\n <v-textarea\n v-model=\"value\"\n :class=\"cssClass\"\n :rows=\"rows\"\n :auto-grow=\"(maxRows || 0) > 0\"\n :max-rows=\"maxRows\"\n v-bind=\"vuetifyBindings as any\"\n @blur=\"touched = true\"\n >\n <template #label=\"labelData\"><df-label :data=\"labelData\" :label=\"label\" /></template>\n <template #message=\"{ message }\"><df-input-hint :message=\"message\" :errors=\"showErrors\" /></template>\n </v-textarea>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { toRefs } from 'vue';\n\nimport { DfTextAreaProps } from './dynamicforms-component-props';\nimport { BaseEmits, defaultBaseProps, DfInputHint, DfLabel, useInputBase } from './helpers';\n\nconst props = withDefaults(defineProps<DfTextAreaProps>(), {\n ...defaultBaseProps,\n rows: undefined,\n maxRows: undefined,\n});\n\ninterface Emits extends BaseEmits {}\nconst emits = defineEmits<Emits>();\n\nconst { densityClass, isRendered, label, showErrors, touched, value, visibilityClass, vuetifyBindings } = useInputBase(\n props,\n emits,\n);\nconst { cssClass } = toRefs(props);\n</script>\n","import {\n DfActions,\n DfCheckbox,\n DfColor,\n DfDateTime,\n DfFile,\n DfInput,\n DfInputHint,\n DfLabel,\n DfRtfEditor,\n DfSelect,\n DfTextArea,\n} from './dynamicforms-components';\n\n/**\n * Every component this library draws with, keyed by the tag a layout names it by.\n *\n * A rendering layer that resolves a component by name out of a map - `@dynamicforms/vuetify-modal-form-kit`'s\n * `<component-render>` is one - is handed this instead of keeping a list of its own, which would have to be\n * extended whenever this package gains a component and would silently render nothing until it was.\n *\n * The keys are the kebab-case of the export names, so a tag names the same component whether it is looked up\n * here or left to Vue's own resolver after `DynamicFormsInputs` has registered the components globally.\n */\nexport const dfInputComponentsByTag = {\n 'df-actions': DfActions,\n 'df-checkbox': DfCheckbox,\n 'df-color': DfColor,\n 'df-date-time': DfDateTime,\n 'df-file': DfFile,\n 'df-input': DfInput,\n 'df-input-hint': DfInputHint,\n 'df-label': DfLabel,\n 'df-rtf-editor': DfRtfEditor,\n 'df-select': DfSelect,\n 'df-text-area': DfTextArea,\n} as const;\n\n/** The tags {@link dfInputComponentsByTag} answers for. */\nexport type DfInputComponentTag = keyof typeof dfInputComponentsByTag;\n","import { CkeditorPlugin } from '@ckeditor/ckeditor5-vue';\nimport { App } from 'vue';\n\nimport * as Inputs from './dynamicforms-components';\nimport { VuetifyInputsSettings, vuetifyInputsSettingsKey } from './helpers';\nimport * as VuetifyComponents from './vuetify-components';\n\nexport * from './helpers';\nexport * as VuetifyComponents from './vuetify-components';\nexport * from './dynamicforms-components';\nexport * from './dynamicforms-components-by-tag';\nexport * as DfInputComponents from './dynamicforms-components';\nexport * as DfInputComponentProps from './dynamicforms-component-props';\n\nexport interface DynamicFormsInputsOptions extends VuetifyInputsSettings {\n registerComponents: boolean;\n registerVuetifyComponents: boolean;\n}\n\nexport const DynamicFormsInputs = {\n install: (app: App, options?: Partial<DynamicFormsInputsOptions>) => {\n app.use(CkeditorPlugin);\n app.provide(vuetifyInputsSettingsKey, options ?? {});\n if (options?.registerComponents ?? false) {\n Object.entries(Inputs).map(([name, component]) => app.component(name, component));\n }\n if (options?.registerVuetifyComponents ?? false) {\n Object.entries(VuetifyComponents).map(([name, component]) => app.component(name, component));\n }\n },\n};\n"],"names":["_","index","isSemanticVersion","version","destructureSemanticVersion","major","minor","patch","isCKTestingVersion","testVersion","isCKVersion","appendExtraPluginsToEditorConfig","config","plugins","extraPlugins","__spreadProps","__spreadValues","item","getLicenseVersionFromEditorVersion","getCKBaseBundleInstallationInfo","CKEDITOR_VERSION","CKEDITOR","getSupportedLicenseVersionInstallationInfo","installationInfo","isCKEditorFreeLicense","licenseKey","licenseVersion","createIntegrationUsageDataPlugin","integrationName","usageData","editor","source","setUsageData","VueIntegrationUsageDataPlugin","appendAllIntegrationPluginsToConfig","editorConfig","assignInitialDataToEditorConfig","data","_a","isRootsMapConfigurationSupported","normalizedConfig","getInitialDataFromEditorConfig","_b","bundleInfo","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","onMounted","markRaw","error","onBeforeUnmount","_ctx","_cache","openBlock","createBlock","resolveDynamicComponent","Vue","CkeditorPlugin","app","isPluralType","val","formatDistanceLocale","getFormFromCount","count","formatDistance","token","options","result","tense","tokenValue","form","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","date","formatRelative","_baseDate","_options","format","buildLocalizeFn","value","context","valuesArray","defaultWidth","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","key","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","sl","DateTimeLocaleConfig","locale","isRef","isError","computed","widgetMessage","widgetClasses","_createBlock","_unref","MessagesWidget","lbl","_createElementBlock","_normalizeClass","_Fragment","CachedIcon","_component_v_img","_resolveDynamicComponent","MdString","VueMarkdown","vuetifyInputsSettingsKey","Label","text","icon","iconComponent","__publicField","defaultBaseProps","useInputBase","settings","inject","injectedDensity","injectedVariant","internalValue","pendingWrite","shallowRef","newValue","toRaw","nextTick","Form","controlTouch","touched","valid","errors","ValidationErrorRenderContent","anyErrors","showErrors","enabled","visibility","isRendered","visibilityClass","extra","label","stated","isString","placeholder","helpText","hint","cssClass","density","_d","_c","boundDensity","variant","isEmpty","emits","vuetifyBindings","isClearable","unref","focused","setFocused","isFocused","_component_v_input","_withCtx","message","_createVNode","DfInputHint","_component_v_field","labelData","DfLabel","slotProps","_createElementVNode","_hoisted_1","_renderSlot","loaderProps","$slots","prependInnerProps","prependProps","translatableStrings","translateStrings","translationCallback","translation","setCkEditorLanguage","language","translations","ckEditorLanguage","ActionDisplayStyle","defaultDisplayStyle","fromString","mode","fromAny","input","isDefined","check","responsiveBreakpoints","ResponsiveRenderOptions","bp","breakpoint","bpData","field","isPlainObject","getBreakpointName","dp","useBreakpoint","display","useDisplay","ResponsiveActionRenderOptions","defaultIfEmpty","isObjectLike","isBoolean","getRenderOptionsForBreakpoint","partial","Action","FormAction","init","actionsRef","action","DisplayMode","actionsWithBreakpoint","defaultActionColor","_openBlock","_renderList","idx","_component_v_btn","_mergeProps","_withModifiers","event","_hoisted_2","_toDisplayString","densityClass","indeterminate","boolValue","change","oldVal","clone","_component_v_checkbox","$event","dropdownShown","rules","_component_v_text_field","_normalizeStyle","_component_v_menu","_component_v_color_picker","currentLocale","firstDayOfWeek","inputType","displayFormatDate","displayFormatTime","toRefs","dropdown","dateMenuShown","timeMenuShown","formatNaive","valueISOFull","setValueISOFull","newISOValue","dateOrTimeIdx","vif","nv","valueAsDate","uValue","res","valueAsTimeString","dateFormatted","vad","d","parse","err","timeFormatted","hour","toNumber","minute","isNaN","InputBase","_component_v_confirm_edit","proxyModel","actions","_component_v_date_picker","_component_v_time_picker","touchInterval","currentFile","progress","fileInputKey","selectedFile","loading","fileLabel","clearTouchInterval","setupTouchInterval","removeFile","__async","upload","file","loaded","total","handleFileChange","_component_v_progress_linear","_component_v_file_input","max","min","precision","step","isNumber","numberInputBindings","_component_v_number_input","isLayoutReady","ClassicEditor","editorToolbarConfig","editorPlugins","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","editorHeadings","onEditorReady","editorReady","_hoisted_3","_component_ckeditor","CkEditorCustom","convertItems","items","multipleCompliantValue","multiple","isArray","castArray","first","getSelectedChoices","loadedChoices","multipleCpliantValue","mcValue","choice","updateSelectedFromValue","resultingValue","selected","taggable","matchingChoice","propsWithDefaults","choices","allowNull","dfSelectRef","takeLoaded","searchText","fetchCounterGlobal","isMultiline","emitModelValueDisplay","mcVal","setResultingValueGuard","setResultingValue","isEqual","getFullWidth","rect","style","checkMultiline","dfSelect","inputWidth","container","selectedWidth","clearableWidth","appendWidth","chipGap","onMouseDown","target","resetQuery","queryOptions","onSelect","chipClose","itemValue","v","queryValue","idValue","fetchCounter","selectedChoices","newChoices","unionBy","initialValueCheck","query","_component_v_chip","prps","_component_v_list_item","_component_v_textarea","dfInputComponentsByTag","DfActions","DfCheckbox","DfColor","DfDateTime","DfFile","DfInput","DfRtfEditor","DfSelect","DfTextArea","DynamicFormsInputs","Inputs","name","component","VuetifyComponents"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
|