{"version":3,"file":"index-BKjsK-K8.js","sources":["../../../node_modules/.pnpm/@formkit+utils@1.6.7/node_modules/@formkit/utils/dist/index.mjs","../../../node_modules/.pnpm/@formkit+core@1.6.7/node_modules/@formkit/core/dist/index.mjs","../../../node_modules/.pnpm/@formkit+observer@1.6.7/node_modules/@formkit/observer/dist/index.mjs","../../../node_modules/.pnpm/@formkit+rules@1.6.7/node_modules/@formkit/rules/dist/index.mjs","../../../node_modules/.pnpm/@formkit+validation@1.6.7/node_modules/@formkit/validation/dist/index.mjs","../../../node_modules/.pnpm/@formkit+i18n@1.6.7/node_modules/@formkit/i18n/dist/index.mjs","../../../node_modules/.pnpm/@formkit+inputs@1.6.7/node_modules/@formkit/inputs/dist/index.mjs","../../../node_modules/.pnpm/@formkit+themes@1.6.7_tailwindcss@3.4.13/node_modules/@formkit/themes/dist/index.mjs","../../../node_modules/.pnpm/@formkit+dev@1.6.7/node_modules/@formkit/dev/dist/index.mjs","../../../node_modules/.pnpm/@formkit+vue@1.6.7_tailwindcss@3.4.13_vue@3.5.12_typescript@5.6.2_/node_modules/@formkit/vue/dist/index.mjs","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/addDays/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/isValid/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/isSameDay/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/endOfDay/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/locale/en-US/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/subMilliseconds/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/format/formatters/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/format/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/assign/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/getHours/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/getMinutes/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/getTime/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/getUnixTime/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/subDays/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/setUTCDay/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/parse/_lib/parsers/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/parse/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/isToday/index.js","../../../node_modules/.pnpm/date-fns@2.21.1/node_modules/date-fns/esm/isYesterday/index.js","../../../app/javascript/dashboard/composables/store.js","../../../node_modules/.pnpm/@rails+actioncable@6.1.3/node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","../../../app/javascript/shared/helpers/BaseActionCableConnector.js","../../../app/javascript/widget/helpers/uuid.js","../../../app/javascript/widget/i18n/index.js","../../../app/javascript/dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js","../../../app/javascript/shared/helpers/DateHelper.js","../../../app/javascript/shared/helpers/vuex/mutationHelpers.js","../../../app/javascript/shared/helpers/MessageTypeHelper.js","../../../node_modules/.pnpm/urlpattern-polyfill@10.0.0/node_modules/urlpattern-polyfill/dist/urlpattern.js","../../../node_modules/.pnpm/urlpattern-polyfill@10.0.0/node_modules/urlpattern-polyfill/index.js"],"sourcesContent":["// packages/utils/src/index.ts\nvar isBrowser = typeof window !== \"undefined\";\nvar explicitKeys = [\n \"__key\",\n \"__init\",\n \"__shim\",\n \"__original\",\n \"__index\",\n \"__prevKey\"\n];\nfunction token() {\n return Math.random().toString(36).substring(2, 15);\n}\nfunction setify(items) {\n return items instanceof Set ? items : new Set(items);\n}\nfunction dedupe(arr1, arr2) {\n const original = arr1 instanceof Set ? arr1 : new Set(arr1);\n if (arr2)\n arr2.forEach((item) => original.add(item));\n return [...original];\n}\nfunction has(obj, property) {\n return Object.prototype.hasOwnProperty.call(obj, property);\n}\nfunction eq(valA, valB, deep = true, explicit = [\"__key\"]) {\n if (valA === valB)\n return true;\n if (typeof valB === \"object\" && typeof valA === \"object\") {\n if (valA instanceof Map)\n return false;\n if (valA instanceof Set)\n return false;\n if (valA instanceof Date && valB instanceof Date)\n return valA.getTime() === valB.getTime();\n if (valA instanceof RegExp && valB instanceof RegExp)\n return eqRegExp(valA, valB);\n if (valA === null || valB === null)\n return false;\n if (Object.keys(valA).length !== Object.keys(valB).length)\n return false;\n for (const k of explicit) {\n if ((k in valA || k in valB) && valA[k] !== valB[k])\n return false;\n }\n for (const key in valA) {\n if (!(key in valB))\n return false;\n if (valA[key] !== valB[key] && !deep)\n return false;\n if (deep && !eq(valA[key], valB[key], deep, explicit))\n return false;\n }\n return true;\n }\n return false;\n}\nfunction eqRegExp(x, y) {\n return x.source === y.source && x.flags.split(\"\").sort().join(\"\") === y.flags.split(\"\").sort().join(\"\");\n}\nfunction empty(value) {\n const type = typeof value;\n if (type === \"number\")\n return false;\n if (value === void 0)\n return true;\n if (type === \"string\") {\n return value === \"\";\n }\n if (type === \"object\") {\n if (value === null)\n return true;\n for (const _i in value)\n return false;\n if (value instanceof RegExp)\n return false;\n if (value instanceof Date)\n return false;\n return true;\n }\n return false;\n}\nfunction escapeExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nfunction regexForFormat(format) {\n const escaped = `^${escapeExp(format)}$`;\n const formats = {\n MM: \"(0[1-9]|1[012])\",\n M: \"([1-9]|1[012])\",\n DD: \"([012][0-9]|3[01])\",\n D: \"([012]?[0-9]|3[01])\",\n YYYY: \"\\\\d{4}\",\n YY: \"\\\\d{2}\"\n };\n const tokens = Object.keys(formats);\n return new RegExp(\n tokens.reduce((regex, format2) => {\n return regex.replace(format2, formats[format2]);\n }, escaped)\n );\n}\nfunction nodeType(type) {\n const t = type.toLowerCase();\n if (t === \"list\")\n return \"list\";\n if (t === \"group\")\n return \"group\";\n return \"input\";\n}\nfunction isRecord(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction isObject(o) {\n return isRecord(o) || Array.isArray(o);\n}\nfunction isPojo(o) {\n if (isRecord(o) === false)\n return false;\n if (o.__FKNode__ || o.__POJO__ === false)\n return false;\n const ctor = o.constructor;\n if (ctor === void 0)\n return true;\n const prot = ctor.prototype;\n if (isRecord(prot) === false)\n return false;\n if (prot.hasOwnProperty(\"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nvar extend = /* @__NO_SIDE_EFFECTS__ */ (original, additional, extendArrays = false, ignoreUndefined = false) => {\n if (additional === null)\n return null;\n const merged = {};\n if (typeof additional === \"string\")\n return additional;\n for (const key in original) {\n if (has(additional, key) && (additional[key] !== void 0 || !ignoreUndefined)) {\n if (extendArrays && Array.isArray(original[key]) && Array.isArray(additional[key])) {\n merged[key] = original[key].concat(additional[key]);\n continue;\n }\n if (additional[key] === void 0) {\n continue;\n }\n if (isPojo(original[key]) && isPojo(additional[key])) {\n merged[key] = /* @__PURE__ */ extend(\n original[key],\n additional[key],\n extendArrays,\n ignoreUndefined\n );\n } else {\n merged[key] = additional[key];\n }\n } else {\n merged[key] = original[key];\n }\n }\n for (const key in additional) {\n if (!has(merged, key) && additional[key] !== void 0) {\n merged[key] = additional[key];\n }\n }\n return merged;\n};\nfunction isQuotedString(str) {\n if (str[0] !== '\"' && str[0] !== \"'\")\n return false;\n if (str[0] !== str[str.length - 1])\n return false;\n const quoteType = str[0];\n for (let p = 1; p < str.length; p++) {\n if (str[p] === quoteType && (p === 1 || str[p - 1] !== \"\\\\\") && p !== str.length - 1) {\n return false;\n }\n }\n return true;\n}\nfunction rmEscapes(str) {\n if (!str.length)\n return \"\";\n let clean = \"\";\n let lastChar = \"\";\n for (let p = 0; p < str.length; p++) {\n const char = str.charAt(p);\n if (char !== \"\\\\\" || lastChar === \"\\\\\") {\n clean += char;\n }\n lastChar = char;\n }\n return clean;\n}\nfunction assignDeep(a, b) {\n for (const key in a) {\n if (has(b, key) && a[key] !== b[key] && !(isPojo(a[key]) && isPojo(b[key]))) {\n a[key] = b[key];\n } else if (isPojo(a[key]) && isPojo(b[key])) {\n assignDeep(a[key], b[key]);\n }\n }\n for (const key in b) {\n if (!has(a, key)) {\n a[key] = b[key];\n }\n }\n return a;\n}\nfunction nodeProps(...sets) {\n return sets.reduce((valid, props) => {\n const { value, name, modelValue, config, plugins, ...validProps } = props;\n return Object.assign(valid, validProps);\n }, {});\n}\nfunction parseArgs(str) {\n const args = [];\n let arg = \"\";\n let depth = 0;\n let quote = \"\";\n let lastChar = \"\";\n for (let p = 0; p < str.length; p++) {\n const char = str.charAt(p);\n if (char === quote && lastChar !== \"\\\\\") {\n quote = \"\";\n } else if ((char === \"'\" || char === '\"') && !quote && lastChar !== \"\\\\\") {\n quote = char;\n } else if (char === \"(\" && !quote) {\n depth++;\n } else if (char === \")\" && !quote) {\n depth--;\n }\n if (char === \",\" && !quote && depth === 0) {\n args.push(arg);\n arg = \"\";\n } else if (char !== \" \" || quote) {\n arg += char;\n }\n lastChar = char;\n }\n if (arg) {\n args.push(arg);\n }\n return args;\n}\nfunction except(obj, toRemove) {\n const clean = {};\n const exps = toRemove.filter((n) => n instanceof RegExp);\n const keysToRemove = new Set(toRemove);\n for (const key in obj) {\n if (!keysToRemove.has(key) && !exps.some((exp) => exp.test(key))) {\n clean[key] = obj[key];\n }\n }\n return clean;\n}\nfunction only(obj, include) {\n const clean = {};\n const exps = include.filter((n) => n instanceof RegExp);\n include.forEach((key) => {\n if (!(key instanceof RegExp)) {\n clean[key] = obj[key];\n }\n });\n Object.keys(obj).forEach((key) => {\n if (exps.some((exp) => exp.test(key))) {\n clean[key] = obj[key];\n }\n });\n return clean;\n}\nfunction camel(str) {\n return str.replace(\n /-([a-z0-9])/gi,\n (_s, g) => g.toUpperCase()\n );\n}\nfunction kebab(str) {\n return str.replace(\n /([a-z0-9])([A-Z])/g,\n (_s, trail, cap) => trail + \"-\" + cap.toLowerCase()\n ).replace(\" \", \"-\").toLowerCase();\n}\nfunction shallowClone(obj, explicit = explicitKeys) {\n if (obj !== null && typeof obj === \"object\") {\n let returnObject;\n if (Array.isArray(obj))\n returnObject = [...obj];\n else if (isPojo(obj))\n returnObject = { ...obj };\n if (returnObject) {\n applyExplicit(obj, returnObject, explicit);\n return returnObject;\n }\n }\n return obj;\n}\nfunction clone(obj, explicit = explicitKeys) {\n if (obj === null || obj instanceof RegExp || obj instanceof Date || obj instanceof Map || obj instanceof Set || typeof File === \"function\" && obj instanceof File)\n return obj;\n let returnObject;\n if (Array.isArray(obj)) {\n returnObject = obj.map((value) => {\n if (typeof value === \"object\")\n return clone(value, explicit);\n return value;\n });\n } else {\n returnObject = Object.keys(obj).reduce((newObj, key) => {\n newObj[key] = typeof obj[key] === \"object\" ? clone(obj[key], explicit) : obj[key];\n return newObj;\n }, {});\n }\n for (const key of explicit) {\n if (key in obj) {\n Object.defineProperty(returnObject, key, {\n enumerable: false,\n value: obj[key]\n });\n }\n }\n return returnObject;\n}\nfunction cloneAny(obj) {\n return typeof obj === \"object\" ? clone(obj) : obj;\n}\nfunction getAt(obj, addr) {\n if (!obj || typeof obj !== \"object\")\n return null;\n const segments = addr.split(\".\");\n let o = obj;\n for (const i in segments) {\n const segment = segments[i];\n if (has(o, segment)) {\n o = o[segment];\n }\n if (+i === segments.length - 1)\n return o;\n if (!o || typeof o !== \"object\")\n return null;\n }\n return null;\n}\nfunction undefine(value) {\n return value !== void 0 && value !== \"false\" && value !== false ? true : void 0;\n}\nfunction init(obj) {\n return !Object.isFrozen(obj) ? Object.defineProperty(obj, \"__init\", {\n enumerable: false,\n value: true\n }) : obj;\n}\nfunction slugify(str) {\n return str.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase().replace(/[^a-z0-9]/g, \" \").trim().replace(/\\s+/g, \"-\");\n}\nfunction spread(obj, explicit = explicitKeys) {\n if (obj && typeof obj === \"object\") {\n if (obj instanceof RegExp)\n return obj;\n if (obj instanceof Date)\n return obj;\n let spread2;\n if (Array.isArray(obj)) {\n spread2 = [...obj];\n } else {\n spread2 = { ...obj };\n }\n return applyExplicit(\n obj,\n spread2,\n explicit\n );\n }\n return obj;\n}\nfunction applyExplicit(original, obj, explicit) {\n for (const key of explicit) {\n if (key in original) {\n Object.defineProperty(obj, key, {\n enumerable: false,\n value: original[key]\n });\n }\n }\n return obj;\n}\nfunction whenAvailable(childId, callback, root) {\n if (!isBrowser)\n return;\n if (!root)\n root = document;\n const el = root.getElementById(childId);\n if (el)\n return callback(el);\n const observer = new MutationObserver(() => {\n const el2 = root?.getElementById(childId);\n if (el2) {\n observer?.disconnect();\n callback(el2);\n }\n });\n observer.observe(root, { childList: true, subtree: true });\n}\nfunction oncePerTick(fn) {\n let called = false;\n return (...args) => {\n if (called)\n return;\n called = true;\n queueMicrotask(() => called = false);\n return fn(...args);\n };\n}\nfunction boolGetter(value) {\n if (value === \"false\" || value === false)\n return void 0;\n return true;\n}\n\nexport { assignDeep, boolGetter, camel, clone, cloneAny, dedupe, empty, eq, eqRegExp, escapeExp, except, extend, getAt, has, init, isObject, isPojo, isQuotedString, isRecord, kebab, nodeProps, nodeType, oncePerTick, only, parseArgs, regexForFormat, rmEscapes, setify, shallowClone, slugify, spread, token, undefine, whenAvailable };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { token, cloneAny, empty, isObject, init, eq, clone, camel, extend as extend$1, undefine, has, kebab, dedupe, parseArgs, getAt, isQuotedString, rmEscapes, slugify, boolGetter, isRecord } from '@formkit/utils';\n\n// packages/core/src/dispatcher.ts\nfunction createDispatcher() {\n const middleware = [];\n let currentIndex = 0;\n const use2 = (dispatchable) => middleware.push(dispatchable);\n const dispatch = (payload) => {\n const current = middleware[currentIndex];\n if (typeof current === \"function\") {\n return current(payload, (explicitPayload) => {\n currentIndex++;\n return dispatch(explicitPayload);\n });\n }\n currentIndex = 0;\n return payload;\n };\n use2.dispatch = dispatch;\n use2.unshift = (dispatchable) => middleware.unshift(dispatchable);\n use2.remove = (dispatchable) => {\n const index = middleware.indexOf(dispatchable);\n if (index > -1)\n middleware.splice(index, 1);\n };\n return use2;\n}\nfunction createEmitter() {\n const listeners = /* @__PURE__ */ new Map();\n const receipts2 = /* @__PURE__ */ new Map();\n let buffer = void 0;\n const emitter = (node, event) => {\n if (buffer) {\n buffer.set(event.name, [node, event]);\n return;\n }\n if (listeners.has(event.name)) {\n listeners.get(event.name).forEach((wrapper) => {\n if (event.origin === node || wrapper.modifiers.includes(\"deep\")) {\n wrapper.listener(event);\n }\n });\n }\n if (event.bubble) {\n node.bubble(event);\n }\n };\n emitter.flush = () => {\n listeners.clear();\n receipts2.clear();\n buffer?.clear();\n };\n emitter.on = (eventName, listener, pos = \"push\") => {\n const [event, ...modifiers] = eventName.split(\".\");\n const receipt = listener.receipt || token();\n const wrapper = {\n modifiers,\n event,\n listener,\n receipt\n };\n listeners.has(event) ? listeners.get(event)[pos](wrapper) : listeners.set(event, [wrapper]);\n receipts2.has(receipt) ? receipts2.get(receipt)[pos](event) : receipts2.set(receipt, [event]);\n return receipt;\n };\n emitter.off = (receipt) => {\n if (receipts2.has(receipt)) {\n receipts2.get(receipt)?.forEach((event) => {\n const eventListeners = listeners.get(event);\n if (Array.isArray(eventListeners)) {\n listeners.set(\n event,\n eventListeners.filter((wrapper) => wrapper.receipt !== receipt)\n );\n }\n });\n receipts2.delete(receipt);\n }\n };\n emitter.pause = (node) => {\n if (!buffer)\n buffer = /* @__PURE__ */ new Map();\n if (node) {\n node.walk((child) => child._e.pause());\n }\n };\n emitter.play = (node) => {\n if (!buffer)\n return;\n const events = buffer;\n buffer = void 0;\n events.forEach(([node2, event]) => emitter(node2, event));\n if (node) {\n node.walk((child) => child._e.play());\n }\n };\n return emitter;\n}\nfunction emit(node, context, name, payload, bubble2 = true, meta) {\n context._e(node, {\n payload,\n name,\n bubble: bubble2,\n origin: node,\n meta\n });\n return node;\n}\nfunction bubble(node, _context, event) {\n if (isNode(node.parent)) {\n node.parent._e(node.parent, event);\n }\n return node;\n}\nfunction on(_node, context, name, listener, pos) {\n return context._e.on(name, listener, pos);\n}\nfunction off(node, context, receipt) {\n context._e.off(receipt);\n return node;\n}\n\n// packages/core/src/errors.ts\nvar errorHandler = createDispatcher();\nerrorHandler((error2, next) => {\n if (!error2.message)\n error2.message = String(`E${error2.code}`);\n return next(error2);\n});\nvar warningHandler = createDispatcher();\nwarningHandler((warning, next) => {\n if (!warning.message)\n warning.message = String(`W${warning.code}`);\n const result = next(warning);\n if (console && typeof console.warn === \"function\")\n console.warn(result.message);\n return result;\n});\nfunction warn(code, data = {}) {\n warningHandler.dispatch({ code, data });\n}\nfunction error(code, data = {}) {\n throw Error(errorHandler.dispatch({ code, data }).message);\n}\nfunction createMessage(conf, node) {\n const m = {\n blocking: false,\n key: token(),\n meta: {},\n type: \"state\",\n visible: true,\n ...conf\n };\n if (node && m.value && m.meta.localize !== false) {\n m.value = node.t(m);\n m.meta.locale = node.config.locale;\n }\n return m;\n}\nvar storeTraps = {\n apply: applyMessages,\n set: setMessage,\n remove: removeMessage,\n filter: filterMessages,\n reduce: reduceMessages,\n release: releaseBuffer,\n touch: touchMessages\n};\nfunction createStore(_buffer = false) {\n const messages = {};\n let node;\n let buffer = _buffer;\n let _b = [];\n const _m = /* @__PURE__ */ new Map();\n let _r = void 0;\n const store = new Proxy(messages, {\n get(...args) {\n const [_target, property] = args;\n if (property === \"buffer\")\n return buffer;\n if (property === \"_b\")\n return _b;\n if (property === \"_m\")\n return _m;\n if (property === \"_r\")\n return _r;\n if (has(storeTraps, property)) {\n return storeTraps[property].bind(\n null,\n messages,\n store,\n node\n );\n }\n return Reflect.get(...args);\n },\n set(_t, prop, value) {\n if (prop === \"_n\") {\n node = value;\n if (_r === \"__n\")\n releaseMissed(node, store);\n return true;\n } else if (prop === \"_b\") {\n _b = value;\n return true;\n } else if (prop === \"buffer\") {\n buffer = value;\n return true;\n } else if (prop === \"_r\") {\n _r = value;\n return true;\n }\n error(101, node);\n return false;\n }\n });\n return store;\n}\nfunction setMessage(messageStore, store, node, message) {\n if (store.buffer) {\n store._b.push([[message]]);\n return store;\n }\n if (messageStore[message.key] !== message) {\n if (typeof message.value === \"string\" && message.meta.localize !== false) {\n const previous = message.value;\n message.value = node.t(message);\n if (message.value !== previous) {\n message.meta.locale = node.props.locale;\n }\n }\n const e = `message-${has(messageStore, message.key) ? \"updated\" : \"added\"}`;\n messageStore[message.key] = Object.freeze(\n node.hook.message.dispatch(message)\n );\n node.emit(e, message);\n }\n return store;\n}\nfunction touchMessages(messageStore, store) {\n for (const key in messageStore) {\n const message = { ...messageStore[key] };\n store.set(message);\n }\n}\nfunction removeMessage(messageStore, store, node, key) {\n if (has(messageStore, key)) {\n const message = messageStore[key];\n delete messageStore[key];\n node.emit(\"message-removed\", message);\n }\n if (store.buffer === true) {\n store._b = store._b.filter((buffered) => {\n buffered[0] = buffered[0].filter((m) => m.key !== key);\n return buffered[1] || buffered[0].length;\n });\n }\n return store;\n}\nfunction filterMessages(messageStore, store, node, callback, type) {\n for (const key in messageStore) {\n const message = messageStore[key];\n if ((!type || message.type === type) && !callback(message)) {\n removeMessage(messageStore, store, node, key);\n }\n }\n}\nfunction reduceMessages(messageStore, _store, _node, reducer, accumulator) {\n for (const key in messageStore) {\n const message = messageStore[key];\n accumulator = reducer(accumulator, message);\n }\n return accumulator;\n}\nfunction applyMessages(_messageStore, store, node, messages, clear) {\n if (Array.isArray(messages)) {\n if (store.buffer) {\n store._b.push([messages, clear]);\n return;\n }\n const applied = new Set(\n messages.map((message) => {\n store.set(message);\n return message.key;\n })\n );\n if (typeof clear === \"string\") {\n store.filter(\n (message) => message.type !== clear || applied.has(message.key)\n );\n } else if (typeof clear === \"function\") {\n store.filter((message) => !clear(message) || applied.has(message.key));\n }\n } else {\n for (const address in messages) {\n const child = node.at(address);\n if (child) {\n child.store.apply(messages[address], clear);\n } else {\n missed(node, store, address, messages[address], clear);\n }\n }\n }\n}\nfunction createMessages(node, ...errors) {\n const sourceKey = `${node.name}-set`;\n const make = (error2) => /* @__PURE__ */ createMessage({\n key: slugify(error2),\n type: \"error\",\n value: error2,\n meta: { source: sourceKey, autoClear: true }\n });\n return errors.filter((m) => !!m).map((errorSet) => {\n if (typeof errorSet === \"string\")\n errorSet = [errorSet];\n if (Array.isArray(errorSet)) {\n return errorSet.map((error2) => make(error2));\n } else {\n const errors2 = {};\n for (const key in errorSet) {\n if (Array.isArray(errorSet[key])) {\n errors2[key] = errorSet[key].map(\n (error2) => make(error2)\n );\n } else {\n errors2[key] = [make(errorSet[key])];\n }\n }\n return errors2;\n }\n });\n}\nfunction missed(node, store, address, messages, clear) {\n const misses = store._m;\n if (!misses.has(address))\n misses.set(address, []);\n if (!store._r)\n store._r = releaseMissed(node, store);\n misses.get(address)?.push([messages, clear]);\n}\nfunction releaseMissed(node, store) {\n return node.on(\n \"child.deep\",\n ({ payload: child }) => {\n store._m.forEach((misses, address) => {\n if (node.at(address) === child) {\n misses.forEach(([messages, clear]) => {\n child.store.apply(messages, clear);\n });\n store._m.delete(address);\n }\n });\n if (store._m.size === 0 && store._r) {\n node.off(store._r);\n store._r = void 0;\n }\n }\n );\n}\nfunction releaseBuffer(_messageStore, store) {\n store.buffer = false;\n store._b.forEach(([messages, clear]) => store.apply(messages, clear));\n store._b = [];\n}\nfunction createLedger() {\n const ledger = {};\n let n;\n return {\n count: (...args) => createCounter(n, ledger, ...args),\n init(node) {\n n = node;\n node.on(\"message-added.deep\", add(ledger, 1));\n node.on(\"message-removed.deep\", add(ledger, -1));\n },\n merge: (child) => merge(n, ledger, child),\n settled(counterName) {\n return has(ledger, counterName) ? ledger[counterName].promise : Promise.resolve();\n },\n unmerge: (child) => merge(n, ledger, child, true),\n value(counterName) {\n return has(ledger, counterName) ? ledger[counterName].count : 0;\n }\n };\n}\nfunction createCounter(node, ledger, counterName, condition, increment = 0) {\n condition = parseCondition(condition || counterName);\n if (!has(ledger, counterName)) {\n const counter = {\n condition,\n count: 0,\n name: counterName,\n node,\n promise: Promise.resolve(),\n resolve: () => {\n }\n // eslint-disable-line @typescript-eslint/no-empty-function\n };\n ledger[counterName] = counter;\n increment = node.store.reduce(\n (sum, m) => sum + counter.condition(m) * 1,\n increment\n );\n node.each((child) => {\n child.ledger.count(counter.name, counter.condition);\n increment += child.ledger.value(counter.name);\n });\n }\n return count(ledger[counterName], increment).promise;\n}\nfunction parseCondition(condition) {\n if (typeof condition === \"function\") {\n return condition;\n }\n return (m) => m.type === condition;\n}\nfunction count(counter, increment) {\n const initial = counter.count;\n const post = counter.count + increment;\n counter.count = post;\n if (initial === 0 && post !== 0) {\n counter.node.emit(`unsettled:${counter.name}`, counter.count, false);\n counter.promise = new Promise((r) => counter.resolve = r);\n } else if (initial !== 0 && post === 0) {\n counter.node.emit(`settled:${counter.name}`, counter.count, false);\n counter.resolve();\n }\n counter.node.emit(`count:${counter.name}`, counter.count, false);\n return counter;\n}\nfunction add(ledger, delta) {\n return (e) => {\n for (const name in ledger) {\n const counter = ledger[name];\n if (counter.condition(e.payload)) {\n count(counter, delta);\n }\n }\n };\n}\nfunction merge(parent, ledger, child, remove = false) {\n const originalParent = parent;\n for (const key in ledger) {\n const condition = ledger[key].condition;\n if (!remove)\n child.ledger.count(key, condition);\n const increment = child.ledger.value(key) * (remove ? -1 : 1);\n if (!parent)\n continue;\n do {\n parent.ledger.count(key, condition, increment);\n parent = parent.parent;\n } while (parent);\n parent = originalParent;\n }\n}\n\n// packages/core/src/registry.ts\nvar registry = /* @__PURE__ */ new Map();\nvar reflected = /* @__PURE__ */ new Map();\nvar emit2 = createEmitter();\nvar receipts = [];\nfunction register(node) {\n if (node.props.id) {\n registry.set(node.props.id, node);\n reflected.set(node, node.props.id);\n emit2(node, {\n payload: node,\n name: node.props.id,\n bubble: false,\n origin: node\n });\n }\n}\nfunction deregister(node) {\n if (reflected.has(node)) {\n const id = reflected.get(node);\n reflected.delete(node);\n registry.delete(id);\n emit2(node, {\n payload: null,\n name: id,\n bubble: false,\n origin: node\n });\n }\n}\nfunction getNode(id) {\n return registry.get(id);\n}\nfunction resetRegistry() {\n registry.forEach((node) => {\n deregister(node);\n });\n receipts.forEach((receipt) => emit2.off(receipt));\n}\nfunction watchRegistry(id, callback) {\n const receipt = emit2.on(id, callback);\n receipts.push(receipt);\n return receipt;\n}\nfunction stopWatch(receipt) {\n emit2.off(receipt);\n}\n\n// packages/core/src/config.ts\nfunction configChange(node, prop, value) {\n let usingFallback = true;\n !(prop in node.config._t) ? node.emit(`config:${prop}`, value, false) : usingFallback = false;\n if (!(prop in node.props)) {\n node.emit(\"prop\", { prop, value });\n node.emit(`prop:${prop}`, value);\n }\n return usingFallback;\n}\nfunction createConfig(options = {}) {\n const nodes = /* @__PURE__ */ new Set();\n const target = {\n ...options,\n ...{\n _add: (node) => nodes.add(node),\n _rm: (node) => nodes.delete(node)\n }\n };\n const rootConfig = new Proxy(target, {\n set(t, prop, value, r) {\n if (typeof prop === \"string\") {\n nodes.forEach((node) => configChange(node, prop, value));\n }\n return Reflect.set(t, prop, value, r);\n }\n });\n return rootConfig;\n}\n\n// packages/core/src/submitForm.ts\nfunction submitForm(id, root) {\n const formElement = (root || document).getElementById(id);\n if (formElement instanceof HTMLFormElement) {\n const event = new Event(\"submit\", { cancelable: true, bubbles: true });\n formElement.dispatchEvent(event);\n return;\n }\n warn(151, id);\n}\nfunction clearState(node) {\n const clear = (n) => {\n for (const key in n.store) {\n const message = n.store[key];\n if (message.type === \"error\" || message.type === \"ui\" && key === \"incomplete\") {\n n.store.remove(key);\n } else if (message.type === \"state\") {\n n.store.set({ ...message, value: false });\n }\n }\n };\n clear(node);\n node.walk(clear);\n}\nfunction reset(id, resetTo) {\n const node = typeof id === \"string\" ? getNode(id) : id;\n if (node) {\n const initial = (n) => cloneAny(n.props.initial) || (n.type === \"group\" ? {} : n.type === \"list\" ? [] : void 0);\n node._e.pause(node);\n const resetValue2 = cloneAny(resetTo);\n if (resetTo && !empty(resetTo)) {\n node.props.initial = isObject(resetValue2) ? init(resetValue2) : resetValue2;\n node.props._init = node.props.initial;\n }\n node.input(initial(node), false);\n node.walk((child) => {\n if (child.type === \"list\" && child.sync)\n return;\n child.input(initial(child), false);\n });\n node.input(\n empty(resetValue2) && resetValue2 ? resetValue2 : initial(node),\n false\n );\n const isDeepReset = node.type !== \"input\" && resetTo && !empty(resetTo) && isObject(resetTo);\n if (isDeepReset) {\n node.walk((child) => {\n child.props.initial = isObject(child.value) ? init(child.value) : child.value;\n child.props._init = child.props.initial;\n });\n }\n node._e.play(node);\n clearState(node);\n node.emit(\"reset\", node);\n return node;\n }\n warn(152, id);\n return;\n}\n\n// packages/core/src/node.ts\nvar defaultConfig = {\n delimiter: \".\",\n delay: 0,\n locale: \"en\",\n rootClasses: (key) => ({ [`formkit-${kebab(key)}`]: true })\n};\nvar useIndex = Symbol(\"index\");\nvar valueRemoved = Symbol(\"removed\");\nvar valueMoved = Symbol(\"moved\");\nvar valueInserted = Symbol(\"inserted\");\nfunction isList(arg) {\n return arg.type === \"list\" && Array.isArray(arg._value);\n}\nfunction isNode(node) {\n return node && typeof node === \"object\" && node.__FKNode__ === true;\n}\nvar invalidSetter = (node, _context, property) => {\n error(102, [node, property]);\n};\nvar traps = {\n _c: trap(getContext, invalidSetter, false),\n add: trap(addChild),\n addProps: trap(addProps),\n address: trap(getAddress, invalidSetter, false),\n at: trap(getNode2),\n bubble: trap(bubble),\n clearErrors: trap(clearErrors),\n calm: trap(calm),\n config: trap(false),\n define: trap(define),\n disturb: trap(disturb),\n destroy: trap(destroy),\n extend: trap(extend),\n hydrate: trap(hydrate),\n index: trap(getIndex, setIndex, false),\n input: trap(input),\n each: trap(eachChild),\n emit: trap(emit),\n find: trap(find),\n on: trap(on),\n off: trap(off),\n parent: trap(false, setParent),\n plugins: trap(false),\n remove: trap(removeChild),\n root: trap(getRoot, invalidSetter, false),\n reset: trap(resetValue),\n resetConfig: trap(resetConfig),\n setErrors: trap(setErrors),\n submit: trap(submit),\n t: trap(text),\n use: trap(use),\n name: trap(getName, false, false),\n walk: trap(walkTree)\n};\nfunction createTraps() {\n return new Map(Object.entries(traps));\n}\nfunction trap(getter, setter, curryGetter = true) {\n return {\n get: getter ? (node, context) => curryGetter ? (...args) => getter(node, context, ...args) : getter(node, context) : false,\n set: setter !== void 0 ? setter : invalidSetter.bind(null)\n };\n}\nfunction createHooks() {\n const hooks = /* @__PURE__ */ new Map();\n return new Proxy(hooks, {\n get(_, property) {\n if (!hooks.has(property)) {\n hooks.set(property, createDispatcher());\n }\n return hooks.get(property);\n }\n });\n}\nvar nameCount = 0;\nvar idCount = 0;\nfunction resetCount() {\n nameCount = 0;\n idCount = 0;\n}\nfunction names(children) {\n return children.reduce(\n (named, child) => Object.assign(named, { [child.name]: child }),\n {}\n );\n}\nfunction createName(options) {\n if (options.parent?.type === \"list\")\n return useIndex;\n return options.name || `${options.props?.type || \"input\"}_${++nameCount}`;\n}\nfunction createValue(options) {\n if (options.type === \"group\") {\n return init(\n options.value && typeof options.value === \"object\" && !Array.isArray(options.value) ? options.value : {}\n );\n } else if (options.type === \"list\") {\n return init(Array.isArray(options.value) ? options.value : []);\n }\n return options.value;\n}\nfunction input(node, context, value, async = true) {\n context._value = validateInput(node, node.hook.input.dispatch(value));\n node.emit(\"input\", context._value);\n if (node.isCreated && node.type === \"input\" && eq(context._value, context.value) && !node.props.mergeStrategy) {\n node.emit(\"commitRaw\", context.value);\n return context.settled;\n }\n if (context.isSettled)\n node.disturb();\n if (async) {\n if (context._tmo)\n clearTimeout(context._tmo);\n context._tmo = setTimeout(\n commit,\n node.props.delay,\n node,\n context\n );\n } else {\n commit(node, context);\n }\n return context.settled;\n}\nfunction validateInput(node, value) {\n switch (node.type) {\n case \"input\":\n break;\n case \"group\":\n if (!value || typeof value !== \"object\")\n error(107, [node, value]);\n break;\n case \"list\":\n if (!Array.isArray(value))\n error(108, [node, value]);\n break;\n }\n return value;\n}\nfunction commit(node, context, calm2 = true, hydrate2 = true) {\n context._value = context.value = node.hook.commit.dispatch(context._value);\n if (node.type !== \"input\" && hydrate2)\n node.hydrate();\n node.emit(\"commitRaw\", context.value);\n node.emit(\"commit\", context.value);\n if (calm2)\n node.calm();\n}\nfunction partial(context, { name, value, from }) {\n if (Object.isFrozen(context._value))\n return;\n if (isList(context)) {\n const insert = value === valueRemoved ? [] : value === valueMoved && typeof from === \"number\" ? context._value.splice(from, 1) : [value];\n context._value.splice(\n name,\n value === valueMoved || from === valueInserted ? 0 : 1,\n ...insert\n );\n return;\n }\n if (value !== valueRemoved) {\n context._value[name] = value;\n } else {\n delete context._value[name];\n }\n}\nfunction hydrate(node, context) {\n const _value = context._value;\n if (node.type === \"list\" && node.sync)\n syncListNodes(node, context);\n context.children.forEach((child) => {\n if (typeof _value !== \"object\")\n return;\n if (child.name in _value) {\n const childValue = child.type !== \"input\" || _value[child.name] && typeof _value[child.name] === \"object\" ? init(_value[child.name]) : _value[child.name];\n if (!child.isSettled || (!isObject(childValue) || child.props.mergeStrategy) && eq(childValue, child._value))\n return;\n child.input(childValue, false);\n } else {\n if (node.type !== \"list\" || typeof child.name === \"number\") {\n partial(context, { name: child.name, value: child.value });\n }\n if (!_value.__init) {\n if (child.type === \"group\")\n child.input({}, false);\n else if (child.type === \"list\")\n child.input([], false);\n else\n child.input(void 0, false);\n }\n }\n });\n return node;\n}\nfunction syncListNodes(node, context) {\n const _value = node._value;\n if (!Array.isArray(_value))\n return;\n const newChildren = [];\n const unused = new Set(context.children);\n const placeholderValues = /* @__PURE__ */ new Map();\n _value.forEach((value, i) => {\n if (context.children[i] && context.children[i]._value === value) {\n newChildren.push(context.children[i]);\n unused.delete(context.children[i]);\n } else {\n newChildren.push(null);\n const indexes = placeholderValues.get(value) || [];\n indexes.push(i);\n placeholderValues.set(value, indexes);\n }\n });\n if (unused.size && placeholderValues.size) {\n unused.forEach((child) => {\n if (placeholderValues.has(child._value)) {\n const indexes = placeholderValues.get(child._value);\n const index = indexes.shift();\n newChildren[index] = child;\n unused.delete(child);\n if (!indexes.length)\n placeholderValues.delete(child._value);\n }\n });\n }\n const emptyIndexes = [];\n placeholderValues.forEach((indexes) => {\n emptyIndexes.push(...indexes);\n });\n while (unused.size && emptyIndexes.length) {\n const child = unused.values().next().value;\n const index = emptyIndexes.shift();\n if (index === void 0)\n break;\n newChildren[index] = child;\n unused.delete(child);\n }\n emptyIndexes.forEach((index, value) => {\n newChildren[index] = createPlaceholder({ value });\n });\n if (unused.size) {\n unused.forEach((child) => {\n if (!(\"__FKP\" in child)) {\n const parent = child._c.parent;\n if (!parent || isPlaceholder(parent))\n return;\n parent.ledger.unmerge(child);\n child._c.parent = null;\n child.destroy();\n }\n });\n }\n context.children = newChildren;\n}\nfunction disturb(node, context) {\n if (context._d <= 0) {\n context.isSettled = false;\n node.emit(\"settled\", false, false);\n context.settled = new Promise((resolve) => {\n context._resolve = resolve;\n });\n if (node.parent)\n node.parent?.disturb();\n }\n context._d++;\n return node;\n}\nfunction calm(node, context, value) {\n if (value !== void 0 && node.type !== \"input\") {\n partial(context, value);\n const shouldHydrate = !!(node.config.mergeStrategy && node.config.mergeStrategy[value.name]);\n return commit(node, context, true, shouldHydrate);\n }\n if (context._d > 0)\n context._d--;\n if (context._d === 0) {\n context.isSettled = true;\n node.emit(\"settled\", true, false);\n if (node.parent)\n node.parent?.calm({ name: node.name, value: context.value });\n if (context._resolve)\n context._resolve(context.value);\n }\n}\nfunction destroy(node, context) {\n node.emit(\"destroying\", node);\n node.store.filter(() => false);\n if (node.parent) {\n node.parent.remove(node);\n }\n deregister(node);\n node.emit(\"destroyed\", node);\n context._e.flush();\n context._value = context.value = void 0;\n for (const property in context.context) {\n delete context.context[property];\n }\n context.plugins.clear();\n context.context = null;\n}\nfunction define(node, context, definition) {\n context.type = definition.type;\n const clonedDef = clone(definition);\n node.props.__propDefs = mergeProps(\n node.props.__propDefs ?? [],\n clonedDef?.props || []\n );\n clonedDef.props = node.props.__propDefs;\n context.props.definition = clonedDef;\n context.value = context._value = createValue({\n type: node.type,\n value: context.value\n });\n if (definition.forceTypeProp) {\n if (node.props.type)\n node.props.originalType = node.props.type;\n context.props.type = definition.forceTypeProp;\n }\n if (definition.family) {\n context.props.family = definition.family;\n }\n if (definition.features) {\n definition.features.forEach((feature) => feature(node));\n }\n if (definition.props) {\n node.addProps(definition.props);\n }\n node.emit(\"defined\", definition);\n}\nfunction addProps(node, context, props) {\n const propNames = Array.isArray(props) ? props : Object.keys(props);\n const defaults = !Array.isArray(props) ? propNames.reduce((defaults2, name) => {\n if (\"default\" in props[name]) {\n defaults2[name] = props[name].default;\n }\n return defaults2;\n }, {}) : {};\n if (node.props.attrs) {\n const attrs = { ...node.props.attrs };\n node.props._emit = false;\n for (const attr in attrs) {\n const camelName = camel(attr);\n if (propNames.includes(camelName)) {\n node.props[camelName] = attrs[attr];\n delete attrs[attr];\n }\n }\n if (!Array.isArray(props)) {\n propNames.forEach((prop) => {\n if (\"default\" in props[prop] && node.props[prop] === void 0) {\n node.props[prop] = defaults[prop];\n }\n });\n }\n const initial = cloneAny(context._value);\n node.props.initial = node.type !== \"input\" ? init(initial) : initial;\n node.props._emit = true;\n node.props.attrs = attrs;\n }\n const mergedProps = mergeProps(node.props.__propDefs ?? [], props);\n if (node.props.definition) {\n node.props.definition.props = mergedProps;\n }\n node.props.__propDefs = mergedProps;\n node.emit(\"added-props\", props);\n return node;\n}\nfunction toPropsObj(props) {\n return !Array.isArray(props) ? props : props.reduce((props2, prop) => {\n props2[prop] = {};\n return props2;\n }, {});\n}\nfunction mergeProps(props, newProps) {\n if (Array.isArray(props) && Array.isArray(newProps))\n return props.concat(newProps);\n return extend$1(toPropsObj(props), toPropsObj(newProps));\n}\nfunction addChild(parent, parentContext, child, listIndex) {\n if (parent.type === \"input\")\n error(100, parent);\n if (child.parent && child.parent !== parent) {\n child.parent.remove(child);\n }\n if (!parentContext.children.includes(child)) {\n if (listIndex !== void 0 && parent.type === \"list\") {\n const existingNode = parentContext.children[listIndex];\n if (existingNode && \"__FKP\" in existingNode) {\n child._c.uid = existingNode.uid;\n parentContext.children.splice(listIndex, 1, child);\n } else {\n parentContext.children.splice(listIndex, 0, child);\n }\n if (Array.isArray(parent.value) && parent.value.length < parentContext.children.length) {\n parent.disturb().calm({\n name: listIndex,\n value: child.value,\n from: valueInserted\n });\n }\n } else {\n parentContext.children.push(child);\n }\n if (!child.isSettled)\n parent.disturb();\n }\n if (child.parent !== parent) {\n child.parent = parent;\n if (child.parent !== parent) {\n parent.remove(child);\n child.parent.add(child);\n return parent;\n }\n } else {\n child.use(parent.plugins);\n }\n commit(parent, parentContext, false);\n parent.ledger.merge(child);\n parent.emit(\"child\", child);\n return parent;\n}\nfunction setParent(child, context, _property, parent) {\n if (isNode(parent)) {\n if (child.parent && child.parent !== parent) {\n child.parent.remove(child);\n }\n context.parent = parent;\n child.resetConfig();\n !parent.children.includes(child) ? parent.add(child) : child.use(parent.plugins);\n return true;\n }\n if (parent === null) {\n context.parent = null;\n return true;\n }\n return false;\n}\nfunction removeChild(node, context, child) {\n const childIndex = context.children.indexOf(child);\n if (childIndex !== -1) {\n if (child.isSettled)\n node.disturb();\n context.children.splice(childIndex, 1);\n let preserve = undefine(child.props.preserve);\n let parent = child.parent;\n while (preserve === void 0 && parent) {\n preserve = undefine(parent.props.preserve);\n parent = parent.parent;\n }\n if (!preserve) {\n node.calm({\n name: node.type === \"list\" ? childIndex : child.name,\n value: valueRemoved\n });\n } else {\n node.calm();\n }\n child.parent = null;\n child.config._rmn = child;\n }\n node.ledger.unmerge(child);\n node.emit(\"childRemoved\", child);\n return node;\n}\nfunction eachChild(_node, context, callback) {\n context.children.forEach((child) => !(\"__FKP\" in child) && callback(child));\n}\nfunction walkTree(_node, context, callback, stopIfFalse = false, skipSubtreeOnFalse = false) {\n context.children.some((child) => {\n if (\"__FKP\" in child)\n return false;\n const val = callback(child);\n if (stopIfFalse && val === false)\n return true;\n if (skipSubtreeOnFalse && val === false)\n return false;\n return child.walk(callback, stopIfFalse, skipSubtreeOnFalse);\n });\n}\nfunction resetConfig(node, context) {\n const parent = node.parent || void 0;\n context.config = createConfig2(node.config._t, parent);\n node.walk((n) => n.resetConfig());\n}\nfunction use(node, context, plugin, run = true, library = true) {\n if (Array.isArray(plugin) || plugin instanceof Set) {\n plugin.forEach((p) => use(node, context, p));\n return node;\n }\n if (!context.plugins.has(plugin)) {\n if (library && typeof plugin.library === \"function\")\n plugin.library(node);\n if (run && plugin(node) !== false) {\n context.plugins.add(plugin);\n node.children.forEach((child) => child.use(plugin));\n }\n }\n return node;\n}\nfunction setIndex(node, _context, _property, setIndex2) {\n if (isNode(node.parent)) {\n const children = node.parent.children;\n const index = setIndex2 >= children.length ? children.length - 1 : setIndex2 < 0 ? 0 : setIndex2;\n const oldIndex = children.indexOf(node);\n if (oldIndex === -1)\n return false;\n children.splice(oldIndex, 1);\n children.splice(index, 0, node);\n node.parent.children = children;\n if (node.parent.type === \"list\")\n node.parent.disturb().calm({ name: index, value: valueMoved, from: oldIndex });\n return true;\n }\n return false;\n}\nfunction getIndex(node) {\n if (node.parent) {\n const index = [...node.parent.children].indexOf(node);\n return index === -1 ? node.parent.children.length : index;\n }\n return -1;\n}\nfunction getContext(_node, context) {\n return context;\n}\nfunction getName(node, context) {\n if (node.parent?.type === \"list\")\n return node.index;\n return context.name !== useIndex ? context.name : node.index;\n}\nfunction getAddress(node, context) {\n return context.parent ? context.parent.address.concat([node.name]) : [node.name];\n}\nfunction getNode2(node, _context, locator) {\n const address = typeof locator === \"string\" ? locator.split(node.config.delimiter) : locator;\n if (!address.length)\n return void 0;\n const first = address[0];\n let pointer = node.parent;\n if (!pointer) {\n if (String(address[0]) === String(node.name))\n address.shift();\n pointer = node;\n }\n if (first === \"$parent\")\n address.shift();\n while (pointer && address.length) {\n const name = address.shift();\n switch (name) {\n case \"$root\":\n pointer = node.root;\n break;\n case \"$parent\":\n pointer = pointer.parent;\n break;\n case \"$self\":\n pointer = node;\n break;\n default:\n pointer = pointer.children.find(\n (c) => !(\"__FKP\" in c) && String(c.name) === String(name)\n ) || select(pointer, name);\n }\n }\n return pointer || void 0;\n}\nfunction select(node, selector) {\n const matches = String(selector).match(/^(find)\\((.*)\\)$/);\n if (matches) {\n const [, action, argStr] = matches;\n const args = argStr.split(\",\").map((arg) => arg.trim());\n switch (action) {\n case \"find\":\n return node.find(args[0], args[1]);\n default:\n return void 0;\n }\n }\n return void 0;\n}\nfunction find(node, _context, searchTerm, searcher) {\n return bfs(node, searchTerm, searcher);\n}\nfunction bfs(tree, searchValue, searchGoal = \"name\") {\n const search = typeof searchGoal === \"string\" ? (n) => n[searchGoal] == searchValue : searchGoal;\n const stack = [tree];\n while (stack.length) {\n const node = stack.shift();\n if (\"__FKP\" in node)\n continue;\n if (search(node, searchValue))\n return node;\n stack.push(...node.children);\n }\n return void 0;\n}\nfunction getRoot(n) {\n let node = n;\n while (node.parent) {\n node = node.parent;\n }\n return node;\n}\nfunction createConfig2(target = {}, parent) {\n let node = void 0;\n return new Proxy(target, {\n get(...args) {\n const prop = args[1];\n if (prop === \"_t\")\n return target;\n const localValue = Reflect.get(...args);\n if (localValue !== void 0)\n return localValue;\n if (parent) {\n const parentVal = parent.config[prop];\n if (parentVal !== void 0)\n return parentVal;\n }\n if (target.rootConfig && typeof prop === \"string\") {\n const rootValue = target.rootConfig[prop];\n if (rootValue !== void 0)\n return rootValue;\n }\n if (prop === \"delay\" && node?.type === \"input\")\n return 20;\n return defaultConfig[prop];\n },\n set(...args) {\n const prop = args[1];\n const value = args[2];\n if (prop === \"_n\") {\n node = value;\n if (target.rootConfig)\n target.rootConfig._add(node);\n return true;\n }\n if (prop === \"_rmn\") {\n if (target.rootConfig)\n target.rootConfig._rm(node);\n node = void 0;\n return true;\n }\n if (!eq(target[prop], value, false)) {\n const didSet = Reflect.set(...args);\n if (node) {\n node.emit(`config:${prop}`, value, false);\n configChange(node, prop, value);\n node.walk((n) => configChange(n, prop, value), false, true);\n }\n return didSet;\n }\n return true;\n }\n });\n}\nfunction text(node, _context, key, type = \"ui\") {\n const fragment = typeof key === \"string\" ? { key, value: key, type } : key;\n const value = node.hook.text.dispatch(fragment);\n node.emit(\"text\", value, false);\n return value.value;\n}\nfunction submit(node) {\n const name = node.name;\n do {\n if (node.props.isForm === true)\n break;\n if (!node.parent)\n error(106, name);\n node = node.parent;\n } while (node);\n if (node.props.id) {\n submitForm(node.props.id, node.props.__root);\n }\n}\nfunction resetValue(node, _context, value) {\n return reset(node, value);\n}\nfunction setErrors(node, _context, localErrors, childErrors) {\n const sourceKey = `${node.name}-set`;\n const errors = node.hook.setErrors.dispatch({ localErrors, childErrors });\n createMessages(node, errors.localErrors, errors.childErrors).forEach(\n (errors2) => {\n node.store.apply(errors2, (message) => message.meta.source === sourceKey);\n }\n );\n return node;\n}\nfunction clearErrors(node, _context, clearChildErrors = true, sourceKey) {\n node.store.filter((m) => {\n return !(sourceKey === void 0 || m.meta.source === sourceKey);\n }, \"error\");\n if (clearChildErrors) {\n sourceKey = sourceKey || `${node.name}-set`;\n node.walk((child) => {\n child.store.filter((message) => {\n return !(message.type === \"error\" && message.meta && message.meta.source === sourceKey);\n });\n });\n }\n return node;\n}\nfunction createProps(initial) {\n const props = {\n initial: typeof initial === \"object\" ? cloneAny(initial) : initial\n };\n let node;\n let isEmitting = true;\n let propDefs = {};\n return new Proxy(props, {\n get(...args) {\n const [_t, prop] = args;\n let val;\n if (has(props, prop)) {\n val = Reflect.get(...args);\n if (propDefs[prop]?.boolean)\n val = boolGetter(val);\n } else if (node && typeof prop === \"string\" && node.config[prop] !== void 0) {\n val = node.config[prop];\n if (prop === \"mergeStrategy\" && node?.type === \"input\" && isRecord(val) && node.name in val) {\n val = val[node.name];\n }\n } else {\n val = propDefs[prop]?.default;\n }\n const getter = propDefs[prop]?.getter;\n if (propDefs[prop]?.boolean)\n val = !!val;\n return getter ? getter(val, node) : val;\n },\n set(target, property, originalValue, receiver) {\n if (property === \"_n\") {\n node = originalValue;\n return true;\n }\n if (property === \"_emit\") {\n isEmitting = originalValue;\n return true;\n }\n let { prop, value } = node.hook.prop.dispatch({\n prop: property,\n value: originalValue\n });\n const setter = propDefs[prop]?.setter;\n value = setter ? setter(value, node) : value;\n if (!eq(props[prop], value, false) || typeof value === \"object\") {\n const didSet = Reflect.set(target, prop, value, receiver);\n if (prop === \"__propDefs\")\n propDefs = toPropsObj(value);\n if (isEmitting) {\n node.emit(\"prop\", { prop, value });\n if (typeof prop === \"string\")\n node.emit(`prop:${prop}`, value);\n }\n return didSet;\n }\n return true;\n }\n });\n}\nfunction extend(node, context, property, trap2) {\n context.traps.set(property, trap2);\n return node;\n}\nfunction findDefinition(node, plugins) {\n if (node.props.definition)\n return node.define(node.props.definition);\n for (const plugin of plugins) {\n if (node.props.definition)\n return;\n if (typeof plugin.library === \"function\") {\n plugin.library(node);\n }\n }\n}\nfunction createContext(options) {\n const value = createValue(options);\n const config = createConfig2(options.config || {}, options.parent);\n return {\n _d: 0,\n _e: createEmitter(),\n uid: Symbol(),\n _resolve: false,\n _tmo: false,\n _value: value,\n children: dedupe(options.children || []),\n config,\n hook: createHooks(),\n isCreated: false,\n isSettled: true,\n ledger: createLedger(),\n name: createName(options),\n parent: options.parent || null,\n plugins: /* @__PURE__ */ new Set(),\n props: createProps(value),\n settled: Promise.resolve(value),\n store: createStore(true),\n sync: options.sync || false,\n traps: createTraps(),\n type: options.type || \"input\",\n value\n };\n}\nfunction nodeInit(node, options) {\n const hasInitialId = options.props?.id;\n if (!hasInitialId)\n delete options.props?.id;\n node.ledger.init(node.store._n = node.props._n = node.config._n = node);\n node.props._emit = false;\n Object.assign(\n node.props,\n hasInitialId ? {} : { id: `input_${idCount++}` },\n options.props ?? {}\n );\n node.props._emit = true;\n findDefinition(\n node,\n /* @__PURE__ */ new Set([\n ...options.plugins || [],\n ...node.parent ? node.parent.plugins : []\n ])\n );\n if (options.plugins) {\n for (const plugin of options.plugins) {\n use(node, node._c, plugin, true, false);\n }\n }\n node.each((child) => node.add(child));\n if (node.parent)\n node.parent.add(node, options.index);\n if (node.type === \"input\" && node.children.length)\n error(100, node);\n input(node, node._c, node._value, false);\n node.store.release();\n if (hasInitialId)\n register(node);\n node.emit(\"created\", node);\n node.isCreated = true;\n return node;\n}\nfunction createPlaceholder(options) {\n return {\n __FKP: true,\n uid: Symbol(),\n name: options?.name ?? `p_${nameCount++}`,\n value: options?.value ?? null,\n _value: options?.value ?? null,\n type: options?.type ?? \"input\",\n props: {},\n use: () => {\n },\n input(value) {\n this._value = value;\n this.value = value;\n return Promise.resolve();\n },\n isSettled: true\n };\n}\nfunction isPlaceholder(node) {\n return \"__FKP\" in node;\n}\nfunction createNode(options) {\n const ops = options || {};\n const context = createContext(ops);\n const node = new Proxy(context, {\n get(...args) {\n const [, property] = args;\n if (property === \"__FKNode__\")\n return true;\n const trap2 = context.traps.get(property);\n if (trap2 && trap2.get)\n return trap2.get(node, context);\n return Reflect.get(...args);\n },\n set(...args) {\n const [, property, value] = args;\n const trap2 = context.traps.get(property);\n if (trap2 && trap2.set)\n return trap2.set(node, context, property, value);\n return Reflect.set(...args);\n }\n });\n return nodeInit(node, ops);\n}\nfunction isDOM(node) {\n return typeof node !== \"string\" && has(node, \"$el\");\n}\nfunction isComponent(node) {\n return typeof node !== \"string\" && has(node, \"$cmp\");\n}\nfunction isConditional(node) {\n if (!node || typeof node === \"string\")\n return false;\n return has(node, \"if\") && has(node, \"then\");\n}\nfunction isSugar(node) {\n return typeof node !== \"string\" && \"$formkit\" in node;\n}\nfunction sugar(node) {\n if (typeof node === \"string\") {\n return {\n $el: \"text\",\n children: node\n };\n }\n if (isSugar(node)) {\n const {\n $formkit: type,\n for: iterator,\n if: condition,\n children,\n bind,\n ...props\n } = node;\n return Object.assign(\n {\n $cmp: \"FormKit\",\n props: { ...props, type }\n },\n condition ? { if: condition } : {},\n iterator ? { for: iterator } : {},\n children ? { children } : {},\n bind ? { bind } : {}\n );\n }\n return node;\n}\nfunction compile(expr) {\n let provideTokens;\n const requirements = /* @__PURE__ */ new Set();\n const x = function expand(operand, tokens) {\n return typeof operand === \"function\" ? operand(tokens) : operand;\n };\n const operatorRegistry = [\n {\n \"&&\": (l, r, t) => x(l, t) && x(r, t),\n \"||\": (l, r, t) => x(l, t) || x(r, t)\n },\n {\n \"===\": (l, r, t) => !!(x(l, t) === x(r, t)),\n \"!==\": (l, r, t) => !!(x(l, t) !== x(r, t)),\n \"==\": (l, r, t) => !!(x(l, t) == x(r, t)),\n \"!=\": (l, r, t) => !!(x(l, t) != x(r, t)),\n \">=\": (l, r, t) => !!(x(l, t) >= x(r, t)),\n \"<=\": (l, r, t) => !!(x(l, t) <= x(r, t)),\n \">\": (l, r, t) => !!(x(l, t) > x(r, t)),\n \"<\": (l, r, t) => !!(x(l, t) < x(r, t))\n },\n {\n \"+\": (l, r, t) => x(l, t) + x(r, t),\n \"-\": (l, r, t) => x(l, t) - x(r, t)\n },\n {\n \"*\": (l, r, t) => x(l, t) * x(r, t),\n \"/\": (l, r, t) => x(l, t) / x(r, t),\n \"%\": (l, r, t) => x(l, t) % x(r, t)\n }\n ];\n const operatorSymbols = operatorRegistry.reduce((s, g) => {\n return s.concat(Object.keys(g));\n }, []);\n const operatorChars = new Set(operatorSymbols.map((key) => key.charAt(0)));\n function getOp(symbols, char, p, expression) {\n const candidates = symbols.filter((s) => s.startsWith(char));\n if (!candidates.length)\n return false;\n return candidates.find((symbol) => {\n if (expression.length >= p + symbol.length) {\n const nextChars = expression.substring(p, p + symbol.length);\n if (nextChars === symbol)\n return symbol;\n }\n return false;\n });\n }\n function getStep(p, expression, direction = 1) {\n let next = direction ? expression.substring(p + 1).trim() : expression.substring(0, p).trim();\n if (!next.length)\n return -1;\n if (!direction) {\n const reversed = next.split(\"\").reverse();\n const start = reversed.findIndex((char2) => operatorChars.has(char2));\n next = reversed.slice(start).join(\"\");\n }\n const char = next[0];\n return operatorRegistry.findIndex((operators) => {\n const symbols = Object.keys(operators);\n return !!getOp(symbols, char, 0, next);\n });\n }\n function getTail(pos, expression) {\n let tail = \"\";\n const length = expression.length;\n let depth = 0;\n for (let p = pos; p < length; p++) {\n const char = expression.charAt(p);\n if (char === \"(\") {\n depth++;\n } else if (char === \")\") {\n depth--;\n } else if (depth === 0 && char === \" \") {\n continue;\n }\n if (depth === 0 && getOp(operatorSymbols, char, p, expression)) {\n return [tail, p - 1];\n } else {\n tail += char;\n }\n }\n return [tail, expression.length - 1];\n }\n function parseLogicals(expression, step = 0) {\n const operators = operatorRegistry[step];\n const length = expression.length;\n const symbols = Object.keys(operators);\n let depth = 0;\n let quote = false;\n let op = null;\n let operand = \"\";\n let left = null;\n let operation;\n let lastChar = \"\";\n let char = \"\";\n let parenthetical = \"\";\n let parenQuote = \"\";\n let startP = 0;\n const addTo = (depth2, char2) => {\n depth2 ? parenthetical += char2 : operand += char2;\n };\n for (let p = 0; p < length; p++) {\n lastChar = char;\n char = expression.charAt(p);\n if ((char === \"'\" || char === '\"') && lastChar !== \"\\\\\" && (depth === 0 && !quote || depth && !parenQuote)) {\n if (depth) {\n parenQuote = char;\n } else {\n quote = char;\n }\n addTo(depth, char);\n continue;\n } else if (quote && (char !== quote || lastChar === \"\\\\\") || parenQuote && (char !== parenQuote || lastChar === \"\\\\\")) {\n addTo(depth, char);\n continue;\n } else if (quote === char) {\n quote = false;\n addTo(depth, char);\n continue;\n } else if (parenQuote === char) {\n parenQuote = false;\n addTo(depth, char);\n continue;\n } else if (char === \" \") {\n continue;\n } else if (char === \"(\") {\n if (depth === 0) {\n startP = p;\n } else {\n parenthetical += char;\n }\n depth++;\n } else if (char === \")\") {\n depth--;\n if (depth === 0) {\n const fn = typeof operand === \"string\" && operand.startsWith(\"$\") ? operand : void 0;\n const hasTail = fn && expression.charAt(p + 1) === \".\";\n let tail = \"\";\n if (hasTail) {\n [tail, p] = getTail(p + 2, expression);\n }\n const lStep = op ? step : getStep(startP, expression, 0);\n const rStep = getStep(p, expression);\n if (lStep === -1 && rStep === -1) {\n operand = evaluate(parenthetical, -1, fn, tail);\n if (typeof operand === \"string\")\n operand = parenthetical;\n } else if (op && (lStep >= rStep || rStep === -1) && step === lStep) {\n left = op.bind(null, evaluate(parenthetical, -1, fn, tail));\n op = null;\n operand = \"\";\n } else if (rStep > lStep && step === rStep) {\n operand = evaluate(parenthetical, -1, fn, tail);\n } else {\n operand += `(${parenthetical})${hasTail ? `.${tail}` : \"\"}`;\n }\n parenthetical = \"\";\n } else {\n parenthetical += char;\n }\n } else if (depth === 0 && (operation = getOp(symbols, char, p, expression))) {\n if (p === 0) {\n error(103, [operation, expression]);\n }\n p += operation.length - 1;\n if (p === expression.length - 1) {\n error(104, [operation, expression]);\n }\n if (!op) {\n if (left) {\n op = operators[operation].bind(null, evaluate(left, step));\n left = null;\n } else {\n op = operators[operation].bind(null, evaluate(operand, step));\n operand = \"\";\n }\n } else if (operand) {\n left = op.bind(null, evaluate(operand, step));\n op = operators[operation].bind(null, left);\n operand = \"\";\n }\n continue;\n } else {\n addTo(depth, char);\n }\n }\n if (operand && op) {\n op = op.bind(null, evaluate(operand, step));\n }\n op = !op && left ? left : op;\n if (!op && operand) {\n op = (v, t) => {\n return typeof v === \"function\" ? v(t) : v;\n };\n op = op.bind(null, evaluate(operand, step));\n }\n if (!op && !operand) {\n error(105, expression);\n }\n return op;\n }\n function evaluate(operand, step, fnToken, tail) {\n if (fnToken) {\n const fn = evaluate(fnToken, operatorRegistry.length);\n let userFuncReturn;\n let tailCall = tail ? compile(`$${tail}`) : false;\n if (typeof fn === \"function\") {\n const args = parseArgs(String(operand)).map(\n (arg) => evaluate(arg, -1)\n );\n return (tokens) => {\n const userFunc = fn(tokens);\n if (typeof userFunc !== \"function\") {\n warn(150, fnToken);\n return userFunc;\n }\n userFuncReturn = userFunc(\n ...args.map(\n (arg) => typeof arg === \"function\" ? arg(tokens) : arg\n )\n );\n if (tailCall) {\n tailCall = tailCall.provide((subTokens) => {\n const rootTokens = provideTokens(subTokens);\n const t = subTokens.reduce(\n (tokenSet, token3) => {\n const isTail = token3 === tail || tail?.startsWith(`${token3}(`);\n if (isTail) {\n const value = getAt(userFuncReturn, token3);\n tokenSet[token3] = () => value;\n } else {\n tokenSet[token3] = rootTokens[token3];\n }\n return tokenSet;\n },\n {}\n );\n return t;\n });\n }\n return tailCall ? tailCall() : userFuncReturn;\n };\n }\n } else if (typeof operand === \"string\") {\n if (operand === \"true\")\n return true;\n if (operand === \"false\")\n return false;\n if (operand === \"undefined\")\n return void 0;\n if (isQuotedString(operand))\n return rmEscapes(operand.substring(1, operand.length - 1));\n if (!isNaN(+operand))\n return Number(operand);\n if (step < operatorRegistry.length - 1) {\n return parseLogicals(operand, step + 1);\n } else {\n if (operand.startsWith(\"$\")) {\n const cleaned = operand.substring(1);\n requirements.add(cleaned);\n return function getToken(tokens) {\n return cleaned in tokens ? tokens[cleaned]() : void 0;\n };\n }\n return operand;\n }\n }\n return operand;\n }\n const compiled = parseLogicals(\n expr.startsWith(\"$:\") ? expr.substring(2) : expr\n );\n const reqs = Array.from(requirements);\n function provide(callback) {\n provideTokens = callback;\n return Object.assign(\n // @ts-ignore - @rollup/plugin-typescript doesn't like this\n compiled.bind(null, callback(reqs)),\n { provide }\n );\n }\n return Object.assign(compiled, {\n provide\n });\n}\n\n// packages/core/src/classes.ts\nfunction createClasses(propertyKey, node, sectionClassList) {\n if (!sectionClassList)\n return {};\n if (typeof sectionClassList === \"string\") {\n const classKeys = sectionClassList.split(\" \");\n return classKeys.reduce(\n (obj, key) => Object.assign(obj, { [key]: true }),\n {}\n );\n } else if (typeof sectionClassList === \"function\") {\n return createClasses(\n propertyKey,\n node,\n sectionClassList(node, propertyKey)\n );\n }\n return sectionClassList;\n}\nfunction generateClassList(node, property, ...args) {\n const combinedClassList = args.reduce((finalClassList, currentClassList) => {\n if (!currentClassList)\n return handleNegativeClasses(finalClassList);\n const { $reset, ...classList } = currentClassList;\n if ($reset) {\n return handleNegativeClasses(classList);\n }\n return handleNegativeClasses(Object.assign(finalClassList, classList));\n }, {});\n return Object.keys(\n node.hook.classes.dispatch({ property, classes: combinedClassList }).classes\n ).filter((key) => combinedClassList[key]).join(\" \") || null;\n}\nfunction handleNegativeClasses(classList) {\n const removalToken = \"$remove:\";\n let hasNegativeClassValue = false;\n const applicableClasses = Object.keys(classList).filter((className) => {\n if (classList[className] && className.startsWith(removalToken)) {\n hasNegativeClassValue = true;\n }\n return classList[className];\n });\n if (applicableClasses.length > 1 && hasNegativeClassValue) {\n const negativeClasses = applicableClasses.filter((className) => className.startsWith(removalToken));\n negativeClasses.map((negativeClass) => {\n const targetClass = negativeClass.substring(removalToken.length);\n classList[targetClass] = false;\n classList[negativeClass] = false;\n });\n }\n return classList;\n}\n\n// packages/core/src/setErrors.ts\nfunction setErrors2(id, localErrors, childErrors) {\n const node = getNode(id);\n if (node) {\n node.setErrors(localErrors, childErrors);\n } else {\n warn(651, id);\n }\n}\nfunction clearErrors2(id, clearChildren = true) {\n const node = getNode(id);\n if (node) {\n node.clearErrors(clearChildren);\n } else {\n warn(652, id);\n }\n}\n\n// packages/core/src/index.ts\nvar FORMKIT_VERSION = \"1.6.7\";\n\nexport { FORMKIT_VERSION, bfs, clearErrors2 as clearErrors, compile, createClasses, createConfig, createMessage, createNode, createPlaceholder, createValue, deregister, error, errorHandler, generateClassList, getNode, isComponent, isConditional, isDOM, isList, isNode, isPlaceholder, isSugar, names, register, reset, resetCount, resetRegistry, setErrors2 as setErrors, stopWatch, submitForm, sugar, use, useIndex, valueInserted, valueMoved, valueRemoved, warn, warningHandler, watchRegistry };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { has } from '@formkit/utils';\nimport { isNode } from '@formkit/core';\n\n// packages/observer/src/index.ts\nvar revokedObservers = /* @__PURE__ */ new WeakSet();\nfunction createObserver(node, dependencies) {\n const deps = dependencies || Object.assign(/* @__PURE__ */ new Map(), { active: false });\n const receipts = /* @__PURE__ */ new Map();\n const addDependency = function(event) {\n if (!deps.active)\n return;\n if (!deps.has(node))\n deps.set(node, /* @__PURE__ */ new Set());\n deps.get(node)?.add(event);\n };\n const observeProps = function(props) {\n return new Proxy(props, {\n get(...args) {\n typeof args[1] === \"string\" && addDependency(`prop:${args[1]}`);\n return Reflect.get(...args);\n }\n });\n };\n const observeLedger = function(ledger) {\n return new Proxy(ledger, {\n get(...args) {\n if (args[1] === \"value\") {\n return (key) => {\n addDependency(`count:${key}`);\n return ledger.value(key);\n };\n }\n return Reflect.get(...args);\n }\n });\n };\n const observe = function(value, property) {\n if (isNode(value)) {\n return createObserver(value, deps);\n }\n if (property === \"value\")\n addDependency(\"commit\");\n if (property === \"_value\")\n addDependency(\"input\");\n if (property === \"props\")\n return observeProps(value);\n if (property === \"ledger\")\n return observeLedger(value);\n if (property === \"children\") {\n addDependency(\"child\");\n addDependency(\"childRemoved\");\n }\n return value;\n };\n const {\n proxy: observed,\n revoke\n } = Proxy.revocable(node, {\n get(...args) {\n switch (args[1]) {\n case \"_node\":\n return node;\n case \"deps\":\n return deps;\n case \"watch\":\n return (block, after, pos) => watch(observed, block, after, pos);\n case \"observe\":\n return () => {\n const old = new Map(deps);\n deps.clear();\n deps.active = true;\n return old;\n };\n case \"stopObserve\":\n return () => {\n const newDeps = new Map(deps);\n deps.active = false;\n return newDeps;\n };\n case \"receipts\":\n return receipts;\n case \"kill\":\n return () => {\n removeListeners(receipts);\n revokedObservers.add(args[2]);\n revoke();\n return void 0;\n };\n }\n const value = Reflect.get(...args);\n if (typeof value === \"function\") {\n return (...subArgs) => {\n const subValue = value(...subArgs);\n return observe(subValue, args[1]);\n };\n }\n return observe(value, args[1]);\n }\n });\n return observed;\n}\nfunction applyListeners(node, [toAdd, toRemove], callback, pos) {\n toAdd.forEach((events, depNode) => {\n events.forEach((event) => {\n node.receipts.has(depNode) || node.receipts.set(depNode, {});\n const events2 = node.receipts.get(depNode) ?? {};\n events2[event] = events2[event] ?? [];\n events2[event].push(depNode.on(event, callback, pos));\n node.receipts.set(depNode, events2);\n });\n });\n toRemove.forEach((events, depNode) => {\n events.forEach((event) => {\n if (node.receipts.has(depNode)) {\n const nodeReceipts = node.receipts.get(depNode);\n if (nodeReceipts && has(nodeReceipts, event)) {\n nodeReceipts[event].map(depNode.off);\n delete nodeReceipts[event];\n node.receipts.set(depNode, nodeReceipts);\n }\n }\n });\n });\n}\nfunction removeListeners(receipts) {\n receipts.forEach((events, node) => {\n for (const event in events) {\n events[event].map(node.off);\n }\n });\n receipts.clear();\n}\nfunction watch(node, block, after, pos) {\n const doAfterObservation = (res2) => {\n const newDeps = node.stopObserve();\n applyListeners(\n node,\n diffDeps(oldDeps, newDeps),\n () => watch(node, block, after, pos),\n pos\n );\n if (after)\n after(res2);\n };\n const oldDeps = new Map(node.deps);\n node.observe();\n const res = block(node);\n if (res instanceof Promise)\n res.then((val) => doAfterObservation(val));\n else\n doAfterObservation(res);\n}\nfunction diffDeps(previous, current) {\n const toAdd = /* @__PURE__ */ new Map();\n const toRemove = /* @__PURE__ */ new Map();\n current.forEach((events, node) => {\n if (!previous.has(node)) {\n toAdd.set(node, events);\n } else {\n const eventsToAdd = /* @__PURE__ */ new Set();\n const previousEvents = previous.get(node);\n events.forEach(\n (event) => !previousEvents?.has(event) && eventsToAdd.add(event)\n );\n toAdd.set(node, eventsToAdd);\n }\n });\n previous.forEach((events, node) => {\n if (!current.has(node)) {\n toRemove.set(node, events);\n } else {\n const eventsToRemove = /* @__PURE__ */ new Set();\n const newEvents = current.get(node);\n events.forEach(\n (event) => !newEvents?.has(event) && eventsToRemove.add(event)\n );\n toRemove.set(node, eventsToRemove);\n }\n });\n return [toAdd, toRemove];\n}\nfunction isKilled(node) {\n return revokedObservers.has(node);\n}\n\nexport { applyListeners, createObserver, diffDeps, isKilled, removeListeners };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { has, regexForFormat, eq, empty } from '@formkit/utils';\n\n// packages/rules/src/accepted.ts\nvar accepted = function accepted2({ value }) {\n return [\"yes\", \"on\", \"1\", 1, true, \"true\"].includes(value);\n};\naccepted.skipEmpty = false;\nvar accepted_default = accepted;\n\n// packages/rules/src/date_after.ts\nvar date_after = function({ value }, compare = false) {\n const timestamp = Date.parse(compare || /* @__PURE__ */ new Date());\n const fieldValue = Date.parse(String(value));\n return isNaN(fieldValue) ? false : fieldValue > timestamp;\n};\nvar date_after_default = date_after;\n\n// packages/rules/src/date_after_or_equal.ts\nvar date_after_or_equal = function({ value }, compare = false) {\n const timestamp = Date.parse(compare || /* @__PURE__ */ new Date());\n const fieldValue = Date.parse(String(value));\n return isNaN(fieldValue) ? false : fieldValue > timestamp || fieldValue === timestamp;\n};\nvar date_after_or_equal_default = date_after_or_equal;\n\n// packages/rules/src/date_after_node.ts\nvar date_after_node = function(node, address) {\n if (!address)\n return false;\n const fieldValue = Date.parse(String(node.value));\n const foreignValue = Date.parse(String(node.at(address)?.value));\n if (isNaN(foreignValue))\n return true;\n return isNaN(fieldValue) ? false : fieldValue > foreignValue;\n};\nvar date_after_node_default = date_after_node;\nvar alpha = function({ value }, set = \"default\") {\n const sets = {\n default: /^\\p{L}+$/u,\n latin: /^[a-z]+$/i\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar alpha_default = alpha;\nvar alpha_spaces = function({ value }, set = \"default\") {\n const sets = {\n default: /^[\\p{L} ]+$/u,\n latin: /^[a-z ]+$/i\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar alpha_spaces_default = alpha_spaces;\nvar alphanumeric = function({ value }, set = \"default\") {\n const sets = {\n default: /^[0-9\\p{L}]+$/u,\n latin: /^[0-9a-z]+$/i\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar alphanumeric_default = alphanumeric;\n\n// packages/rules/src/date_before.ts\nvar date_before = function({ value }, compare = false) {\n const timestamp = Date.parse(compare || /* @__PURE__ */ new Date());\n const fieldValue = Date.parse(String(value));\n return isNaN(fieldValue) ? false : fieldValue < timestamp;\n};\nvar date_before_default = date_before;\n\n// packages/rules/src/date_before_node.ts\nvar date_before_node = function(node, address) {\n if (!address)\n return false;\n const fieldValue = Date.parse(String(node.value));\n const foreignValue = Date.parse(String(node.at(address)?.value));\n if (isNaN(foreignValue))\n return true;\n return isNaN(fieldValue) ? false : fieldValue < foreignValue;\n};\nvar date_before_node_default = date_before_node;\n\n// packages/rules/src/date_before_or_equal.ts\nvar date_before_or_equal = function({ value }, compare = false) {\n const timestamp = Date.parse(compare || /* @__PURE__ */ new Date());\n const fieldValue = Date.parse(String(value));\n return isNaN(fieldValue) ? false : fieldValue < timestamp || fieldValue === timestamp;\n};\nvar date_before_or_equal_default = date_before_or_equal;\n\n// packages/rules/src/between.ts\nvar between = function between2({ value }, from, to) {\n if (!isNaN(value) && !isNaN(from) && !isNaN(to)) {\n const val = 1 * value;\n from = Number(from);\n to = Number(to);\n const [a, b] = from <= to ? [from, to] : [to, from];\n return val >= 1 * a && val <= 1 * b;\n }\n return false;\n};\nvar between_default = between;\n\n// packages/rules/src/confirm.ts\nvar hasConfirm = /(_confirm(?:ed)?)$/;\nvar confirm = function confirm2(node, address, comparison = \"loose\") {\n if (!address) {\n address = hasConfirm.test(node.name) ? node.name.replace(hasConfirm, \"\") : `${node.name}_confirm`;\n }\n const foreignValue = node.at(address)?.value;\n return comparison === \"strict\" ? node.value === foreignValue : node.value == foreignValue;\n};\nvar confirm_default = confirm;\nvar contains_alpha = function({ value }, set = \"default\") {\n const sets = {\n default: /\\p{L}/u,\n latin: /[a-z]/i\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar contains_alpha_default = contains_alpha;\nvar contains_alpha_spaces = function({ value }, set = \"default\") {\n const sets = {\n default: /[\\p{L} ]/u,\n latin: /[a-z ]/i\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar contains_alpha_spaces_default = contains_alpha_spaces;\nvar contains_alphanumeric = function({ value }, set = \"default\") {\n const sets = {\n default: /[0-9\\p{L}]/u,\n latin: /[0-9a-z]/i\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar contains_alphanumeric_default = contains_alphanumeric;\nvar contains_lowercase = function({ value }, set = \"default\") {\n const sets = {\n default: /\\p{Ll}/u,\n latin: /[a-z]/\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar contains_lowercase_default = contains_lowercase;\n\n// packages/rules/src/contains_numeric.ts\nvar contains_numeric = function number({ value }) {\n return /[0-9]/.test(String(value));\n};\nvar contains_numeric_default = contains_numeric;\n\n// packages/rules/src/contains_symbol.ts\nvar contains_symbol = function({ value }) {\n return /[!-/:-@[-`{-~]/.test(String(value));\n};\nvar contains_symbol_default = contains_symbol;\nvar contains_uppercase = function({ value }, set = \"default\") {\n const sets = {\n default: /\\p{Lu}/u,\n latin: /[A-Z]/\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar contains_uppercase_default = contains_uppercase;\n\n// packages/rules/src/date_between.ts\nvar date_between = function date_between2({ value }, dateA, dateB) {\n dateA = dateA instanceof Date ? dateA.getTime() : Date.parse(dateA);\n dateB = dateB instanceof Date ? dateB.getTime() : Date.parse(dateB);\n const compareTo = value instanceof Date ? value.getTime() : Date.parse(String(value));\n if (dateA && !dateB) {\n dateB = dateA;\n dateA = Date.now();\n } else if (!dateA || !compareTo) {\n return false;\n }\n return compareTo >= dateA && compareTo <= dateB;\n};\nvar date_between_default = date_between;\nvar date_format = function date({ value }, format) {\n if (format && typeof format === \"string\") {\n return regexForFormat(format).test(String(value));\n }\n return !isNaN(Date.parse(String(value)));\n};\nvar date_format_default = date_format;\n\n// packages/rules/src/email.ts\nvar email = function email2({ value }) {\n const isEmail = /^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\n return isEmail.test(String(value));\n};\nvar email_default = email;\n\n// packages/rules/src/ends_with.ts\nvar ends_with = function ends_with2({ value }, ...stack) {\n if (typeof value === \"string\" && stack.length) {\n return stack.some((item) => {\n return value.endsWith(item);\n });\n } else if (typeof value === \"string\" && stack.length === 0) {\n return true;\n }\n return false;\n};\nvar ends_with_default = ends_with;\nvar is = function is2({ value }, ...stack) {\n return stack.some((item) => {\n if (typeof item === \"object\") {\n return eq(item, value);\n }\n return item == value;\n });\n};\nvar is_default = is;\n\n// packages/rules/src/length.ts\nvar length = function length2({ value }, first = 0, second = Infinity) {\n first = parseInt(first);\n second = isNaN(parseInt(second)) ? Infinity : parseInt(second);\n const min3 = first <= second ? first : second;\n const max3 = second >= first ? second : first;\n if (typeof value === \"string\" || Array.isArray(value)) {\n return value.length >= min3 && value.length <= max3;\n } else if (value && typeof value === \"object\") {\n const length3 = Object.keys(value).length;\n return length3 >= min3 && length3 <= max3;\n }\n return false;\n};\nvar length_default = length;\nvar lowercase = function({ value }, set = \"default\") {\n const sets = {\n default: /^\\p{Ll}+$/u,\n allow_non_alpha: /^[0-9\\p{Ll}!-/:-@[-`{-~]+$/u,\n allow_numeric: /^[0-9\\p{Ll}]+$/u,\n allow_numeric_dashes: /^[0-9\\p{Ll}-]+$/u,\n latin: /^[a-z]+$/\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar lowercase_default = lowercase;\n\n// packages/rules/src/matches.ts\nvar matches = function matches2({ value }, ...stack) {\n return stack.some((pattern) => {\n if (typeof pattern === \"string\" && pattern.substr(0, 1) === \"/\" && pattern.substr(-1) === \"/\") {\n pattern = new RegExp(pattern.substr(1, pattern.length - 2));\n }\n if (pattern instanceof RegExp) {\n return pattern.test(String(value));\n }\n return pattern === value;\n });\n};\nvar matches_default = matches;\n\n// packages/rules/src/max.ts\nvar max = function max2({ value }, maximum = 10) {\n if (Array.isArray(value)) {\n return value.length <= maximum;\n }\n return Number(value) <= Number(maximum);\n};\nvar max_default = max;\n\n// packages/rules/src/min.ts\nvar min = function min2({ value }, minimum = 1) {\n if (Array.isArray(value)) {\n return value.length >= minimum;\n }\n return Number(value) >= Number(minimum);\n};\nvar min_default = min;\nvar not = function not2({ value }, ...stack) {\n return !stack.some((item) => {\n if (typeof item === \"object\") {\n return eq(item, value);\n }\n return item === value;\n });\n};\nvar not_default = not;\n\n// packages/rules/src/number.ts\nvar number2 = function number3({ value }) {\n return !isNaN(value);\n};\nvar number_default = number2;\nvar require_one = function(node, ...inputNames) {\n if (!empty(node.value))\n return true;\n const values = inputNames.map((name) => node.at(name)?.value);\n return values.some((value) => !empty(value));\n};\nrequire_one.skipEmpty = false;\nvar require_one_default = require_one;\nvar required = function required2({ value }, action = \"default\") {\n return action === \"trim\" && typeof value === \"string\" ? !empty(value.trim()) : !empty(value);\n};\nrequired.skipEmpty = false;\nvar required_default = required;\n\n// packages/rules/src/starts_with.ts\nvar starts_with = function starts_with2({ value }, ...stack) {\n if (typeof value === \"string\" && stack.length) {\n return stack.some((item) => {\n return value.startsWith(item);\n });\n } else if (typeof value === \"string\" && stack.length === 0) {\n return true;\n }\n return false;\n};\nvar starts_with_default = starts_with;\n\n// packages/rules/src/symbol.ts\nvar symbol = function({ value }) {\n return /^[!-/:-@[-`{-~]+$/.test(String(value));\n};\nvar symbol_default = symbol;\nvar uppercase = function({ value }, set = \"default\") {\n const sets = {\n default: /^\\p{Lu}+$/u,\n latin: /^[A-Z]+$/\n };\n const selectedSet = has(sets, set) ? set : \"default\";\n return sets[selectedSet].test(String(value));\n};\nvar uppercase_default = uppercase;\n\n// packages/rules/src/url.ts\nvar url = function url2({ value }, ...stack) {\n try {\n const protocols = stack.length ? stack : [\"http:\", \"https:\"];\n const url3 = new URL(String(value));\n return protocols.includes(url3.protocol);\n } catch {\n return false;\n }\n};\nvar url_default = url;\n\nexport { accepted_default as accepted, alpha_default as alpha, alpha_spaces_default as alpha_spaces, alphanumeric_default as alphanumeric, between_default as between, confirm_default as confirm, contains_alpha_default as contains_alpha, contains_alpha_spaces_default as contains_alpha_spaces, contains_alphanumeric_default as contains_alphanumeric, contains_lowercase_default as contains_lowercase, contains_numeric_default as contains_numeric, contains_symbol_default as contains_symbol, contains_uppercase_default as contains_uppercase, date_after_default as date_after, date_after_node_default as date_after_node, date_after_or_equal_default as date_after_or_equal, date_before_default as date_before, date_before_node_default as date_before_node, date_before_or_equal_default as date_before_or_equal, date_between_default as date_between, date_format_default as date_format, email_default as email, ends_with_default as ends_with, is_default as is, length_default as length, lowercase_default as lowercase, matches_default as matches, max_default as max, min_default as min, not_default as not, number_default as number, require_one_default as require_one, required_default as required, starts_with_default as starts_with, symbol_default as symbol, uppercase_default as uppercase, url_default as url };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { createMessage } from '@formkit/core';\nimport { removeListeners, isKilled, createObserver, diffDeps, applyListeners } from '@formkit/observer';\nimport { cloneAny, token, eq, empty, has, clone } from '@formkit/utils';\n\n// packages/validation/src/validation.ts\nvar validatingMessage = /* @__PURE__ */ createMessage({\n type: \"state\",\n blocking: true,\n visible: false,\n value: true,\n key: \"validating\"\n});\nfunction createValidationPlugin(baseRules = {}) {\n return function validationPlugin(node) {\n let propRules = cloneAny(node.props.validationRules || {});\n let availableRules = { ...baseRules, ...propRules };\n const state = { input: token(), rerun: null, isPassing: true };\n let validation = cloneAny(node.props.validation);\n node.on(\"prop:validation\", ({ payload }) => reboot(payload, propRules));\n node.on(\n \"prop:validationRules\",\n ({ payload }) => reboot(validation, payload)\n );\n function reboot(newValidation, newRules) {\n if (eq(Object.keys(propRules || {}), Object.keys(newRules || {})) && eq(validation, newValidation))\n return;\n propRules = cloneAny(newRules);\n validation = cloneAny(newValidation);\n availableRules = { ...baseRules, ...propRules };\n node.props.parsedRules?.forEach((validation2) => {\n removeMessage(validation2);\n removeListeners(validation2.observer.receipts);\n validation2.observer.kill();\n });\n node.store.filter(() => false, \"validation\");\n node.props.parsedRules = parseRules(newValidation, availableRules, node);\n state.isPassing = true;\n validate(node, node.props.parsedRules, state);\n }\n node.props.parsedRules = parseRules(validation, availableRules, node);\n validate(node, node.props.parsedRules, state);\n };\n}\nfunction validate(node, validations, state) {\n if (isKilled(node))\n return;\n state.input = token();\n node.store.set(\n /* @__PURE__ */ createMessage({\n key: \"failing\",\n value: !state.isPassing,\n visible: false\n })\n );\n state.isPassing = true;\n node.store.filter((message) => !message.meta.removeImmediately, \"validation\");\n validations.forEach(\n (validation) => validation.debounce && clearTimeout(validation.timer)\n );\n if (validations.length) {\n node.store.set(validatingMessage);\n run(0, validations, state, false, () => {\n node.store.remove(validatingMessage.key);\n node.store.set(\n /* @__PURE__ */ createMessage({\n key: \"failing\",\n value: !state.isPassing,\n visible: false\n })\n );\n });\n }\n}\nfunction run(current, validations, state, removeImmediately, complete) {\n const validation = validations[current];\n if (!validation)\n return complete();\n const node = validation.observer;\n if (isKilled(node))\n return;\n const currentRun = state.input;\n validation.state = null;\n function next(async, result) {\n if (state.input !== currentRun)\n return;\n state.isPassing = state.isPassing && !!result;\n validation.queued = false;\n const newDeps = node.stopObserve();\n const diff = diffDeps(validation.deps, newDeps);\n applyListeners(\n node,\n diff,\n function revalidate() {\n try {\n node.store.set(validatingMessage);\n } catch (e) {\n }\n validation.queued = true;\n if (state.rerun)\n clearTimeout(state.rerun);\n state.rerun = setTimeout(\n validate,\n 0,\n node,\n validations,\n state\n );\n },\n \"unshift\"\n // We want these listeners to run before other events are emitted so the 'state.validating' will be reliable.\n );\n validation.deps = newDeps;\n validation.state = result;\n if (result === false) {\n createFailedMessage(validation, removeImmediately || async);\n } else {\n removeMessage(validation);\n }\n if (validations.length > current + 1) {\n const nextValidation = validations[current + 1];\n if ((result || nextValidation.force || !nextValidation.skipEmpty) && nextValidation.state === null) {\n nextValidation.queued = true;\n }\n run(current + 1, validations, state, removeImmediately || async, complete);\n } else {\n complete();\n }\n }\n if ((!empty(node.value) || !validation.skipEmpty) && (state.isPassing || validation.force)) {\n if (validation.queued) {\n runRule(validation, node, (result) => {\n result instanceof Promise ? result.then((r) => next(true, r)) : next(false, result);\n });\n } else {\n run(current + 1, validations, state, removeImmediately, complete);\n }\n } else if (empty(node.value) && validation.skipEmpty && state.isPassing) {\n node.observe();\n node.value;\n next(false, state.isPassing);\n } else {\n next(false, null);\n }\n}\nfunction runRule(validation, node, after) {\n if (validation.debounce) {\n validation.timer = setTimeout(() => {\n node.observe();\n after(validation.rule(node, ...validation.args));\n }, validation.debounce);\n } else {\n node.observe();\n after(validation.rule(node, ...validation.args));\n }\n}\nfunction removeMessage(validation) {\n const key = `rule_${validation.name}`;\n if (validation.messageObserver) {\n validation.messageObserver = validation.messageObserver.kill();\n }\n if (has(validation.observer.store, key)) {\n validation.observer.store.remove(key);\n }\n}\nfunction createFailedMessage(validation, removeImmediately) {\n const node = validation.observer;\n if (isKilled(node))\n return;\n if (!validation.messageObserver) {\n validation.messageObserver = createObserver(node._node);\n }\n validation.messageObserver.watch(\n (node2) => {\n const i18nArgs = createI18nArgs(\n node2,\n validation\n );\n return i18nArgs;\n },\n (i18nArgs) => {\n const customMessage = createCustomMessage(node, validation, i18nArgs);\n const message = /* @__PURE__ */ createMessage({\n blocking: validation.blocking,\n key: `rule_${validation.name}`,\n meta: {\n /**\n * Use this key instead of the message root key to produce i18n validation\n * messages.\n */\n messageKey: validation.name,\n /**\n * For messages that were created *by or after* a debounced or async\n * validation rule — we make note of it so we can immediately remove them\n * as soon as the next commit happens.\n */\n removeImmediately,\n /**\n * Determines if this message should be passed to localization.\n */\n localize: !customMessage,\n /**\n * The arguments that will be passed to the validation rules\n */\n i18nArgs\n },\n type: \"validation\",\n value: customMessage || \"This field is not valid.\"\n });\n node.store.set(message);\n }\n );\n}\nfunction createCustomMessage(node, validation, i18nArgs) {\n const customMessage = node.props.validationMessages && has(node.props.validationMessages, validation.name) ? node.props.validationMessages[validation.name] : void 0;\n if (typeof customMessage === \"function\") {\n return customMessage(...i18nArgs);\n }\n return customMessage;\n}\nfunction createI18nArgs(node, validation) {\n return [\n {\n node,\n name: createMessageName(node),\n args: validation.args\n }\n ];\n}\nfunction createMessageName(node) {\n if (typeof node.props.validationLabel === \"function\") {\n return node.props.validationLabel(node);\n }\n return node.props.validationLabel || node.props.label || node.props.name || String(node.name);\n}\nvar hintPattern = \"(?:[\\\\*+?()0-9]+)\";\nvar rulePattern = \"[a-zA-Z][a-zA-Z0-9_]+\";\nvar ruleExtractor = new RegExp(\n `^(${hintPattern}?${rulePattern})(?:\\\\:(.*)+)?$`,\n \"i\"\n);\nvar hintExtractor = new RegExp(`^(${hintPattern})(${rulePattern})$`, \"i\");\nvar debounceExtractor = /([\\*+?]+)?(\\(\\d+\\))([\\*+?]+)?/;\nvar hasDebounce = /\\(\\d+\\)/;\nvar defaultHints = {\n blocking: true,\n debounce: 0,\n force: false,\n skipEmpty: true,\n name: \"\"\n};\nfunction parseRules(validation, rules, node) {\n if (!validation)\n return [];\n const intents = typeof validation === \"string\" ? extractRules(validation) : clone(validation);\n return intents.reduce((validations, args) => {\n let rule = args.shift();\n const hints = {};\n if (typeof rule === \"string\") {\n const [ruleName, parsedHints] = parseHints(rule);\n if (has(rules, ruleName)) {\n rule = rules[ruleName];\n Object.assign(hints, parsedHints);\n }\n }\n if (typeof rule === \"function\") {\n validations.push({\n observer: createObserver(node),\n rule,\n args,\n timer: 0,\n state: null,\n queued: true,\n deps: /* @__PURE__ */ new Map(),\n ...defaultHints,\n ...fnHints(hints, rule)\n });\n }\n return validations;\n }, []);\n}\nfunction extractRules(validation) {\n return validation.split(\"|\").reduce((rules, rule) => {\n const parsedRule = parseRule(rule);\n if (parsedRule) {\n rules.push(parsedRule);\n }\n return rules;\n }, []);\n}\nfunction parseRule(rule) {\n const trimmed = rule.trim();\n if (trimmed) {\n const matches = trimmed.match(ruleExtractor);\n if (matches && typeof matches[1] === \"string\") {\n const ruleName = matches[1].trim();\n const args = matches[2] && typeof matches[2] === \"string\" ? matches[2].split(\",\").map((s) => s.trim()) : [];\n return [ruleName, ...args];\n }\n }\n return false;\n}\nfunction parseHints(ruleName) {\n const matches = ruleName.match(hintExtractor);\n if (!matches) {\n return [ruleName, { name: ruleName }];\n }\n const map = {\n \"*\": { force: true },\n \"+\": { skipEmpty: false },\n \"?\": { blocking: false }\n };\n const [, hints, rule] = matches;\n const hintGroups = hasDebounce.test(hints) ? hints.match(debounceExtractor) || [] : [, hints];\n return [\n rule,\n [hintGroups[1], hintGroups[2], hintGroups[3]].reduce(\n (hints2, group) => {\n if (!group)\n return hints2;\n if (hasDebounce.test(group)) {\n hints2.debounce = parseInt(group.substr(1, group.length - 1));\n } else {\n group.split(\"\").forEach(\n (hint) => has(map, hint) && Object.assign(hints2, map[hint])\n );\n }\n return hints2;\n },\n { name: rule }\n )\n ];\n}\nfunction fnHints(existingHints, rule) {\n if (!existingHints.name) {\n existingHints.name = rule.ruleName || rule.name;\n }\n return [\"skipEmpty\", \"force\", \"debounce\", \"blocking\"].reduce(\n (hints, hint) => {\n if (has(rule, hint) && !has(hints, hint)) {\n Object.assign(hints, {\n [hint]: rule[hint]\n });\n }\n return hints;\n },\n existingHints\n );\n}\nfunction getValidationMessages(node) {\n const messages = /* @__PURE__ */ new Map();\n const extract = (n) => {\n const nodeMessages = [];\n for (const key in n.store) {\n const message = n.store[key];\n if (message.type === \"validation\" && message.visible && typeof message.value === \"string\") {\n nodeMessages.push(message);\n }\n }\n if (nodeMessages.length) {\n messages.set(n, nodeMessages);\n }\n return n;\n };\n extract(node).walk(extract);\n return messages;\n}\n\nexport { createMessageName, createValidationPlugin, getValidationMessages };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { createMessageName } from '@formkit/validation';\nimport { has } from '@formkit/utils';\n\n// packages/i18n/src/locales/ar.ts\n\n// packages/i18n/src/formatters.ts\nfunction sentence(str) {\n return str[0].toUpperCase() + str.substr(1);\n}\nfunction list(items, conjunction = \"or\") {\n return items.reduce((oxford, item, index) => {\n oxford += item;\n if (index <= items.length - 2 && items.length > 2) {\n oxford += \", \";\n }\n if (index === items.length - 2) {\n oxford += `${items.length === 2 ? \" \" : \"\"}${conjunction} `;\n }\n return oxford;\n }, \"\");\n}\nfunction date(date2) {\n const dateTime = typeof date2 === \"string\" ? new Date(Date.parse(date2)) : date2;\n if (!(dateTime instanceof Date)) {\n return \"(unknown)\";\n }\n return new Intl.DateTimeFormat(void 0, {\n dateStyle: \"medium\",\n timeZone: \"UTC\"\n }).format(dateTime);\n}\nfunction order(first, second) {\n return Number(first) >= Number(second) ? [second, first] : [first, second];\n}\n\n// packages/i18n/src/locales/ar.ts\nvar ui = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"إضافة\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"إزالة\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"إزالة الكل\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"عذرا، لم يتم تعبئة جميع الحقول بشكل صحيح.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"إرسال\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"لا يوجد ملف مختار\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"تحرك لأعلى\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"انتقل لأسفل\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"يتم الآن التحميل...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"تحميل المزيد\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"التالي\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"السابق\",\n /**\n * Shown when transferring items between lists.\n */\n addAllValues: \"أضف جميع القيم\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"إضافة قيم محددة\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"قم بإزالة جميع القيم\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"إزالة القيم المحددة\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"اختر التاريخ\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"تاريخ التغيير\",\n /**\n * Shown when there is something to close\n */\n close: \"أغلق\",\n /**\n * Shown when there is something to open.\n */\n open: \"افتح\"\n};\nvar validation = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `الرجاء قبول ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `يجب أن يكون ${sentence(name)} بعد ${date(args[0])}.`;\n }\n return `يجب أن يكون ${sentence(name)} في المستقبل.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `يمكن أن يحتوي ${sentence(name)} على أحرف أبجدية فقط.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `يمكن أن يحتوي ${sentence(name)} على أحرف وأرقام فقط.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `يمكن أن تحتوي ${sentence(name)} على أحرف ومسافات فقط.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `يجب أن يحتوي ${sentence(name)} على أحرف أبجدية.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `يجب أن يحتوي ${sentence(name)} على أحرف أو أرقام.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `يجب أن يحتوي ${sentence(name)} على أحرف أو مسافات.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `يجب أن يحتوي ${sentence(name)} على رمز.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `يجب أن يحتوي ${sentence(name)} على أحرف كبيرة.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `يجب أن يحتوي ${sentence(name)} على أحرف صغيرة.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `يجب أن يحتوي ${sentence(name)} على أرقام.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `يجب أن يكون ${sentence(name)} رمزًا.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `يمكن أن يحتوي ${sentence(name)} على أحرف كبيرة فقط.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `يمكن أن يحتوي ${sentence(name)} على أحرف صغيرة فقط.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `يجب أن يكون ${sentence(name)} قبل ${date(args[0])}.`;\n }\n return `يجب أن يكون ${sentence(name)} في الماضي.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `تمت تهيئة هذا الحقل بشكل غير صحيح ولا يمكن إرساله.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `يجب أن يكون ${sentence(name)} ما بين ${a} و ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} غير متطابق.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ليس تاريخًا صالحًا ، يرجى استخدام التنسيق ${args[0]}`;\n }\n return \"تمت تهيئة هذا الحقل بشكل غير صحيح ولا يمكن إرساله\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `يجب أن يكون ${sentence(name)} بين ${date(args[0])} و ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"الرجاء أدخال بريد إليكتروني صالح.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `لا ينتهي ${sentence(name)} بـ ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} ليست قيمة مسموح بها.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `يجب أن يكون ${sentence(name)} حرفًا واحدًا على الأقل.`;\n }\n if (min == 0 && max) {\n return `يجب أن يكون ${sentence(name)} أقل من أو يساوي ${max} حرفًا.`;\n }\n if (min === max) {\n return `يجب أن يتكون ${sentence(name)} من الأحرف ${max}.`;\n }\n if (min && max === Infinity) {\n return `يجب أن يكون ${sentence(name)} أكبر من أو يساوي ${min} حرفًا.`;\n }\n return `يجب أن يكون ${sentence(name)} بين ${min} و ${max} حرفًا.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} ليست قيمة مسموح بها.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `لا يمكن أن يكون أكثر من ${args[0]} ${name}.`;\n }\n return `يجب أن يكون ${sentence(name)} أقل من أو يساوي ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"لا يسمح بتنسيقات الملفات.\";\n }\n return `يجب أن يكون ${sentence(name)} من النوع: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `لا يمكن أن يكون أقل من ${args[0]} ${name}.`;\n }\n return `يجب أن يكون ${sentence(name)} على الأقل ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” ليس ${name} مسموحًا به.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} يجب ان يكون رقماً`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" أو \")} مطلوب.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} مطلوب.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `لا يبدأ ${sentence(name)} بـ ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `يرجى إدخال عنوان URL صالح.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"التاريخ المحدد غير صالح.\"\n};\nvar ar = { ui, validation };\nvar ui2 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"əlavə edin\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"çıxarmaq\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Hamısını silin\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Üzr istəyirik, bütün sahələr düzgün doldurulmayıb.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Təqdim et\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Heç bir fayl seçilməyib\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"yuxarı hərəkət\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Aşağı hərəkət\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Yükləmə...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Daha çox yüklə\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Növbəti\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Əvvəlki\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Bütün dəyərləri əlavə edin\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Seçilmiş dəyərləri əlavə edin\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Bütün dəyərləri sil\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Seçilmiş dəyərləri sil\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Tarixi seçin\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Tarixi dəyişdirin\",\n /**\n * Shown when there is something to close\n */\n close: \"Bağlayın\",\n /**\n * Shown when there is something to open.\n */\n open: \"Açıq\"\n};\nvar validation2 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `${name} qəbul edin.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])} sonra olmalıdır.`;\n }\n return `${sentence(name)} gələcəkdə olmalıdır.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} yalnız əlifba sırası simvollarından ibarət ola bilər.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} yalnız hərf və rəqəmlərdən ibarət ola bilər.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} yalnız hərflərdən və boşluqlardan ibarət ola bilər.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} əlifba sırası simvolları ehtiva etməlidir.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} hərfləri və ya nömrələri ehtiva etməlidir.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} hərfləri və ya boşluqları ehtiva etməlidir.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} simvolu ehtiva etməlidir.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} böyük olmalıdır.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} kiçik olmalıdır.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} nömrələri ehtiva etməlidir.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} simvol olmalıdır.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} yalnız böyük hərfləri ehtiva edə bilər.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} yalnız kiçik hərfləri ehtiva edə bilər.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])} əvvəl olmalıdır.`;\n }\n return `${sentence(name)} keçmişdə olmalıdır.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Bu sahə səhv konfiqurasiya edilib və onu təqdim etmək mümkün deyil.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} ${a} və ${b} arasında olmalıdır.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} uyğun gəlmir.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} etibarlı tarix deyil, ${args[0]} formatından istifadə edin`;\n }\n return \"Bu sahə səhv konfiqurasiya edilib və onu təqdim etmək mümkün deyil\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} ${date(args[0])} və ${date(args[1])} arasında olmalıdır`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Etibarlı e-poçt ünvanı daxil edin.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} ${list(args)} ilə bitmir.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} icazə verilən dəyər deyil.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} ən azı bir simvol olmalıdır.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} ${max} simvoldan kiçik və ya ona bərabər olmalıdır.`;\n }\n if (min === max) {\n return `${sentence(name)} ${max} simvol uzunluğunda olmalıdır.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} ${min} simvoldan böyük və ya ona bərabər olmalıdır.`;\n }\n return `${sentence(name)} ${min} və ${max} simvol arasında olmalıdır.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} icazə verilən dəyər deyil.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${args[0]} ${name}-dən çox ola bilməz.`;\n }\n return `${sentence(name)} ${args[0]} dəyərindən kiçik və ya ona bərabər olmalıdır.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Fayl formatlarına icazə verilmir.\";\n }\n return `${sentence(name)} aşağıdakı tipdə olmalıdır: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${args[0]} ${name}-dən az ola bilməz.`;\n }\n return `${sentence(name)} ən azı ${args[0]} olmalıdır.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” icazə verilən ${name} deyil.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} rəqəm olmalıdır.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" və ya \")} tələb olunur.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} tələb olunur.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ${list(args)} ilə başlamır.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Xahiş edirik, düzgün URL daxil edin.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Seçilmiş tarix etibarsızdır.\"\n};\nvar az = { ui: ui2, validation: validation2 };\nvar ui3 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Добави\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Премахни\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Премахни всички\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Извинете, не всички полета са попълнени правилно.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Изпрати\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Няма избран файл\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Преместване нагоре\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Преместете се надолу\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Зареждане...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Заредете повече\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Следващ\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Предишен\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Добавете всички стойности\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Добавяне на избрани стойности\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Премахнете всички стойности\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Премахване на избраните стойности\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Избери дата\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Промяна на датата\",\n /**\n * Shown when there is something to close\n */\n close: \"Затвори\",\n /**\n * Shown when there is something to open.\n */\n open: \"Отворете\"\n};\nvar validation3 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Моля приемете ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} трябва да е след ${date(args[0])}.`;\n }\n return `${sentence(name)} трябва да бъде в бъдещето.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} може да съдържа само букви.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} може да съдържа само букви и цифри.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} може да съдържа само букви и интервали.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} трябва да съдържа азбучни знаци.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} трябва да съдържа букви или цифри.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} трябва да съдържа букви или интервали.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} трябва да съдържа символ.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} трябва да съдържа главни букви.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} трябва да съдържа малки букви.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} трябва да съдържа числа.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} трябва да бъде символ.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} може да съдържа само главни букви.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} може да съдържа само малки букви.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} трябва да е преди ${date(args[0])}.`;\n }\n return `${sentence(name)} трябва да бъде в миналото.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Това поле е конфигурирано неправилно и не може да бъде изпратено`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} трябва да бъде между ${a} и ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} не съвпада.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} е невалидна дата. Моля, използвайте формата ${args[0]}`;\n }\n return \"Това поле е конфигурирано неправилно и не може да бъде изпратено\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} трябва да бъде между ${date(args[0])} и ${date(\n args[1]\n )}.`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Моля, въведете валиден имейл адрес.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} не завършва на ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} е неразрешена стойност.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} трябва да има поне един символ.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} трябва да бъде по-малко или равно на ${max} символа.`;\n }\n if (min === max) {\n return `${sentence(name)} трябва да бъде ${max} символи дълго.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} трябва да бъде по-голямо или равно на ${min} символа.`;\n }\n return `${sentence(name)} трябва да бъде между ${min} и ${max} символа.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} е неразрешена стойност.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Не може да има повече от ${args[0]} ${name}.`;\n }\n return `${sentence(name)} трябва да бъде по-малко или равно на ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Не са разрешени никакви файлови формати.\";\n }\n return `${sentence(name)} трябва да бъде от тип: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Не може да има по-малко от ${args[0]} ${name}.`;\n }\n return `${sentence(name)} трябва да бъде поне ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” е неразрешен ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} трябва да бъде число.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" или \")} изисква се.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} е задължително.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} не започва с ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Моля, въведете валиден URL адрес.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Избраната дата е невалидна.\"\n};\nvar bg = { ui: ui3, validation: validation3 };\nvar ui4 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Dodaj\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Ukloni\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Ukloni sve\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Nažalost, nisu sva polja ispravno popunjena.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Pošalji\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nije odabran nijedan fajl\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Pomjeri gore\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Pomjeri dole\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Učitavanje...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Učitaj više\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Sljedeći\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Prethodni\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Dodajte sve vrijednosti\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Dodajte odabrane vrijednosti\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Uklonite sve vrijednosti\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Uklonite odabrane vrijednosti\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Odaberite datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Promjenite datum\",\n /**\n * Shown when there is something to close\n */\n close: \"Zatvori\",\n /**\n * Shown when there is something to open.\n */\n open: \"Otvoreno\"\n};\nvar validation4 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Molimo prihvatite ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti poslije ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti u budućnosti.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} može sadržavati samo abecedne karaktere.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} može sadržavati samo slova i brojeve.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} može sadržavati samo slova i razmake.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} mora sadržavati abecedne karaktere.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} mora sadržavati slova ili brojeve.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} mora sadržavati slova ili razmake.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} mora sadržavati simbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} mora sadržavati veliko slovo.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} mora sadržavati malo slovo.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} mora sadržavati brojeve.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} mora biti simbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} može sadržavati samo velika slova.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} može sadržavati samo mala slova.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti prije ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti u prošlosti.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Ovo polje je pogrešno konfigurirano i ne može se poslati.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} mora biti između ${a} i ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} ne podudara se.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nije ispravan datum, molimo koristite format ${args[0]}`;\n }\n return \"Ovo polje je pogrešno konfigurirano i ne može se poslati\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} mora biti između ${date(args[0])} i ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Molimo Vas da unesete validnu email adresu.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} ne završava sa ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} nije dozvoljena vrijednost.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} mora biti najmanje jedan karakter.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} mora biti manje od ili jednako ${max} karaktera.`;\n }\n if (min === max) {\n return `${sentence(name)} treba imati ${max} karaktera.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} mora biti veći od ili jednak ${min} karaktera.`;\n }\n return `${sentence(name)} mora biti između ${min} i ${max} karaktera.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nije dozvoljena vrijednost.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ne može imati više od ${args[0]} ${name}.`;\n }\n return `${sentence(name)} mora biti manji ili jednak ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Nisu dozvoljeni formati datoteka.\";\n }\n return `${sentence(name)} mora biti tipa: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ne može imati manje od ${args[0]} ${name}.`;\n }\n return `Mora biti barem ${args[0]} ${name} .`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” nije dozvoljeno ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} mora biti broj.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" ili \")} je obavezno.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} je obavezno.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ne počinje sa ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Unesite važeći link.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Odabrani datum je nevažeći.\"\n};\nvar bs = { ui: ui4, validation: validation4 };\nvar ui5 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Afegir\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Eliminar\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Eliminar tot\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Disculpi, no tots els camps estan omplerts correctament.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Enviar\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Cap fitxer triat\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Moure amunt\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Moure avall\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Carregant...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Carregar més\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Següent\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Anterior\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Afegir tots els valors\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Afegeix els valors seleccionats\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Eliminar tots els valors\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Elimina els valors seleccionats\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Trieu la data\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Canviar data\",\n /**\n * Shown when there is something to close\n */\n close: \"Tancar\",\n /**\n * Shown when there is something to open.\n */\n open: \"Obert\"\n};\nvar validation5 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://docs.formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Si us plau accepti ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://docs.formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ha de ser posterior a ${date(args[0])}.`;\n }\n return `${sentence(name)} ha de succeïr al futur.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://docs.formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} només pot contenir caràcters alfabètics.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://docs.formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} només pot contenir lletres i números.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://docs.formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} només pot contenir lletres i espais.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} ha de contenir caràcters alfabètics.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} ha de contenir lletres o números.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} ha de contenir lletres o espais.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} ha de contenir símbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} ha de contenir majúscules.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} ha de contenir minúscules.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} ha de contenir números.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} ha de ser un símbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} només pot contenir lletres majúscules.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} només pot contenir lletres minúscules.`;\n },\n /**\n * The date is not before\n * @see {@link https://docs.formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ha de ser anterior a ${date(args[0])}.`;\n }\n return `${sentence(name)} ha d'estar al passat.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://docs.formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Aquest camp està configurat incorrectament i no pot ésser enviat.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} ha d'estar entre ${a} i ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://docs.formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} no concorda.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://docs.formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} no és una data vàlida, si us plau empri el format ${args[0]}`;\n }\n return \"Aquest camp està configurat incorrectament i no pot ésser enviat\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://docs.formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} ha d'estar entre ${date(args[0])} i ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://docs.formkit.com/essentials/validation#email}\n */\n email: `Si us plau, entri una adreça d'e-mail vàlida.`,\n /**\n * Does not end with the specified value\n * @see {@link https://docs.formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} no acaba amb ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://docs.formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} no és un valor acceptat.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://docs.formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} ha de tenir com a mínim un caràcter.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} ha de ser inferior o igual a ${max} caràcters.`;\n }\n if (min === max) {\n return `${sentence(name)} ha de tenir una longitud de ${max} caràcters.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} ha de ser major que o igual a ${min} caràcters.`;\n }\n return `${sentence(name)} ha d'estar entre ${min} i ${max} caràcters.`;\n },\n /**\n * Value is not a match\n * @see {@link https://docs.formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} no és un valor permès.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://docs.formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `No pot tenir més de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} ha de ser menys que o igual a ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://docs.formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"No hi ha cap format de fitxer acceptat.\";\n }\n return `${sentence(name)} ha de ser del tipus: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://docs.formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `No pot tenir menys de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} ha de ser com a mínim ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://docs.formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” no s'accepta com a ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://docs.formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} ha de ser un número.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" o \")} es requereix.`;\n },\n /**\n * Required field.\n * @see {@link https://docs.formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} és obligatori.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://docs.formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} no comença amb ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://docs.formkit.com/essentials/validation#url}\n */\n url() {\n return `Si us plau inclogui una url vàlida.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"La data seleccionada no és vàlida.\"\n};\nvar ca = { ui: ui5, validation: validation5 };\nvar ui6 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Přidat\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Odebrat\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Odebrat vše\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Pardon, ale ne všechna pole jsou vyplněna správně.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Odeslat\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Žádný soubor nebyl vybrán\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Pohyb nahoru\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Posunout dolů\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Načítání...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Načíst více\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Další\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Předchozí\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Přidat všechny hodnoty\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Přidání vybraných hodnot\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Odstraňte všechny hodnoty\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Odstranění vybraných hodnot\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Zvolte datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Změnit datum\",\n /**\n * Shown when there is something to close\n */\n close: \"Zavřít\",\n /**\n * Shown when there is something to open.\n */\n open: \"Otevřeno\"\n};\nvar validation6 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Prosím, zaškrtněte ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} musí být po ${date(args[0])}.`;\n }\n return `${sentence(name)} musí být v budoucnosti.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} může obsahovat pouze písmena.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} může obsahovat pouze písmena a čísla.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} musí obsahovat abecední znaky.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} musí obsahovat písmena nebo číslice.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} musí obsahovat písmena nebo mezery.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} musí obsahovat symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} musí obsahovat velká písmena.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} musí obsahovat malá písmena.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} musí obsahovat čísla.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} musí být symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} může obsahovat pouze velká písmena.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} může obsahovat pouze malá písmena.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} musí být před ${date(args[0])}.`;\n }\n return `${sentence(name)} musí být v minulosti.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Toto pole bylo špatně nakonfigurováno a nemůže být odesláno.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} musí být mezi ${a} a ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} nejsou shodná.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} není platné datum, prosím, použijte formát ${args[0]}`;\n }\n return \"Toto pole bylo špatně nakonfigurováno a nemůže být odesláno.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} musí být mezi ${date(args[0])} a ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Prosím, zadejte platnou e-mailovou adresu.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} nekončí na ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} není povolená hodnota.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} musí mít nejméně jeden znak.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} může mít maximálně ${max} znaků.`;\n }\n if (min === max) {\n return `${sentence(name)} by mělo být ${max} znaků dlouhé.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} musí obsahovat minimálně ${min} znaků.`;\n }\n return `${sentence(name)} musí být dlouhé ${min} až ${max} znaků.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} není povolená hodnota.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nelze použít více než ${args[0]} ${name}.`;\n }\n return `${sentence(name)} musí mít menší nebo rovno než ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Nejsou nakonfigurovány povolené typy souborů.\";\n }\n return `${sentence(name)} musí být typu: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nelze mít méně než ${args[0]} ${name}.`;\n }\n return `${sentence(name)} musí být minimálně ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” není dovolená hodnota pro ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} musí být číslo.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" nebo \")} je vyžadován.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} je povinné.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} nezačíná na ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Zadejte prosím platnou adresu URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Vybrané datum je neplatné.\"\n};\nvar cs = { ui: ui6, validation: validation6 };\nvar ui7 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Tilføj\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Fjern\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Fjern alle\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Alle felter er ikke korrekt udfyldt.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Send\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Ingen filer valgt\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Flyt op\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Flyt ned\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Indlæser...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Indlæs mere\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Næste\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Forrige\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Tilføj alle værdier\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Tilføj valgte værdier\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Fjern alle værdier\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Fjern valgte værdier\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Vælg dato\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Skift dato\",\n /**\n * Shown when there is something to close\n */\n close: \"Luk\",\n /**\n * Shown when there is something to open.\n */\n open: \"Åbn\"\n};\nvar validation7 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Accepter venligst ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} skal være senere end ${date(args[0])}.`;\n }\n return `${sentence(name)} skal være i fremtiden.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} kan kun indeholde bogstaver.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} kan kun indeholde bogstaver og tal.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} kan kun indeholde bogstaver og mellemrum.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} skal indeholde alfabetiske tegn.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} skal indeholde bogstaver eller tal.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} skal indeholde bogstaver eller mellemrum.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} skal indeholde symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} skal indeholde store bogstaver.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} skal indeholde små bogstaver.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} skal indeholde tal.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} skal være et symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} kan kun indeholde store bogstaver.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} kan kun indeholde små bogstaver.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} skal være før ${date(args[0])}.`;\n }\n return `${sentence(name)} skal være før i dag.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Dette felt er ikke konfigureret korrekt og kan derfor ikke blive sendt.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} skal være mellem ${a} og ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} matcher ikke.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} er ikke gyldig, brug venligst formatet ${args[0]}`;\n }\n return \"Dette felt er ikke konfigureret korrekt og kan derfor ikke blive sendt.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} skal være mellem ${date(args[0])} og ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Indtast venligst en gyldig email-adresse.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} slutter ikke med ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} er ikke en gyldig værdi.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} skal være på mindst ét tegn.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} skal være på højst ${max} tegn.`;\n }\n if (min === max) {\n return `${sentence(name)} skal være ${max} tegn lange.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} skal være på mindst ${min} tegn.`;\n }\n return `${sentence(name)} skal være på mindst ${min} og højst ${max} tegn.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} er ikke en gyldig værdi.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Kan ikke have flere end ${args[0]} ${name}.`;\n }\n return `${sentence(name)} skal være mindre eller lig med ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Ingen filformater tilladt.\";\n }\n return `${sentence(name)} skal være af filtypen: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Kan ikke have mindre end ${args[0]} ${name}.`;\n }\n return `${sentence(name)} skal være mindst ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” er ikke en tilladt ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} skal være et tal.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" eller \")} er påkrævet.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} er påkrævet.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} starter ikke med ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Indtast en gyldig URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Den valgte dato er ugyldig.\"\n};\nvar da = { ui: ui7, validation: validation7 };\nvar ui8 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Hinzufügen\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Entfernen\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Alles entfernen\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Entschuldigung, nicht alle Felder wurden korrekt ausgefüllt.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Senden\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Keine Datei ausgewählt\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Gehe nach oben\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Gehen Sie nach unten\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Wird geladen...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Mehr laden\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Weiter\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Zurück\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Alle Werte hinzufügen\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Ausgewählte Werte hinzufügen\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Alle Werte entfernen\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Ausgewählte Werte entfernen\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Datum wählen\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Datum ändern\",\n /**\n * Shown when there is something to close\n */\n close: \"Schliessen\",\n /**\n * Shown when there is something to open.\n */\n open: \"Offen\"\n};\nvar validation8 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Bitte ${name} akzeptieren.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} muss nach dem ${date(args[0])} liegen.`;\n }\n return `${sentence(name)} muss in der Zukunft liegen.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} darf nur Buchstaben enthalten.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} darf nur Buchstaben und Zahlen enthalten.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} dürfen nur Buchstaben und Leerzeichen enthalten.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} muss alphabetische Zeichen enthalten.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} muss Buchstaben oder Zahlen enthalten.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} muss Buchstaben oder Leerzeichen enthalten.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} muss ein Symbol enthalten.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} muss Großbuchstaben enthalten.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} muss Kleinbuchstaben enthalten.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} muss Zahlen enthalten.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} muss ein Symbol sein.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} kann nur Großbuchstaben enthalten.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} kann nur Kleinbuchstaben enthalten.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} muss vor dem ${date(args[0])} liegen.`;\n }\n return `${sentence(name)} muss in der Vergangenheit liegen.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Dieses Feld wurde falsch konfiguriert und kann nicht übermittelt werden.`;\n }\n return `${sentence(name)} muss zwischen ${args[0]} und ${args[1]} sein.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} stimmt nicht überein.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ist kein gültiges Datum im Format ${args[0]}.`;\n }\n return \"Dieses Feld wurde falsch konfiguriert und kann nicht übermittelt werden.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} muss zwischen ${date(args[0])} und ${date(\n args[1]\n )} liegen.`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"E-Mail Adresse ist ungültig.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} endet nicht mit ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} enthält einen ungültigen Wert.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = first <= second ? first : second;\n const max = second >= first ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} muss mindestens ein Zeichen enthalten.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} darf maximal ${max} Zeichen enthalten.`;\n }\n if (min === max) {\n return `${sentence(name)} sollte ${max} Zeichen lang sein.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} muss mindestens ${min} Zeichen enthalten.`;\n }\n return `${sentence(name)} muss zwischen ${min} und ${max} Zeichen enthalten.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} enthält einen ungültigen Wert.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Darf maximal ${args[0]} ${name} haben.`;\n }\n return `${sentence(name)} darf maximal ${args[0]} sein.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Keine Dateiformate konfiguriert.\";\n }\n return `${sentence(name)} muss vom Typ ${args[0]} sein.`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Mindestens ${args[0]} ${name} erforderlich.`;\n }\n return `${sentence(name)} muss mindestens ${args[0]} sein.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” ist kein gültiger Wert für ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} muss eine Zahl sein.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" oder \")} ist erforderlich.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} ist erforderlich.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} beginnt nicht mit ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Bitte geben Sie eine gültige URL ein.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Das gewählte Datum ist ungültig.\"\n};\nvar de = { ui: ui8, validation: validation8 };\nvar ui9 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Προσθήκη\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Αφαίρεση\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Αφαίρεση όλων\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Λυπούμαστε, υπάρχουν πεδία που δεν έχουν συμπληρωθεί σωστά.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Υποβολή\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Κανένα αρχείο δεν έχει επιλεγεί\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Προς τα επάνω\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Προς τα κάτω\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Φορτώνει...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Φόρτωση περισσότερων\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Επόμενη\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Προηγούμενο\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Προσθήκη όλων των τιμών\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Προσθήκη επιλεγμένων τιμών\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Κατάργηση όλων των τιμών\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Αφαίρεση επιλεγμένων τιμών\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Επιλέξτε ημερομηνία\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Αλλαγή ημερομηνίας\",\n /**\n * Shown when there is something to close\n */\n close: \"Κλείσιμο\",\n /**\n * Shown when there is something to open.\n */\n open: \"Ανοιχτό\"\n};\nvar validation9 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Παρακαλώ αποδεχτείτε το ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} πρέπει να είναι μετά της ${date(args[0])}.`;\n }\n return `${sentence(name)} πρέπει να είναι στο μέλλον.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} μπορεί να περιέχει μόνο αλφαβητικούς χαρακτήρες.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} μπορεί να περιέχει μόνο γράμματα και αριθμούς.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} μπορεί να περιέχει μόνο γράμματα και κενά.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `Το ${sentence(name)} πρέπει να περιέχει αλφαβητικούς χαρακτήρες.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `Το ${sentence(name)} πρέπει να περιέχει γράμματα ή αριθμούς.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} πρέπει να περιέχει γράμματα ή κενά.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `Το ${sentence(name)} πρέπει να περιέχει το σύμβολο.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `Το ${sentence(name)} πρέπει να περιέχει κεφαλαία γράμματα.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `Το ${sentence(name)} πρέπει να περιέχει πεζά γράμματα.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `Το ${sentence(name)} πρέπει να περιέχει αριθμούς.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `Το ${sentence(name)} πρέπει να είναι ένα σύμβολο.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `Το ${sentence(name)} μπορεί να περιέχει μόνο κεφαλαία γράμματα.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `Το ${sentence(name)} μπορεί να περιέχει μόνο πεζά γράμματα.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} πρέπει να είναι πριν της ${date(args[0])}.`;\n }\n return `${sentence(name)} πρέπει να είναι στο παρελθόν.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Αυτό το πεδίο έχει ρυθμιστεί λανθασμένα και δεν μπορεί να υποβληθεί.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} πρέπει να είναι μεταξύ ${a} και ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} δεν ταιριάζει.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(\n name\n )} δεν είναι έγυρη ημερομηνία, παρακαλώ ακολουθήστε την διαμόρφωση ${args[0]}`;\n }\n return \"Αυτό το πεδίο έχει ρυθμιστεί λανθασμένα και δεν μπορεί να υποβληθεί\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} πρέπει να είναι μεταξύ ${date(args[0])} και ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Παρακαλώ πληκτρολογήστε μια έγκυρη email διεύθυνση. \",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} δεν καταλήγει με ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} δεν είναι μια επιτρεπτή τιμή.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} πρέπει να είναι τουλάχιστον ενός χαρακτήρα.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} πρέπει να είναι λιγότεροι ή ίσοι με ${max} χαρακτήρες.`;\n }\n if (min === max) {\n return `Το ${sentence(name)} θα πρέπει να έχει μήκος ${max} χαρακτήρες.`;\n }\n if (min && max === Infinity) {\n return `${sentence(\n name\n )} πρέπει να είναι περισσότεροι ή ίσοι με ${min} χαρακτήρες.`;\n }\n return `${sentence(name)} πρέπει να είναι μεταξύ ${min} και ${max} χαρακτήρες.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} δεν είναι μια επιτρεπτή τιμή.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Δεν μπορεί να έχει παραπάνω από ${args[0]} ${name}.`;\n }\n return `${sentence(name)} πρέπει αν είναι λιγότερο ή ίσο με το ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Δεν επιτρέπονται αρχεία.\";\n }\n return `${sentence(name)} πρέπει να είναι τύπου: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Δεν μπορεί να είναι λιγότερο από ${args[0]} ${name}.`;\n }\n return `${sentence(name)} πρέπει να είναι τουλάχιστον ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” δεν είναι μια επιτρεπτή ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} πρέπει να είναι αριθμός.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" ή \")} απαιτείται.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} είναι υποχρεωτικό.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} δεν αρχίζει με ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Παρακαλώ εισάγετε ένα έγκυρο URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Η επιλεγμένη ημερομηνία δεν είναι έγκυρη.\"\n};\nvar el = { ui: ui9, validation: validation9 };\nvar ui10 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Add\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Remove\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Remove all\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Sorry, not all fields are filled out correctly.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Submit\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"No file chosen\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Move up\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Move down\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Loading...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Load more\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Next\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Previous\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Add all values\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Add selected values\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Remove all values\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Remove selected values\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Choose date\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Change date\",\n /**\n * Shown above error summaries when someone attempts to submit a form with\n * errors and the developer has implemented ``.\n */\n summaryHeader: \"There were errors in your form.\",\n /*\n * Shown when there is something to close\n */\n close: \"Close\",\n /**\n * Shown when there is something to open.\n */\n open: \"Open\"\n};\nvar validation10 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Please accept the ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} must be after ${date(args[0])}.`;\n }\n return `${sentence(name)} must be in the future.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} can only contain alphabetical characters.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} can only contain letters and numbers.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} can only contain letters and spaces.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} must contain alphabetical characters.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} must contain letters or numbers.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} must contain letters or spaces.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} must contain a symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} must contain an uppercase letter.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} must contain a lowercase letter.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} must contain numbers.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} must be a symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} can only contain uppercase letters.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name, args }) {\n let postfix = \"\";\n if (Array.isArray(args) && args.length) {\n if (args[0] === \"allow_non_alpha\")\n postfix = \", numbers and symbols\";\n if (args[0] === \"allow_numeric\")\n postfix = \" and numbers\";\n if (args[0] === \"allow_numeric_dashes\")\n postfix = \", numbers and dashes\";\n }\n return `${sentence(name)} can only contain lowercase letters${postfix}.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} must be before ${date(args[0])}.`;\n }\n return `${sentence(name)} must be in the past.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `This field was configured incorrectly and can’t be submitted.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} must be between ${a} and ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} does not match.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} is not a valid date, please use the format ${args[0]}`;\n }\n return \"This field was configured incorrectly and can’t be submitted\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} must be between ${date(args[0])} and ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Please enter a valid email address.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} doesn’t end with ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} is not an allowed value.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} must be at least one character.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} must be less than or equal to ${max} characters.`;\n }\n if (min === max) {\n return `${sentence(name)} should be ${max} characters long.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} must be greater than or equal to ${min} characters.`;\n }\n return `${sentence(name)} must be between ${min} and ${max} characters.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} is not an allowed value.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Cannot have more than ${args[0]} ${name}.`;\n }\n return `${sentence(name)} must be no more than ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"No file formats allowed.\";\n }\n return `${sentence(name)} must be of the type: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Cannot have fewer than ${args[0]} ${name}.`;\n }\n return `${sentence(name)} must be at least ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” is not an allowed ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} must be a number.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" or \")} is required.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} is required.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} doesn’t start with ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Please enter a valid URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"The selected date is invalid.\"\n};\nvar en = { ui: ui10, validation: validation10 };\nvar ui11 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Añadir\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Quitar\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Quitar todos\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Discúlpe, los campos no fueron completados correctamente.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Enviar\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Archivo no seleccionado\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Moverse hacia arriba\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Moverse hacia abajo\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Cargando...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Cargar más\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Próximo\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Anterior\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Añadir todos los valores\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Añadir valores seleccionados\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Eliminar todos los valores\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Eliminar los valores seleccionados\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Elige fecha\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Cambiar fecha\",\n /**\n * Shown when there is something to close\n */\n close: \"Cerrar\",\n /**\n * Shown when there is something to open.\n */\n open: \"Abrir\"\n};\nvar validation11 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Acepte el ${name} por favor.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} debe ser posterior a ${date(args[0])}.`;\n }\n return `${sentence(name)} debe ser una fecha futura.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} debe contener solo caractéres alfabéticos.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} debe ser alfanumérico.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} espacios alfa solo pueden contener letras y espacios.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} debe contener caracteres alfabéticos.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} debe contener letras o números.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} debe contener letras o espacios.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} debe contener un símbolo.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} debe estar en mayúsculas.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} debe contener minúsculas.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} debe contener números.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} debe ser un símbolo.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} solo puede contener letras mayúsculas.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} solo puede contener letras minúsculas.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} debe ser anterior a ${date(args[0])}.`;\n }\n return `${sentence(name)} debe ser una fecha pasada.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `El campo no fue completado correctamente y no puede ser enviado.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} debe estar entre ${a} y ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} no coincide.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} no es una fecha válida, por favor utilice el formato ${args[0]}`;\n }\n return \"El campo no fue completado correctamente y no puede ser enviado.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} debe estar entre ${date(args[0])} y ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Ingrese una dirección de correo electrónico válida por favor.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} no termina con ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} no es un valor permitido.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} debe tener al menos una letra.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} debe tener como máximo ${max} caractéres.`;\n }\n if (min === max) {\n return `${sentence(name)} debe tener ${max} caracteres.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} debe tener como mínimo ${min} caractéres.`;\n }\n return `${sentence(name)} debe tener entre ${min} y ${max} caractéres.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} no es un valor permitido.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `No puede tener más de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} debe ser menor o igual a ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"No existen formatos de archivos permitidos.\";\n }\n return `${sentence(name)} debe ser del tipo: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `No puede tener menos de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} debe ser de al menos ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” no es un valor permitido de ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} debe ser un número.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" o \")} se requiere estar.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} es requerido.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} debe comenzar con ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Introduce una URL válida.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"La fecha seleccionada no es válida.\"\n};\nvar es = { ui: ui11, validation: validation11 };\nvar ui12 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"افزودن\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"حذف\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"همه را حذف کنید\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"همه فیلدها به‌درستی پر نشده‌اند\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"ثبت\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"هیچ فایلی انتخاب نشده است\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"حرکت به بالا\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"حرکت به پایین\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"در حال بارگذاری...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"بارگذاری بیشتر\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"بعدی\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"قبلی\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"تمام مقادیر را اضافه کنید\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"مقادیر انتخاب شده را اضافه کنید\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"تمام مقادیر را حذف کنید\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"حذف مقادیر انتخاب شده\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"تاریخ را انتخاب کنید\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"تغییر تاریخ\",\n /**\n * Shown when there is something to close\n */\n close: \"بستن\",\n /**\n * Shown when there is something to open.\n */\n open: \"باز کردن\"\n};\nvar validation12 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `لطفاً ${name} را بپذیرید.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} باید بعد از تاریخ ${date(args[0])} باشد.`;\n }\n return `${sentence(name)} باید مربوط به آینده باشد.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} فقط میتواند شامل حروف الفبا باشد.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} فقط میتواند شامل حروف و اعداد باشد.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} فقط می تواند شامل حروف و فاصله باشد.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} باید حاوی حروف الفبا باشد.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} باید حاوی حروف یا اعداد باشد.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} باید حاوی حروف یا فاصله باشد.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} باید حاوی نماد باشد.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} باید دارای حروف بزرگ باشد.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} باید حاوی حروف کوچک باشد.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} باید حاوی اعداد باشد.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} باید یک نماد باشد.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} تنها می‌تواند شامل حروف بزرگ باشد.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} تنها می‌تواند شامل حروف کوچک باشد.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} باید قبل از تاریخ ${date(args[0])} باشد.`;\n }\n return `${sentence(name)} باید مربوط به گذشته باشد.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `این فیلد به اشتباه پیکربندی شده است و قابل ارسال نیست`;\n }\n return `${sentence(name)} باید بین ${args[0]} و ${args[1]} باشد.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} مطابقت ندارد.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} تاریخ معتبری نیست، لطفاً از قالب ${args[0]} استفاده کنید\n`;\n }\n return \"این فیلد به اشتباه پیکربندی شده است و قابل ارسال نیست\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} باید بین ${date(args[0])} و ${date(args[1])} باشد.`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"لطفا آدرس ایمیل معتبر وارد کنید.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} باید به ${list(args)} ختم شود.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} مجاز نیست.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = first <= second ? first : second;\n const max = second >= first ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} باید حداقل یک کاراکتر باشد.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} باید کمتر یا برابر با ${max} کاراکتر باشد.`;\n }\n if (min === max) {\n return `${sentence(name)} باید ${max} کاراکتر طولانی باشد.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} باید بزرگتر یا برابر با ${min} کاراکتر باشد.`;\n }\n return `${sentence(name)} باید بین ${min} و ${max} کاراکتر باشد.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} مجاز نیست.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} نمی تواند بیش از ${args[0]} باشد.`;\n }\n return `${sentence(name)} باید کمتر یا برابر با ${args[0]} باشد.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"فرمت فایل مجاز نیست.\";\n }\n return `${sentence(name)} باید از این نوع باشد: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} نمی تواند کمتر از ${args[0]} باشد.\n`;\n }\n return `${sentence(name)} باید حداقل ${args[0]} باشد.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" یک ${name} مجاز نیست.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} باید عدد باشد.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" یا \")} مورد نیاز است.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `پر کردن ${sentence(name)} اجباری است.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} باید با ${list(args)} شروع شود.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `لطفا یک URL معتبر وارد کنید.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"تاریخ انتخاب شده نامعتبر است\"\n};\nvar fa = { ui: ui12, validation: validation12 };\nvar ui13 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Lisää\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Poista\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Poista kaikki\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Kaikkia kenttiä ei ole täytetty oikein.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Tallenna\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Ei valittuja tiedostoja\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Siirrä ylös\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Siirrä alas\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Ladataan...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Lataa lisää\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Seuraava\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Edellinen\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Lisää kaikki arvot\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Lisää valitut arvot\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Poista kaikki arvot\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Poista valitut arvot\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Valitse päivämäärä\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Vaihda päivämäärä\",\n /**\n * Shown when there is something to close\n */\n close: \"Sulje\",\n /**\n * Shown when there is something to open.\n */\n open: \"Avoinna\"\n};\nvar validation13 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Ole hyvä ja hyväksy ${name}`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} tulee olla ${date(args[0])} jälkeen.`;\n }\n return `${sentence(name)} on oltava tulevaisuudessa.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} saa sisältää vain kirjaimia.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} saa sisältää vain kirjaimia ja numeroita.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} voivat sisältää vain kirjaimia ja välilyöntejä.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} on sisällettävä aakkoselliset merkit.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} täytyy sisältää kirjaimia tai numeroita.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} täytyy sisältää kirjaimia tai välilyöntejä.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} täytyy sisältää symboli.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} täytyy sisältää isoja kirjaimia.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} täytyy sisältää pieniä kirjaimia.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} täytyy sisältää numeroita.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} on oltava symboli.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} voi sisältää vain isoja kirjaimia.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} voi sisältää vain pieniä kirjaimia.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} tulee olla ennen: ${date(args[0])}.`;\n }\n return `${sentence(name)} on oltava menneisyydessä.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Tämä kenttä on täytetty virheellisesti joten sitä ei voitu lähettää.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} on oltava välillä ${a} - ${b} `;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} ei täsmää.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(\n name\n )} ei ole validi päivämäärä, ole hyvä ja syötä muodossa: ${args[0]}`;\n }\n return \"Tämä kenttä on täytetty virheellisesti joten sitä ei voitu lähettää.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} on oltava välillä ${date(args[0])} - ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Syötä validi sähköpostiosoite.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} tulee päättyä ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} ei ole sallittu vaihtoehto.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} on oltava vähintään yksi merkki.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} on oltava ${max} tai alle merkkiä.`;\n }\n if (min === max) {\n return `${sentence(name)} pitäisi olla ${max} merkkiä pitkä.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} on oltava vähintään ${min} merkkiä.`;\n }\n return `${sentence(name)} on oltava vähintään ${min}, enintään ${max} merkkiä.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} ei ole sallittu arvo.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Valitse enintään ${args[0]} ${name} vaihtoehtoa.`;\n }\n return `${sentence(name)} on oltava ${args[0]} tai alle.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Tiedostoja ei sallita.\";\n }\n return `${sentence(name)} tulee olla ${args[0]}-tiedostotyyppiä.`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Valitse vähintään ${args[0]} ${name} vaihtoehtoa.`;\n }\n return `${sentence(name)} tulee olla ${args[0]} tai suurempi.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” ei ole sallittu ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `Kentän ${sentence(name)} tulee olla numero.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" tai \")} vaaditaan.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} vaaditaan.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} on alettava ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Anna kelvollinen URL-osoite.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Valittu päivämäärä on virheellinen.\"\n};\nvar fi = { ui: ui13, validation: validation13 };\nvar ui14 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Ajouter\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Supprimer\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Enlever tout\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Désolé, tous les champs ne sont pas remplis correctement.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Valider\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Aucun fichier choisi\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Déplacez-vous\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Déplacez-vous\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Chargement...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Chargez plus\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Suivant\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Précédent\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Ajouter toutes les valeurs\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Ajouter les valeurs sélectionnées\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Supprimer toutes les valeurs\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Supprimer les valeurs sélectionnées\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Choisissez la date\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Modifier la date\",\n /**\n * Shown when there is something to close\n */\n close: \"Fermer\",\n /**\n * Shown when there is something to open.\n */\n open: \"Ouvrir\"\n};\nvar validation14 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Veuillez accepter le ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} doit être postérieure au ${date(args[0])}.`;\n }\n return `${sentence(name)} doit être dans le futur.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} ne peut contenir que des caractères alphabétiques.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} ne peut contenir que des lettres et des chiffres.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} ne peuvent contenir que des lettres et des espaces.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} doit contenir des caractères alphabétiques.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} doit contenir au moins un lettre ou nombre.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} doit contenir des lettres ou des espaces.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} doit contenir un symbole.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} doit contenir au moins une majuscule.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} doit contenir au moins une minuscule.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} doit contenir des chiffres.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} doit être un symbole.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} ne peuvent contenir que des majuscules.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} ne peut contenir que des lettres minuscules.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} doit être antérieure au ${date(args[0])}.`;\n }\n return `${sentence(name)} doit être dans le passé.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Ce champ a été configuré de manière incorrecte et ne peut pas être soumis.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} doit être comprise entre ${a} et ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} ne correspond pas.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(\n name\n )} n'est pas une date valide, veuillez utiliser le format ${args[0]}`;\n }\n return \"Ce champ a été configuré de manière incorrecte et ne peut pas être soumis.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} doit être comprise entre ${date(args[0])} et ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Veuillez saisir une adresse email valide.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} ne se termine pas par ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} n'est pas une valeur autorisée.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} doit comporter au moins un caractère.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} doit être inférieur ou égal à ${max} caractères.`;\n }\n if (min === max) {\n return `${sentence(name)} doit contenir ${max} caractères.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} doit être supérieur ou égal à ${min} caractères.`;\n }\n return `${sentence(name)} doit être comprise entre ${min} et ${max} caractères.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} n'est pas une valeur autorisée.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ne peut pas avoir plus de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} doit être inférieur ou égal à ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Aucun format de fichier n’est autorisé\";\n }\n return `${sentence(name)} doit être du type: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ne peut pas avoir moins de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} doit être au moins de ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” n'est pas un ${name} autorisé.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} doit être un nombre.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" ou \")} est requis.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} est requis.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ne commence pas par ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Entrez une URL valide.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: `La date sélectionnée n'est pas valide.`\n};\nvar fr = { ui: ui14, validation: validation14 };\nvar ui15 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Foeg ta\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Ferwider\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Ferwider alles\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Sorry, net alle fjilden binne korrekt ynfolle.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Ferstjoere\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Gjin bestân keazen\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Gean omheech\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Nei ûnderen\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Lade…\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Mear lade\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Folgende\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Foarige\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Foegje alle wearden ta\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Foegje selektearre wearden ta\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Fuortsmite alle wearden\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Fuortsmite selektearre wearden\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Kies datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Feroarje datum\"\n};\nvar validation15 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Akseptearje de ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} moat nei ${date(args[0])} wêze.`;\n }\n return `${sentence(name)} moat yn de takomst lizze.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} mei allinne alfabetyske tekens befetsje.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} mei allinne letters en sifers befetsje.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} mei allinne letters en spaasjes befetsje.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} must contain alphabetical characters.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} must contain letters and numbers.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} must contain letters and spaces.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} must contain symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} must contain uppercase.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} must contain lowercase.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} must contain number.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} can only contain symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} can only contain uppercase.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} can only contain lowercase.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} moat foar ${date(args[0])} falle.`;\n }\n return `${sentence(name)} moat yn it ferline wêze.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Dit fjild is ferkeard konfigurearre en kin net ferstjoerd wurde.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} moat tusken ${a} en ${b} lizze.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} komt net oerien.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} is gjin jildige datum, brûk de notaasje ${args[0]}`;\n }\n return \"Dit fjild is ferkeard konfigurearre en kin net ferstjoerd wurde\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} moat tusken ${date(args[0])} en ${date(args[1])} lizze`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Folje in jildich e-mailadres yn.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} einiget net mei ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} is gjin tastiene wearde.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} moat minimaal ien teken wêze.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} moat lytser wêze as of gelyk wêze oan ${max} tekens.`;\n }\n if (min === max) {\n return `${sentence(name)} moat ${max} tekens lang wêze.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} moat grutter wêze as of gelyk wêze oan ${min} tekens.`;\n }\n return `${sentence(name)} moat tusken de ${min} en ${max} tekens befetsje.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} is gjin tastiene wearde.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Mei net mear as ${args[0]} ${name} hawwe.`;\n }\n return `${sentence(name)} moat lytser wêze as of gelyk wêze oan ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Gjin bestânsnotaasjes tastien.\";\n }\n return `${sentence(name)} moat fan it type: ${args[0]} wêze`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Mei net minder as ${args[0]} ${name} hawwe.`;\n }\n return `${sentence(name)} moat minimaal ${args[0]} wêze.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" is gjin tastiene ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} moat in getal wêze.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" of \")} is ferplichte.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} is ferplicht.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} begjint net mei ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Doch der in jildige url by.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"De selektearre datum is ûnjildich.\"\n};\nvar fy = { ui: ui15, validation: validation15 };\nvar ui16 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"הוסף\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"מחק\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"מחק הכל\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"שים לב, לא כל השדות מלאים כראוי.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"שלח\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"לא נבחר קובץ..\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"הזז למעלה\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"הזז למטה\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"טוען...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"טען יותר\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"הבא\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"הקודם\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"הוסף את כל הערכים\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"הוספת ערכים נבחרים\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"הסר את כל הערכים\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"הסר ערכים נבחרים\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"בחר תאריך\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"שינוי תאריך\",\n /**\n * Shown when there is something to close\n */\n close: \"סגור\",\n /**\n * Shown when there is something to open.\n */\n open: \"פתוח\"\n};\nvar validation16 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `אנא אשר את ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} חייב להיות אחרי ${date(args[0])}.`;\n }\n return `${sentence(name)} חייב להיות בעתיד.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} חייב להכיל אותיות אלפבת.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} יכול להכיל רק מספרים ואותיות.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} יכול להכיל רק אותיות ורווחים.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} חייב להכיל תווים אלפביתיים.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} חייב להכיל אותיות או מספרים.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} חייב להכיל אותיות או רווחים.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} חייב להכיל סמל.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} חייב להכיל אותיות רישיות.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} חייב להכיל אותיות קטנות.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} חייב להכיל מספרים.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} חייב להיות סמל.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} יכול להכיל אותיות רישיות בלבד.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} יכול להכיל רק אותיות קטנות.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} חייב להיות לפני ${date(args[0])}.`;\n }\n return `${sentence(name)} חייב להיות בעבר`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `שדה זה לא הוגדר כראוי ולא יכול להישלח.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} חייב להיות בין ${a} ו- ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} לא מתאים.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} הוא לא תאריך תקין, אנא השתמש בפורמט ${args[0]}`;\n }\n return \"שדה זה לא הוגדר כראוי ולא יכול להישלח.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} חייב להיות בין ${date(args[0])} ו- ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"אנא הקלד אימייל תקין.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} לא מסתיים ב- ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} הוא לא ערך מורשה.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} חייב להיות לפחות תו אחד.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} חייב להיות פחות או שווה ל- ${max} תווים.`;\n }\n if (min === max) {\n return `${sentence(name)} צריך להיות ${max} תווים ארוכים.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} חייב להיות גדול או שווה ל- ${min} תווים.`;\n }\n return `${sentence(name)} חייב להיות בין ${min} ו- ${max} תווים.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} הוא לא ערך תקין.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} לא יכול להיות עם יותר מ- ${args[0]}.`;\n }\n return `${sentence(name)} חייב להיות פחות או שווה ל- ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"פורמט הקובץ לא מורשה.\";\n }\n return `${sentence(name)} חייב להיות מסוג: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} לא יכול להיות עם פחות מ- ${args[0]}.`;\n }\n return `${sentence(name)} חייב להיות לפחות ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” לא מתאים ל- ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} חייב להיות מספר.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" או \")} נדרש.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} הינו חובה.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} לא מתחיל ב- ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `הזן כתובת URL חוקית.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"התאריך שנבחר אינו חוקי.\"\n};\nvar he = { ui: ui16, validation: validation16 };\nvar ui17 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Dodaj\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Ukloni\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Pojedina polja nisu ispravno ispunjena.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Predaj\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Pomaknite se gore\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Pomakni se dolje\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Učitavanje...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Učitaj više\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Sljedeći\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"prijašnji\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Dodajte sve vrijednosti\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Dodavanje odabranih vrijednosti\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Ukloni sve vrijednosti\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Ukloni odabrane vrijednosti\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Odaberite datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Promijeni datum\",\n /**\n * Shown when there is something to close\n */\n close: \"Zatvoriti\",\n /**\n * Shown when there is something to open.\n */\n open: \"Otvori\"\n};\nvar validation17 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Potrebno je potvrditi ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti u periodu poslije ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti u budućnosti.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} mora sadržavati samo slova.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} mora sadržavati slova i brojeve.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} mogu sadržavati samo slova i razmake..`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} mora sadržavati abecedne znakove.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} mora sadržavati slova ili brojeve.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} mora sadržavati slova ili razmake.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} mora sadržavati simbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} mora sadržavati velika slova.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} mora sadržavati mala slova.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} mora sadržavati brojeve.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} mora biti simbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} može sadržavati samo velika slova.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} može sadržavati samo mala slova.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti prije ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti u prošlosti.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Format sadržaja nije ispravan i ne može biti predan.`;\n }\n return `${sentence(name)} mora biti između ${args[0]} i ${args[1]}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} ne odgovara zadanoj vrijednosti.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(\n name\n )} nije ispravan format datuma. Molimo koristite sljedeći format: ${args[0]}`;\n }\n return \"Ovo polje nije ispravno postavljeno i ne može biti predano.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} mora biti vrijednost između ${date(args[0])} i ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Molimo upišite ispravnu email adresu.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} ne završava s ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} nije dopuštena vrijednost.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = first <= second ? first : second;\n const max = second >= first ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} mora sadržavati barem jedan znak.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} mora imati ${max} ili manje znakova.`;\n }\n if (min === max) {\n return `${sentence(name)} trebao bi biti dugačak ${max} znakova.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} mora imati barem ${min} znakova.`;\n }\n return `Broj znakova za polje ${sentence(name)} mora biti između ${min} i ${max}.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nije dozvoljena vrijednost.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ne smije imati više od ${args[0]} ${name} polja.`;\n }\n return `${sentence(name)} mora imati vrijednost manju ili jednaku ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Format datoteke nije dozvoljen.\";\n }\n return `Format datoteke na polju ${sentence(name)} mora odgovarati: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Broj upisanih vrijednosti na polju ${name} mora biti barem ${args[0]}.`;\n }\n return `${sentence(name)} mora biti barem ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” nije dozvoljena vrijednost na polju ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} mora biti broj.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" ili \")} je potreban.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} je obavezno.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ne počinje s ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Unesite valjanu URL adresu.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Odabrani datum je nevažeći.\"\n};\nvar hr = { ui: ui17, validation: validation17 };\nvar ui18 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Hozzáadás\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Eltávolítás\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Összes eltávolítása\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Sajnáljuk, nem minden mező lett helyesen kitöltve.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Beküldés\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nincs fájl kiválasztva\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Mozgás felfelé\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Mozgás lefelé\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Betöltés...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Töltsön be többet\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Következő\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Előző\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Adja hozzá az összes értéket\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Kiválasztott értékek hozzáadása\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Távolítsa el az összes értéket\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"A kiválasztott értékek eltávolítása\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Válassza ki a dátumot\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Dátum módosítása\",\n /**\n * Shown when there is something to close\n */\n close: \"Bezárás\",\n /**\n * Shown when there is something to open.\n */\n open: \"Nyitott\"\n};\nvar validation18 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Fogadja el a ${name} mezőt.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mezőnek ${date(args[0])} után kell lennie.`;\n }\n return `${sentence(name)} mezőnek a jövőben kell lennie.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} csak alfanumerikus karaktereket tartalmazhat.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} csak betűket és számokat tartalmazhat.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} csak betűket és szóközöket tartalmazhat.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `A ${sentence(name)} betűrendes karaktereket kell tartalmaznia.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `A ${sentence(name)} betűket vagy számokat kell tartalmaznia.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `A ${sentence(name)} betűket vagy szóközöket kell tartalmaznia.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `A ${sentence(name)} szimbólumot kell tartalmaznia.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `A ${sentence(name)} nagybetűt kell tartalmaznia.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `A ${sentence(name)} kisbetűt kell tartalmaznia.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `A ${sentence(name)} számot kell tartalmaznia.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `A ${sentence(name)} szimbólumnak kell lennie.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `A ${sentence(name)} csak nagybetűket tartalmazhat.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `A ${sentence(name)} csak kisbetűket tartalmazhat.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mezőnek ${date(args[0])} előtt kell lennie.`;\n }\n return `${sentence(name)} mezőnek a múltban kell lennie.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Ez a mező hibásan lett konfigurálva, így nem lehet beküldeni.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `A ${sentence(name)} mezőnek ${a} és ${b} között kell lennie.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} nem egyezik.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nem érvényes dátum, ${args[0]} formátumot használj`;\n }\n return \"Ez a mező hibásan lett konfigurálva, így nem lehet beküldeni.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} mezőnek ${date(args[0])} és ${args[1]} között kell lennie`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Kérjük, érvényes email címet adjon meg.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} mező nem a kijelölt (${list(args)}) módon ér véget.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} nem engedélyezett érték.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} mezőnek legalább egy karakteresnek kell lennie.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} mezőnek maximum ${max} karakteresnek kell lennie.`;\n }\n if (min === max) {\n return `${sentence(name)} ${max} karakter hosszúnak kell lennie.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} mezőnek minimum ${min} karakteresnek kell lennie.`;\n }\n return `${sentence(name)} mezőnek ${min} és ${max} karakter között kell lennie.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nem engedélyezett érték.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nem lehet több mint ${args[0]} ${name}.`;\n }\n return `${sentence(name)} nem lehet nagyobb, mint ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Nincsenek támogatott fájlformátumok.\";\n }\n return `${sentence(name)}-nak/nek a következőnek kell lennie: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nem lehet kevesebb, mint ${args[0]} ${name}.`;\n }\n return `${sentence(name)}-nak/nek minimum ${args[0]}-nak/nek kell lennie.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" nem engedélyezett ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} mezőnek számnak kell lennie.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" vagy \")} szükséges.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} mező kötelező.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} nem a következővel kezdődik: ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Kérjük, adjon meg egy érvényes URL-t.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"A kiválasztott dátum érvénytelen.\"\n};\nvar hu = { ui: ui18, validation: validation18 };\nvar ui19 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Tambah\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Hapus\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Hapus semua\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Maaf, tidak semua bidang formulir terisi dengan benar\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Kirim\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Tidak ada file yang dipilih\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Pindah ke atas\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Pindah ke bawah\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Memuat...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Muat lebih\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Berikutnya\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Sebelumnya\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Tambahkan semua nilai\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Tambahkan nilai yang dipilih\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Hapus semua nilai\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Hapus nilai yang dipilih\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Pilih tanggal\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Ubah tanggal\",\n /**\n * Shown when there is something to close\n */\n close: \"Tutup\",\n /**\n * Shown when there is something to open.\n */\n open: \"Buka\"\n};\nvar validation19 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Tolong terima kolom ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nilainya harus lebih dari waktu ${date(args[0])}.`;\n }\n return `${sentence(name)} harus berisi waktu di masa depan.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} hanya bisa diisi huruf alfabet.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} hanya bisa diisi huruf dan angka.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} hanya boleh berisi huruf dan spasi..`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} harus berisi karakter abjad.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} harus mengandung huruf atau angka.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} harus berisi huruf atau spasi.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} harus berisi simbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} harus berisi huruf besar.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} harus berisi huruf kecil.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} harus berisi angka.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} harus berupa simbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} hanya dapat berisi huruf besar.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} hanya dapat berisi huruf kecil.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nilainya harus kurang dari waktu ${date(args[0])}.`;\n }\n return `${sentence(name)} harus berisi waktu yang sudah lampau.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Kolom ini tidak diisi dengan benar sehingga tidak bisa dikirim`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} harus bernilai diantara ${a} dan ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} nilainya tidak cocok.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} waktu tidak cocok, mohon gunakan format waktu ${args[0]}`;\n }\n return \"Kolom ini tidak diisi dengan benar sehingga tidak bisa dikirim\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} harus diantara waktu ${date(args[0])} dan waktu ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Tolong tulis alamat email yang benar.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} nilainya tidak berakhiran dengan ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} adalah nilai yang tidak diizinkan.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} nilainya setidaknya berisi satu karakter.`;\n }\n if (min == 0 && max) {\n return `${sentence(\n name\n )} jumlah karakternya harus kurang dari atau sama dengan ${max} karakter.`;\n }\n if (min === max) {\n return `${sentence(name)} harus ${max} karakter panjang.`;\n }\n if (min && max === Infinity) {\n return `${sentence(\n name\n )} jumlah karakternya harus lebih dari atau sama dengan ${min} karakter.`;\n }\n return `${sentence(\n name\n )} jumlah karakternya hanya bisa antara ${min} dan ${max} karakter.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nilainya tidak diizinkan.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Tidak bisa memiliki lebih dari ${args[0]} ${name}.`;\n }\n return `${sentence(name)} harus lebih kecil atau sama dengan ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Format file tidak diizinkan\";\n }\n return `${sentence(name)} hanya bisa bertipe: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Tidak boleh kurang dari ${args[0]} ${name}.`;\n }\n return `${sentence(name)} setidaknya harus berisi ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” adalah nilai yang tidak diperbolehkan untuk ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} harus berupa angka.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" atau \")} diperlukan`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} harus diisi.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} tidak dimulai dengan ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Harap masukkan URL yang valid.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Tanggal yang dipilih tidak valid.\"\n};\nvar id = { ui: ui19, validation: validation19 };\nvar ui20 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Bæta við\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Fjarlægja\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Fjarlægja allt\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Því miður, það er ekki búið að fylla rétt inn í alla reiti.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Senda\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Engin skrá valin\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Færa upp\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Færa niður\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Hleðsla...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Sækja meira\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Áfram\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Til baka\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Bæta við öllum gildum\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Bæta við völdum gildum\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Fjarlægja öll gildi\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Fjarlægja valin gildi\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Velja dagsetningu\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Breyta dagsetningu\",\n /**\n * Shown when there is something to close\n */\n close: \"Loka\",\n /**\n * Shown when there is something to open.\n */\n open: \"Opið\"\n};\nvar validation20 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Vinsamlegast samþykktu ${name}`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} þarf að vera eftir ${date(args[0])}.`;\n }\n return `${sentence(name)} þarf að vera í framtíðinni.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} má einungis innihalda bókstafi.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} má einungis innihalda bókstafi og tölur.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} má einungis innihalda bókstafi og bil.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} verður að innihalda bókstafi.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} verður að innihalda bókstafi eða tölur.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} verður að innihalda bókstafi eða bil.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} verður að innihalda tákn.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} verður að innihalda hástaf.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} verður að innihalda lágstaf.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} verður að innihalda tölur.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} verður að vera tákn.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} má einungis innihalda hástafi.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} má einungis innihalda lágstafi.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} þarf að vera á undan ${date(args[0])}.`;\n }\n return `${sentence(name)} þarf að vera liðin.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Þessi reitur var ekki rétt stilltur.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} þarf að vera á milli ${a} og ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} passar ekki.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(\n name\n )} er ekki gild dagsetning, vinsamlegast hafið dagsetninguna í formi ${args[0]}`;\n }\n return \"Þessi reitur var ekki rétt stilltur\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} þarf að vera á milli ${date(args[0])} og ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Vinsamlegast sláðu inn gilt netfang.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} endar ekki á ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} er ekki leyfilegt gildi.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} þarf að vera að minnsta kosti einn stafur.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} þarf að vera færri en eða nákvæmlega ${max} stafir.`;\n }\n if (min === max) {\n return `${sentence(name)} þarf að vera ${max} stafir að lengd.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} þarf að vera fleiri en eða nákvæmlega ${min} stafir.`;\n }\n return `${sentence(name)} þarf að vera á milli ${min} og ${max} stafir.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} er ekki leyfilegt gildi.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ekki hægt að hafa fleiri en ${args[0]} ${name}.`;\n }\n return `${sentence(name)} þarf að vera minna en eða nákvæmlega ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Ekki leyfileg tegund skráar.\";\n }\n return `${sentence(name)} þarf að vera af tegundinni: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ekki hægt að hafa færri en ${args[0]} ${name}.`;\n }\n return `Þarf að vera að minnsta kosti ${args[0]} ${name}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” er ekki leyfilegt fyrir ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} þarf að vera tala.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" or \")} is required.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} er skilyrt.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} byrjar ekki á ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Vinsamlegast sláðu inn gilda slóð.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Valin dagsetning er ógild\"\n};\nvar is = { ui: ui20, validation: validation20 };\nvar ui21 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Inserisci\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Rimuovi\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Rimuovi tutti\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Ci dispiace, non tutti i campi sono compilati correttamente.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Invia\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nessun file selezionato\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Sposta in alto\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Sposta giù\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Caricamento...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Carica altro\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Prossimo\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Precedente\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Aggiungi tutti i valori\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Aggiungi valori selezionati\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Rimuovi tutti i valori\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Rimuovi i valori selezionati\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Scegli la data\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Cambia data\",\n /**\n * Shown when there is something to close\n */\n close: \"Chiudi\",\n /**\n * Shown when there is something to open.\n */\n open: \"Aperta\"\n};\nvar validation21 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Si prega di accettare ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `la data ${sentence(name)} deve essere successiva ${date(args[0])}.`;\n }\n return `la data ${sentence(name)} deve essere nel futuro.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} può contenere solo caratteri alfanumerici.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} può contenere solo lettere e numeri.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} può contenere solo lettere e spazi.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} deve contenere caratteri alfabetici.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} deve contenere lettere o numeri.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} deve contenere lettere o spazi.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} deve contenere un simbolo.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} must contain uppercase.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} deve contenere lettere minuscole.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} deve contenere numeri.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} deve essere un simbolo.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} può contenere solo lettere maiuscole.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} può contenere solo lettere minuscole.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `la data ${sentence(name)} deve essere antecedente ${date(args[0])}.`;\n }\n return `${sentence(name)} deve essere nel passato.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Questo campo è stato configurato male e non può essere inviato.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} deve essere tra ${a} e ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} non corrisponde.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} non è una data valida, per favore usa il formato ${args[0]}`;\n }\n return \"Questo campo è stato configurato in modo errato e non può essere inviato.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} deve essere tra ${date(args[0])} e ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Per favore inserire un indirizzo email valido.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} non termina con ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} non è un valore consentito.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} deve contenere almeno un carattere.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} deve essere minore o uguale a ${max} caratteri.`;\n }\n if (min === max) {\n return `${sentence(name)} deve contenere ${max} caratteri.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} deve essere maggiore o uguale a ${min} caratteri.`;\n }\n return `${sentence(name)} deve essere tra ${min} e ${max} caratteri.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} non è un valore consentito.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Non può avere più di ${args[0]} ${name}.`;\n }\n return `${sentence(name)} deve essere minore o uguale a ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Formato file non consentito.\";\n }\n return `${sentence(name)} deve essere di tipo: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Non può avere meno di ${args[0]} ${name}.`;\n }\n return `${sentence(name)} deve essere almeno ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" non è un ${name} consentito.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} deve essere un numero.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" o \")} è richiesto.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} è richiesto.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} non inizia con ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Inserisci un URL valido.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"La data selezionata non è valida.\"\n};\nvar it = { ui: ui21, validation: validation21 };\nvar ui22 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"追加\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"削除\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"全て削除\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"項目が正しく入力されていません。\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"送信\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"ファイルが選択されていません\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"上に移動\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"下へ移動\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"読み込み中...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"さらに読み込む\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"[次へ]\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"前へ\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"すべての値を追加\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"選択した値を追加\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"すべての値を削除\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"選択した値を削除\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"日付を選択\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"日付を変更\",\n /**\n * Shown when there is something to close\n */\n close: \"閉じる\",\n /**\n * Shown when there is something to open.\n */\n open: \"[開く]\"\n};\nvar validation22 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `${name}の同意が必要です。`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)}は${date(args[0])}より後の日付である必要があります。`;\n }\n return `${sentence(name)}は将来の日付でなければなりません。`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)}には英字のみを含めることができます。`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)}には、文字と数字のみを含めることができます。`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)}には、文字とスペースのみを含めることができます。`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} にはアルファベット文字が含まれている必要があります。`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} には文字または数字を含める必要があります。`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} には文字またはスペースを含める必要があります。`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} には記号が含まれている必要があります。`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} には大文字を含める必要があります。`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} には小文字を含める必要があります。`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} には数字が含まれている必要があります。`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} はシンボルでなければなりません。`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} には大文字しか使用できません`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} には小文字しか使用できません。`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)}は${date(args[0])}より前の日付である必要があります。`;\n }\n return `${sentence(name)}は過去の日付である必要があります。`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `このフィールドは正しく構成されていないため、送信できません。`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)}は${a}と${b}の間にある必要があります。`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)}が一致しません。`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)}は有効な日付ではありません。${args[0]}の形式を使用してください。`;\n }\n return \"このフィールドは正しく構成されておらず、送信できません。\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)}は${date(args[0])}と${date(\n args[1]\n )}の間にある必要があります。`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"有効なメールアドレスを入力してください。\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)}は${list(args)}で終わっていません。`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)}は許可された値ではありません。`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)}は少なくとも1文字である必要があります。`;\n }\n if (min == 0 && max) {\n return `${sentence(name)}は${max}文字以下である必要があります。`;\n }\n if (min === max) {\n return `${sentence(name)} の長さは ${max} 文字でなければなりません。`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)}は${min}文字以上である必要があります。`;\n }\n return `${sentence(name)}は${min}から${max}文字の間でなければなりません。`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)}は許可された値ではありません。`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name}は${args[0]}を超えることはできません。`;\n }\n return `${sentence(name)}は${args[0]}以下である必要があります。`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"ファイル形式は許可されていません。\";\n }\n return `${sentence(name)}は${args[0]}である必要があります。`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name}は${args[0]}未満にすることはできません。`;\n }\n return `${sentence(name)}は少なくとも${args[0]}である必要があります。`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}”は許可された${name}ではありません。`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)}は数値でなければなりません。`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\"または\")}${labels}が必要です。`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)}は必須です。`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)}は${list(args)}で始まっていません。`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `有効な URL を入力してください。`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"選択した日付は無効です。\"\n};\nvar ja = { ui: ui22, validation: validation22 };\nvar ui23 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"қосу\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Жою\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Барлығын жою\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Кешіріңіз, барлық өрістер дұрыс толтырылмаған.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Жіберу\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Ешбір файл таңдалмады\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Жоғары жылжу\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Төмен жылжытыңыз\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Жүктеу...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Көбірек жүктеңіз\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Келесі\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Алдыңғы\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Барлық мәндерді қосыңыз\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Таңдалған мәндерді қосыңыз\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Барлық мәндерді алып тастаңыз\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Таңдалған мәндерді алып тастаңыз\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Күнді таңдаңыз\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Өзгерту күні\",\n /**\n * Shown when there is something to close\n */\n close: \"Жабу\",\n /**\n * Shown when there is something to open.\n */\n open: \"Ашық\"\n};\nvar validation23 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `қабылдаңыз ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} кейін болуы керек ${date(args[0])}.`;\n }\n return `${sentence(name)} болашақта болуы керек.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} тек алфавиттік таңбаларды қамтуы мүмкін.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} тек әріптер мен сандардан тұруы мүмкін.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} тек әріптер мен бос орындар болуы мүмкін.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} алфавиттік таңбалардан тұруы керек.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} құрамында әріптер немесе сандар болуы керек.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} құрамында әріптер немесе бос орындар болуы керек.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} символы болуы керек.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} құрамында бас әріптер болуы керек.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} кіші әріп болуы керек.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} сандардан тұруы керек.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} символы болуы керек.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} тек бас әріптерден тұруы мүмкін.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} құрамында тек кіші әріптер болуы мүмкін.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} бұрын болуы керек ${date(args[0])}.`;\n }\n return `${sentence(name)} өткенде болуы керек.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Бұл өріс қате конфигурацияланған және оны жіберу мүмкін емес.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} арасында болуы керек ${a} және ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} сәйкес келмейді.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} жарамды күн емес, пішімді пайдаланыңыз ${args[0]}`;\n }\n return \"Бұл өріс қате конфигурацияланған және оны жіберу мүмкін емес\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} арасында болуы керек ${date(args[0])} және ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Өтінеміз қолданыстағы электронды пошта адресін енгізіңіз.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} -мен бітпейді ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} рұқсат етілген мән емес.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} кем дегенде бір таңба болуы керек.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} кем немесе тең болуы керек ${max} кейіпкерлер.`;\n }\n if (min === max) {\n return `${sentence(name)} ${max} таңбалары болуы керек.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} артық немесе тең болуы керек ${min} кейіпкерлер.`;\n }\n return `${sentence(name)} арасында болуы керек ${min} және ${max} кейіпкерлер.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} рұқсат етілген мән емес.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `артық болуы мүмкін емес ${args[0]} ${name}.`;\n }\n return `${sentence(name)} кем немесе тең болуы керек ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Файл пішімдері рұқсат етілмейді.\";\n }\n return `${sentence(name)} типте болуы керек: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `кем болуы мүмкін емес ${args[0]} ${name}.`;\n }\n return `${sentence(name)} кем дегенде болуы керек ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” рұқсат етілмейді ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} сан болуы керек.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" не \")} қажет.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} талап етіледі.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} -ден басталмайды ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Жарамды URL мекенжайын енгізіңіз.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Таңдалған күн жарамсыз.\"\n};\nvar kk = { ui: ui23, validation: validation23 };\nvar ui24 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"추가\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"제거\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"모두 제거\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"모든 값을 채워주세요\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"제출하기\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"선택된 파일이 없습니다\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"위로 이동\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"아래로 이동\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"로드 중...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"더 불러오기\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"다음\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"이전\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"모든 값 추가\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"선택한 값 추가\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"모든 값 제거\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"선택한 값 제거\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"날짜 선택\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"날짜 변경\",\n /**\n * Shown when there is something to close\n */\n close: \"닫기\",\n /**\n * Shown when there is something to open.\n */\n open: \"열기\"\n};\nvar validation24 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `${name} 올바른 값을 선택 해주세요`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])} 이후여야 합니다`;\n }\n return `${sentence(name)} 미래의 날짜여야합니다`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} 알파벳 문자만 포함할 수 있습니다`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} 문자와 숫자만 포함될 수 있습니다`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} 문자와 공백만 포함할 수 있습니다.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} 에는 알파벳 문자가 포함되어야 합니다.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} 에는 문자나 숫자가 포함되어야 합니다.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} 에는 문자나 공백이 포함되어야 합니다.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} 에는 기호를 포함해야 합니다.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} 는 대문자를 포함해야 합니다.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} 는 소문자를 포함해야 합니다.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} 에는 숫자가 포함되어야 합니다.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} 는 기호여야 합니다.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} 는 대문자만 포함할 수 있습니다.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} 는 소문자만 포함할 수 있습니다.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])} 이전여야 합니다`;\n }\n return `${sentence(name)} 과거의 날짜여야합니다`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `잘못된 구성으로 제출할 수 없습니다`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} ${a}와 ${b} 사이여야 합니다`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} 일치하지 않습니다`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} 유효한 날짜가 아닙니다. ${args[0]}과 같은 형식을 사용해주세요`;\n }\n return \"잘못된 구성으로 제출할 수 없습니다\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} ${date(args[0])}에서 ${date(args[1])} 사이여야 합니다`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"올바른 이메일 주소를 입력해주세요\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} ${list(args)}로 끝나지 않습니다`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} 허용되는 값이 아닙니다`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} 하나 이상의 문자여야 합니다`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} ${max}자 이하여야 합니다`;\n }\n if (min === max) {\n return `${sentence(name)} 는 ${max} 자 길이여야 합니다.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} ${min} 문자보다 크거나 같아야 합니다`;\n }\n return `${sentence(name)} ${min}에서 ${max}자 사이여야 합니다`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} 허용되는 값이 아닙니다`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${args[0]} ${name} 초과할 수 없습니다`;\n }\n return `${sentence(name)} ${args[0]}보다 작거나 같아야 합니다`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"파일 형식이 허용되지 않습니다\";\n }\n return `${sentence(name)} ${args[0]} 유형이어야 합니다`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${args[0]} ${name}보다 작을 수 없습니다`;\n }\n return `${sentence(name)} ${args[0]} 이상이어야 합니다`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `${value}\" 허용되지 않는 ${name}입니다`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} 숫자여야 합니다`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" 또는 \")}가 필요합니다.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} 필수 값입니다`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ${list(args)}로 시작하지 않습니다`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `유효한 URL을 입력하십시오.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"선택한 날짜가 잘못되었습니다.\"\n};\nvar ko = { ui: ui24, validation: validation24 };\nfunction getByQuantity(quantity, vienetas, vienetai, vienetu) {\n const lastTwoDigits = quantity.toString().slice(-2);\n const parsedQuantity = parseInt(lastTwoDigits);\n if (parsedQuantity > 10 && parsedQuantity < 20 || parsedQuantity % 10 === 0) {\n return vienetu;\n }\n if (parsedQuantity === 1 || parsedQuantity % 10 === 1) {\n return vienetas;\n }\n return vienetai;\n}\nvar ui25 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Pridėti\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Pašalinti\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Pašalinti visus\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Atsiprašome, ne visi laukai užpildyti teisingai.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Pateikti\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nepasirinktas joks failas\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Aukštyn\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Žemyn\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Kraunama...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Daugiau\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Kitas\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Ankstesnis\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Pridėti visas reikšmes\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Pridėti pasirinktas reikšmes\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Pašalinti visas reikšmes\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Pašalinti pasirinktas reikšmes\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Pasirinkti datą\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Pakeisti datą\",\n /**\n * Shown when there is something to close\n */\n close: \"Uždaryti\",\n /**\n * Shown when there is something to open.\n */\n open: \"Atidaryti\"\n};\nvar validation25 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Prašome priimti ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} turi būti po ${date(args[0])}.`;\n }\n return `${sentence(name)} turi būti ateityje.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} gali būti tik abėcėlės simboliai.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} gali būti tik raidės ir skaičiai.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} gali būti tik raidės ir tarpai.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} turi būti abėcėlės simbolių.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} turi būti raidžių arba skaičių.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} turi būti raidžių arba tarpų.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} turi būti simbolių.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} turi būti didžioji raidė.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} turi būti mažoji raidė.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} turi būti skaičių.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} turi būti simbolis.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} turi būti tik didžiosios raidės.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} turi būti tik mažosios raidės.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} turi būti prieš ${date(args[0])}.`;\n }\n return `${sentence(name)} turi būti praeityje.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Šis laukas buvo sukonfigūruotas neteisingai ir jo negalima pateikti.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} turi būti tarp ${a} ir ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} nesutampa.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nėra tinkama data, naudokite formatą ${args[0]}`;\n }\n return \"Šis laukas buvo sukonfigūruotas neteisingai ir jo negalima pateikti\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} turi būti tarp ${date(args[0])} ir ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Įveskite teisingą el. pašto adresą.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} nesibaigia su ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} nėra leistina reikšmė.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} turi būti bent vienas simbolis.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} turi būti mažiau arba lygiai ${max} ${getByQuantity(\n max,\n \"simbolis\",\n \"simboliai\",\n \"simbolių\"\n )}.`;\n }\n if (min === max) {\n return `${sentence(name)} turi būti iš ${max} ${getByQuantity(\n max,\n \"simbolio\",\n \"simbolių\",\n \"simbolių\"\n )}.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} turi būti daugiau arba lygiai ${min} ${getByQuantity(\n min,\n \"simbolis\",\n \"simboliai\",\n \"simbolių\"\n )}.`;\n }\n return `${sentence(name)} turi būti tarp ${min} ir ${max} simbolių.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nėra leistina reikšmė.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Negali turėti daugiau nei ${args[0]} ${name}.`;\n }\n return `${sentence(name)} turi būti mažiau arba lygiai ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Neleidžiami jokie failų formatai.\";\n }\n return `${sentence(name)} turi būti tokio tipo: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Negali turėti mažiau nei ${args[0]} ${name}.`;\n }\n return `Turi būti bent ${args[0]} ${name} .`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” nėra leidžiamas ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} turi būti skaičius.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" arba \")} yra privaloma.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} yra privaloma.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} neprasideda su ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Įveskite teisingą URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Pasirinkta data yra netinkama.\"\n};\nvar lt = { ui: ui25, validation: validation25 };\n\n// packages/i18n/src/locales/lv.ts\nvar ui26 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Pievienot\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Noņemt\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Noņemt visus\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Piedodiet, visi lauki nav aizpildīti.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Iesniegt\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nav izvēlēts fails\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Uz augšu\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Uz leju\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Ielādējas...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Ielādēt vēl\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Tālāk\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Atpakaļ\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Pievienot visas vērtības\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Pievienojiet izvēlēto vērtību\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Noņemt visas vērtības\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Noņemt izvēlētās vērtības\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Izvēlieties datumu\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Mainīt datumu\",\n /**\n * Shown when there is something to close\n */\n close: \"Aizvērt\",\n /**\n * Shown when there is something to open.\n */\n open: \"Atvērt\"\n};\nvar validation26 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Lūdzu apstipriniet ${name}`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${name} jābūt pēc ${date(args[0])}.`;\n }\n return `${name} jābūt pēc šodienas datuma.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${name} var saturēt tikai alfabētiskās rakstzīmes.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${name} var saturēt tikai burtus un ciparus.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${name} var saturēt tikai burtus un atstarpes.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${name} jābūt pirms ${date(args[0])}.`;\n }\n return `${name} jābūt pirms šodienas datuma.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Šis lauks tika aizpildīts nepareizi un nevar tikt iesniegts.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${name} jābūt starp ${a} un ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${name} nesakrīt.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${name} nav pareizs datums, lūdzu lietojiet formātu ${args[0]}`;\n }\n return \"Šis lauks tika aizpildīts nepareizi un nevar tikt iesniegts.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${name} jābūt starp ${date(args[0])} un ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Lūdzu ierakstiet pareizu e-pasta adresi.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${name} nebeidzas ar ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${name} nav atļauta vērtība.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${name} jābūt vismaz vienam simbolam.`;\n }\n if (min == 0 && max) {\n return `${name} jābūt mazāk par vai ${max} simboliem.`;\n }\n if (min === max) {\n return `${name} jābūt ${max} simbolu garumā.`;\n }\n if (min && max === Infinity) {\n return `${name} jābūt vismaz ${min} simboliem.`;\n }\n return `${name} jābūt starp ${min} un ${max} simboliem.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${name} nav atļauta vērtība.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nevar būt vairāk par ${args[0]} ${name}.`;\n }\n return `${name} nevar būt mazāk par ${args[0]} vai ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Atļauti nenoteikti faila formāti.\";\n }\n return `${sentence(name)} faila formāti var būt šādi: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nevar būt mazāk par ${args[0]} ${name}.`;\n }\n return `Jābūt vismaz ${args[0]} ${name}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” nav atļauta vērtība iekš ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${name} jābūt ciparam.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${name} ir obligāti jāaizpilda`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${name} nesākas ar ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Lūdzu pievienojiet pareizu URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Izvēlētais datums ir nepareizs.\"\n};\nvar lv = { ui: ui26, validation: validation26 };\n\n// packages/i18n/src/locales/mn.ts\nvar ui27 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Нэмэх\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Хасах\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Бүгдийг хасах\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Уучлраарай, зарим нүдэн дахь өгөгдөл дутуу байна.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Илгээх\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Файл сонгоогүй байна\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Дээшээ\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Доошоо\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Ачааллаж байна...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Нэмж ачааллах\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Дараагийн\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Өмнөх\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Бүх утгуудыг нэмэх\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Сонгогдсон утгуудыг нэмэх\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Бүх утгуудыг устгах\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Сонгогдсон утгуудыг хасах\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Огноо сонгох\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Огноо өөрчлөх\",\n /**\n * Shown when there is something to close\n */\n close: \"Хаах\",\n /**\n * Shown when there is something to open.\n */\n open: \"Нээлттэй\"\n};\nvar validation27 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `${name} утгыг зөвшөөрнө үү.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} нь ${date(args[0])}-ны дараа орох ёстой.`;\n }\n return `${sentence(name)} утга ирээдүйг заах ёстой.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} зөвхөн үсэг агуулах ёстой.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} зөвхөн үсэг болон тоог агуулах ёстой.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} зөвхөн үсэг болон зай агуулах ёстой.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} нь ${date(args[0])}-ны өмнө байх ёстой.`;\n }\n return `${sentence(name)} өнгөрсөн огноо байх ёстой.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Энэ нүдэн дэхь өгөгдөл буруу учраас илгээх боломжгүй.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} нь заавал ${a}, ${b} хоёрын дунд байх ёстой.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} таарахгүй байна.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} нь хүчинтэй огноо биш тул ${args[0]} гэсэн огноог ашиглаарай.`;\n }\n return \"Энэхүү нүд буруу тул цааш илгээх боломжгүй.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} нь заавал ${date(args[0])}, ${date(\n args[1]\n )} хоёр огноон дунд байх ёстой.`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Та хүчинтэй имейл хаягаа оруулна уу.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} нь ${list(args)} гэсэн утгаар төгсөөгүй байна.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} нь зөвшөөрөгдөх утга биш.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} дээр хаяж нэг үсэг байх ёстой`;\n }\n if (min == 0 && max) {\n return `${sentence(name)}-н урт нь ${max}-ээс ихгүй байх ёстой.`;\n }\n if (min === max) {\n return `${sentence(name)} нь ${max} урт байвал зүгээр.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)}-н урт нь ${min}-ээс их буюу тэнцүү байж болно.`;\n }\n return `${sentence(name)}-н урт нь ${min}, ${max} хоёрын дунд байх ёстой.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} нь зөвшөөрөгдөх утга биш.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} нь ${args[0]}-аас их байж болохгүй.`;\n }\n return `${sentence(name)} нь ${args[0]}-тай тэнцүү эсвэл бага байх ёстой.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Файлын формат буруу.\";\n }\n return `${sentence(name)} төрөл нь ${args[0]} байх ёстой.`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} нь ${args[0]}-аас их байж болохгүй.`;\n }\n return `${name} нь дор хаяж ${args[0]}-тай тэнцүү байх ёстой.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” бол зөвшөөрөгдөх ${name} гэсэн утга биш.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} зөвхөн тоо байх ёстой.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} байх ёстой.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} нь ${list(args)}-ээр эхлээгүй байна.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Хүчннтай URL оруулна уу.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Сонгосон огноо буруу байна.\"\n};\nvar mn = { ui: ui27, validation: validation27 };\nvar ui28 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Legg til\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Fjern\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Fjern alle\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Beklager, noen felter er ikke fylt ut korrekt.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Send inn\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Ingen fil valgt\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Flytt opp\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Flytt ned\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Laster...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Last mer\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Neste\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Forrige\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Legg til alle verdier\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Legg til valgte verdier\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Fjern alle verdier\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Fjern valgte verdier\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Velg dato\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Endre dato\"\n};\nvar validation28 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Vennligst aksepter ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} må være senere enn ${date(args[0])}.`;\n }\n return `${sentence(name)} må være i fremtiden.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} kan bare inneholde alfabetiske tegn.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} kan bare inneholde bokstaver og tall.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} kan bare inneholde bokstaver og mellomrom.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} must contain alphabetical characters.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} must contain letters and numbers.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} must contain letters and spaces.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} must contain symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} must contain uppercase.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} must contain lowercase.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} must contain number.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} can only contain symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} can only contain uppercase.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} can only contain lowercase.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} må være tidligere enn ${date(args[0])}.`;\n }\n return `${sentence(name)} må være i fortiden.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Dette feltet er feilkonfigurert og kan ikke innsendes.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} må være mellom ${a} og ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} stemmer ikke overens.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} er ikke en gyldig dato, vennligst bruk formatet ${args[0]}`;\n }\n return \"Dette feltet er feilkonfigurert og kan ikke innsendes.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} må være mellom ${date(args[0])} og ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Vennligst oppgi en gyldig epostadresse.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} slutter ikke med ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} er ikke en tillatt verdi.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} må ha minst ett tegn.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} må ha mindre enn eller nøyaktig ${max} tegn.`;\n }\n if (min === max) {\n return `${sentence(name)} skal være ${max} tegn langt.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} må ha mer enn eller nøyaktig ${min} tegn.`;\n }\n return `${sentence(name)} må ha mellom ${min} og ${max} tegn.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} er ikke en tillatt verdi.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Kan ikke ha mer enn ${args[0]} ${name}.`;\n }\n return `${sentence(name)} må være mindre enn eller nøyaktig ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Ingen tillatte filformater.\";\n }\n return `${sentence(name)} må være av typen: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Kan ikke ha mindre enn ${args[0]} ${name}.`;\n }\n return `${sentence(name)} må være minst ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” er ikke en tillatt ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} må være et tall.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" eller \")} er nødvendig.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} er påkrevd.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} starter ikke med ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Vennligst inkluder en gyldig url.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Den valgte datoen er ugyldig.\"\n};\nvar nb = { ui: ui28, validation: validation28 };\nvar ui29 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Toevoegen\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Verwijderen\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Alles verwijderen\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Sorry, niet alle velden zijn correct ingevuld.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Versturen\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Geen bestand gekozen\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Naar boven gaan\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Naar beneden verplaatsen\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Aan het laden...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Meer laden\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Vervolgens\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Voorgaand\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Alle waarden toevoegen\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Geselecteerde waarden toevoegen\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Alle waarden verwijderen\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Geselecteerde waarden verwijderen\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Kies een datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Datum wijzigen\",\n /**\n * Shown when there is something to close\n */\n close: \"Sluiten\",\n /**\n * Shown when there is something to open.\n */\n open: \"Open\"\n};\nvar validation29 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Accepteer de ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} moet na ${date(args[0])} zijn.`;\n }\n return `${sentence(name)} moet in de toekomst liggen.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} mag alleen alfabetische tekens bevatten.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} mag alleen letters en cijfers bevatten.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} mag alleen letters en spaties bevatten.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} moet alfabetische tekens bevatten.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} moet letters of cijfers bevatten.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} moet letters of spaties bevatten.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} moet een symbool bevatten.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} moet hoofdletters bevatten.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} moet kleine letters bevatten.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} moet cijfers bevatten.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} moet een symbool zijn.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} mag alleen hoofdletters bevatten.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} mag alleen kleine letters bevatten.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} moet vóór ${date(args[0])} vallen.`;\n }\n return `${sentence(name)} moet in het verleden liggen.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Dit veld is onjuist geconfigureerd en kan niet worden verzonden.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} moet tussen ${a} en ${b} liggen.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} komt niet overeen.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} is geen geldige datum, gebruik de notatie ${args[0]}`;\n }\n return \"Dit veld is onjuist geconfigureerd en kan niet worden verzonden\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} moet tussen ${date(args[0])} en ${date(args[1])} liggen`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Vul een geldig e-mailadres in.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} eindigt niet met ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} is geen toegestane waarde.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} moet minimaal één teken zijn.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} mag maximaal ${max} tekens lang zijn.`;\n }\n if (min === max) {\n return `${sentence(name)} moet ${max} tekens lang zijn.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} moet minimaal ${min} tekens lang zijn.`;\n }\n return `${sentence(name)} moet tussen de ${min} en ${max} tekens zijn.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} is geen toegestane waarde.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Mag niet meer dan ${args[0]} ${name} hebben.`;\n }\n return `${sentence(name)} moet kleiner zijn dan of gelijk zijn aan ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Geen bestandsformaten toegestaan.\";\n }\n return `${sentence(name)} moet van het type: ${args[0]} zijn`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Mag niet minder dan ${args[0]} ${name} hebben.`;\n }\n return `${sentence(name)} moet minimaal ${args[0]} zijn.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" is geen toegestane ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} moet een getal zijn.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" of \")} is vereist.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} is verplicht.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} begint niet met ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Voer een geldige URL in.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"De geselecteerde datum is ongeldig.\"\n};\nvar nl = { ui: ui29, validation: validation29 };\nvar ui30 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Dodaj\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Usuń\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Usuń wszystko\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Nie wszystkie pola zostały wypełnione poprawnie.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Wyślij\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nie wybrano pliku\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Przesuń w górę\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Przesuń w dół\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Ładowanie...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Załaduj więcej\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Kolejny\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Poprzednia\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Dodaj wszystkie wartości\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Dodaj wybrane wartości\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Usuń wszystkie wartości\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Usuń wybrane wartości\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Wybierz datę\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Zmień datę\",\n /**\n * Shown when there is something to close\n */\n close: \"Zamknij\",\n /**\n * Shown when there is something to open.\n */\n open: \"Otwórz\"\n};\nvar validation30 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Proszę zaakceptować ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} musi być po ${date(args[0])}.`;\n }\n return `${sentence(name)} musi być w przyszłości.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `Pole ${sentence(name)} może zawierać tylko znaki alfabetyczne.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `Pole ${sentence(name)} może zawierać tylko znaki alfanumeryczne.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `Pole ${sentence(name)} mogą zawierać tylko litery i spacje.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} musi zawierać znaki alfabetyczne.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} musi zawierać litery lub cyfry.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} musi zawierać litery lub spacje.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} musi zawierać symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} musi zawierać wielkie litery.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} musi zawierać małe litery.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} musi zawierać liczby.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} musi być symbolem.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} może zawierać tylko wielkie litery.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} może zawierać tylko małe litery.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} musi być przed ${date(args[0])}.`;\n }\n return `${sentence(name)} musi być w przeszłości.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Pole zostało wypełnione niepoprawnie i nie może zostać wysłane.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `Wartość pola ${sentence(name)} musi być pomiędzy ${a} i ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} nie pokrywa się.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `Wartość pola ${sentence(\n name\n )} nie jest poprawną datą, proszę użyć formatu ${args[0]}`;\n }\n return \"To pole zostało wypełnione niepoprawnie i nie może zostać wysłane\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `Data w polu ${sentence(name)} musi być pomiędzy ${date(args[0])} i ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Proszę wpisać poprawny adres email.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `Pole ${sentence(name)} nie kończy się na ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `Pole ${sentence(name)} nie jest dozwoloną wartością.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `Pole ${sentence(name)} musi posiadać minimum jeden znak.`;\n }\n if (min == 0 && max) {\n return `Pole ${sentence(name)} musi zawierać ${max} lub mniej znaków.`;\n }\n if (min && max === Infinity) {\n return `Pole ${sentence(name)} musi zawierać ${min} lub więcej znaków.`;\n }\n if (min === max) {\n return `Pole ${sentence(name)} musi mieć ${min} znaków.`;\n }\n return `Pole ${sentence(name)} musi mieć ${min}-${max} znaków.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `Pole ${sentence(name)} zawiera niedozwolone znaki.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nie można mieć więcej niż ${args[0]} ${name}.`;\n }\n return `Wartość pola ${sentence(name)} musi być mniejsza lub równa ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Nie podano dozwolonych typów plików.\";\n }\n return `${sentence(name)} musi być typem: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Musisz podać więcej niż ${args[0]} ${name}.`;\n }\n return ` Musisz podać conajmniej ${args[0]} ${sentence(name)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name }) {\n return `Wartość pola ${name} jest niedozwolona.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} musi być numerem.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" lub \")} wymagany jest.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `Pole ${sentence(name)} jest wymagane.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `Wartośc pola ${sentence(name)} nie zaczyna się od ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Wprowadź prawidłowy adres URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Wybrana data jest nieprawidłowa.\"\n};\nvar pl = { ui: ui30, validation: validation30 };\nvar ui31 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Incluir\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Remover\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Remover todos\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Desculpe, alguns campos não foram preenchidos corretamente.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Enviar\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nenhum arquivo selecionado.\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Mover para cima\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Mover para baixo\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Carregando...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Carregar mais\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Próximo\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Anterior\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Adicione todos os valores\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Adicionar valores selecionados\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Remover todos os valores\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Remover valores selecionados\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Escolha a data\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Data da alteração\",\n /**\n * Shown when there is something to close\n */\n close: \"Fechar\",\n /**\n * Shown when there is something to open.\n */\n open: \"Aberto\"\n};\nvar validation31 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Por favor aceite o ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} precisa ser depois de ${date(args[0])}.`;\n }\n return `${sentence(name)} precisa ser no futuro.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} precisa conter apenas letras.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} pode conter apenas letras e números.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} pode conter apenas números e espaços.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} deve conter caracteres alfabéticos.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} deve conter letras ou números.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} deve conter letras ou espaços.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} deve conter um símbolo.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} deve conter letras maiúsculas.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} deve conter letras minúsculas.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} deve conter números.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} deve ser um símbolo.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} só pode conter letras maiúsculas.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} só pode conter letras minúsculas.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} precisa ser antes de ${date(args[0])}.`;\n }\n return `${sentence(name)} precisa ser no passado.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Este campo não foi configurado corretamente e não pode ser submetido.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} precisa ser entre ${a} e ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} não é igual.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} não é uma data válida, por favor use este formato ${args[0]}`;\n }\n return \"Este campo não foi configurado corretamente e não pode ser submetido.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} precisa ser entre ${date(args[0])} e ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Por favor, insira um endereço de email válido.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} não termina com ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} não é um valor permitido.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = first <= second ? first : second;\n const max = second >= first ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} precisa conter ao menos um caractere.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} precisa ser menor ou igual a ${max} caracteres.`;\n }\n if (min === max) {\n return `${sentence(name)} precisa conter ${max} caracteres.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} precisa ser maior ou igual a ${min} caracteres.`;\n }\n return `${sentence(name)} precisa ter entre ${min} e ${max} caracteres.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} não é um valor permitido.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Não pode ter mais de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} precisa ser menor ou igual a ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Não há formatos de arquivos permitidos.\";\n }\n return `${sentence(name)} precisa ser do tipo: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Não pode ter menos de ${args[0]} ${name}.`;\n }\n return `${sentence(name)} precisa ser pelo menos ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” não é um(a) ${name} permitido(a).`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} precisa ser um número.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" ou \")} é necessário.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} é obrigatório.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} não começa com ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Por favor, insira uma url válida.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"A data selecionada é inválida.\"\n};\nvar pt = { ui: ui31, validation: validation31 };\nvar ui32 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Adăugare\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Elimină\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Elimină tot\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Pare rău, unele câmpuri nu sunt corect completate.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Trimite\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nu este selectat nici un fișier\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Mutare în sus\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Mutare în jos\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Se încarcă...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Încărcați mai mult\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Urmatorul\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Precedent\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Adăugați toate valorile\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Adăugarea valorilor selectate\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Eliminați toate valorile\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Eliminați valorile selectate\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Alege data\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Modificați data\",\n /**\n * Shown when there is something to close\n */\n close: \"Închide\",\n /**\n * Shown when there is something to open.\n */\n open: \"Deschis\"\n};\nvar validation32 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Te rog acceptă ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} trebuie să fie după ${date(args[0])}.`;\n }\n return `${sentence(name)} trebuie sa fie în viitor.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} poate conține doar caractere alafetice.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} poate conține doar litere și numere.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} poate conține doar litere și spații.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} trebuie să conțină caractere alfabetice.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} trebuie să conțină litere sau numere.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} trebuie să conțină litere sau spații.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} trebuie să conțină simbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} trebuie să conțină majuscule.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} trebuie să conțină litere mici.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} trebuie să conțină numere.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} trebuie să fie un simbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} poate conține doar litere mari.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} poate conține doar litere mici.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} trebuie să preceadă ${date(args[0])}.`;\n }\n return `${sentence(name)} trebuie să fie în trecut.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Câmpul a fost configurat incorect și nu poate fi trimis.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} trebuie să fie între ${a} și ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} nu se potrivește.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nu este validă, te rog foloște formatul ${args[0]}`;\n }\n return \"Câmpul a fost incorect configurat și nu poate fi trimis.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} trebuie să fie între ${date(args[0])} și ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Te rog folosește o adresă de email validă.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} nu se termină cu ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} nu este o valoare acceptată.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} trebuie sa conțină cel puțin un caracter.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} trebuie sa aibă cel mult ${max} caractere.`;\n }\n if (min === max) {\n return `${sentence(name)} ar trebui să aibă ${max} caractere lungi.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} trebuie să aibă cel puțin ${min} caractere.`;\n }\n return `${sentence(name)} trebuie să aibă între ${min} și ${max} caractere.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nu este o valoare acceptată.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nu poate avea mai mult decat ${args[0]} ${name}.`;\n }\n return `${sentence(name)} trebuie să fie cel mult egal cu ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Tipul de fișier neacceptat.\";\n }\n return `${sentence(name)} trebuie să fie de tipul: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nu poate avea mai puțin decât ${args[0]} ${name}.`;\n }\n return `${sentence(name)} trebuie să fie cel puțin ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” nu este o valoare acceptă pentru ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} trebuie să fie un număr.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" sau \")} este necesar.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} este necesar.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} nu începe cu ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Introduceți o adresă URL validă.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Data selectată este nevalidă.\"\n};\nvar ro = { ui: ui32, validation: validation32 };\nvar ui33 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Добавить\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Удалить\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Убрать все\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Извините, не все поля заполнены верно.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Отправить\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Файл не выбран\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Переместить вверх\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Переместить вниз\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Загрузка...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Загрузить больше\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Следующий\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Предыдущий\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Добавить все значения\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Добавить выбранные значения\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Удалить все значения\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Удалить выбранные значения\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Выберите дату\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Изменить дату\",\n /**\n * Shown when there is something to close\n */\n close: \"Закрыть\",\n /**\n * Shown when there is something to open.\n */\n open: \"Открыть\"\n};\nvar validation33 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Пожалуйста, примите ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `Дата ${sentence(name)} должна быть позже ${date(args[0])}.`;\n }\n return `Дата ${sentence(name)} должна быть в будущем.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `Поле ${sentence(name)} может содержать только буквы.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `Поле ${sentence(name)} может содержать только буквы и цифры.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} могут содержать только буквы и пробелы.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} должен содержать алфавитные символы.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} должен содержать буквы или цифры.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} должно содержать буквы или пробелы.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} должен содержать символ.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} должно содержать прописные буквы.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} должно содержать строчные буквы.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} должен содержать числа.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} должен быть символом.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} может содержать только прописные буквы.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} может содержать только буквы нижнего регистра.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `Дата ${sentence(name)} должна быть раньше ${date(args[0])}.`;\n }\n return `Дата ${sentence(name)} должна быть в прошлом.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Это поле заполнено неверно и не может быть отправлено.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `Поле ${sentence(name)} должно быть между ${a} и ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `Поле ${sentence(name)} не совпадает.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `Поле ${sentence(\n name\n )} имеет неверную дату. Пожалуйста, используйте формат ${args[0]}`;\n }\n return \"Это поле заполнено неверно и не может быть отправлено.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `Дата ${sentence(name)} должна быть между ${date(args[0])} и ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Пожалуйста, введите действительный электронный адрес.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `Поле ${sentence(name)} не должно заканчиваться на ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `Поле ${sentence(name)} имеет неподустимое значение.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `Поле ${sentence(name)} должно содержать минимум один символ.`;\n }\n if (min == 0 && max) {\n return `Длина поля ${sentence(\n name\n )} должна быть меньше или равна ${max} символам.`;\n }\n if (min === max) {\n return `Длина ${sentence(name)} должна составлять ${max} символов.`;\n }\n if (min && max === Infinity) {\n return `Длина поля ${sentence(\n name\n )} должна быть больше или равна ${min} символам.`;\n }\n return `Длина поля ${sentence(name)} должна быть между ${min} и ${max} символами.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `Поле ${sentence(name)} имеет недопустимое значение.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Не может быть выбрано больше, чем ${args[0]} ${name}.`;\n }\n return `Поле ${sentence(name)} должно быть меньше или равно ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Не указаны поддержиавемые форматы файла.\";\n }\n return `Формат файла в поле ${sentence(name)} должен быть: ${args[0]}.`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Не может быть выбрано меньше, чем ${args[0]} ${name}.`;\n }\n return `Поле ${sentence(name)} должно быть не менее, чем ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” не поддерживается в поле ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `Поле ${sentence(name)} должно быть числом.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" или \")} требуется.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `Поле ${sentence(name)} обязательно для заполнения.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `Поле ${sentence(name)} должно начинаться с ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Пожалуйста, введите действительный URL-адрес.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Выбранная дата недействительна.\"\n};\nvar ru = { ui: ui33, validation: validation33 };\nvar ui34 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Pridať\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Odstrániť\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Odstrániť všetko\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Prepáčte, ale nie všetky polia sú vyplnené správne.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Odoslať\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nebol vybraný žiadny súbor\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Posunúť hore\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Posunúť dole\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Načítavanie...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Načítať viac\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Ďalšie\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Predošlý\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Pridajte všetky hodnoty\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Pridajte vybrané hodnoty\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Odstrániť všetky hodnoty\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Odstrániť vybrané hodnoty\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Vyberte dátum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Zmena dátumu\",\n /**\n * Shown when there is something to close\n */\n close: \"Zavrieť\",\n /**\n * Shown when there is something to open.\n */\n open: \"Otvorené\"\n};\nvar validation34 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Prosím zaškrtnite ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} musí byť za ${date(args[0])}.`;\n }\n return `${sentence(name)} musí byť v budúcnosti.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} môže obsahovať iba písmená.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} môže obsahovať iba písmená a čísla.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} môže obsahovať iba písmená a medzery.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} musí obsahovať abecedné znaky.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} musí obsahovať písmená alebo číslice.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} musí obsahovať písmená alebo medzery.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} musí obsahovať symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} musí obsahovať veľké písmená.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} musí obsahovať malé písmená.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} musí obsahovať čísla.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} musí byť symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} môže obsahovať iba veľké písmená.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} môže obsahovať len malé písmená.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} musí byť pred ${date(args[0])}.`;\n }\n return `${sentence(name)} musí byť v minulosti.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Toto pole bolo nesprávne nakonfigurované a nemôže byť odoslané.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} musí byť medzi ${a} and ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} does not match.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nie je platným dátumom, prosím, použite formát ${args[0]}`;\n }\n return \"Toto pole bolo nesprávne nakonfigurované a nemôže byť odoslané.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} musí byť medzi ${date(args[0])} a ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Prosím, zadajte platnú emailovú adresu.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} nekončí na ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} nie je povolená hodnota.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} musí mať najmenej jeden znak.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} musí byť menšie alebo rovné ako ${max} znakov.`;\n }\n if (min === max) {\n return `${sentence(name)} by mala mať dĺžku ${max} znakov.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} musí byť väčšie alebo rovné ako ${min} znakov.`;\n }\n return `${sentence(name)} musí byť medzi ${min} až ${max} znakov.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nie je povolená hodnota.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nie je možné použiť viac než ${args[0]} ${name}.`;\n }\n return `${sentence(name)} musí byť menšie alebo rovné ako ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Nie sú povolené formáty súborov.\";\n }\n return `${sentence(name)} musí byť typu: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Nemôže byť menej než ${args[0]} ${name}.`;\n }\n return `${sentence(name)} musí byť minimálne ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” nie je povolené hodnota pre ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} musí byť číslo.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" alebo \")} je potrebný.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} je povinné.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} nezačíná s ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Zadajte platnú adresu URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Vybraný dátum je neplatný.\"\n};\nvar sk = { ui: ui34, validation: validation34 };\nvar ui35 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Dodaj\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Odstrani\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Odstrani vse\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Nekatera polja niso pravilno izpolnjena.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Pošlji\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Nobena datoteka ni izbrana\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Premakni se navzgor\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Premakni se navzdol\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Nalaganje...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Naloži več\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Naslednji\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Prejšnji\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Dodajte vse vrednosti\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Dodajanje izbranih vrednosti\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Odstranite vse vrednosti\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Odstrani izbrane vrednosti\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Izberite datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Spremeni datum\",\n /**\n * Shown when there is something to close\n */\n close: \"Zapri\",\n /**\n * Shown when there is something to open.\n */\n open: \"Odpri\"\n};\nvar validation35 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Prosimo popravite ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti po ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti v prihodnosti.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} lahko vsebuje samo znake abecede.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} lahko vsebuje samo črke in številke.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} lahko vsebuje samo črke in presledke.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} mora vsebovati abecedne znake.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} mora vsebovati črke ali številke.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} mora vsebovati črke ali presledke.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} mora vsebovati simbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} mora vsebovati velike črke.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} mora vsebovati male črke.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} mora vsebovati številke.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} mora biti simbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} lahko vsebuje le velike črke.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} lahko vsebuje le male črke.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti pred ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti v preteklosti.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `To polje je narobe nastavljeno in ne mora biti izpolnjeno.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} mora biti med ${a} in ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} se ne ujema.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ni pravilen datum, prosimo uporabite format ${args[0]}`;\n }\n return \"To polje je narobe nastavljeno in ne mora biti izpolnjeno.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} mora biti med ${date(args[0])} in ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Vnesite veljaven e-poštni naslov.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} se mora kočati z ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} ni dovoljena vrednost.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} mora vsebovati vsaj en znak.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} mora vsebovati največ ${max} znakov.`;\n }\n if (min === max) {\n return `${sentence(name)} mora biti dolg ${max} znakov.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} mora vsebovati vsaj ${min} znakov.`;\n }\n return `${sentence(name)} mora vsebovati med ${min} in ${max} znakov.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} ni dovoljena vrednost.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Največ je ${args[0]} ${name}.`;\n }\n return `${sentence(name)} je lahko največ ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Nobena vrsta datoteke ni dovoljena.\";\n }\n return `${sentence(name)} mora biti tipa: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Najmanj ${args[0]} ${name} je dovoljenih.`;\n }\n return `${sentence(name)} mora biti vsaj ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” ni dovoljen(a/o) ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} mora biti številka.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" ali \")} zahtevan je.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} je zahtevan(o/a).`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} se mora začeti z ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Vnesite veljaven URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Izbrani datum je neveljaven.\"\n};\nvar sl = { ui: ui35, validation: validation35 };\nvar ui36 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Dodaj\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Ukloni\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Ukloni sve\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Pojedina polja nisu ispravno ispunjena.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Pošalji\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Fajl nije odabran\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Pomerite se gore\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Pomeri se dole\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Učitavanje...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Učitaj više\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Sledeća\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Prethodna\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Dodajte sve vrednosti\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Dodajte izabrane vrednosti\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Uklonite sve vrednosti\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Uklonite izabrane vrednosti\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Izaberite datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Promenite datum\",\n /**\n * Shown when there is something to close\n */\n close: \"Zatvori\",\n /**\n * Shown when there is something to open.\n */\n open: \"Otvori\"\n};\nvar validation36 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Molimo prihvatite ${name}`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti posle ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti u budućnosti.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} može da sadrži samo abecedne znakove.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} može da sadrži samo slova i brojeve.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} može da sadrži samo slova i razmake.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} mora da sadrži abecedne znakove.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} mora da sadrži slova ili brojeve.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} mora da sadrži slova ili razmake.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} mora da sadrži simbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} mora da sadrži velika slova.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} mora da sadrži mala slova.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} mora da sadrži brojeve.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} mora biti simbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} može da sadrži samo velika slova.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} može da sadrži samo mala slova.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} mora biti pre ${date(args[0])}.`;\n }\n return `${sentence(name)} mora biti u prošlosti.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Ovo polje je pogrešno konfigurisano i ne može se poslati.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} mora biti između ${a} i ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} se ne podudara.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} nije važeći datum, molimo Vas koristite format ${args[0]}`;\n }\n return \"Ovo polje je pogrešno konfigurisano i ne može se poslati\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} mora biti između ${date(args[0])} i ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Unesite ispravnu e-mail adresu.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} se ne završava sa ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} nije dozvoljena vrednost`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} mora biti najmanje jedan karakter.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} mora biti manji ili jednaki od ${max} karaktera.`;\n }\n if (min === max) {\n return `${sentence(name)} treba da bude ${max} znakova dugačak.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} mora biti veći ili jednaki od ${min} karaktera.`;\n }\n return `${sentence(name)} mora biti između ${min} i ${max} karaktera.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} nije dozvoljena vrednost.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ne može imati više od ${args[0]} ${name}.`;\n }\n return `${sentence(name)} mora biti manji ili jednaki od ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Nisu dozvoljeni formati datoteka.\";\n }\n return `${sentence(name)} mora biti tipa: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Ne može imati manje od ${args[0]} ${name}.`;\n }\n return `${sentence(name)} mora da ima najmanje ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” nije dozvoljeno ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} mora biti broj.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" или \")} потребан је.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} je obavezno polje.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ne počinje sa ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Unesite važeću URL adresu.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Izabrani datum je nevažeći.\"\n};\nvar sr = { ui: ui36, validation: validation36 };\nvar ui37 = {\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Ta bort\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Ta bort alla\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Tyvärr är inte alla fält korrekt ifyllda\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Skicka\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Ingen fil vald\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Flytta upp\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Flytta ner\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Laddar...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Ladda mer\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Nästa\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Föregående\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Lägg till alla värden\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Lägg till valda värden\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Ta bort alla värden\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Ta bort valda värden\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Välj datum\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Ändra datum\",\n /**\n * Shown when there is something to close\n */\n close: \"Stäng\",\n /**\n * Shown when there is something to open.\n */\n open: \"Öppna\"\n};\nvar validation37 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Var god acceptera ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} måste vara efter ${date(args[0])}.`;\n }\n return `${sentence(name)} måste vara framåt i tiden.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} kan enbart innehålla bokstäver i alfabetet.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} kan bara innehålla bokstäver och siffror.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} kan bara innehålla bokstäver och blanksteg.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} måste innehålla alfabetiska tecken.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} måste innehålla bokstäver eller siffror.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} måste innehålla bokstäver eller mellanslag.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} måste innehålla symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} måste innehålla versaler.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} måste innehålla gemener.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} måste innehålla siffror.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} måste vara en symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} kan bara innehålla versaler.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} kan bara innehålla små bokstäver.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} måste vara före ${date(args[0])}.`;\n }\n return `${sentence(name)} måste vara bakåt i tiden.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Det här fältet ställdes inte in korrekt och kan inte användas.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} måste vara mellan ${a} och ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} matchar inte.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} är inte ett giltigt datum, var god använd formatet ${args[0]}`;\n }\n return \"Det här fältet ställdes inte in korrekt och kan inte användas\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} måste vara mellan ${date(args[0])} och ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Var god fyll i en giltig e-postadress.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} slutar inte med ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} är inte ett godkänt värde.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} måste ha minst ett tecken.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} måste vara ${max} tecken eller färre.`;\n }\n if (min === max) {\n return `${sentence(name)} bör vara ${max} tecken långa.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} måste vara ${min} tecken eller fler.`;\n }\n return `${sentence(name)} måste vara mellan ${min} och ${max} tecken.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} är inte ett godkänt värde.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Kan inte ha mer än ${args[0]} ${name}.`;\n }\n return `${sentence(name)} måste vara ${args[0]} eller mindre.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Inga filtyper tillåtna.\";\n }\n return `${sentence(name)} måste vara av filtypen: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Kan inte ha mindre än ${args[0]} ${name}.`;\n }\n return `${sentence(name)} måste vara minst ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” är inte ett godkänt ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} måste vara en siffra.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" eller \")} krävs.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} är obligatoriskt.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} börjar inte med ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Ange en giltig URL.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Det valda datumet är ogiltigt.\"\n};\nvar sv = { ui: ui37, validation: validation37 };\n\n// packages/i18n/src/locales/tet.ts\nvar ui38 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Aumenta\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Hasai\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Hasai Hotu\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Deskulpa, iha informasaun neebe sala iha formuláriu\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Submete\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Seidauk hili file\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Muda ba leten\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Muda ba kotuk\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Hein lai...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Foti tan\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Ba oin\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Ba kotuk\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Aumenta hotu\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Aumenta buat neebe hili ona\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Hasai hotu\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Hasai buat neebe hili ona\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Hili data\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Troka data\"\n};\nvar validation38 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Favor ida simu ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} tenki depoid ${date(args[0])}.`;\n }\n return `${sentence(name)} tenki iha futuru.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} bele uza letra deit.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} bele uza letra ka numeru deit.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} bele uza letra ka numeru deit.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} tenki antes ${date(args[0])}.`;\n }\n return `${sentence(name)} tenki antes ohin loron.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Informasaun nee la loos no la bele submete.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} tenki iha klaran entre ${a} no ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} la hanesan.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} la loos, favor ida hakerek tuir ${args[0]}`;\n }\n return \"Informasaun nee la loos no la bele submete.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} tenki iha ${date(args[0])} no ${date(\n args[1]\n )} nia klaran`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Favor hakerek endresu email neebe loos.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} la remata ho ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `la bele uza ${sentence(name)}.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} tenki iha letra ida ka liu.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} tenki badak liu ${max} letra.`;\n }\n if (min === max) {\n return `${sentence(name)} tenki iha letra ${max}.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} tenki iha letra ${min} ka liu.`;\n }\n return `${sentence(name)} tenki iha letra ${min} too ${max}.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `la bele uza ${sentence(name)}.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `La bele iha ${args[0]} ka liu ${name}.`;\n }\n return `${sentence(name)} tenki kiik liu ka hanesan ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return `La bele simu 'format' ida.`;\n }\n return `${sentence(name)} tenki iha tipo: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Presiza ${args[0]} ${name} ka liu.`;\n }\n return `${name} tenki ${args[0]} ka liu.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `La bele uza “${value}” ba ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} tenki numeru.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `Presiza ${sentence(name)}.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} la komesa ho ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Favor hakerek URL neebe loos.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Data la loos.\"\n};\nvar tet = { ui: ui38, validation: validation38 };\nvar ui39 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Илова кардан\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Хориҷ кардан\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Ҳамаро хориҷ кунед\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Бубахшед, на ҳама майдонҳо дуруст пур карда шудаанд.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Пешниҳод кунед\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Ягон файл интихоб нашудааст\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Ба боло ҳаракат кунед\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Ба поён ҳаракат кунед\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Дар ҳоли боргузорӣ\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Бештар бор кунед\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"Баъдӣ\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"Гузашта\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Ҳама арзишҳоро илова кунед\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Илова кардани арзишҳои интихобшуда\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Ҳама арзишҳоро хориҷ кунед\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Арзишҳои интихобшударо хориҷ кунед\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Сана интихоб кунед\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Тағйир додани сана\"\n};\nvar validation39 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Лутфан ${name}-ро қабул кунед`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} бояд пас аз ${date(args[0])} бошад.`;\n }\n return `${sentence(name)} бояд дар оянда бошад.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} метавонад танҳо аломатҳои алифборо дар бар гирад.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} метавонад танҳо ҳарфҳо ва рақамҳоро дар бар гирад.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} метавонад танҳо ҳарфҳо ва фосилаҳоро дар бар гирад.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} must contain alphabetical characters.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} must contain letters and numbers.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} must contain letters and spaces.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} must contain symbol.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} must contain uppercase.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} must contain lowercase.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} must contain number.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} can only contain symbol.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} can only contain uppercase.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} can only contain lowercase.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} бояд пеш аз ${date(args[0])} бошад.`;\n }\n return `${sentence(name)} бояд дар гузашта бошад.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Ин майдон нодуруст танзим шудааст ва онро пешниҳод кардан ғайриимкон аст.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} бояд дар байни ${a} ва ${b} бошад.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} мувофиқат намекунад.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} санаи дуруст нест, лутфан формати ${args[0]}-ро истифода баред`;\n }\n return \"Ин майдон нодуруст танзим шудааст ва онро пешниҳод кардан ғайриимкон аст\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} бояд дар байни ${date(args[0])} ва ${date(\n args[1]\n )} бошад`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Лутфан нишонаи имейли амалкунандаро ворид намоед.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} бо ${list(args)} ба охир намерасад.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} арзиши иҷозатдодашуда нест.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} бояд ҳадди аққал як аломат бошад.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} бояд аз ${max} аломат камтар ё баробар бошад.`;\n }\n if (min === max) {\n return `${sentence(name)} бояд ${max} аломат бошад.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} бояд аз ${min} аломат зиёд ё баробар бошад.`;\n }\n return `${sentence(name)} бояд дар байни ${min} ва ${max} аломат бошад.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} арзиши иҷозатдодашуда нест.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Зиёда аз ${args[0]} ${name} дошта наметавонад.`;\n }\n return `${sentence(name)} бояд аз ${args[0]} камтар ё баробар бошад.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Ягон формати файл иҷозат дода намешавад.\";\n }\n return `${sentence(name)} бояд чунин намуд бошад: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Камтар аз ${args[0]} ${name} дошта наметавонад.`;\n }\n return `${sentence(name)} бояд ҳадди аққал ${args[0]} бошад.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" ${name} иҷозат дода намешавад.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} бояд рақам бошад.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" ё \")} зарур а`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} лозим аст.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} бо ${list(args)} оғоз намешавад.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Лутфан URL-и дурустро дохил кунед.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Санаи интихобшуда нодуруст аст.\"\n};\nvar tg = { ui: ui39, validation: validation39 };\nvar ui40 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"เพิ่ม\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"เอาออก\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"เอาออกทั้งหมด\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"ขออภัย ข้อมูลบางช่องที่กรอกไม่ถูกต้อง\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"ส่ง\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"ยังไม่ได้เลือกไฟล์\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"เลื่อนขึ้น\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"เลื่อนลง\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"กำลังโหลด...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"โหลดเพิ่มเติม\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"ถัดไป\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"ก่อนหน้า\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"เพิ่มค่าทั้งหมด\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"เพิ่มค่าที่เลือก\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"ลบค่าทั้งหมด\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"ลบค่าที่เลือก\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"เลือกวันที่\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"เปลี่ยนวันที่\",\n /**\n * Shown when there is something to close\n */\n close: \"ปิด\",\n /**\n * Shown when there is something to open.\n */\n open: \"เปิด\"\n};\nvar validation40 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `กรุณายอมรับ ${name}`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} จะต้องเป็นวันที่หลังจาก ${date(args[0])}`;\n }\n return `${sentence(name)} จะต้องเป็นวันที่ที่ยังไม่มาถึง`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} สามารถเป็นได้แค่ตัวอักษรเท่านั้น`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} สามารถเป็นได้แค่ตัวอักษรและตัวเลขเท่านั้น`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} สามารถเป็นได้แค่ตัวอักษรและเว้นวรรคเท่านั้น`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} ต้องมีตัวอักษรตัวอักษร`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} ต้องมีตัวอักษรหรือตัวเลข`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} ต้องมีตัวอักษรหรือช่องว่าง`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} ต้องมีสัญลักษณ์`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} ต้องมีตัวพิมพ์ใหญ่`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} ต้องมีตัวพิมพ์เล็ก`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} ต้องมีตัวเลข`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} จะต้องเป็นสัญลักษณ์`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} เท่านั้นที่สามารถมีตัวอักษรตัวพิมพ์ใหญ่`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} เท่านั้นที่สามารถมีตัวอักษรตัวพิมพ์เล็ก`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} จะต้องเป็นวันที่ที่มาก่อน ${date(args[0])}`;\n }\n return `${sentence(name)} จะต้องเป็นวันที่ที่ผ่านมาแล้ว`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `ช่องนี้ถูกตั้งค่าอย่างไม่ถูกต้อง และจะไม่สามารถส่งข้อมูลได้`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} จะต้องเป็นค่าระหว่าง ${a} และ ${b}`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} ไม่ตรงกัน`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ไม่อยู่ในรูปแบบวันที่ที่ถูกต้อง กรุณากรอกตามรูปแบบ ${args[0]}`;\n }\n return \"ช่องนี้ถูกตั้งค่าอย่างไม่ถูกต้อง และจะไม่สามารถส่งข้อมูลได้\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} จะต้องเป็นวันที่ระหว่าง ${date(args[0])} และ ${date(\n args[1]\n )}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"กรุณากรอกที่อยู่อีเมลทีถูกต้อง\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} จะต้องลงท้ายด้วย ${list(args)}`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} ไม่ใช่ค่าที่อนุญาตให้กรอก`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} จะต้องมีความยาวอย่างน้อยหนึ่งตัวอักษร`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} จะต้องมีความยาวไม่เกิน ${max} ตัวอักษร`;\n }\n if (min === max) {\n return `${sentence(name)} ควรจะเป็น ${max} ตัวอักษรยาว`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} จะต้องมีความยาว ${min} ตัวอักษรขึ้นไป`;\n }\n return `${sentence(name)} จะต้องมีความยาวระหว่าง ${min} และ ${max} ตัวอักษร`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} ไม่ใช่ค่าที่อนุญาตให้กรอก`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `ไม่สามารถเลือกมากกว่า ${args[0]} ${name} ได้`;\n }\n return `${sentence(name)} จะต้องมีค่าไม่เกิน ${args[0]}`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"ไม่มีประเภทของไฟล์ที่อนุญาต\";\n }\n return `${sentence(name)} จะต้องเป็นไฟล์ประเภท ${args[0]} เท่านั้น`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `ไม่สามารถเลือกน้อยกว่า ${args[0]} ${name} ได้`;\n }\n return `${sentence(name)} จะต้องมีค่าอย่างน้อย ${args[0]}`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” ไม่ใช่ค่า ${name} ที่อนุญาตให้กรอก`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} จะต้องเป็นตัวเลขเท่านั้น`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" หรือ \")} ต้องการ.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `กรุณากรอก ${sentence(name)}`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} จะต้องเริ่มต้นด้วย ${list(args)}`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `กรุณาระบุที่อยู่ลิงก์ให้ถูกต้อง`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"วันที่ที่เลือกไม่ถูกต้อง\"\n};\nvar th = { ui: ui40, validation: validation40 };\nvar ui41 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Ekle\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Kaldır\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Hepsini kaldır\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Maalesef, tüm alanlar doğru doldurulmadı.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Gönder\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Dosya yok\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Yukarı Taşı\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Aşağı taşı\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Yükleniyor...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Daha fazla yükle\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Sonraki\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Önceki\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Tüm değerleri ekle\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Seçili değerleri ekle\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Tüm değerleri kaldır\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Seçili değerleri kaldır\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Tarih seçin\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Tarihi değiştir\",\n /**\n * Shown when there is something to close\n */\n close: \"Kapat\",\n /**\n * Shown when there is something to open.\n */\n open: \"Açık\"\n};\nvar validation41 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Lütfen ${name}'yi kabul edin.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])}'den sonra olmalıdır.`;\n }\n return `${sentence(name)} gelecekte bir zaman olmalıdır.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} sadece alfabetik karakterler içerebilir.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} sadece alfabetik karakterler ve sayı içerebilir.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} yalnızca harf ve boşluk içerebilir.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} alfabetik karakterler içermelidir.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} harf veya rakamı içermelidir.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} harf veya boşluk içermelidir.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} sembol içermelidir.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} büyük harf içermelidir.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} küçük harf içermelidir.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} sayı içermelidir.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} bir sembol olmalıdır.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} yalnızca büyük harfler içerebilir.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} yalnızca küçük harfler içerebilir.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])} tarihinden önce olmalı.`;\n }\n return `${sentence(name)} geçmişte olmalı.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Alan yanlış yapılandırılmış ve gönderilemez.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} ${a} ve ${b} aralığında olmalı.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} eşleşmiyor.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} geçerli bir tarih değil, lütfen ${args[0]} biçimini kullanın.`;\n }\n return \"Alan yanlış yapılandırılmış ve gönderilemez.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)}, ${date(args[0])} ve ${date(args[1])} aralığında olmalı.`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Lütfen geçerli bir e-mail adresi girin.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} ${list(args)} ile bitmiyor.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} izin verilen bir değer değil.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} en azından bir karakter uzunluğunda olmalı.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} ${max}'e eşit veya daha küçük olmalı.`;\n }\n if (min === max) {\n return `${sentence(name)} ${max} karakter uzunluğunda olmalıdır.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} ${min}'e eşit veya daha büyük olmalı.`;\n }\n return `${sentence(name)}, ${min} ve ${max} karakter uzunluğu aralığında olmalı.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} izin verilen bir değer değil.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name}'in uzunluğu ${args[0]}'dan daha uzun olamaz.`;\n }\n return `${sentence(name)} en azından ${args[0]} uzunluğunda veya ona eşit olmalı.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Hiçbir dosya türüne izin verilmez.\";\n }\n return `${sentence(name)} şu tiplerden biri olmalı: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name}'in uzunluğu ${args[0]}'dan daha kısa olamaz.`;\n }\n return `${sentence(name)} en azından ${args[0]} uzunluğunda olmalı.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” ${name} olamaz.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} sayı olmalı.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" veya \")} gereklidir.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} gerekli.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ${list(args)} ile başlamıyor.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Lütfen geçerli bir URL girin.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Seçilen tarih geçersiz.\"\n};\nvar tr = { ui: ui41, validation: validation41 };\nvar ui42 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Додати\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Видалити\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Видалити все\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Вибачте, не всі поля заповнені правильно.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Відправити\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Файл не вибрано\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Рухатися вгору\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Пересунути вниз\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Завантаження...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Завантажте більше\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Наступний\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Попередній\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Додати всі значення\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Додати вибрані значення\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Вилучити всі значення\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Вилучити вибрані значення\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Виберіть дату\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Змінити дату\",\n /**\n * Shown when there is something to close\n */\n close: \"Закрити\",\n /**\n * Shown when there is something to open.\n */\n open: \"Відкрити\"\n};\nvar validation42 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Будь ласка, прийміть ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `Дата ${sentence(name)} повинна бути пізніше за ${date(args[0])}.`;\n }\n return `Дата ${sentence(name)} має бути в майбутньому.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `Поле ${sentence(name)} може містити лише літери.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `Поле ${sentence(name)} може містити лише літери та цифри.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `Поле ${sentence(name)} може містити лише літери та пробіли.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} повинен містити алфавітні символи.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} повинен містити букви або цифри.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} повинен містити літери або пробіли.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} повинен містити символ.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} повинен містити великі регістри.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} повинен містити малі регістри.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} повинен містити цифри.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} має бути символом.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} може містити лише великі літери.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} може містити лише малі літери.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `Дата ${sentence(name)} повинна бути раніше за ${date(args[0])}.`;\n }\n return `Дата ${sentence(name)} повинна бути в минулому.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Це поле заповнено неправильно і не може бути надіслано.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `Поле ${sentence(name)} повинно бути між ${a} та ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `Поле ${sentence(name)} не збігається.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `Поле ${sentence(\n name\n )} має неправильну дату. Будь ласка, використовуйте формат ${args[0]}.`;\n }\n return \"Це поле заповнено неправильно і не може бути надіслано.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `Дата ${sentence(name)} повинна бути між ${date(args[0])} та ${date(\n args[1]\n )}.`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Будь ласка, введіть дійсну електронну адресу.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `Поле ${sentence(name)} не повинно закінчуватися на ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `Поле ${sentence(name)} має неприпустиме значення.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `Поле ${sentence(name)} має містити щонайменше один символ.`;\n }\n if (min == 0 && max) {\n return `Довжина поля ${sentence(\n name\n )} повинна бути меншою або дорівнювати ${max} символам.`;\n }\n if (min === max) {\n return `${sentence(name)} має бути довжиною ${max} символів.`;\n }\n if (min && max === Infinity) {\n return `Довжина поля ${sentence(\n name\n )} повинна бути більшою або дорівнювати ${min} символам.`;\n }\n return `Довжина поля ${sentence(\n name\n )} повинна бути між ${min} та ${max} символами.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `Поле ${sentence(name)} має неприпустиме значення.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Не може бути вибрано більше ніж ${args[0]} ${name}.`;\n }\n return `Поле ${sentence(name)} має бути менше або дорівнювати ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Не вказано дозволені типи файлів.\";\n }\n return `Тип файлу в полі ${sentence(name)} має бути: ${args[0]}.`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `Не може бути вибрано менше ніж ${args[0]} ${name}.`;\n }\n return `Поле ${sentence(name)} має бути не менше ніж ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” не дозволено в полі ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `Поле ${sentence(name)} має бути числом.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" або \")} потрібно.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `Поле ${sentence(name)} є обов'язковим.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `Поле ${sentence(name)} має починатися з ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Будь ласка, введіть коректну URL-адресу.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Вибрана дата недійсна.\"\n};\nvar uk = { ui: ui42, validation: validation42 };\nvar ui43 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"Qo'shish\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"O'chirish\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Hammasini o'chirish\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Kechirasiz, barcha maydonlar to'g'ri to'ldirilmagan.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Yuborish\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Hech qanday fayl tanlanmagan\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Yuqoriga ko’taring\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Pastga siljish\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Yuklanmoqda...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Ko’proq yuklang\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Keyingi\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Oldingi\",\n /**\n * Shown when adding all values.\n */\n addAllValues: `Barcha qiymatlarni qo'shish`,\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: `Tanlangan qiymatlarni qoʻshish`,\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Barcha qiymatlarni olib tashlang\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Tanlangan qiymatlarni olib tashlash\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Sanani tanlang\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: `O'zgartirish sanasi`,\n /**\n * Shown when there is something to close\n */\n close: \"Yopish\",\n /**\n * Shown when there is something to open.\n */\n open: \"Ochiq\"\n};\nvar validation43 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `${name} ni qabul qiling.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])} dan keyin bo'lishi kerak.`;\n }\n return `${sentence(name)} kelajakda bo'lishi kerak.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(\n name\n )} faqat alifbo tartibidagi belgilardan iborat bo'lishi mumkin.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} faqat harflar va raqamlardan iborat bo'lishi mumkin.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} faqat harf va bo'shliqlardan iborat bo'lishi mumkin.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} alfavit belgilarini o'z ichiga olishi kerak.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} harflar yoki raqamlarni o'z ichiga olishi kerak.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} harflar yoki bo'shliqlar bo'lishi kerak.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} belgisi bo'lishi kerak.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} katta harfni o'z ichiga olishi kerak.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} kichik harflarni o'z ichiga olishi kerak.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} raqamlarini o'z ichiga olishi kerak.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} belgisi bo'lishi kerak.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} faqat katta harflarni o'z ichiga olishi mumkin.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} faqat kichik harflarni o'z ichiga olishi mumkin.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} ${date(args[0])} dan oldin bo'lishi kerak`;\n }\n return `${sentence(name)} o'tmishda bo'lishi kerak.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Bu maydon noto'g'ri sozlangan va uni yuborib bo'lmaydi.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} ${a} va ${b} orasida bo'lishi kerak.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} mos emas.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} haqiqiy sana emas, iltimos ${args[0]} formatidan foydalaning`;\n }\n return \"Bu maydon noto'g'ri sozlangan va uni yuborib bo'lmaydi\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} ${date(args[0])} va ${date(\n args[1]\n )} oralig'ida bo'lishi kerak`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Iltimos amaldagi e-mail manzilingizni kiriting.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} ${list(args)} bilan tugamaydi.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} ruxsat etilgan qiymat emas.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} kamida bitta belgidan iborat bo'lishi kerak.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} ${max} ta belgidan kam yoki teng bo'lishi kerak.`;\n }\n if (min === max) {\n return `${sentence(name)} bo'lishi kerak ${max} belgilar uzun.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} ${min} ta belgidan ko'p yoki teng bo'lishi kerak.`;\n }\n return `${sentence(\n name\n )} ${min} va ${max} gacha belgilardan iborat bo'lishi kerak.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} ruxsat etilgan qiymat emas.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${args[0]} ${name} dan ortiq bo'lishi mumkin emas.`;\n }\n return `${sentence(name)} ${args[0]} dan kichik yoki teng bo'lishi kerak.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Fayl formatlariga ruxsat berilmagan.\";\n }\n return `${sentence(name)} quyidagi turdagi bo'lishi kerak: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${args[0]} ${name} dan kam bo'lmasligi kerak.`;\n }\n return `${sentence(name)} kamida ${args[0]} bo'lishi kerak.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" ruxsat berilmagan ${name}.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} raqam bo'lishi kerak.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" yoki \")} kerak.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} talab qilinadi.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} ${list(args)} bilan boshlanmaydi.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Iltimos, tegishli URL manzilini kiriting.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Tanlangan sana yaroqsiz.\"\n};\nvar uz = { ui: ui43, validation: validation43 };\nvar ui44 = {\n /**\n * Shown on buttons for adding new items.\n */\n add: \"Thêm\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"Xoá\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"Xoá tất cả\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"Xin lỗi, không phải tất cả các trường đều được nhập đúng.\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"Gửi\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"Chưa chọn file\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"Di chuyển lên\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"Di chuyển xuống\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"Đang tải...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"Tải thêm\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"Tiếp\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"Trước\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"Thêm tất cả các giá trị\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"Thêm các giá trị đã chọn\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"Loại bỏ tất cả các giá trị\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"Loại bỏ các giá trị đã chọn\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"Chọn ngày\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"Thay đổi ngày\",\n /**\n * Shown when there is something to close\n */\n close: \"Đóng\",\n /**\n * Shown when there is something to open.\n */\n open: \"Mở\"\n};\nvar validation44 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `Hãy đồng ý với ${name}.`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} phải sau ${date(args[0])}.`;\n }\n return `${sentence(name)} phải trong tương lai.`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} có thể chỉ bao gồm các chữ cái alphabet.`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} có thể chỉ bao gồm các chữ cái và chữ số.`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} chỉ có thể chứa các chữ cái và khoảng trắng.`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} phải chứa các ký tự chữ cái.`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} phải chứa chữ cái hoặc số.`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} phải chứa chữ cái hoặc dấu cách.`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} phải chứa ký hiệu.`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} phải chứa chữ hoa.`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} phải chứa chữ thường.`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} phải chứa số.`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} phải là một ký hiệu.`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} chỉ có thể chứa chữ hoa.`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} chỉ có thể chứa chữ thường.`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} phải trước ${date(args[0])}.`;\n }\n return `${sentence(name)} phải trong quá khứ.`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `Trường này đã được thiết lập sai và không thể gửi.`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} phải ở giữa ${a} và ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} không khớp.`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} không phải ngày hợp lệ, hãy sử dụng định dạng ${args[0]}`;\n }\n return \"Trường này đã được thiết lập sai và không thể gửi.\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} phải ở giữa khoảng từ ${date(args[0])} đến ${date(\n args[1]\n )}.`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"Hãy nhập một địa chỉ email hợp lệ.\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} không kết thúc với ${list(args)}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} không phải một giá trị được cho phép.`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} phải có độ dài tối thiểu một ký tự.`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} phải có độ dài tối đa ${max} ký tự.`;\n }\n if (min === max) {\n return `${sentence(name)} nên dài ${max} ký tự.`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} phải có độ dài tối thiểu ${min} ký tự.`;\n }\n return `${sentence(\n name\n )} phải có độ dài tối đa trong khoảng từ ${min} đến ${max} ký tự.`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} không phải một giá trị được cho phép.`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} không thể lớn hơn ${args[0]}.`;\n }\n return `${sentence(name)} phải tối đa bằng ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"Định dạng tệp tin này không được phép.\";\n }\n return `${sentence(name)} phải là một trong các dạng: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name} không thể nhỏ hơn ${args[0]}.`;\n }\n return `${sentence(name)} phải tối thiểu bằng ${args[0]}.`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\" không phải giá trị ${name} được phép.`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} phải là một số.`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\" hoặc \")} cần có.`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} là bắt buộc.`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} không bắt đầu với ${list(args)}.`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `Vui lòng nhập một URL hợp lệ.`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"Ngày đã chọn không hợp lệ.\"\n};\nvar vi = { ui: ui44, validation: validation44 };\nvar ui45 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"添加\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"移除\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"移除全部\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"抱歉,部分字段未被正确填写。\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"提交\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"未选择文件\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"上移\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"下移\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"加载中...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"加载更多\",\n /**\n * Shown on buttons that navigate state forward\n */\n next: \"下一步\",\n /**\n * Shown on buttons that navigate state backward\n */\n prev: \"上一步\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"添加所有值\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"添加所选值\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"移除所有值\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"移除所选值\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"选择日期\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"更改日期\",\n /**\n * Shown when there is something to close\n */\n close: \"关闭\",\n /**\n * Shown when there is something to open.\n */\n open: \"打开\"\n};\nvar validation45 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `请接受${name}。`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)}必须晚于${date(args[0])}。`;\n }\n return `${sentence(name)}必须是未来的日期。`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)}只能包含英文字母。`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)}只能包含字母和数字。`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)}只能包含字母和空格。`;\n },\n /**\n * The value have no letter.\n * @see {@link https://formkit.com/essentials/validation#contains_alpha}\n */\n contains_alpha({ name }) {\n return `${sentence(name)} 必须包含字母字符`;\n },\n /**\n * The value have no alphanumeric\n * @see {@link https://formkit.com/essentials/validation#contains_alphanumeric}\n */\n contains_alphanumeric({ name }) {\n return `${sentence(name)} 必须包含字母或数字。`;\n },\n /**\n * The value have no letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#contains_alpha-spaces}\n */\n contains_alpha_spaces({ name }) {\n return `${sentence(name)} 必须包含字母或空格。`;\n },\n /**\n * The value have no symbol\n * @see {@link https://formkit.com/essentials/validation#contains_symbol}\n */\n contains_symbol({ name }) {\n return `${sentence(name)} 必须包含符号。`;\n },\n /**\n * The value have no uppercase\n * @see {@link https://formkit.com/essentials/validation#contains_uppercase}\n */\n contains_uppercase({ name }) {\n return `${sentence(name)} 必须包含大写字母。`;\n },\n /**\n * The value have no lowercase\n * @see {@link https://formkit.com/essentials/validation#contains_lowercase}\n */\n contains_lowercase({ name }) {\n return `${sentence(name)} 必须包含小写字母。`;\n },\n /**\n * The value have no numeric\n * @see {@link https://formkit.com/essentials/validation#contains_numeric}\n */\n contains_numeric({ name }) {\n return `${sentence(name)} 必须包含数字。`;\n },\n /**\n * The value is not symbol\n * @see {@link https://formkit.com/essentials/validation#symbol}\n */\n symbol({ name }) {\n return `${sentence(name)} 必须是符号。`;\n },\n /**\n * The value is not uppercase\n * @see {@link https://formkit.com/essentials/validation#uppercase}\n */\n uppercase({ name }) {\n return `${sentence(name)} 只能包含大写字母。`;\n },\n /**\n * The value is not lowercase\n * @see {@link https://formkit.com/essentials/validation#lowercase}\n */\n lowercase({ name }) {\n return `${sentence(name)} 只能包含小写字母。`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)}必须早于${date(args[0])}。`;\n }\n return `${sentence(name)}必须是过去的日期。`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `该字段未被正确设置而无法提交。`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)}必须在${a}和${b}之间。`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)}不匹配。`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)}不是合法日期,请使用 ${args[0]} 格式`;\n }\n return \"该字段未被正确设置而无法提交\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)}必须在${date(args[0])}和${date(args[1])}之间`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"请输入合法的电子邮件地址。\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)}必须以${list(args)}结尾。`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)}是不允许的。`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)}至少要有一个字符。`;\n }\n if (min == 0 && max) {\n return `${sentence(name)}必须少于或等于${max}个字符。`;\n }\n if (min === max) {\n return `${sentence(name)}必须包含${max}个字符。`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)}必须多于或等于${min}个字符。`;\n }\n return `${sentence(name)}必须介于${min}和${max}个字符之间。`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)}是不允许的。`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name}不得多于${args[0]}个值。`;\n }\n return `${name}不得大于${args[0]}。`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"没有允许的文件格式。\";\n }\n return `${sentence(name)}的类型必须为:${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `${name}不得少于${args[0]}个值。`;\n }\n return `${sentence(name)}不得小于${args[0]}。`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `\"${value}\"不是一个合法的${name}。`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)}必须为数字。`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\"或\")}${labels}需要。`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)}不得留空。`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)}必须以${list(args)}开头。`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `请输入有效的 URL。`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"所选日期无效。\"\n};\nvar zh = { ui: ui45, validation: validation45 };\nvar ui46 = {\n /**\n * Shown on a button for adding additional items.\n */\n add: \"新增\",\n /**\n * Shown when a button to remove items is visible.\n */\n remove: \"移除\",\n /**\n * Shown when there are multiple items to remove at the same time.\n */\n removeAll: \"移除全部\",\n /**\n * Shown when all fields are not filled out correctly.\n */\n incomplete: \"很抱歉,部分欄位填寫錯誤\",\n /**\n * Shown in a button inside a form to submit the form.\n */\n submit: \"提交\",\n /**\n * Shown when no files are selected.\n */\n noFiles: \"尚未選取檔案\",\n /**\n * Shown on buttons that move fields up in a list.\n */\n moveUp: \"上移\",\n /**\n * Shown on buttons that move fields down in a list.\n */\n moveDown: \"下移\",\n /**\n * Shown when something is actively loading.\n */\n isLoading: \"載入中...\",\n /**\n * Shown when there is more to load.\n */\n loadMore: \"載入更多\",\n /**\n * Show on buttons that navigate state forward\n */\n next: \"下一個\",\n /**\n * Show on buttons that navigate state backward\n */\n prev: \"上一個\",\n /**\n * Shown when adding all values.\n */\n addAllValues: \"加入全部的值\",\n /**\n * Shown when adding selected values.\n */\n addSelectedValues: \"加入選取的值\",\n /**\n * Shown when removing all values.\n */\n removeAllValues: \"移除全部的值\",\n /**\n * Shown when removing selected values.\n */\n removeSelectedValues: \"移除選取的值\",\n /**\n * Shown when there is a date to choose.\n */\n chooseDate: \"選擇日期\",\n /**\n * Shown when there is a date to change.\n */\n changeDate: \"變更日期\",\n /**\n * Shown when there is something to close\n */\n close: \"關閉\",\n /**\n * Shown when there is something to open.\n */\n open: \"開放\"\n};\nvar validation46 = {\n /**\n * The value is not an accepted value.\n * @see {@link https://formkit.com/essentials/validation#accepted}\n */\n accepted({ name }) {\n return `請接受 ${name}`;\n },\n /**\n * The date is not after\n * @see {@link https://formkit.com/essentials/validation#date-after}\n */\n date_after({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} 必須晚於 ${date(args[0])}`;\n }\n return `${sentence(name)} 必須晚於今日`;\n },\n /**\n * The value is not a letter.\n * @see {@link https://formkit.com/essentials/validation#alpha}\n */\n alpha({ name }) {\n return `${sentence(name)} 欄位儘能填寫英文字母`;\n },\n /**\n * The value is not alphanumeric\n * @see {@link https://formkit.com/essentials/validation#alphanumeric}\n */\n alphanumeric({ name }) {\n return `${sentence(name)} 欄位僅能填寫英文字母與數字`;\n },\n /**\n * The value is not letter and/or spaces\n * @see {@link https://formkit.com/essentials/validation#alpha-spaces}\n */\n alpha_spaces({ name }) {\n return `${sentence(name)} 欄位儘能填寫英文字母與空白`;\n },\n /**\n * The date is not before\n * @see {@link https://formkit.com/essentials/validation#date-before}\n */\n date_before({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} 必須早於 ${date(args[0])}.`;\n }\n return `${sentence(name)} 必須早於今日`;\n },\n /**\n * The value is not between two numbers\n * @see {@link https://formkit.com/essentials/validation#between}\n */\n between({ name, args }) {\n if (isNaN(args[0]) || isNaN(args[1])) {\n return `欄位值錯誤,無法提交`;\n }\n const [a, b] = order(args[0], args[1]);\n return `${sentence(name)} 必須介於 ${a} 和 ${b}.`;\n },\n /**\n * The confirmation field does not match\n * @see {@link https://formkit.com/essentials/validation#confirm}\n */\n confirm({ name }) {\n return `${sentence(name)} 與目標不一致`;\n },\n /**\n * The value is not a valid date\n * @see {@link https://formkit.com/essentials/validation#date-format}\n */\n date_format({ name, args }) {\n if (Array.isArray(args) && args.length) {\n return `${sentence(name)} 不是有效的日期,請使用 ${args[0]} 格式`;\n }\n return \"欄位值錯誤,無法提交\";\n },\n /**\n * Is not within expected date range\n * @see {@link https://formkit.com/essentials/validation#date-between}\n */\n date_between({ name, args }) {\n return `${sentence(name)} 必須介於 ${date(args[0])} 和 ${date(args[1])}`;\n },\n /**\n * Shown when the user-provided value is not a valid email address.\n * @see {@link https://formkit.com/essentials/validation#email}\n */\n email: \"請輸入有效的 email\",\n /**\n * Does not end with the specified value\n * @see {@link https://formkit.com/essentials/validation#ends-with}\n */\n ends_with({ name, args }) {\n return `${sentence(name)} 的結尾必須是 ${list(args)}`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#is}\n */\n is({ name }) {\n return `${sentence(name)} 欄位的值不合規則`;\n },\n /**\n * Does not match specified length\n * @see {@link https://formkit.com/essentials/validation#length}\n */\n length({ name, args: [first = 0, second = Infinity] }) {\n const min = Number(first) <= Number(second) ? first : second;\n const max = Number(second) >= Number(first) ? second : first;\n if (min == 1 && max === Infinity) {\n return `${sentence(name)} 欄位必須至少包含一個字`;\n }\n if (min == 0 && max) {\n return `${sentence(name)} 的字數必須小於等於 ${max}`;\n }\n if (min === max) {\n return `${sentence(name)} 的字數必須為 ${max}`;\n }\n if (min && max === Infinity) {\n return `${sentence(name)} 的字數必須大於等於 ${min}`;\n }\n return `${sentence(name)} 的字數必須介於 ${min} 和 ${max}`;\n },\n /**\n * Value is not a match\n * @see {@link https://formkit.com/essentials/validation#matches}\n */\n matches({ name }) {\n return `${sentence(name)} 欄位的值無效`;\n },\n /**\n * Exceeds maximum allowed value\n * @see {@link https://formkit.com/essentials/validation#max}\n */\n max({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `不能超過 ${args[0]} 個 ${name}.`;\n }\n return `${sentence(name)} 必須小於等於 ${args[0]}.`;\n },\n /**\n * The (field-level) value does not match specified mime type\n * @see {@link https://formkit.com/essentials/validation#mime}\n */\n mime({ name, args }) {\n if (!args[0]) {\n return \"非有效的檔案格式\";\n }\n return `${sentence(name)} 可接受的檔案格式為: ${args[0]}`;\n },\n /**\n * Does not fulfill minimum allowed value\n * @see {@link https://formkit.com/essentials/validation#min}\n */\n min({ name, node: { value }, args }) {\n if (Array.isArray(value)) {\n return `不可少於 ${args[0]} 個 ${name}`;\n }\n return `${name} 必須大於等於 ${args[0]}`;\n },\n /**\n * Is not an allowed value\n * @see {@link https://formkit.com/essentials/validation#not}\n */\n not({ name, node: { value } }) {\n return `“${value}” 不是 ${name} 欄位可接受的值`;\n },\n /**\n * Is not a number\n * @see {@link https://formkit.com/essentials/validation#number}\n */\n number({ name }) {\n return `${sentence(name)} 欄位必須是數字`;\n },\n /**\n * Require one field.\n * @see {@link https://formkit.com/essentials/validation#require-one}\n */\n require_one: ({ name, node, args: inputNames }) => {\n const labels = inputNames.map((name2) => {\n const dependentNode = node.at(name2);\n if (dependentNode) {\n return createMessageName(dependentNode);\n }\n return false;\n }).filter((name2) => !!name2);\n labels.unshift(name);\n return `${labels.join(\"或\")}${labels}需要。`;\n },\n /**\n * Required field.\n * @see {@link https://formkit.com/essentials/validation#required}\n */\n required({ name }) {\n return `${sentence(name)} 是必要欄位`;\n },\n /**\n * Does not start with specified value\n * @see {@link https://formkit.com/essentials/validation#starts-with}\n */\n starts_with({ name, args }) {\n return `${sentence(name)} 的開頭必須是 ${list(args)}`;\n },\n /**\n * Is not a url\n * @see {@link https://formkit.com/essentials/validation#url}\n */\n url() {\n return `請輸入有效的 url`;\n },\n /**\n * Shown when the date is invalid.\n */\n invalidDate: \"選取的日期無效\"\n};\nvar zhTW = { ui: ui46, validation: validation46 };\nvar i18nNodes = /* @__PURE__ */ new Set();\nvar activeLocale = null;\nfunction createI18nPlugin(registry) {\n return function i18nPlugin(node) {\n i18nNodes.add(node);\n if (activeLocale)\n node.config.locale = activeLocale;\n node.on(\"destroying\", () => i18nNodes.delete(node));\n let localeKey = parseLocale(node.config.locale, registry);\n let locale = localeKey ? registry[localeKey] : {};\n node.on(\"prop:locale\", ({ payload: lang }) => {\n localeKey = parseLocale(lang, registry);\n locale = localeKey ? registry[localeKey] : {};\n node.store.touch();\n });\n node.on(\"prop:label\", () => node.store.touch());\n node.on(\"prop:validationLabel\", () => node.store.touch());\n node.hook.text((fragment, next) => {\n const key = fragment.meta?.messageKey || fragment.key;\n if (has(locale, fragment.type) && has(locale[fragment.type], key)) {\n const t = locale[fragment.type][key];\n if (typeof t === \"function\") {\n fragment.value = Array.isArray(fragment.meta?.i18nArgs) ? t(...fragment.meta.i18nArgs) : t(fragment);\n } else {\n fragment.value = t;\n }\n }\n return next(fragment);\n });\n };\n}\nfunction parseLocale(locale, availableLocales) {\n if (has(availableLocales, locale)) {\n return locale;\n }\n const [lang] = locale.split(\"-\");\n if (has(availableLocales, lang)) {\n return lang;\n }\n for (const locale2 in availableLocales) {\n return locale2;\n }\n return false;\n}\nfunction changeLocale(locale) {\n activeLocale = locale;\n for (const node of i18nNodes) {\n node.config.locale = locale;\n }\n}\n\n// packages/i18n/src/index.ts\nvar locales = {\n ar,\n az,\n bg,\n bs,\n ca,\n cs,\n da,\n de,\n el,\n en,\n es,\n fa,\n fi,\n fr,\n fy,\n he,\n hr,\n hu,\n id,\n it,\n ja,\n kk,\n ko,\n lt,\n lv,\n nb,\n nl,\n pl,\n pt,\n ro,\n ru,\n sk,\n sl,\n sr,\n sv,\n tet,\n tg,\n th,\n tr,\n uk,\n uz,\n vi,\n zh,\n \"zh-TW\": zhTW,\n is,\n mn\n};\n\nexport { ar, az, bg, bs, ca, changeLocale, createI18nPlugin, cs, da, date, de, el, en, es, fa, fi, fr, fy, he, hr, hu, id, is, it, ja, kk, ko, list, locales, lt, lv, mn, nb, nl, order, pl, pt, ro, ru, sentence, sk, sl, sr, sv, tet, tg, th, tr, uk, uz, vi, zh, zhTW };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { extend, camel, has, slugify, undefine, eq, token, clone, isObject, isPojo } from '@formkit/utils';\nimport { createMessage, warn, isConditional, isComponent, isDOM } from '@formkit/core';\n\n// packages/inputs/src/plugin.ts\nfunction createLibraryPlugin(...libraries) {\n const library = libraries.reduce(\n (merged, lib) => extend(merged, lib),\n {}\n );\n const plugin = () => {\n };\n plugin.library = function(node) {\n const type = camel(node.props.type);\n if (has(library, type)) {\n node.define(library[type]);\n }\n };\n return plugin;\n}\n\n// packages/inputs/src/props.ts\nvar runtimeProps = [\n \"classes\",\n \"config\",\n \"delay\",\n \"errors\",\n \"id\",\n \"index\",\n \"inputErrors\",\n \"library\",\n \"modelValue\",\n \"onUpdate:modelValue\",\n \"name\",\n \"number\",\n \"parent\",\n \"plugins\",\n \"sectionsSchema\",\n \"type\",\n \"validation\",\n \"validationLabel\",\n \"validationMessages\",\n \"validationRules\",\n // Runtime event props:\n \"onInput\",\n \"onInputRaw\",\n \"onUpdate:modelValue\",\n \"onNode\",\n \"onSubmit\",\n \"onSubmitInvalid\",\n \"onSubmitRaw\"\n];\nfunction isGroupOption(option2) {\n return option2 && typeof option2 === \"object\" && \"group\" in option2 && Array.isArray(option2.options);\n}\nfunction normalizeOptions(options2, i = { count: 1 }) {\n if (Array.isArray(options2)) {\n return options2.map(\n (option2) => {\n if (typeof option2 === \"string\" || typeof option2 === \"number\") {\n return {\n label: String(option2),\n value: String(option2)\n };\n }\n if (typeof option2 == \"object\") {\n if (\"group\" in option2) {\n option2.options = normalizeOptions(option2.options || [], i);\n return option2;\n } else if (\"value\" in option2 && typeof option2.value !== \"string\") {\n Object.assign(option2, {\n value: `__mask_${i.count++}`,\n __original: option2.value\n });\n }\n }\n return option2;\n }\n );\n }\n return Object.keys(options2).map((value) => {\n return {\n label: options2[value],\n value\n };\n });\n}\nfunction optionValue(options2, value, undefinedIfNotFound = false) {\n if (Array.isArray(options2)) {\n for (const option2 of options2) {\n if (typeof option2 !== \"object\" && option2)\n continue;\n if (isGroupOption(option2)) {\n const found = optionValue(option2.options, value, true);\n if (found !== void 0) {\n return found;\n }\n } else if (value == option2.value) {\n return \"__original\" in option2 ? option2.__original : option2.value;\n }\n }\n }\n return undefinedIfNotFound ? void 0 : value;\n}\nfunction shouldSelect(valueA, valueB) {\n if (valueA === null && valueB === void 0 || valueA === void 0 && valueB === null)\n return false;\n if (valueA == valueB)\n return true;\n if (isPojo(valueA) && isPojo(valueB))\n return eq(valueA, valueB);\n return false;\n}\nfunction options(node) {\n node.hook.prop((prop, next) => {\n var _a;\n if (prop.prop === \"options\") {\n if (typeof prop.value === \"function\") {\n node.props.optionsLoader = prop.value;\n prop.value = [];\n } else {\n (_a = node.props)._normalizeCounter ?? (_a._normalizeCounter = { count: 1 });\n prop.value = normalizeOptions(prop.value, node.props._normalizeCounter);\n }\n }\n return next(prop);\n });\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSection(section, el, fragment2 = false) {\n return (...children) => {\n const extendable = (extensions) => {\n const node = !el || typeof el === \"string\" ? { $el: el } : el();\n if (isDOM(node) || isComponent(node)) {\n if (!node.meta) {\n node.meta = { section };\n } else {\n node.meta.section = section;\n }\n if (children.length && !node.children) {\n node.children = [\n ...children.map(\n (child) => typeof child === \"function\" ? child(extensions) : child\n )\n ];\n }\n if (isDOM(node)) {\n node.attrs = {\n class: `$classes.${section}`,\n ...node.attrs || {}\n };\n }\n }\n return {\n if: `$slots.${section}`,\n then: `$slots.${section}`,\n else: section in extensions ? /* @__PURE__ */ extendSchema(node, extensions[section]) : node\n };\n };\n extendable._s = section;\n return fragment2 ? /* @__PURE__ */ createRoot(extendable) : extendable;\n };\n}\n// @__NO_SIDE_EFFECTS__\nfunction createRoot(rootSection) {\n return (extensions) => {\n return [rootSection(extensions)];\n };\n}\nfunction isSchemaObject(schema) {\n return !!(schema && typeof schema === \"object\" && (\"$el\" in schema || \"$cmp\" in schema || \"$formkit\" in schema));\n}\n// @__NO_SIDE_EFFECTS__\nfunction extendSchema(schema, extension = {}) {\n if (typeof schema === \"string\") {\n return isSchemaObject(extension) || typeof extension === \"string\" ? extension : schema;\n } else if (Array.isArray(schema)) {\n return isSchemaObject(extension) ? extension : schema;\n }\n return extend(schema, extension);\n}\n\n// packages/inputs/src/sections/actions.ts\nvar actions = createSection(\"actions\", () => ({\n $el: \"div\",\n if: \"$actions\"\n}));\n\n// packages/inputs/src/sections/box.ts\nvar box = createSection(\"input\", () => ({\n $el: \"input\",\n bind: \"$attrs\",\n attrs: {\n type: \"$type\",\n name: \"$node.props.altName || $node.name\",\n disabled: \"$option.attrs.disabled || $disabled\",\n onInput: \"$handlers.toggleChecked\",\n checked: \"$fns.eq($_value, $onValue)\",\n onBlur: \"$handlers.blur\",\n value: \"$: true\",\n id: \"$id\",\n \"aria-describedby\": {\n if: \"$options.length\",\n then: {\n if: \"$option.help\",\n then: '$: \"help-\" + $option.attrs.id',\n else: void 0\n },\n else: {\n if: \"$help\",\n then: '$: \"help-\" + $id',\n else: void 0\n }\n }\n }\n}));\n\n// packages/inputs/src/sections/boxHelp.ts\nvar boxHelp = createSection(\"optionHelp\", () => ({\n $el: \"div\",\n if: \"$option.help\",\n attrs: {\n id: '$: \"help-\" + $option.attrs.id'\n }\n}));\n\n// packages/inputs/src/sections/boxInner.ts\nvar boxInner = createSection(\"inner\", \"span\");\n\n// packages/inputs/src/sections/boxLabel.ts\nvar boxLabel = createSection(\"label\", \"span\");\n\n// packages/inputs/src/sections/boxOption.ts\nvar boxOption = createSection(\"option\", () => ({\n $el: \"li\",\n for: [\"option\", \"$options\"],\n attrs: {\n \"data-disabled\": \"$option.attrs.disabled || $disabled || undefined\"\n }\n}));\n\n// packages/inputs/src/sections/boxOptions.ts\nvar boxOptions = createSection(\"options\", \"ul\");\n\n// packages/inputs/src/sections/boxWrapper.ts\nvar boxWrapper = createSection(\"wrapper\", () => ({\n $el: \"label\",\n attrs: {\n \"data-disabled\": {\n if: \"$options.length\",\n then: void 0,\n else: \"$disabled || undefined\"\n },\n \"data-checked\": {\n if: \"$options == undefined\",\n then: \"$fns.eq($_value, $onValue) || undefined\",\n else: \"$fns.isChecked($option.value) || undefined\"\n }\n }\n}));\n\n// packages/inputs/src/sections/buttonInput.ts\nvar buttonInput = createSection(\"input\", () => ({\n $el: \"button\",\n bind: \"$attrs\",\n attrs: {\n type: \"$type\",\n disabled: \"$disabled\",\n name: \"$node.name\",\n id: \"$id\"\n }\n}));\n\n// packages/inputs/src/sections/buttonLabel.ts\nvar buttonLabel = createSection(\"default\", null);\n\n// packages/inputs/src/sections/decorator.ts\nvar decorator = createSection(\"decorator\", () => ({\n $el: \"span\",\n attrs: {\n \"aria-hidden\": \"true\"\n }\n}));\n\n// packages/inputs/src/sections/fieldset.ts\nvar fieldset = createSection(\"fieldset\", () => ({\n $el: \"fieldset\",\n attrs: {\n id: \"$id\",\n \"aria-describedby\": {\n if: \"$help\",\n then: '$: \"help-\" + $id',\n else: void 0\n }\n }\n}));\n\n// packages/inputs/src/sections/fileInput.ts\nvar fileInput = createSection(\"input\", () => ({\n $el: \"input\",\n bind: \"$attrs\",\n attrs: {\n type: \"file\",\n disabled: \"$disabled\",\n name: \"$node.name\",\n onChange: \"$handlers.files\",\n onBlur: \"$handlers.blur\",\n id: \"$id\",\n \"aria-describedby\": \"$describedBy\",\n \"aria-required\": \"$state.required || undefined\"\n }\n}));\n\n// packages/inputs/src/sections/fileItem.ts\nvar fileItem = createSection(\"fileItem\", () => ({\n $el: \"li\",\n for: [\"file\", \"$value\"]\n}));\n\n// packages/inputs/src/sections/fileList.ts\nvar fileList = createSection(\"fileList\", () => ({\n $el: \"ul\",\n if: \"$value.length\",\n attrs: {\n \"data-has-multiple\": \"$_hasMultipleFiles\"\n }\n}));\n\n// packages/inputs/src/sections/fileName.ts\nvar fileName = createSection(\"fileName\", () => ({\n $el: \"span\",\n attrs: {\n class: \"$classes.fileName\"\n }\n}));\n\n// packages/inputs/src/sections/fileRemove.ts\nvar fileRemove = createSection(\"fileRemove\", () => ({\n $el: \"button\",\n attrs: {\n type: \"button\",\n onClick: \"$handlers.resetFiles\"\n }\n}));\n\n// packages/inputs/src/sections/formInput.ts\nvar formInput = createSection(\"form\", () => ({\n $el: \"form\",\n bind: \"$attrs\",\n meta: {\n autoAnimate: true\n },\n attrs: {\n id: \"$id\",\n name: \"$node.name\",\n onSubmit: \"$handlers.submit\",\n \"data-loading\": \"$state.loading || undefined\"\n }\n}));\n\n// packages/inputs/src/sections/fragment.ts\nvar fragment = createSection(\"wrapper\", null, true);\n\n// packages/inputs/src/sections/help.ts\nvar help = createSection(\"help\", () => ({\n $el: \"div\",\n if: \"$help\",\n attrs: {\n id: '$: \"help-\" + $id'\n }\n}));\n\n// packages/inputs/src/sections/icon.ts\nvar icon = (sectionKey, el) => {\n return createSection(`${sectionKey}Icon`, () => {\n const rawIconProp = `_raw${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}Icon`;\n return {\n if: `$${sectionKey}Icon && $${rawIconProp}`,\n $el: `${el ? el : \"span\"}`,\n attrs: {\n class: `$classes.${sectionKey}Icon + \" \" + $classes.icon`,\n innerHTML: `$${rawIconProp}`,\n onClick: `$handlers.iconClick(${sectionKey})`,\n role: `$fns.iconRole(${sectionKey})`,\n tabindex: `$fns.iconRole(${sectionKey}) === \"button\" && \"0\" || undefined`,\n for: {\n if: `${el === \"label\"}`,\n then: \"$id\"\n }\n }\n };\n })();\n};\n\n// packages/inputs/src/sections/inner.ts\nvar inner = createSection(\"inner\", \"div\");\n\n// packages/inputs/src/sections/label.ts\nvar label = createSection(\"label\", () => ({\n $el: \"label\",\n if: \"$label\",\n attrs: {\n for: \"$id\"\n }\n}));\n\n// packages/inputs/src/sections/legend.ts\nvar legend = createSection(\"legend\", () => ({\n $el: \"legend\",\n if: \"$label\"\n}));\n\n// packages/inputs/src/sections/message.ts\nvar message = createSection(\"message\", () => ({\n $el: \"li\",\n for: [\"message\", \"$messages\"],\n attrs: {\n key: \"$message.key\",\n id: `$id + '-' + $message.key`,\n \"data-message-type\": \"$message.type\"\n }\n}));\n\n// packages/inputs/src/sections/messages.ts\nvar messages = createSection(\"messages\", () => ({\n $el: \"ul\",\n if: \"$defaultMessagePlacement && $fns.length($messages)\"\n}));\n\n// packages/inputs/src/sections/noFiles.ts\nvar noFiles = createSection(\"noFiles\", () => ({\n $el: \"span\",\n if: \"$value == null || $value.length == 0\"\n}));\n\n// packages/inputs/src/sections/optGroup.ts\nvar optGroup = createSection(\"optGroup\", () => ({\n $el: \"optgroup\",\n bind: \"$option.attrs\",\n attrs: {\n label: \"$option.group\"\n }\n}));\n\n// packages/inputs/src/sections/option.ts\nvar option = createSection(\"option\", () => ({\n $el: \"option\",\n bind: \"$option.attrs\",\n attrs: {\n class: \"$classes.option\",\n value: \"$option.value\",\n selected: \"$fns.isSelected($option)\"\n }\n}));\n\n// packages/inputs/src/sections/optionSlot.ts\nvar optionSlot = createSection(\"options\", () => ({\n $el: null,\n if: \"$options.length\",\n for: [\"option\", \"$option.options || $options\"]\n}));\n\n// packages/inputs/src/sections/outer.ts\nvar outer = createSection(\"outer\", () => ({\n $el: \"div\",\n meta: {\n autoAnimate: true\n },\n attrs: {\n key: \"$id\",\n \"data-family\": \"$family || undefined\",\n \"data-type\": \"$type\",\n \"data-multiple\": '$attrs.multiple || ($type != \"select\" && $options != undefined) || undefined',\n \"data-has-multiple\": \"$_hasMultipleFiles\",\n \"data-disabled\": '$: ($disabled !== \"false\" && $disabled) || undefined',\n \"data-empty\": \"$state.empty || undefined\",\n \"data-complete\": \"$state.complete || undefined\",\n \"data-invalid\": \"$state.invalid || undefined\",\n \"data-errors\": \"$state.errors || undefined\",\n \"data-submitted\": \"$state.submitted || undefined\",\n \"data-prefix-icon\": \"$_rawPrefixIcon !== undefined || undefined\",\n \"data-suffix-icon\": \"$_rawSuffixIcon !== undefined || undefined\",\n \"data-prefix-icon-click\": \"$onPrefixIconClick !== undefined || undefined\",\n \"data-suffix-icon-click\": \"$onSuffixIconClick !== undefined || undefined\"\n }\n}));\n\n// packages/inputs/src/sections/prefix.ts\nvar prefix = createSection(\"prefix\", null);\n\n// packages/inputs/src/sections/selectInput.ts\nvar selectInput = createSection(\"input\", () => ({\n $el: \"select\",\n bind: \"$attrs\",\n attrs: {\n id: \"$id\",\n \"data-placeholder\": \"$fns.showPlaceholder($_value, $placeholder)\",\n disabled: \"$disabled\",\n class: \"$classes.input\",\n name: \"$node.name\",\n onChange: \"$handlers.onChange\",\n onInput: \"$handlers.selectInput\",\n onBlur: \"$handlers.blur\",\n \"aria-describedby\": \"$describedBy\",\n \"aria-required\": \"$state.required || undefined\"\n }\n}));\n\n// packages/inputs/src/sections/submitInput.ts\nvar submitInput = createSection(\"submit\", () => ({\n $cmp: \"FormKit\",\n bind: \"$submitAttrs\",\n props: {\n type: \"submit\",\n label: \"$submitLabel\"\n }\n}));\n\n// packages/inputs/src/sections/suffix.ts\nvar suffix = createSection(\"suffix\", null);\n\n// packages/inputs/src/sections/textInput.ts\nvar textInput = createSection(\"input\", () => ({\n $el: \"input\",\n bind: \"$attrs\",\n attrs: {\n type: \"$type\",\n disabled: \"$disabled\",\n name: \"$node.name\",\n onInput: \"$handlers.DOMInput\",\n onBlur: \"$handlers.blur\",\n value: \"$_value\",\n id: \"$id\",\n \"aria-describedby\": \"$describedBy\",\n \"aria-required\": \"$state.required || undefined\"\n }\n}));\n\n// packages/inputs/src/sections/textareaInput.ts\nvar textareaInput = createSection(\"input\", () => ({\n $el: \"textarea\",\n bind: \"$attrs\",\n attrs: {\n disabled: \"$disabled\",\n name: \"$node.name\",\n onInput: \"$handlers.DOMInput\",\n onBlur: \"$handlers.blur\",\n value: \"$_value\",\n id: \"$id\",\n \"aria-describedby\": \"$describedBy\",\n \"aria-required\": \"$state.required || undefined\"\n },\n children: \"$initialValue\"\n}));\n\n// packages/inputs/src/sections/wrapper.ts\nvar wrapper = createSection(\"wrapper\", \"div\");\n\n// packages/inputs/src/features/renamesRadios.ts\nvar radioInstance = 0;\nfunction resetRadio() {\n radioInstance = 0;\n}\nfunction renamesRadios(node) {\n if (node.type === \"group\" || node.type === \"list\") {\n node.plugins.add(renamesRadiosPlugin);\n }\n}\nfunction renamesRadiosPlugin(node) {\n if (node.props.type === \"radio\") {\n node.addProps([\"altName\"]);\n node.props.altName = `${node.name}_${radioInstance++}`;\n }\n}\nfunction normalizeBoxes(node) {\n return function(prop, next) {\n if (prop.prop === \"options\" && Array.isArray(prop.value)) {\n prop.value = prop.value.map((option2) => {\n if (!option2.attrs?.id) {\n return extend(option2, {\n attrs: {\n id: `${node.props.id}-option-${slugify(String(option2.value))}`\n }\n });\n }\n return option2;\n });\n if (node.props.type === \"checkbox\" && !Array.isArray(node.value)) {\n if (node.isCreated) {\n node.input([], false);\n } else {\n node.on(\"created\", () => {\n if (!Array.isArray(node.value)) {\n node.input([], false);\n }\n });\n }\n }\n }\n return next(prop);\n };\n}\n\n// packages/inputs/src/features/checkboxes.ts\nfunction toggleChecked(node, e) {\n const el = e.target;\n if (el instanceof HTMLInputElement) {\n const value = Array.isArray(node.props.options) ? optionValue(node.props.options, el.value) : el.value;\n if (Array.isArray(node.props.options) && node.props.options.length) {\n if (!Array.isArray(node._value)) {\n node.input([value]);\n } else if (!node._value.some((existingValue) => shouldSelect(value, existingValue))) {\n node.input([...node._value, value]);\n } else {\n node.input(\n node._value.filter(\n (existingValue) => !shouldSelect(value, existingValue)\n )\n );\n }\n } else {\n if (el.checked) {\n node.input(node.props.onValue);\n } else {\n node.input(node.props.offValue);\n }\n }\n }\n}\nfunction isChecked(node, value) {\n node.context?.value;\n node.context?._value;\n if (Array.isArray(node._value)) {\n return node._value.some(\n (existingValue) => shouldSelect(optionValue(node.props.options, value), existingValue)\n );\n }\n return false;\n}\nfunction checkboxes(node) {\n node.on(\"created\", () => {\n if (node.context?.handlers) {\n node.context.handlers.toggleChecked = toggleChecked.bind(null, node);\n }\n if (node.context?.fns) {\n node.context.fns.isChecked = isChecked.bind(null, node);\n }\n if (!has(node.props, \"onValue\"))\n node.props.onValue = true;\n if (!has(node.props, \"offValue\"))\n node.props.offValue = false;\n });\n node.hook.prop(normalizeBoxes(node));\n}\n\n// packages/inputs/src/features/icon.ts\nfunction defaultIcon(sectionKey, defaultIcon2) {\n return (node) => {\n if (node.props[`${sectionKey}Icon`] === void 0) {\n node.props[`${sectionKey}Icon`] = defaultIcon2.startsWith(\" {\n if (\"disabled\" in node.props) {\n node.props.disabled = undefine(node.props.disabled);\n node.config.disabled = undefine(node.props.disabled);\n }\n });\n node.hook.prop(({ prop, value }, next) => {\n value = prop === \"disabled\" ? undefine(value) : value;\n return next({ prop, value });\n });\n node.on(\"prop:disabled\", ({ payload: value }) => {\n node.config.disabled = undefine(value);\n });\n}\nfunction localize(key, value) {\n return (node) => {\n node.store.set(\n /* @__PURE__ */ createMessage({\n key,\n type: \"ui\",\n value: value || key,\n meta: {\n localize: true,\n i18nArgs: [node]\n }\n })\n );\n };\n}\n\n// packages/inputs/src/features/files.ts\nvar isBrowser = typeof window !== \"undefined\";\nfunction removeHover(e) {\n if (e.target instanceof HTMLElement && e.target.hasAttribute(\"data-file-hover\")) {\n e.target.removeAttribute(\"data-file-hover\");\n }\n}\nfunction preventStrayDrop(type, e) {\n if (!(e.target instanceof HTMLInputElement)) {\n e.preventDefault();\n } else if (type === \"dragover\") {\n e.target.setAttribute(\"data-file-hover\", \"true\");\n }\n if (type === \"drop\") {\n removeHover(e);\n }\n}\nfunction files(node) {\n localize(\"noFiles\", \"Select file\")(node);\n localize(\"removeAll\", \"Remove all\")(node);\n localize(\"remove\")(node);\n node.addProps([\"_hasMultipleFiles\"]);\n if (isBrowser) {\n if (!window._FormKit_File_Drop) {\n window.addEventListener(\n \"dragover\",\n preventStrayDrop.bind(null, \"dragover\")\n );\n window.addEventListener(\"drop\", preventStrayDrop.bind(null, \"drop\"));\n window.addEventListener(\"dragleave\", removeHover);\n window._FormKit_File_Drop = true;\n }\n }\n node.hook.input((value, next) => next(Array.isArray(value) ? value : []));\n node.on(\"input\", ({ payload: value }) => {\n node.props._hasMultipleFiles = Array.isArray(value) && value.length > 1 ? true : void 0;\n });\n node.on(\"reset\", () => {\n if (node.props.id && isBrowser) {\n const el = document.getElementById(node.props.id);\n if (el)\n el.value = \"\";\n }\n });\n node.on(\"created\", () => {\n if (!Array.isArray(node.value))\n node.input([], false);\n if (!node.context)\n return;\n node.context.handlers.resetFiles = (e) => {\n e.preventDefault();\n node.input([]);\n if (node.props.id && isBrowser) {\n const el = document.getElementById(node.props.id);\n if (el)\n el.value = \"\";\n el?.focus();\n }\n };\n node.context.handlers.files = (e) => {\n const files2 = [];\n if (e.target instanceof HTMLInputElement && e.target.files) {\n for (let i = 0; i < e.target.files.length; i++) {\n let file2;\n if (file2 = e.target.files.item(i)) {\n files2.push({ name: file2.name, file: file2 });\n }\n }\n node.input(files2);\n }\n if (node.context)\n node.context.files = files2;\n if (typeof node.props.attrs?.onChange === \"function\") {\n node.props.attrs?.onChange(e);\n }\n };\n });\n}\nvar loading = /* @__PURE__ */ createMessage({\n key: \"loading\",\n value: true,\n visible: false\n});\nasync function handleSubmit(node, submitEvent) {\n const submitNonce = Math.random();\n node.props._submitNonce = submitNonce;\n submitEvent.preventDefault();\n await node.settled;\n if (node.ledger.value(\"validating\")) {\n node.store.set(loading);\n await node.ledger.settled(\"validating\");\n node.store.remove(\"loading\");\n if (node.props._submitNonce !== submitNonce)\n return;\n }\n const setSubmitted = (n) => n.store.set(\n /* @__PURE__ */ createMessage({\n key: \"submitted\",\n value: true,\n visible: false\n })\n );\n node.walk(setSubmitted);\n setSubmitted(node);\n node.emit(\"submit-raw\");\n if (typeof node.props.onSubmitRaw === \"function\") {\n node.props.onSubmitRaw(submitEvent, node);\n }\n if (node.ledger.value(\"blocking\")) {\n if (typeof node.props.onSubmitInvalid === \"function\") {\n node.props.onSubmitInvalid(node);\n }\n if (node.props.incompleteMessage !== false) {\n setIncompleteMessage(node);\n }\n } else {\n if (typeof node.props.onSubmit === \"function\") {\n const retVal = node.props.onSubmit(\n node.hook.submit.dispatch(clone(node.value)),\n node\n );\n if (retVal instanceof Promise) {\n const autoDisable = node.props.disabled === void 0 && node.props.submitBehavior !== \"live\";\n if (autoDisable)\n node.props.disabled = true;\n node.store.set(loading);\n await retVal;\n if (autoDisable)\n node.props.disabled = false;\n node.store.remove(\"loading\");\n }\n } else {\n if (submitEvent.target instanceof HTMLFormElement) {\n submitEvent.target.submit();\n }\n }\n }\n}\nfunction setIncompleteMessage(node) {\n node.store.set(\n /* @__PURE__ */ createMessage({\n blocking: false,\n key: `incomplete`,\n meta: {\n localize: node.props.incompleteMessage === void 0,\n i18nArgs: [{ node }],\n showAsMessage: true\n },\n type: \"ui\",\n value: node.props.incompleteMessage || \"Form incomplete.\"\n })\n );\n}\nfunction form(node) {\n var _a;\n node.props.isForm = true;\n node.ledger.count(\"validating\", (m) => m.key === \"validating\");\n (_a = node.props).submitAttrs ?? (_a.submitAttrs = {\n disabled: node.props.disabled\n });\n node.on(\"prop:disabled\", ({ payload: disabled }) => {\n node.props.submitAttrs = { ...node.props.submitAttrs, disabled };\n });\n node.on(\"created\", () => {\n if (node.context?.handlers) {\n node.context.handlers.submit = handleSubmit.bind(null, node);\n }\n if (!has(node.props, \"actions\")) {\n node.props.actions = true;\n }\n });\n node.on(\"prop:incompleteMessage\", () => {\n if (node.store.incomplete)\n setIncompleteMessage(node);\n });\n node.on(\"settled:blocking\", () => node.store.remove(\"incomplete\"));\n}\n\n// packages/inputs/src/features/ignores.ts\nfunction ignore(node) {\n if (node.props.ignore === void 0) {\n node.props.ignore = true;\n node.parent = null;\n }\n}\n\n// packages/inputs/src/features/initialValue.ts\nfunction initialValue(node) {\n node.on(\"created\", () => {\n if (node.context) {\n node.context.initialValue = node.value || \"\";\n }\n });\n}\n\n// packages/inputs/src/features/casts.ts\nfunction casts(node) {\n if (typeof node.props.number === \"undefined\")\n return;\n const strict = [\"number\", \"range\", \"hidden\"].includes(node.props.type);\n node.hook.input((value, next) => {\n if (value === \"\")\n return next(void 0);\n const numericValue = node.props.number === \"integer\" ? parseInt(value) : parseFloat(value);\n if (!Number.isFinite(numericValue))\n return strict ? next(void 0) : next(value);\n return next(numericValue);\n });\n}\nfunction toggleChecked2(node, event) {\n if (event.target instanceof HTMLInputElement) {\n node.input(optionValue(node.props.options, event.target.value));\n }\n}\nfunction isChecked2(node, value) {\n node.context?.value;\n node.context?._value;\n return shouldSelect(optionValue(node.props.options, value), node._value);\n}\nfunction radios(node) {\n node.on(\"created\", () => {\n if (!Array.isArray(node.props.options)) {\n warn(350, {\n node,\n inputType: \"radio\"\n });\n }\n if (node.context?.handlers) {\n node.context.handlers.toggleChecked = toggleChecked2.bind(null, node);\n }\n if (node.context?.fns) {\n node.context.fns.isChecked = isChecked2.bind(null, node);\n }\n });\n node.hook.prop(normalizeBoxes(node));\n}\nfunction isSelected(node, option2) {\n if (isGroupOption(option2))\n return false;\n node.context && node.context.value;\n const optionValue2 = \"__original\" in option2 ? option2.__original : option2.value;\n return Array.isArray(node._value) ? node._value.some((optionA) => shouldSelect(optionA, optionValue2)) : (node._value === void 0 || node._value === null && !containsValue(node.props.options, null)) && option2.attrs && option2.attrs[\"data-is-placeholder\"] ? true : shouldSelect(optionValue2, node._value);\n}\nfunction containsValue(options2, value) {\n return options2.some((option2) => {\n if (isGroupOption(option2)) {\n return containsValue(option2.options, value);\n } else {\n return (\"__original\" in option2 ? option2.__original : option2.value) === value;\n }\n });\n}\nasync function deferChange(node, e) {\n if (typeof node.props.attrs?.onChange === \"function\") {\n await new Promise((r) => setTimeout(r, 0));\n await node.settled;\n node.props.attrs.onChange(e);\n }\n}\nfunction selectInput2(node, e) {\n const target = e.target;\n const value = target.hasAttribute(\"multiple\") ? Array.from(target.selectedOptions).map(\n (o) => optionValue(node.props.options, o.value)\n ) : optionValue(node.props.options, target.value);\n node.input(value);\n}\nfunction applyPlaceholder(options2, placeholder) {\n if (!options2.some(\n (option2) => option2.attrs && option2.attrs[\"data-is-placeholder\"]\n )) {\n return [\n {\n label: placeholder,\n value: \"\",\n attrs: {\n hidden: true,\n disabled: true,\n \"data-is-placeholder\": \"true\"\n }\n },\n ...options2\n ];\n }\n return options2;\n}\nfunction firstValue(options2) {\n const option2 = options2.length > 0 ? options2[0] : void 0;\n if (!option2)\n return void 0;\n if (isGroupOption(option2))\n return firstValue(option2.options);\n return \"__original\" in option2 ? option2.__original : option2.value;\n}\nfunction select(node) {\n node.on(\"created\", () => {\n const isMultiple = undefine(node.props.attrs?.multiple);\n if (!isMultiple && node.props.placeholder && Array.isArray(node.props.options)) {\n node.hook.prop(({ prop, value }, next) => {\n if (prop === \"options\") {\n value = applyPlaceholder(value, node.props.placeholder);\n }\n return next({ prop, value });\n });\n node.props.options = applyPlaceholder(\n node.props.options,\n node.props.placeholder\n );\n }\n if (isMultiple) {\n if (node.value === void 0) {\n node.input([], false);\n }\n } else if (node.context && !node.context.options) {\n node.props.attrs = Object.assign({}, node.props.attrs, {\n value: node._value\n });\n node.on(\"input\", ({ payload }) => {\n node.props.attrs = Object.assign({}, node.props.attrs, {\n value: payload\n });\n });\n }\n if (node.context?.handlers) {\n node.context.handlers.selectInput = selectInput2.bind(null, node);\n node.context.handlers.onChange = deferChange.bind(null, node);\n }\n if (node.context?.fns) {\n node.context.fns.isSelected = isSelected.bind(null, node);\n node.context.fns.showPlaceholder = (value, placeholder) => {\n if (!Array.isArray(node.props.options))\n return false;\n const hasMatchingValue = node.props.options.some(\n (option2) => {\n if (option2.attrs && \"data-is-placeholder\" in option2.attrs)\n return false;\n const optionValue2 = \"__original\" in option2 ? option2.__original : option2.value;\n return eq(value, optionValue2);\n }\n );\n return placeholder && !hasMatchingValue ? true : void 0;\n };\n }\n });\n node.hook.input((value, next) => {\n if (!node.props.placeholder && value === void 0 && Array.isArray(node.props?.options) && node.props.options.length && !undefine(node.props?.attrs?.multiple)) {\n value = firstValue(node.props.options);\n }\n return next(value);\n });\n}\n\n// packages/inputs/src/compose.ts\n// @__NO_SIDE_EFFECTS__\nfunction isSlotCondition(node) {\n if (isConditional(node) && node.if && node.if.startsWith(\"$slots.\") && typeof node.then === \"string\" && node.then.startsWith(\"$slots.\") && \"else\" in node) {\n return true;\n }\n return false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction findSection(schema, target) {\n return eachSection(\n schema,\n (section, sectionCondition, parent) => {\n if (section.meta?.section === target) {\n return [parent, sectionCondition];\n }\n return;\n },\n true\n ) ?? [false, false];\n}\nfunction eachSection(schema, callback, stopOnCallbackReturn = false, schemaParent) {\n if (Array.isArray(schema)) {\n for (const node of schema) {\n const callbackReturn = eachSection(\n node,\n callback,\n stopOnCallbackReturn,\n schema\n );\n if (callbackReturn && stopOnCallbackReturn) {\n return callbackReturn;\n }\n }\n return;\n }\n if (isSection(schema)) {\n const callbackReturn = callback(schema.else, schema, schemaParent);\n if (callbackReturn && stopOnCallbackReturn) {\n return callbackReturn;\n }\n return eachSection(schema.else, callback, stopOnCallbackReturn, schema);\n } else if ((isComponent(schema) || isDOM(schema)) && schema.children) {\n return eachSection(\n schema.children,\n callback,\n stopOnCallbackReturn\n );\n } else if (isConditional(schema)) {\n let callbackReturn = void 0;\n if (schema.then && typeof schema.then !== \"string\") {\n callbackReturn = eachSection(\n schema.then,\n callback,\n stopOnCallbackReturn,\n schema\n );\n }\n if (!callbackReturn && schema.else && typeof schema.else !== \"string\") {\n callbackReturn = eachSection(\n schema.else,\n callback,\n stopOnCallbackReturn,\n schema\n );\n }\n if (callbackReturn && stopOnCallbackReturn) {\n return callbackReturn;\n }\n }\n}\nfunction isSection(section) {\n if (isConditional(section) && typeof section.then === \"string\" && section.else && typeof section.else !== \"string\" && !Array.isArray(section.else) && !isConditional(section.else) && section.else.meta?.section) {\n return true;\n }\n return false;\n}\n// @__NO_SIDE_EFFECTS__\nfunction useSchema(inputSection, sectionsSchema = {}) {\n const schema = /* @__PURE__ */ outer(\n /* @__PURE__ */ wrapper(\n /* @__PURE__ */ label(\"$label\"),\n /* @__PURE__ */ inner(/* @__PURE__ */ icon(\"prefix\"), /* @__PURE__ */ prefix(), inputSection(), /* @__PURE__ */ suffix(), /* @__PURE__ */ icon(\"suffix\"))\n ),\n /* @__PURE__ */ help(\"$help\"),\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\"))\n );\n return (propSectionsSchema = {}) => schema(extend(sectionsSchema, propSectionsSchema));\n}\n// @__NO_SIDE_EFFECTS__\nfunction $attrs(attrs, section) {\n const extendable = (extensions) => {\n const node = section(extensions);\n const attributes = typeof attrs === \"function\" ? attrs() : attrs;\n if (!isObject(attributes))\n return node;\n if (/* @__PURE__ */ isSlotCondition(node) && isDOM(node.else)) {\n node.else.attrs = { ...node.else.attrs, ...attributes };\n } else if (isDOM(node)) {\n node.attrs = { ...node.attrs, ...attributes };\n }\n return node;\n };\n extendable._s = section._s;\n return extendable;\n}\n// @__NO_SIDE_EFFECTS__\nfunction $if(condition, then, otherwise) {\n const extendable = (extensions) => {\n const node = then(extensions);\n if (otherwise || isSchemaObject(node) && \"if\" in node || /* @__PURE__ */ isSlotCondition(node)) {\n const conditionalNode = {\n if: condition,\n then: node\n };\n if (otherwise) {\n conditionalNode.else = otherwise(extensions);\n }\n return conditionalNode;\n } else if (/* @__PURE__ */ isSlotCondition(node)) {\n Object.assign(node.else, { if: condition });\n } else if (isSchemaObject(node)) {\n Object.assign(node, { if: condition });\n }\n return node;\n };\n extendable._s = token();\n return extendable;\n}\n// @__NO_SIDE_EFFECTS__\nfunction $for(varName, inName, section) {\n return (extensions) => {\n const node = section(extensions);\n if (/* @__PURE__ */ isSlotCondition(node)) {\n Object.assign(node.else, { for: [varName, inName] });\n } else if (isSchemaObject(node)) {\n Object.assign(node, { for: [varName, inName] });\n }\n return node;\n };\n}\n// @__NO_SIDE_EFFECTS__\nfunction $extend(section, extendWith) {\n const extendable = (extensions) => {\n const node = section({});\n if (/* @__PURE__ */ isSlotCondition(node)) {\n if (Array.isArray(node.else))\n return node;\n node.else = extendSchema(\n extendSchema(node.else, extendWith),\n section._s ? extensions[section._s] : {}\n );\n return node;\n }\n return extendSchema(\n extendSchema(node, extendWith),\n section._s ? extensions[section._s] : {}\n );\n };\n extendable._s = section._s;\n return extendable;\n}\n// @__NO_SIDE_EFFECTS__\nfunction $root(section) {\n warn(800, \"$root\");\n return createRoot(section);\n}\nfunction resetCounts() {\n resetRadio();\n}\n\n// packages/inputs/src/inputs/button.ts\nvar button = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ outer(\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\")),\n /* @__PURE__ */ wrapper(\n /* @__PURE__ */ buttonInput(\n /* @__PURE__ */ icon(\"prefix\"),\n /* @__PURE__ */ prefix(),\n /* @__PURE__ */ buttonLabel(\"$label || $ui.submit.value\"),\n /* @__PURE__ */ suffix(),\n /* @__PURE__ */ icon(\"suffix\")\n )\n ),\n /* @__PURE__ */ help(\"$help\")\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * The family of inputs this one belongs too. For example \"text\" and \"email\"\n * are both part of the \"text\" family. This is primary used for styling.\n */\n family: \"button\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [],\n /**\n * Additional features that should be added to your input\n */\n features: [localize(\"submit\"), ignore],\n /**\n * A key to use for memoizing the schema. This is used to prevent the schema\n * from needing to be stringified when performing a memo lookup.\n */\n schemaMemoKey: \"h6st4epl3j8\"\n};\n\n// packages/inputs/src/inputs/checkbox.ts\nvar checkbox = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ outer(\n $if(\n \"$options == undefined\",\n /**\n * Single checkbox structure.\n */\n /* @__PURE__ */ boxWrapper(\n /* @__PURE__ */ boxInner(/* @__PURE__ */ prefix(), /* @__PURE__ */ box(), /* @__PURE__ */ decorator(/* @__PURE__ */ icon(\"decorator\")), /* @__PURE__ */ suffix()),\n $extend(/* @__PURE__ */ boxLabel(\"$label\"), {\n if: \"$label\"\n })\n ),\n /**\n * Multi checkbox structure.\n */\n /* @__PURE__ */ fieldset(\n /* @__PURE__ */ legend(\"$label\"),\n /* @__PURE__ */ help(\"$help\"),\n /* @__PURE__ */ boxOptions(\n /* @__PURE__ */ boxOption(\n /* @__PURE__ */ boxWrapper(\n /* @__PURE__ */ boxInner(\n /* @__PURE__ */ prefix(),\n $extend(/* @__PURE__ */ box(), {\n bind: \"$option.attrs\",\n attrs: {\n id: \"$option.attrs.id\",\n value: \"$option.value\",\n checked: \"$fns.isChecked($option.value)\"\n }\n }),\n /* @__PURE__ */ decorator(/* @__PURE__ */ icon(\"decorator\")),\n /* @__PURE__ */ suffix()\n ),\n $extend(/* @__PURE__ */ boxLabel(\"$option.label\"), {\n if: \"$option.label\"\n })\n ),\n /* @__PURE__ */ boxHelp(\"$option.help\")\n )\n )\n )\n ),\n // Help text only goes under the input when it is a single.\n $if(\"$options == undefined && $help\", /* @__PURE__ */ help(\"$help\")),\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\"))\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * The family of inputs this one belongs too. For example \"text\" and \"email\"\n * are both part of the \"text\" family. This is primary used for styling.\n */\n family: \"box\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [\"options\", \"onValue\", \"offValue\", \"optionsLoader\"],\n /**\n * Additional features that should be added to your input\n */\n features: [\n options,\n checkboxes,\n defaultIcon(\"decorator\", \"checkboxDecorator\")\n ],\n /**\n * The key used to memoize the schema.\n */\n schemaMemoKey: \"qje02tb3gu8\"\n};\n\n// packages/inputs/src/inputs/file.ts\nvar file = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ outer(\n /* @__PURE__ */ wrapper(\n /* @__PURE__ */ label(\"$label\"),\n /* @__PURE__ */ inner(\n /* @__PURE__ */ icon(\"prefix\", \"label\"),\n /* @__PURE__ */ prefix(),\n /* @__PURE__ */ fileInput(),\n /* @__PURE__ */ fileList(\n /* @__PURE__ */ fileItem(\n /* @__PURE__ */ icon(\"fileItem\"),\n /* @__PURE__ */ fileName(\"$file.name\"),\n $if(\n \"$value.length === 1\",\n /* @__PURE__ */ fileRemove(\n /* @__PURE__ */ icon(\"fileRemove\"),\n '$ui.remove.value + \" \" + $file.name'\n )\n )\n )\n ),\n $if(\"$value.length > 1\", /* @__PURE__ */ fileRemove(\"$ui.removeAll.value\")),\n /* @__PURE__ */ noFiles(/* @__PURE__ */ icon(\"noFiles\"), \"$ui.noFiles.value\"),\n /* @__PURE__ */ suffix(),\n /* @__PURE__ */ icon(\"suffix\")\n )\n ),\n /* @__PURE__ */ help(\"$help\"),\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\"))\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * The family of inputs this one belongs too. For example \"text\" and \"email\"\n * are both part of the \"text\" family. This is primary used for styling.\n */\n family: \"text\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [],\n /**\n * Additional features that should be added to your input\n */\n features: [\n files,\n defaultIcon(\"fileItem\", \"fileItem\"),\n defaultIcon(\"fileRemove\", \"fileRemove\"),\n defaultIcon(\"noFiles\", \"noFiles\")\n ],\n /**\n * The key used to memoize the schema.\n */\n schemaMemoKey: \"9kqc4852fv8\"\n};\n\n// packages/inputs/src/inputs/form.ts\nvar form2 = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ formInput(\n \"$slots.default\",\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\")),\n /* @__PURE__ */ actions(/* @__PURE__ */ submitInput())\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"group\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [\n \"actions\",\n \"submit\",\n \"submitLabel\",\n \"submitAttrs\",\n \"submitBehavior\",\n \"incompleteMessage\"\n ],\n /**\n * Additional features that should be added to your input\n */\n features: [form, disables],\n /**\n * The key used to memoize the schema.\n */\n schemaMemoKey: \"5bg016redjo\"\n};\n\n// packages/inputs/src/inputs/group.ts\nvar group = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ fragment(\"$slots.default\"),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"group\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [],\n /**\n * Additional features that should be added to your input\n */\n features: [disables, renamesRadios]\n};\n\n// packages/inputs/src/inputs/hidden.ts\nvar hidden = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ textInput(),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [],\n /**\n * Additional features that should be added to your input\n */\n features: [casts]\n};\n\n// packages/inputs/src/inputs/list.ts\nvar list = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ fragment(\"$slots.default\"),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"list\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [\"sync\", \"dynamic\"],\n /**\n * Additional features that should be added to your input\n */\n features: [disables, renamesRadios]\n};\n\n// packages/inputs/src/inputs/meta.ts\nvar meta = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ fragment(),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [],\n /**\n * Additional features that should be added to your input\n */\n features: []\n};\n\n// packages/inputs/src/inputs/radio.ts\nvar radio = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ outer(\n $if(\n \"$options == undefined\",\n /**\n * Single radio structure.\n */\n /* @__PURE__ */ boxWrapper(\n /* @__PURE__ */ boxInner(/* @__PURE__ */ prefix(), /* @__PURE__ */ box(), /* @__PURE__ */ decorator(/* @__PURE__ */ icon(\"decorator\")), /* @__PURE__ */ suffix()),\n $extend(/* @__PURE__ */ boxLabel(\"$label\"), {\n if: \"$label\"\n })\n ),\n /**\n * Multi radio structure.\n */\n /* @__PURE__ */ fieldset(\n /* @__PURE__ */ legend(\"$label\"),\n /* @__PURE__ */ help(\"$help\"),\n /* @__PURE__ */ boxOptions(\n /* @__PURE__ */ boxOption(\n /* @__PURE__ */ boxWrapper(\n /* @__PURE__ */ boxInner(\n /* @__PURE__ */ prefix(),\n $extend(/* @__PURE__ */ box(), {\n bind: \"$option.attrs\",\n attrs: {\n id: \"$option.attrs.id\",\n value: \"$option.value\",\n checked: \"$fns.isChecked($option.value)\"\n }\n }),\n /* @__PURE__ */ decorator(/* @__PURE__ */ icon(\"decorator\")),\n /* @__PURE__ */ suffix()\n ),\n $extend(/* @__PURE__ */ boxLabel(\"$option.label\"), {\n if: \"$option.label\"\n })\n ),\n /* @__PURE__ */ boxHelp(\"$option.help\")\n )\n )\n )\n ),\n // Help text only goes under the input when it is a single.\n $if(\"$options == undefined && $help\", /* @__PURE__ */ help(\"$help\")),\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\"))\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * The family of inputs this one belongs too. For example \"text\" and \"email\"\n * are both part of the \"text\" family. This is primary used for styling.\n */\n family: \"box\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [\"options\", \"onValue\", \"offValue\", \"optionsLoader\"],\n /**\n * Additional features that should be added to your input\n */\n features: [options, radios, defaultIcon(\"decorator\", \"radioDecorator\")],\n /**\n * The key used to memoize the schema.\n */\n schemaMemoKey: \"qje02tb3gu8\"\n};\n\n// packages/inputs/src/inputs/select.ts\nvar select2 = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ outer(\n /* @__PURE__ */ wrapper(\n /* @__PURE__ */ label(\"$label\"),\n /* @__PURE__ */ inner(\n /* @__PURE__ */ icon(\"prefix\"),\n /* @__PURE__ */ prefix(),\n /* @__PURE__ */ selectInput(\n $if(\n \"$slots.default\",\n () => \"$slots.default\",\n /* @__PURE__ */ optionSlot(\n $if(\n \"$option.group\",\n /* @__PURE__ */ optGroup(/* @__PURE__ */ optionSlot(/* @__PURE__ */ option(\"$option.label\"))),\n /* @__PURE__ */ option(\"$option.label\")\n )\n )\n )\n ),\n $if(\"$attrs.multiple !== undefined\", () => \"\", /* @__PURE__ */ icon(\"select\")),\n /* @__PURE__ */ suffix(),\n /* @__PURE__ */ icon(\"suffix\")\n )\n ),\n /* @__PURE__ */ help(\"$help\"),\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\"))\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [\"options\", \"placeholder\", \"optionsLoader\"],\n /**\n * Additional features that should be added to your input\n */\n features: [options, select, defaultIcon(\"select\", \"select\")],\n /**\n * The key used to memoize the schema.\n */\n schemaMemoKey: \"cb119h43krg\"\n};\n\n// packages/inputs/src/inputs/textarea.ts\nvar textarea = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ outer(\n /* @__PURE__ */ wrapper(\n /* @__PURE__ */ label(\"$label\"),\n /* @__PURE__ */ inner(\n /* @__PURE__ */ icon(\"prefix\", \"label\"),\n /* @__PURE__ */ prefix(),\n /* @__PURE__ */ textareaInput(),\n /* @__PURE__ */ suffix(),\n /* @__PURE__ */ icon(\"suffix\")\n )\n ),\n /* @__PURE__ */ help(\"$help\"),\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\"))\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [],\n /**\n * Additional features that should be added to your input\n */\n features: [initialValue],\n /**\n * The key used to memoize the schema.\n */\n schemaMemoKey: \"b1n0td79m9g\"\n};\n\n// packages/inputs/src/inputs/text.ts\nvar text = {\n /**\n * The actual schema of the input, or a function that returns the schema.\n */\n schema: /* @__PURE__ */ outer(\n /* @__PURE__ */ wrapper(\n /* @__PURE__ */ label(\"$label\"),\n /* @__PURE__ */ inner(\n /* @__PURE__ */ icon(\"prefix\", \"label\"),\n /* @__PURE__ */ prefix(),\n /* @__PURE__ */ textInput(),\n /* @__PURE__ */ suffix(),\n /* @__PURE__ */ icon(\"suffix\")\n )\n ),\n /* @__PURE__ */ help(\"$help\"),\n /* @__PURE__ */ messages(/* @__PURE__ */ message(\"$message.value\"))\n ),\n /**\n * The type of node, can be a list, group, or input.\n */\n type: \"input\",\n /**\n * The family of inputs this one belongs too. For example \"text\" and \"email\"\n * are both part of the \"text\" family. This is primary used for styling.\n */\n family: \"text\",\n /**\n * An array of extra props to accept for this input.\n */\n props: [],\n /**\n * Additional features that should be added to your input\n */\n features: [casts],\n /**\n * The key used to memoize the schema.\n */\n schemaMemoKey: \"c3cc4kflsg\"\n};\n\n// packages/inputs/src/index.ts\nvar inputs = {\n button,\n submit: button,\n checkbox,\n file,\n form: form2,\n group,\n hidden,\n list,\n meta,\n radio,\n select: select2,\n textarea,\n text,\n color: text,\n date: text,\n datetimeLocal: text,\n email: text,\n month: text,\n number: text,\n password: text,\n search: text,\n tel: text,\n time: text,\n url: text,\n week: text,\n range: text\n};\n\nexport { $attrs, $extend, $for, $if, $root, actions, box, boxHelp, boxInner, boxLabel, boxOption, boxOptions, boxWrapper, button, buttonInput, buttonLabel, casts, checkbox, checkboxes, text as color, createLibraryPlugin, createSection, text as date, text as datetimeLocal, decorator, defaultIcon, disables as disablesChildren, eachSection, text as email, extendSchema, fieldset, file, fileInput, fileItem, fileList, fileName, fileRemove, files, findSection, form2 as form, formInput, form as forms, fragment, group, help, hidden, icon, ignore as ignores, initialValue, inner, inputs, isGroupOption, isSchemaObject, isSlotCondition, label, legend, list, localize, message, messages, meta, text as month, noFiles, normalizeBoxes, normalizeOptions, text as number, optGroup, option, optionSlot, options, outer, text as password, prefix, radio, radios, text as range, renamesRadios, resetCounts, resetRadio, runtimeProps, text as search, select2 as select, selectInput, select as selects, button as submit, submitInput, suffix, text as tel, text, textInput, textarea, textareaInput, text as time, text as url, useSchema, text as week, wrapper };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { FORMKIT_VERSION } from '@formkit/core';\n\n// packages/themes/src/index.ts\nfunction generateClasses(classes) {\n const classesBySectionKey = {};\n Object.keys(classes).forEach((type) => {\n Object.keys(classes[type]).forEach((sectionKey) => {\n if (!classesBySectionKey[sectionKey]) {\n classesBySectionKey[sectionKey] = {\n [type]: classes[type][sectionKey]\n };\n } else {\n classesBySectionKey[sectionKey][type] = classes[type][sectionKey];\n }\n });\n });\n Object.keys(classesBySectionKey).forEach((sectionKey) => {\n const classesObject = classesBySectionKey[sectionKey];\n classesBySectionKey[sectionKey] = function(node, sectionKey2) {\n return addClassesBySection(node, sectionKey2, classesObject);\n };\n });\n return classesBySectionKey;\n}\nfunction addClassesBySection(node, _sectionKey, classesByType) {\n const type = node.props.type;\n const family = node.props.family;\n let classList = \"\";\n if (classesByType.global) {\n classList += classesByType.global + \" \";\n }\n if (classesByType[`family:${family}`]) {\n classList += classesByType[`family:${family}`] + \" \";\n }\n if (classesByType[type]) {\n classList += classesByType[type];\n }\n const listParts = classList.split(\"$reset\");\n if (listParts.length > 1) {\n return `$reset ${listParts[listParts.length - 1].trim()}`;\n }\n return listParts[0].trim();\n}\nvar documentStyles = void 0;\nvar documentThemeLinkTag = null;\nvar themeDidLoad;\nvar themeHasLoaded = false;\nvar themeWasRequested = false;\nvar themeLoaded = /* @__PURE__ */ new Promise((res) => {\n themeDidLoad = () => {\n themeHasLoaded = true;\n res();\n };\n});\nvar isClient = typeof window !== \"undefined\" && typeof fetch !== \"undefined\";\ndocumentStyles = isClient ? /* @__PURE__ */ getComputedStyle(document.documentElement) : void 0;\nvar iconRegistry = {};\nvar iconRequests = {};\nfunction createThemePlugin(theme, icons, iconLoaderUrl, iconLoader) {\n if (icons) {\n Object.assign(iconRegistry, icons);\n }\n if (isClient && !themeWasRequested && documentStyles?.getPropertyValue(\"--formkit-theme\")) {\n themeDidLoad();\n themeWasRequested = true;\n } else if (theme && !themeWasRequested && isClient) {\n loadTheme(theme);\n } else if (!themeWasRequested && isClient) {\n themeDidLoad();\n }\n const themePlugin = function themePlugin2(node) {\n node.addProps([\"iconLoader\", \"iconLoaderUrl\"]);\n node.props.iconHandler = createIconHandler(\n node.props?.iconLoader ? node.props.iconLoader : iconLoader,\n node.props?.iconLoaderUrl ? node.props.iconLoaderUrl : iconLoaderUrl\n );\n loadIconPropIcons(node, node.props.iconHandler);\n node.on(\"created\", () => {\n if (node?.context?.handlers) {\n node.context.handlers.iconClick = (sectionKey) => {\n const clickHandlerProp = `on${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}IconClick`;\n const handlerFunction = node.props[clickHandlerProp];\n if (handlerFunction && typeof handlerFunction === \"function\") {\n return (e) => {\n return handlerFunction(node, e);\n };\n }\n return void 0;\n };\n }\n if (node?.context?.fns) {\n node.context.fns.iconRole = (sectionKey) => {\n const clickHandlerProp = `on${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}IconClick`;\n return typeof node.props[clickHandlerProp] === \"function\" ? \"button\" : null;\n };\n }\n });\n };\n themePlugin.iconHandler = createIconHandler(iconLoader, iconLoaderUrl);\n return themePlugin;\n}\nfunction loadTheme(theme) {\n if (!theme || !isClient || typeof getComputedStyle !== \"function\") {\n return;\n }\n themeWasRequested = true;\n documentThemeLinkTag = document.getElementById(\"formkit-theme\");\n if (theme && // if we have a window object\n isClient && // we don't have an existing theme OR the theme being set up is different\n (!documentStyles?.getPropertyValue(\"--formkit-theme\") && !documentThemeLinkTag || documentThemeLinkTag?.getAttribute(\"data-theme\") && documentThemeLinkTag?.getAttribute(\"data-theme\") !== theme)) {\n const formkitVersion = FORMKIT_VERSION.startsWith(\"__\") ? \"latest\" : FORMKIT_VERSION;\n const themeUrl = `https://cdn.jsdelivr.net/npm/@formkit/themes@${formkitVersion}/dist/${theme}/theme.css`;\n const link = document.createElement(\"link\");\n link.type = \"text/css\";\n link.rel = \"stylesheet\";\n link.id = \"formkit-theme\";\n link.setAttribute(\"data-theme\", theme);\n link.onload = () => {\n documentStyles = getComputedStyle(document.documentElement);\n themeDidLoad();\n };\n document.head.appendChild(link);\n link.href = themeUrl;\n if (documentThemeLinkTag) {\n documentThemeLinkTag.remove();\n }\n }\n}\nfunction createIconHandler(iconLoader, iconLoaderUrl) {\n return (iconName) => {\n if (typeof iconName !== \"string\")\n return;\n if (iconName.startsWith(\" {\n if (!iconValue && typeof iconName === \"string\" && !isDefault) {\n return loadedIcon = typeof iconLoader === \"function\" ? iconLoader(iconName) : getRemoteIcon(iconName, iconLoaderUrl);\n }\n return iconValue;\n }).then((finalIcon) => {\n if (typeof iconName === \"string\") {\n iconRegistry[isDefault ? `default:${iconName}` : iconName] = finalIcon;\n }\n return finalIcon;\n });\n } else if (typeof loadedIcon === \"string\") {\n iconRegistry[isDefault ? `default:${iconName}` : iconName] = loadedIcon;\n return loadedIcon;\n }\n }\n return iconRequests[iconName];\n };\n}\nfunction getIconFromStylesheet(iconName) {\n if (!isClient)\n return;\n if (themeHasLoaded) {\n return loadStylesheetIcon(iconName);\n } else {\n return themeLoaded.then(() => {\n return loadStylesheetIcon(iconName);\n });\n }\n}\nfunction loadStylesheetIcon(iconName) {\n const cssVarIcon = documentStyles?.getPropertyValue(`--fk-icon-${iconName}`);\n if (cssVarIcon) {\n const icon = atob(cssVarIcon);\n if (icon.startsWith(\" {\n const icon = await r.text();\n if (icon.startsWith(\" {\n console.error(e);\n return void 0;\n });\n}\nfunction loadIconPropIcons(node, iconHandler) {\n const iconRegex = /^[a-zA-Z-]+(?:-icon|Icon)$/;\n const iconProps = Object.keys(node.props).filter((prop) => {\n return iconRegex.test(prop);\n });\n iconProps.forEach((sectionKey) => {\n return loadPropIcon(node, iconHandler, sectionKey);\n });\n}\nfunction loadPropIcon(node, iconHandler, sectionKey) {\n const iconName = node.props[sectionKey];\n const loadedIcon = iconHandler(iconName);\n const rawIconProp = `_raw${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}`;\n const clickHandlerProp = `on${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}Click`;\n node.addProps([rawIconProp, clickHandlerProp]);\n node.on(`prop:${sectionKey}`, reloadIcon);\n if (loadedIcon instanceof Promise) {\n return loadedIcon.then((svg) => {\n node.props[rawIconProp] = svg;\n });\n } else {\n node.props[rawIconProp] = loadedIcon;\n }\n return;\n}\nfunction reloadIcon(event) {\n const node = event.origin;\n const iconName = event.payload;\n const iconHandler = node?.props?.iconHandler;\n const sectionKey = event.name.split(\":\")[1];\n const rawIconProp = `_raw${sectionKey.charAt(0).toUpperCase()}${sectionKey.slice(1)}`;\n if (iconHandler && typeof iconHandler === \"function\") {\n const loadedIcon = iconHandler(iconName);\n if (loadedIcon instanceof Promise) {\n return loadedIcon.then((svg) => {\n node.props[rawIconProp] = svg;\n });\n } else {\n node.props[rawIconProp] = loadedIcon;\n }\n }\n}\n\nexport { createIconHandler, createThemePlugin, generateClasses, iconRegistry };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { errorHandler, warningHandler } from '@formkit/core';\n\n// packages/dev/src/index.ts\nvar errors = {\n /**\n * FormKit errors:\n */\n 100: ({ data: node }) => `Only groups, lists, and forms can have children (${node.name}).`,\n 101: ({ data: node }) => `You cannot directly modify the store (${node.name}). See: https://formkit.com/advanced/core#message-store`,\n 102: ({\n data: [node, property]\n }) => `You cannot directly assign node.${property} (${node.name})`,\n 103: ({ data: [operator] }) => `Schema expressions cannot start with an operator (${operator})`,\n 104: ({ data: [operator, expression] }) => `Schema expressions cannot end with an operator (${operator} in \"${expression}\")`,\n 105: ({ data: expression }) => `Invalid schema expression: ${expression}`,\n 106: ({ data: name }) => `Cannot submit because (${name}) is not in a form.`,\n 107: ({ data: [node, value] }) => `Cannot set ${node.name} to non object value: ${value}`,\n 108: ({ data: [node, value] }) => `Cannot set ${node.name} to non array value: ${value}`,\n /**\n * Input specific errors:\n */\n 300: ({ data: [node] }) => `Cannot set behavior prop to overscroll (on ${node.name} input) when options prop is a function.`,\n /**\n * FormKit vue errors:\n */\n 600: ({ data: node }) => `Unknown input type${typeof node.props.type === \"string\" ? ' \"' + node.props.type + '\"' : \"\"} (\"${node.name}\")`,\n 601: ({ data: node }) => `Input definition${typeof node.props.type === \"string\" ? ' \"' + node.props.type + '\"' : \"\"} is missing a schema or component property (${node.name}).`\n};\nvar warnings = {\n /**\n * Core warnings:\n */\n 150: ({ data: fn }) => `Schema function \"${fn}()\" is not a valid function.`,\n 151: ({ data: id }) => `No form element with id: ${id}`,\n 152: ({ data: id }) => `No input element with id: ${id}`,\n /**\n * Input specific warnings:\n */\n 350: ({\n data: { node, inputType }\n }) => `Invalid options prop for ${node.name} input (${inputType}). See https://formkit.com/inputs/${inputType}`,\n /**\n * Vue warnings:\n */\n 650: 'Schema \"$get()\" must use the id of an input to access.',\n 651: ({ data: id }) => `Cannot setErrors() on \"${id}\" because no such id exists.`,\n 652: ({ data: id }) => `Cannot clearErrors() on \"${id}\" because no such id exists.`,\n /**\n * Deprecation warnings:\n */\n 800: ({ data: name }) => `${name} is deprecated.`\n};\nvar decodeErrors = (error, next) => {\n if (error.code in errors) {\n const err = errors[error.code];\n error.message = typeof err === \"function\" ? err(error) : err;\n }\n return next(error);\n};\nvar registered = false;\nfunction register() {\n if (!registered) {\n errorHandler(decodeErrors);\n warningHandler(decodeWarnings);\n registered = true;\n }\n}\nvar decodeWarnings = (warning, next) => {\n if (warning.code in warnings) {\n const warn = warnings[warning.code];\n warning.message = typeof warn === \"function\" ? warn(warning) : warn;\n }\n return next(warning);\n};\n\nexport { errors, register, warnings };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import { defineComponent, getCurrentInstance, markRaw, watch, watchEffect, reactive, onMounted, onUnmounted, ref, provide, h, inject, computed, toRef, onBeforeUnmount, KeepAlive, Suspense, nextTick, triggerRef, isRef, isReactive, createTextVNode, resolveComponent } from 'vue';\nimport { createConfig, createNode, error, createMessage, getNode, watchRegistry, stopWatch, resetCount as resetCount$1, clearErrors, setErrors, submitForm, reset, createClasses, generateClassList, warn, isNode, sugar, isDOM, isComponent, isConditional, compile } from '@formkit/core';\nexport { clearErrors, errorHandler, reset, setErrors, submitForm } from '@formkit/core';\nimport { cloneAny, extend, undefine, camel, kebab, nodeProps, only, except, oncePerTick, slugify, shallowClone, eq, token, isObject, empty, has, isPojo } from '@formkit/utils';\nimport { createObserver } from '@formkit/observer';\nimport * as defaultRules from '@formkit/rules';\nimport { createValidationPlugin } from '@formkit/validation';\nimport { createI18nPlugin, en } from '@formkit/i18n';\nexport { changeLocale } from '@formkit/i18n';\nimport { createSection, useSchema, localize, resetCounts, createLibraryPlugin, inputs, runtimeProps } from '@formkit/inputs';\nimport { createIconHandler, createThemePlugin } from '@formkit/themes';\nimport { register } from '@formkit/dev';\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar vueBindings, bindings_default;\nvar init_bindings = __esm({\n \"packages/vue/src/bindings.ts\"() {\n vueBindings = function vueBindings2(node) {\n node.ledger.count(\"blocking\", (m) => m.blocking);\n const isValid = ref(!node.ledger.value(\"blocking\"));\n node.ledger.count(\"errors\", (m) => m.type === \"error\");\n const hasErrors = ref(!!node.ledger.value(\"errors\"));\n let hasTicked = false;\n nextTick(() => {\n hasTicked = true;\n });\n const availableMessages = reactive(\n node.store.reduce((store, message3) => {\n if (message3.visible) {\n store[message3.key] = message3;\n }\n return store;\n }, {})\n );\n const validationVisibility = ref(\n node.props.validationVisibility || (node.props.type === \"checkbox\" ? \"dirty\" : \"blur\")\n );\n node.on(\"prop:validationVisibility\", ({ payload }) => {\n validationVisibility.value = payload;\n });\n const hasShownErrors = ref(validationVisibility.value === \"live\");\n const isRequired = ref(false);\n const checkForRequired = (parsedRules) => {\n isRequired.value = (parsedRules ?? []).some(\n (rule) => rule.name === \"required\"\n );\n };\n checkForRequired(node.props.parsedRules);\n node.on(\"prop:parsedRules\", ({ payload }) => checkForRequired(payload));\n const items = ref(node.children.map((child) => child.uid));\n const validationVisible = computed(() => {\n if (!context.state)\n return false;\n if (context.state.submitted)\n return true;\n if (!hasShownErrors.value && !context.state.settled) {\n return false;\n }\n switch (validationVisibility.value) {\n case \"live\":\n return true;\n case \"blur\":\n return context.state.blurred;\n case \"dirty\":\n return context.state.dirty;\n default:\n return false;\n }\n });\n const isInvalid = computed(() => {\n return context.state.failing && validationVisible.value;\n });\n const isComplete = computed(() => {\n return context && hasValidation.value ? isValid.value && !hasErrors.value : context.state.dirty && !empty(context.value);\n });\n const hasValidation = ref(\n Array.isArray(node.props.parsedRules) && node.props.parsedRules.length > 0\n );\n node.on(\"prop:parsedRules\", ({ payload: rules }) => {\n hasValidation.value = Array.isArray(rules) && rules.length > 0;\n });\n const messages3 = computed(() => {\n const visibleMessages = {};\n for (const key in availableMessages) {\n const message3 = availableMessages[key];\n if (message3.type !== \"validation\" || validationVisible.value) {\n visibleMessages[key] = message3;\n }\n }\n return visibleMessages;\n });\n const ui = reactive(\n node.store.reduce((messages4, message3) => {\n if (message3.type === \"ui\" && message3.visible)\n messages4[message3.key] = message3;\n return messages4;\n }, {})\n );\n const passing = computed(() => !context.state.failing);\n const cachedClasses = reactive({});\n const classes2 = new Proxy(cachedClasses, {\n get(...args) {\n if (!node)\n return \"\";\n const [target, property] = args;\n let className = Reflect.get(...args);\n if (!className && typeof property === \"string\") {\n if (!has(target, property) && !property.startsWith(\"__v\")) {\n const observedNode = createObserver(node);\n observedNode.watch((node2) => {\n const rootClasses = typeof node2.config.rootClasses === \"function\" ? node2.config.rootClasses(property, node2) : {};\n const globalConfigClasses = node2.config.classes ? createClasses(property, node2, node2.config.classes[property]) : {};\n const classesPropClasses = createClasses(\n property,\n node2,\n node2.props[`_${property}Class`]\n );\n const sectionPropClasses = createClasses(\n property,\n node2,\n node2.props[`${property}Class`]\n );\n className = generateClassList(\n node2,\n property,\n rootClasses,\n globalConfigClasses,\n classesPropClasses,\n sectionPropClasses\n );\n target[property] = className ?? \"\";\n });\n }\n }\n return className;\n }\n });\n node.on(\"prop:rootClasses\", () => {\n const keys = Object.keys(cachedClasses);\n for (const key of keys) {\n delete cachedClasses[key];\n }\n });\n const describedBy = computed(() => {\n if (!node)\n return void 0;\n const describers = [];\n if (context.help) {\n describers.push(`help-${node.props.id}`);\n }\n for (const key in messages3.value) {\n describers.push(`${node.props.id}-${key}`);\n }\n return describers.length ? describers.join(\" \") : void 0;\n });\n const value = ref(node.value);\n const _value = ref(node.value);\n const context = reactive({\n _value,\n attrs: node.props.attrs,\n disabled: node.props.disabled,\n describedBy,\n fns: {\n length: (obj) => Object.keys(obj).length,\n number: (value2) => Number(value2),\n string: (value2) => String(value2),\n json: (value2) => JSON.stringify(value2),\n eq: eq\n },\n handlers: {\n blur: (e) => {\n if (!node)\n return;\n node.store.set(\n /* @__PURE__ */ createMessage({ key: \"blurred\", visible: false, value: true })\n );\n if (typeof node.props.attrs.onBlur === \"function\") {\n node.props.attrs.onBlur(e);\n }\n },\n touch: () => {\n const doCompare = context.dirtyBehavior === \"compare\";\n if (node.store.dirty?.value && !doCompare)\n return;\n const isDirty = !eq(node.props._init, node._value);\n if (!isDirty && !doCompare)\n return;\n node.store.set(\n /* @__PURE__ */ createMessage({ key: \"dirty\", visible: false, value: isDirty })\n );\n },\n DOMInput: (e) => {\n node.input(e.target.value);\n node.emit(\"dom-input-event\", e);\n }\n },\n help: node.props.help,\n id: node.props.id,\n items,\n label: node.props.label,\n messages: messages3,\n didMount: false,\n node: markRaw(node),\n options: node.props.options,\n defaultMessagePlacement: true,\n slots: node.props.__slots,\n state: {\n blurred: false,\n complete: isComplete,\n dirty: false,\n empty: empty(value),\n submitted: false,\n settled: node.isSettled,\n valid: isValid,\n invalid: isInvalid,\n errors: hasErrors,\n rules: hasValidation,\n validationVisible,\n required: isRequired,\n failing: false,\n passing\n },\n type: node.props.type,\n family: node.props.family,\n ui,\n value,\n classes: classes2\n });\n node.on(\"created\", () => {\n if (!eq(context.value, node.value)) {\n _value.value = node.value;\n value.value = node.value;\n triggerRef(value);\n triggerRef(_value);\n }\n (async () => {\n await node.settled;\n if (node)\n node.props._init = cloneAny(node.value);\n })();\n });\n node.on(\"mounted\", () => {\n context.didMount = true;\n });\n node.on(\"settled\", ({ payload: isSettled }) => {\n context.state.settled = isSettled;\n });\n function observeProps(observe) {\n const propNames = Array.isArray(observe) ? observe : Object.keys(observe);\n propNames.forEach((prop) => {\n prop = camel(prop);\n if (!has(context, prop)) {\n context[prop] = node.props[prop];\n }\n node.on(`prop:${prop}`, ({ payload }) => {\n context[prop] = payload;\n });\n });\n }\n const rootProps = () => {\n const props = [\n \"__root\",\n \"help\",\n \"label\",\n \"disabled\",\n \"options\",\n \"type\",\n \"attrs\",\n \"preserve\",\n \"preserveErrors\",\n \"id\",\n \"dirtyBehavior\"\n ];\n const iconPattern = /^[a-zA-Z-]+(?:-icon|Icon)$/;\n const matchingProps = Object.keys(node.props).filter((prop) => {\n return iconPattern.test(prop);\n });\n return props.concat(matchingProps);\n };\n observeProps(rootProps());\n function definedAs(definition3) {\n if (definition3.props)\n observeProps(definition3.props);\n }\n node.props.definition && definedAs(node.props.definition);\n node.on(\"added-props\", ({ payload }) => observeProps(payload));\n node.on(\"input\", ({ payload }) => {\n if (node.type !== \"input\" && !isRef(payload) && !isReactive(payload)) {\n _value.value = shallowClone(payload);\n } else {\n _value.value = payload;\n triggerRef(_value);\n }\n });\n node.on(\"commitRaw\", ({ payload }) => {\n if (node.type !== \"input\" && !isRef(payload) && !isReactive(payload)) {\n value.value = _value.value = shallowClone(payload);\n } else {\n value.value = _value.value = payload;\n triggerRef(value);\n }\n node.emit(\"modelUpdated\");\n });\n node.on(\"commit\", ({ payload }) => {\n if ((!context.state.dirty || context.dirtyBehavior === \"compare\") && node.isCreated && hasTicked) {\n if (!node.store.validating?.value) {\n context.handlers.touch();\n } else {\n const receipt = node.on(\"message-removed\", ({ payload: message3 }) => {\n if (message3.key === \"validating\") {\n context.handlers.touch();\n node.off(receipt);\n }\n });\n }\n }\n if (isComplete && node.type === \"input\" && hasErrors.value && !undefine(node.props.preserveErrors)) {\n node.store.filter(\n (message3) => !(message3.type === \"error\" && message3.meta?.autoClear === true)\n );\n }\n if (node.type === \"list\" && node.sync) {\n items.value = node.children.map((child) => child.uid);\n }\n context.state.empty = empty(payload);\n });\n const updateState = async (message3) => {\n if (message3.type === \"ui\" && message3.visible && !message3.meta.showAsMessage) {\n ui[message3.key] = message3;\n } else if (message3.visible) {\n availableMessages[message3.key] = message3;\n } else if (message3.type === \"state\") {\n context.state[message3.key] = !!message3.value;\n }\n };\n node.on(\"message-added\", (e) => updateState(e.payload));\n node.on(\"message-updated\", (e) => updateState(e.payload));\n node.on(\"message-removed\", ({ payload: message3 }) => {\n delete ui[message3.key];\n delete availableMessages[message3.key];\n delete context.state[message3.key];\n });\n node.on(\"settled:blocking\", () => {\n isValid.value = true;\n });\n node.on(\"unsettled:blocking\", () => {\n isValid.value = false;\n });\n node.on(\"settled:errors\", () => {\n hasErrors.value = false;\n });\n node.on(\"unsettled:errors\", () => {\n hasErrors.value = true;\n });\n watch(validationVisible, (value2) => {\n if (value2) {\n hasShownErrors.value = true;\n }\n });\n node.context = context;\n node.emit(\"context\", node, false);\n node.on(\"destroyed\", () => {\n node.context = void 0;\n node = null;\n });\n };\n bindings_default = vueBindings;\n }\n});\n\n// packages/vue/src/defaultConfig.ts\nvar defaultConfig_exports = {};\n__export(defaultConfig_exports, {\n defaultConfig: () => defaultConfig\n});\nvar defaultConfig;\nvar init_defaultConfig = __esm({\n \"packages/vue/src/defaultConfig.ts\"() {\n init_bindings();\n defaultConfig = (options = {}) => {\n register();\n const {\n rules = {},\n locales = {},\n inputs: inputs$1 = {},\n messages: messages3 = {},\n locale = void 0,\n theme = void 0,\n iconLoaderUrl = void 0,\n iconLoader = void 0,\n icons = {},\n ...nodeOptions\n } = options;\n const validation = createValidationPlugin({\n ...defaultRules,\n ...rules || {}\n });\n const i18n = createI18nPlugin(\n extend({ en, ...locales || {} }, messages3)\n );\n const library = createLibraryPlugin(inputs, inputs$1);\n const themePlugin = createThemePlugin(theme, icons, iconLoaderUrl, iconLoader);\n return extend(\n {\n plugins: [library, themePlugin, bindings_default, i18n, validation],\n ...!locale ? {} : { config: { locale } }\n },\n nodeOptions || {},\n true\n );\n };\n }\n});\n\n// packages/vue/src/composables/onSSRComplete.ts\nvar isServer = typeof window === \"undefined\";\nvar ssrCompleteRegistry = /* @__PURE__ */ new Map();\nfunction ssrComplete(app) {\n if (!isServer)\n return;\n const callbacks = ssrCompleteRegistry.get(app);\n if (!callbacks)\n return;\n for (const callback of callbacks) {\n callback();\n }\n callbacks.clear();\n ssrCompleteRegistry.delete(app);\n}\nfunction onSSRComplete(app, callback) {\n if (!isServer || !app)\n return;\n if (!ssrCompleteRegistry.has(app))\n ssrCompleteRegistry.set(app, /* @__PURE__ */ new Set());\n ssrCompleteRegistry.get(app)?.add(callback);\n}\n\n// packages/vue/src/FormKitSchema.ts\nvar isServer2 = typeof window === \"undefined\";\nvar memo = {};\nvar memoKeys = {};\nvar instanceKey;\nvar instanceScopes = /* @__PURE__ */ new WeakMap();\nvar raw = \"__raw__\";\nvar isClassProp = /[a-zA-Z0-9\\-][cC]lass$/;\nfunction getRef(token3, data) {\n const value = ref(null);\n if (token3 === \"get\") {\n const nodeRefs = {};\n value.value = get.bind(null, nodeRefs);\n return value;\n }\n const path = token3.split(\".\");\n watchEffect(() => {\n value.value = getValue(\n isRef(data) ? data.value : data,\n path\n );\n });\n return value;\n}\nfunction getValue(set, path) {\n if (Array.isArray(set)) {\n for (const subset of set) {\n const value = subset !== false && getValue(subset, path);\n if (value !== void 0)\n return value;\n }\n return void 0;\n }\n let foundValue = void 0;\n let obj = set;\n for (const i in path) {\n const key = path[i];\n if (typeof obj !== \"object\" || obj === null) {\n foundValue = void 0;\n break;\n }\n const currentValue = obj[key];\n if (Number(i) === path.length - 1 && currentValue !== void 0) {\n foundValue = typeof currentValue === \"function\" ? currentValue.bind(obj) : currentValue;\n break;\n }\n obj = currentValue;\n }\n return foundValue;\n}\nfunction get(nodeRefs, id) {\n if (typeof id !== \"string\")\n return warn(650);\n if (!(id in nodeRefs))\n nodeRefs[id] = ref(void 0);\n if (nodeRefs[id].value === void 0) {\n nodeRefs[id].value = null;\n const root = getNode(id);\n if (root)\n nodeRefs[id].value = root.context;\n watchRegistry(id, ({ payload: node }) => {\n nodeRefs[id].value = isNode(node) ? node.context : node;\n });\n }\n return nodeRefs[id].value;\n}\nfunction parseSchema(library, schema, memoKey) {\n function parseCondition(library2, node) {\n const condition = provider(compile(node.if), { if: true });\n const children = createElements(library2, node.then);\n const alternate = node.else ? createElements(library2, node.else) : null;\n return [condition, children, alternate];\n }\n function parseConditionAttr(attr, _default) {\n const condition = provider(compile(attr.if));\n let b = () => _default;\n let a = () => _default;\n if (typeof attr.then === \"object\") {\n a = parseAttrs(attr.then, void 0);\n } else if (typeof attr.then === \"string\" && attr.then?.startsWith(\"$\")) {\n a = provider(compile(attr.then));\n } else {\n a = () => attr.then;\n }\n if (has(attr, \"else\")) {\n if (typeof attr.else === \"object\") {\n b = parseAttrs(attr.else);\n } else if (typeof attr.else === \"string\" && attr.else?.startsWith(\"$\")) {\n b = provider(compile(attr.else));\n } else {\n b = () => attr.else;\n }\n }\n return () => condition() ? a() : b();\n }\n function parseAttrs(unparsedAttrs, bindExp, _default = {}) {\n const explicitAttrs = new Set(Object.keys(unparsedAttrs || {}));\n const boundAttrs = bindExp ? provider(compile(bindExp)) : () => ({});\n const setters = [\n (attrs) => {\n const bound = boundAttrs();\n for (const attr in bound) {\n if (!explicitAttrs.has(attr)) {\n attrs[attr] = bound[attr];\n }\n }\n }\n ];\n if (unparsedAttrs) {\n if (isConditional(unparsedAttrs)) {\n const condition = parseConditionAttr(\n unparsedAttrs,\n _default\n );\n return condition;\n }\n for (let attr in unparsedAttrs) {\n const value = unparsedAttrs[attr];\n let getValue2;\n const isStr = typeof value === \"string\";\n if (attr.startsWith(raw)) {\n attr = attr.substring(7);\n getValue2 = () => value;\n } else if (isStr && value.startsWith(\"$\") && value.length > 1 && !(value.startsWith(\"$reset\") && isClassProp.test(attr))) {\n getValue2 = provider(compile(value));\n } else if (typeof value === \"object\" && isConditional(value)) {\n getValue2 = parseConditionAttr(value, void 0);\n } else if (typeof value === \"object\" && isPojo(value)) {\n getValue2 = parseAttrs(value);\n } else {\n getValue2 = () => value;\n }\n setters.push((attrs) => {\n attrs[attr] = getValue2();\n });\n }\n }\n return () => {\n const attrs = Array.isArray(unparsedAttrs) ? [] : {};\n setters.forEach((setter) => setter(attrs));\n return attrs;\n };\n }\n function parseNode(library2, _node) {\n let element = null;\n let attrs = () => null;\n let condition = false;\n let children = null;\n let alternate = null;\n let iterator = null;\n let resolve = false;\n const node = sugar(_node);\n if (isDOM(node)) {\n element = node.$el;\n attrs = node.$el !== \"text\" ? parseAttrs(node.attrs, node.bind) : () => null;\n } else if (isComponent(node)) {\n if (typeof node.$cmp === \"string\") {\n if (has(library2, node.$cmp)) {\n element = library2[node.$cmp];\n } else {\n element = node.$cmp;\n resolve = true;\n }\n } else {\n element = node.$cmp;\n }\n attrs = parseAttrs(node.props, node.bind);\n } else if (isConditional(node)) {\n [condition, children, alternate] = parseCondition(library2, node);\n }\n if (!isConditional(node) && \"if\" in node) {\n condition = provider(compile(node.if));\n } else if (!isConditional(node) && element === null) {\n condition = () => true;\n }\n if (\"children\" in node && node.children) {\n if (typeof node.children === \"string\") {\n if (node.children.startsWith(\"$slots.\")) {\n element = element === \"text\" ? \"slot\" : element;\n children = provider(compile(node.children));\n } else if (node.children.startsWith(\"$\") && node.children.length > 1) {\n const value = provider(compile(node.children));\n children = () => String(value());\n } else {\n children = () => String(node.children);\n }\n } else if (Array.isArray(node.children)) {\n children = createElements(library2, node.children);\n } else {\n const [childCondition, c, a] = parseCondition(library2, node.children);\n children = (iterationData) => childCondition && childCondition() ? c && c(iterationData) : a && a(iterationData);\n }\n }\n if (isComponent(node)) {\n if (children) {\n const produceChildren = children;\n children = (iterationData) => {\n return {\n default(slotData2, key) {\n const currentKey = instanceKey;\n if (key)\n instanceKey = key;\n if (slotData2)\n instanceScopes.get(instanceKey)?.unshift(slotData2);\n if (iterationData)\n instanceScopes.get(instanceKey)?.unshift(iterationData);\n const c = produceChildren(iterationData);\n if (slotData2)\n instanceScopes.get(instanceKey)?.shift();\n if (iterationData)\n instanceScopes.get(instanceKey)?.shift();\n instanceKey = currentKey;\n return c;\n }\n };\n };\n children.slot = true;\n } else {\n children = () => ({});\n }\n }\n if (\"for\" in node && node.for) {\n const values = node.for.length === 3 ? node.for[2] : node.for[1];\n const getValues = typeof values === \"string\" && values.startsWith(\"$\") ? provider(compile(values)) : () => values;\n iterator = [\n getValues,\n node.for[0],\n node.for.length === 3 ? String(node.for[1]) : null\n ];\n }\n return [condition, element, attrs, children, alternate, iterator, resolve];\n }\n function createSlots(children, iterationData) {\n const slots = children(iterationData);\n const currentKey = instanceKey;\n return Object.keys(slots).reduce((allSlots, slotName) => {\n const slotFn = slots && slots[slotName];\n allSlots[slotName] = (data) => {\n return slotFn && slotFn(data, currentKey) || null;\n };\n return allSlots;\n }, {});\n }\n function createElement(library2, node) {\n const [condition, element, attrs, children, alternate, iterator, resolve] = parseNode(library2, node);\n let createNodes = (iterationData) => {\n if (condition && element === null && children) {\n return condition() ? children(iterationData) : alternate && alternate(iterationData);\n }\n if (element && (!condition || condition())) {\n if (element === \"text\" && children) {\n return createTextVNode(String(children()));\n }\n if (element === \"slot\" && children)\n return children(iterationData);\n const el = resolve ? resolveComponent(element) : element;\n const slots = children?.slot ? createSlots(children, iterationData) : null;\n return h(\n el,\n attrs(),\n slots || (children ? children(iterationData) : [])\n );\n }\n return typeof alternate === \"function\" ? alternate(iterationData) : alternate;\n };\n if (iterator) {\n const repeatedNode = createNodes;\n const [getValues, valueName, keyName] = iterator;\n createNodes = () => {\n const _v = getValues();\n const values = Number.isFinite(_v) ? Array(Number(_v)).fill(0).map((_, i) => i) : _v;\n const fragment = [];\n if (typeof values !== \"object\")\n return null;\n const instanceScope = instanceScopes.get(instanceKey) || [];\n const isArray = Array.isArray(values);\n for (const key in values) {\n if (isArray && key in Array.prototype)\n continue;\n const iterationData = Object.defineProperty(\n {\n ...instanceScope.reduce(\n (previousIterationData, scopedData) => {\n if (previousIterationData.__idata) {\n return { ...previousIterationData, ...scopedData };\n }\n return scopedData;\n },\n {}\n ),\n [valueName]: values[key],\n ...keyName !== null ? { [keyName]: isArray ? Number(key) : key } : {}\n },\n \"__idata\",\n { enumerable: false, value: true }\n );\n instanceScope.unshift(iterationData);\n fragment.push(repeatedNode.bind(null, iterationData)());\n instanceScope.shift();\n }\n return fragment;\n };\n }\n return createNodes;\n }\n function createElements(library2, schema2) {\n if (Array.isArray(schema2)) {\n const els = schema2.map(createElement.bind(null, library2));\n return (iterationData) => els.map((element2) => element2(iterationData));\n }\n const element = createElement(library2, schema2);\n return (iterationData) => element(iterationData);\n }\n const providers = [];\n function provider(compiled, hints = {}) {\n const compiledFns = /* @__PURE__ */ new WeakMap();\n providers.push((callback, key) => {\n compiledFns.set(\n key,\n compiled.provide((tokens) => callback(tokens, hints))\n );\n });\n return () => compiledFns.get(instanceKey)();\n }\n function createInstance(providerCallback, key) {\n memoKey ?? (memoKey = toMemoKey(schema));\n const [render, compiledProviders] = has(memo, memoKey) ? memo[memoKey] : [createElements(library, schema), providers];\n if (!isServer2) {\n memoKeys[memoKey] ?? (memoKeys[memoKey] = 0);\n memoKeys[memoKey]++;\n memo[memoKey] = [render, compiledProviders];\n }\n compiledProviders.forEach((compiledProvider) => {\n compiledProvider(providerCallback, key);\n });\n return () => {\n instanceKey = key;\n return render();\n };\n }\n return createInstance;\n}\nfunction useScope(token3, defaultValue) {\n const scopedData = instanceScopes.get(instanceKey) || [];\n let scopedValue = void 0;\n if (scopedData.length) {\n scopedValue = getValue(scopedData, token3.split(\".\"));\n }\n return scopedValue === void 0 ? defaultValue : scopedValue;\n}\nfunction slotData(data, key) {\n return new Proxy(data, {\n get(...args) {\n let data2 = void 0;\n const property = args[1];\n if (typeof property === \"string\") {\n const prevKey = instanceKey;\n instanceKey = key;\n data2 = useScope(property, void 0);\n instanceKey = prevKey;\n }\n return data2 !== void 0 ? data2 : Reflect.get(...args);\n }\n });\n}\nfunction createRenderFn(instanceCreator, data, instanceKey2) {\n return instanceCreator(\n (requirements, hints = {}) => {\n return requirements.reduce((tokens, token3) => {\n if (token3.startsWith(\"slots.\")) {\n const slot = token3.substring(6);\n const hasSlot = () => data.slots && has(data.slots, slot) && typeof data.slots[slot] === \"function\";\n if (hints.if) {\n tokens[token3] = hasSlot;\n } else if (data.slots) {\n const scopedData = slotData(data, instanceKey2);\n tokens[token3] = () => hasSlot() ? data.slots[slot](scopedData) : null;\n }\n } else {\n const value = getRef(token3, data);\n tokens[token3] = () => useScope(token3, value.value);\n }\n return tokens;\n }, {});\n },\n instanceKey2\n );\n}\nfunction clean(schema, memoKey, instanceKey2) {\n memoKey ?? (memoKey = toMemoKey(schema));\n memoKeys[memoKey]--;\n if (memoKeys[memoKey] === 0) {\n delete memoKeys[memoKey];\n const [, providers] = memo[memoKey];\n delete memo[memoKey];\n providers.length = 0;\n }\n instanceScopes.delete(instanceKey2);\n}\nfunction toMemoKey(schema) {\n return JSON.stringify(schema, (_, value) => {\n if (typeof value === \"function\") {\n return value.toString();\n }\n return value;\n });\n}\nvar FormKitSchema = /* @__PURE__ */ defineComponent({\n name: \"FormKitSchema\",\n props: {\n schema: {\n type: [Array, Object],\n required: true\n },\n data: {\n type: Object,\n default: () => ({})\n },\n library: {\n type: Object,\n default: () => ({})\n },\n memoKey: {\n type: String,\n required: false\n }\n },\n emits: [\"mounted\"],\n setup(props, context) {\n const instance = getCurrentInstance();\n let instanceKey2 = {};\n instanceScopes.set(instanceKey2, []);\n const library = { FormKit: markRaw(FormKit_default), ...props.library };\n let provider = parseSchema(library, props.schema, props.memoKey);\n let render;\n let data;\n if (!isServer2) {\n watch(\n () => props.schema,\n (newSchema, oldSchema) => {\n const oldKey = instanceKey2;\n instanceKey2 = {};\n instanceScopes.set(instanceKey2, []);\n provider = parseSchema(library, props.schema, props.memoKey);\n render = createRenderFn(provider, data, instanceKey2);\n if (newSchema === oldSchema) {\n (instance?.proxy?.$forceUpdate)();\n }\n clean(props.schema, props.memoKey, oldKey);\n },\n { deep: true }\n );\n }\n watchEffect(() => {\n data = Object.assign(reactive(props.data ?? {}), {\n slots: context.slots\n });\n context.slots;\n render = createRenderFn(provider, data, instanceKey2);\n });\n function cleanUp() {\n clean(props.schema, props.memoKey, instanceKey2);\n if (data) {\n if (data.node)\n data.node.destroy();\n data.slots = null;\n data = null;\n }\n render = null;\n }\n onMounted(() => context.emit(\"mounted\"));\n onUnmounted(cleanUp);\n onSSRComplete(getCurrentInstance()?.appContext.app, cleanUp);\n return () => render ? render() : null;\n }\n});\nvar FormKitSchema_default = FormKitSchema;\nvar isServer3 = typeof window === \"undefined\";\nvar parentSymbol = Symbol(\"FormKitParent\");\nvar componentSymbol = Symbol(\"FormKitComponentCallback\");\nvar currentSchemaNode = null;\nvar getCurrentSchemaNode = () => currentSchemaNode;\nfunction FormKit(props, context) {\n const node = useInput(props, context);\n if (!node.props.definition)\n error(600, node);\n if (node.props.definition.component) {\n return () => h(\n node.props.definition?.component,\n {\n context: node.context\n },\n { ...context.slots }\n );\n }\n const schema = ref([]);\n let memoKey = node.props.definition.schemaMemoKey;\n const generateSchema = () => {\n const schemaDefinition = node.props?.definition?.schema;\n if (!schemaDefinition)\n error(601, node);\n if (typeof schemaDefinition === \"function\") {\n currentSchemaNode = node;\n schema.value = schemaDefinition({ ...props.sectionsSchema || {} });\n currentSchemaNode = null;\n if (memoKey && props.sectionsSchema || \"memoKey\" in schemaDefinition && typeof schemaDefinition.memoKey === \"string\") {\n memoKey = (memoKey ?? schemaDefinition?.memoKey) + JSON.stringify(props.sectionsSchema);\n }\n } else {\n schema.value = schemaDefinition;\n }\n };\n generateSchema();\n if (!isServer3) {\n node.on(\"schema\", () => {\n memoKey += \"♻️\";\n generateSchema();\n });\n }\n context.emit(\"node\", node);\n const definitionLibrary = node.props.definition.library;\n const library = {\n FormKit: markRaw(formkitComponent),\n ...definitionLibrary,\n ...props.library ?? {}\n };\n function didMount() {\n node.emit(\"mounted\");\n }\n context.expose({ node });\n return () => h(\n FormKitSchema,\n {\n schema: schema.value,\n data: node.context,\n onMounted: didMount,\n library,\n memoKey\n },\n { ...context.slots }\n );\n}\nvar formkitComponent = /* @__PURE__ */ defineComponent(\n FormKit,\n {\n props: runtimeProps,\n inheritAttrs: false\n }\n);\nvar FormKit_default = formkitComponent;\nvar rootSymbol = Symbol();\nvar FormKitRoot = /* @__PURE__ */ defineComponent((_p, context) => {\n const boundary = ref(null);\n const showBody = ref(false);\n const shadowRoot = ref(void 0);\n const stopWatch2 = watch(boundary, (el) => {\n let parent = el;\n let root = null;\n while (parent = parent?.parentNode) {\n root = parent;\n if (root instanceof ShadowRoot || root instanceof Document) {\n foundRoot(root);\n break;\n }\n }\n stopWatch2();\n showBody.value = true;\n });\n provide(rootSymbol, shadowRoot);\n function foundRoot(root) {\n shadowRoot.value = root;\n }\n return () => showBody.value && context.slots.default ? context.slots.default() : h(\"template\", { ref: boundary });\n});\nfunction createPlugin(app, options) {\n app.component(options.alias || \"FormKit\", FormKit_default).component(options.schemaAlias || \"FormKitSchema\", FormKitSchema_default);\n return {\n get: getNode,\n setLocale: (locale) => {\n if (options.config?.rootConfig) {\n options.config.rootConfig.locale = locale;\n }\n },\n clearErrors,\n setErrors,\n submit: submitForm,\n reset\n };\n}\nvar optionsSymbol = Symbol.for(\"FormKitOptions\");\nvar configSymbol = Symbol.for(\"FormKitConfig\");\nvar plugin = {\n install(app, _options) {\n const options = Object.assign(\n {\n alias: \"FormKit\",\n schemaAlias: \"FormKitSchema\"\n },\n typeof _options === \"function\" ? _options() : _options\n );\n const rootConfig = createConfig(options.config || {});\n options.config = { rootConfig };\n app.config.globalProperties.$formkit = createPlugin(app, options);\n app.provide(optionsSymbol, options);\n app.provide(configSymbol, rootConfig);\n if (typeof window !== \"undefined\") {\n globalThis.__FORMKIT_CONFIGS__ = (globalThis.__FORMKIT_CONFIGS__ || []).concat([rootConfig]);\n }\n }\n};\n\n// packages/vue/src/composables/useInput.ts\nvar isBrowser = typeof window !== \"undefined\";\nvar pseudoProps = [\n // Boolean props\n \"ignore\",\n \"disabled\",\n \"preserve\",\n // String props\n \"help\",\n \"label\",\n /^preserve(-e|E)rrors/,\n /^[a-z]+(?:-visibility|Visibility|-behavior|Behavior)$/,\n /^[a-zA-Z-]+(?:-class|Class)$/,\n \"prefixIcon\",\n \"suffixIcon\",\n /^[a-zA-Z-]+(?:-icon|Icon)$/\n];\nvar boolProps = [\"disabled\", \"ignore\", \"preserve\"];\nfunction classesToNodeProps(node, props) {\n if (props.classes) {\n Object.keys(props.classes).forEach(\n (key) => {\n if (typeof key === \"string\") {\n node.props[`_${key}Class`] = props.classes[key];\n if (isObject(props.classes[key]) && key === \"inner\")\n Object.values(props.classes[key]);\n }\n }\n );\n }\n}\nfunction onlyListeners(props) {\n if (!props)\n return {};\n const knownListeners = [\"Submit\", \"SubmitRaw\", \"SubmitInvalid\"].reduce(\n (listeners, listener) => {\n const name = `on${listener}`;\n if (name in props) {\n if (typeof props[name] === \"function\") {\n listeners[name] = props[name];\n }\n }\n return listeners;\n },\n {}\n );\n return knownListeners;\n}\nfunction useInput(props, context, options = {}) {\n const config = Object.assign({}, inject(optionsSymbol) || {}, options);\n const __root = inject(rootSymbol, ref(isBrowser ? document : void 0));\n const __cmpCallback = inject(componentSymbol, () => {\n });\n const instance = getCurrentInstance();\n const listeners = onlyListeners(instance?.vnode.props);\n const isVModeled = [\"modelValue\", \"model-value\"].some(\n (prop) => prop in (instance?.vnode.props ?? {})\n );\n let isMounted = false;\n onMounted(() => {\n isMounted = true;\n });\n const value = props.modelValue !== void 0 ? props.modelValue : cloneAny(context.attrs.value);\n function createInitialProps() {\n const initialProps2 = {\n ...nodeProps(props),\n ...listeners,\n type: props.type ?? \"text\",\n __root: __root.value,\n __slots: context.slots\n };\n const attrs = except(nodeProps(context.attrs), pseudoProps);\n if (!attrs.key)\n attrs.key = token();\n initialProps2.attrs = attrs;\n const propValues = only(nodeProps(context.attrs), pseudoProps);\n for (const propName in propValues) {\n if (boolProps.includes(propName) && propValues[propName] === \"\") {\n propValues[propName] = true;\n }\n initialProps2[camel(propName)] = propValues[propName];\n }\n const classesProps = { props: {} };\n classesToNodeProps(classesProps, props);\n Object.assign(initialProps2, classesProps.props);\n if (typeof initialProps2.type !== \"string\") {\n initialProps2.definition = initialProps2.type;\n delete initialProps2.type;\n }\n return initialProps2;\n }\n const initialProps = createInitialProps();\n const parent = initialProps.ignore ? null : props.parent || inject(parentSymbol, null);\n const node = createNode(\n extend(\n config || {},\n {\n name: props.name || void 0,\n value,\n parent,\n plugins: (config.plugins || []).concat(props.plugins ?? []),\n config: props.config || {},\n props: initialProps,\n index: props.index,\n sync: !!undefine(context.attrs.sync || context.attrs.dynamic)\n },\n false,\n true\n )\n );\n __cmpCallback(node);\n if (!node.props.definition)\n error(600, node);\n const lateBoundProps = ref(\n new Set(\n Array.isArray(node.props.__propDefs) ? node.props.__propDefs : Object.keys(node.props.__propDefs ?? {})\n )\n );\n node.on(\n \"added-props\",\n ({ payload: lateProps }) => {\n const propNames = Array.isArray(lateProps) ? lateProps : Object.keys(lateProps ?? {});\n propNames.forEach((newProp) => lateBoundProps.value.add(newProp));\n }\n );\n const pseudoPropNames = computed(\n () => pseudoProps.concat([...lateBoundProps.value]).reduce((names, prop) => {\n if (typeof prop === \"string\") {\n names.push(camel(prop));\n names.push(kebab(prop));\n } else {\n names.push(prop);\n }\n return names;\n }, [])\n );\n watchEffect(() => classesToNodeProps(node, props));\n const passThrough = nodeProps(props);\n for (const prop in passThrough) {\n watch(\n () => props[prop],\n () => {\n if (props[prop] !== void 0) {\n node.props[prop] = props[prop];\n }\n }\n );\n }\n watchEffect(() => {\n node.props.__root = __root.value;\n });\n const attributeWatchers = /* @__PURE__ */ new Set();\n const possibleProps = nodeProps(context.attrs);\n watchEffect(() => {\n watchAttributes(only(possibleProps, pseudoPropNames.value));\n });\n function watchAttributes(attrProps) {\n attributeWatchers.forEach((stop) => {\n stop();\n attributeWatchers.delete(stop);\n });\n for (const prop in attrProps) {\n const camelName = camel(prop);\n attributeWatchers.add(\n watch(\n () => context.attrs[prop],\n () => {\n node.props[camelName] = context.attrs[prop];\n }\n )\n );\n }\n }\n watchEffect(() => {\n const attrs = except(nodeProps(context.attrs), pseudoPropNames.value);\n if (\"multiple\" in attrs)\n attrs.multiple = undefine(attrs.multiple);\n if (typeof attrs.onBlur === \"function\") {\n attrs.onBlur = oncePerTick(attrs.onBlur);\n }\n node.props.attrs = Object.assign({}, node.props.attrs || {}, attrs);\n });\n watchEffect(() => {\n const messages3 = (props.errors ?? []).map(\n (error3) => /* @__PURE__ */ createMessage({\n key: slugify(error3),\n type: \"error\",\n value: error3,\n meta: { source: \"prop\" }\n })\n );\n node.store.apply(\n messages3,\n (message3) => message3.type === \"error\" && message3.meta.source === \"prop\"\n );\n });\n if (node.type !== \"input\") {\n const sourceKey = `${node.name}-prop`;\n watchEffect(() => {\n const inputErrors = props.inputErrors ?? {};\n const keys = Object.keys(inputErrors);\n if (!keys.length)\n node.clearErrors(true, sourceKey);\n const messages3 = keys.reduce((messages4, key) => {\n let value2 = inputErrors[key];\n if (typeof value2 === \"string\")\n value2 = [value2];\n if (Array.isArray(value2)) {\n messages4[key] = value2.map(\n (error3) => /* @__PURE__ */ createMessage({\n key: error3,\n type: \"error\",\n value: error3,\n meta: { source: sourceKey }\n })\n );\n }\n return messages4;\n }, {});\n node.store.apply(\n messages3,\n (message3) => message3.type === \"error\" && message3.meta.source === sourceKey\n );\n });\n }\n watchEffect(() => Object.assign(node.config, props.config));\n if (node.type !== \"input\") {\n provide(parentSymbol, node);\n }\n let clonedValueBeforeVmodel = void 0;\n node.on(\"modelUpdated\", () => {\n context.emit(\"inputRaw\", node.context?.value, node);\n if (isMounted) {\n context.emit(\"input\", node.context?.value, node);\n }\n if (isVModeled && node.context) {\n clonedValueBeforeVmodel = cloneAny(node.value);\n context.emit(\"update:modelValue\", shallowClone(node.value));\n }\n });\n if (isVModeled) {\n watch(\n toRef(props, \"modelValue\"),\n (value2) => {\n if (!eq(clonedValueBeforeVmodel, value2)) {\n node.input(value2, false);\n }\n },\n { deep: true }\n );\n if (node.value !== value) {\n node.emit(\"modelUpdated\");\n }\n }\n onBeforeUnmount(() => node.destroy());\n return node;\n}\nvar totalCreated = 1;\nfunction isComponent2(obj) {\n return typeof obj === \"function\" && obj.length === 2 || typeof obj === \"object\" && !Array.isArray(obj) && !(\"$el\" in obj) && !(\"$cmp\" in obj) && !(\"if\" in obj);\n}\nfunction createInput(schemaOrComponent, definitionOptions = {}, sectionsSchema = {}) {\n const definition3 = {\n type: \"input\",\n ...definitionOptions\n };\n let schema;\n if (isComponent2(schemaOrComponent)) {\n const cmpName = `SchemaComponent${totalCreated++}`;\n schema = createSection(\"input\", () => ({\n $cmp: cmpName,\n props: {\n context: \"$node.context\"\n }\n }));\n definition3.library = { [cmpName]: markRaw(schemaOrComponent) };\n } else if (typeof schemaOrComponent === \"function\") {\n schema = schemaOrComponent;\n } else {\n schema = createSection(\"input\", () => cloneAny(schemaOrComponent));\n }\n definition3.schema = useSchema(schema || \"Schema undefined\", sectionsSchema);\n if (!definition3.schemaMemoKey) {\n definition3.schemaMemoKey = `${Math.random()}`;\n }\n return definition3;\n}\n\n// packages/vue/src/composables/defineFormKitConfig.ts\nfunction defineFormKitConfig(config) {\n return () => typeof config === \"function\" ? config() : config;\n}\nvar inputList = {};\nvar schemas = {};\nvar classes = {\n container: `\n formkit-kitchen-sink \n p-8\n `,\n tabs: `\n formkit-tabs \n mt-4 \n mr-[min(350px,25vw)]\n `,\n tab: `\n formkit-kitchen-sink-tab\n inline-block\n mb-4\n -mr-px\n cursor-pointer\n px-4\n py-2\n border\n border-neutral-200\n text-neutral-800\n data-[active]:bg-neutral-800\n data-[active]:border-neutral-800\n data-[active]:text-neutral-50\n hover:bg-neutral-100\n hover:text-neutral-900\n dark:border-neutral-700\n dark:text-neutral-50\n dark:data-[active]:bg-neutral-100\n dark:data-[active]:border-neutral-100\n dark:data-[active]:text-neutral-800\n dark:hover:bg-neutral-800\n dark:hover:text-neutral-50\n `,\n filterContainer: `\n formkit-filter-container\n grid\n grid-cols-[repeat(auto-fit,300px)]\n mr-[min(350px,25vw)]\n -mt-4\n mb-8\n px-4\n pt-8\n pb-4\n border\n relative\n -translate-y-px\n max-w-[1000px]\n border-neutral-200\n dark:border-neutral-700\n `,\n filterGroup: `\n formkit-filter-group\n mr-8\n mb-8\n [&_legend]:text-lg\n [&_ul]:columns-2\n [&_ul>li:first-child]:[column-span:all]\n [&_ul>li:first-child]:mt-2\n [&_ul>li:first-child]:mb-2\n [&_ul>li:first-child]:pb-2\n [&_ul>li:first-child]:border-b\n [&_ul>li:first-child]:border-neutral-200\n dark:[&_ul>li:first-child]:border-neutral-700\n `,\n formContainer: `\n formkit-form-container\n w-full\n bg-white\n rounded\n border\n border-neutral-100\n shadow-lg\n max-w-[800px]\n p-[min(5vw,5rem)]\n dark:bg-neutral-900\n dark:border-neutral-800\n dark:shadow-3xl\n [&_form>h1]:text-2xl\n [&_form>h1]:mb-4\n [&_form>h1]:font-bold\n [&_form>h1+p]:text-base\n [&_form>h1+p]:mb-4\n [&_form>h1+p]:-mt-2\n [&_form_.double]:flex\n [&_form_.double>*]:w-1/2\n [&_form_.double>*:first-child]:mr-2\n [&_form_.triple]:flex\n [&_form_.triple>*]:w-1/3\n [&_form_.triple>*:first-child]:mr-2\n [&_form_.triple>*:last-child]:ml-2\n `,\n inputs: `formkit-inputs`,\n specimen: `\n formkit-specimen \n flex \n flex-col \n p-2 \n max-w-[75vw]\n `,\n inputSection: `\n group/section\n formkit-input-section \n mr-[min(325px,25vw)]\n `,\n specimenGroup: `\n formkit-specimen-group\n grid\n mb-16\n grid-cols-[repeat(auto-fit,400px)]\n group-data-[type=\"transferlist\"]/section:grid-cols-[repeat(auto-fit,650px)]\n group-data-[type=\"multi-step\"]/section:grid-cols-[repeat(auto-fit,550px)]\n `,\n inputType: `\n formkit-input-type\n block\n font-bold\n text-neutral-900\n border-b\n border-neutral-100\n text-3xl\n mb-8\n pb-2\n capitalize\n dark:border-neutral-800 \n dark:text-neutral-50\n `\n};\nasync function fetchInputList() {\n const response = await fetch(\n \"https://raw.githubusercontent.com/formkit/input-schemas/master/index.json\"\n );\n const json = await response.json();\n return json;\n}\nasync function fetchInputSchema(input) {\n try {\n const response = await fetch(\n `https://raw.githubusercontent.com/formkit/input-schemas/master/schemas/${input}.json`\n );\n const json = await response.json();\n return json;\n } catch (error3) {\n console.error(error3);\n }\n}\nvar FormKitKitchenSink = /* @__PURE__ */ defineComponent({\n name: \"FormKitKitchenSink\",\n props: {\n schemas: {\n type: Array,\n required: false\n },\n pro: {\n type: Boolean,\n default: true\n },\n addons: {\n type: Boolean,\n default: true\n },\n forms: {\n type: Boolean,\n default: true\n },\n navigation: {\n type: Boolean,\n default: true\n }\n },\n async setup(props) {\n onMounted(() => {\n const filterNode = getNode(\"filter-checkboxes\");\n data.filters = computed(() => {\n if (!filterNode?.context)\n return [];\n const filters = filterNode.context.value;\n const filterValues = [];\n Object.keys(filters).forEach((key) => {\n filterValues.push(...filters[key]);\n });\n return filterValues;\n });\n });\n inputList = Object.keys(inputList).length ? inputList : await fetchInputList();\n const promises = [];\n const activeTab = ref(\"\");\n const inputCheckboxes = computed(() => {\n const inputGroups = {\n core: { label: \"Inputs\", name: \"core\", inputs: inputList.core }\n };\n if (props.pro) {\n inputGroups.pro = {\n label: \"Pro Inputs\",\n name: \"pro\",\n inputs: inputList.pro\n };\n }\n if (props.addons) {\n inputGroups.addons = {\n label: \"Add-ons\",\n name: \"addons\",\n inputs: inputList.addons\n };\n }\n return inputGroups;\n });\n if (!props.schemas) {\n const coreInputPromises = inputList.core.map(async (schema) => {\n const response = await fetchInputSchema(schema);\n schemas[schema] = response;\n });\n promises.push(...coreInputPromises);\n if (props.forms) {\n const formsPromises = inputList.forms.map(async (schema) => {\n const schemaName = `form/${schema}`;\n const response = await fetchInputSchema(schemaName);\n schemas[schemaName] = response;\n });\n promises.push(...formsPromises);\n }\n if (props.pro) {\n const proInputPromises = inputList.pro.map(async (schema) => {\n const response = await fetchInputSchema(schema);\n schemas[schema] = response;\n });\n promises.push(...proInputPromises);\n }\n if (props.addons) {\n const addonPromises = inputList.addons.map(async (schema) => {\n const response = await fetchInputSchema(schema);\n schemas[schema] = response;\n });\n promises.push(...addonPromises);\n }\n } else {\n const schemaPromises = props.schemas.map(async (schema) => {\n const response = await fetchInputSchema(`${schema}`);\n schemas[`${schema}`] = response;\n });\n promises.push(...schemaPromises);\n }\n const selectAll = (node) => {\n let previousValue = [];\n let skip = false;\n if (node.props.type !== \"checkbox\")\n return;\n node.on(\"created\", () => {\n const currentValue = node.value;\n if (Array.isArray(currentValue) && currentValue.length === 1 && currentValue[0] === \"all\") {\n node.input(\n node.props.options.map((option) => {\n if (typeof option !== \"string\")\n return option.value;\n return option;\n })\n );\n }\n previousValue = Array.isArray(node.value) ? node.value : [];\n });\n node.on(\"commit\", ({ payload }) => {\n if (skip) {\n skip = false;\n return;\n }\n if (!Array.isArray(payload))\n return;\n const previousValueHadAll = previousValue.includes(\"all\");\n const currentValueHasAll = payload.includes(\"all\");\n if (!previousValueHadAll && currentValueHasAll) {\n const computedOptions = node.props.options.map(\n (option) => {\n if (typeof option !== \"string\")\n return option.value;\n return option;\n }\n );\n node.input(computedOptions);\n previousValue = computedOptions;\n return;\n }\n if (previousValueHadAll && !currentValueHasAll) {\n node.input([]);\n previousValue = [];\n return;\n }\n const valueMinusAll = payload.filter((value) => value !== \"all\");\n if (valueMinusAll.length < node.props.options.length - 1 && currentValueHasAll) {\n node.input(valueMinusAll);\n previousValue = valueMinusAll;\n skip = true;\n return;\n }\n if (valueMinusAll.length === node.props.options.length - 1 && !currentValueHasAll) {\n const computedOptions = node.props.options.map(\n (option) => {\n if (typeof option !== \"string\")\n return option.value;\n return option;\n }\n );\n node.input(computedOptions);\n previousValue = Array.isArray(node.value) ? node.value : [];\n return;\n }\n });\n };\n const data = reactive({\n twClasses: classes,\n basicOptions: Array.from({ length: 15 }, (_, i) => `Option ${i + 1}`),\n asyncLoader: async () => {\n return await new Promise(() => {\n });\n },\n paginatedLoader: async ({\n page,\n hasNextPage\n }) => {\n const base = (page - 1) * 10;\n hasNextPage();\n return Array.from({ length: 10 }, (_, i) => `Option ${base + i + 1}`);\n },\n formSubmitHandler: async (data2) => {\n await new Promise((resolve) => setTimeout(resolve, 1e3));\n alert(\"Form submitted (fake) — check console for data object\");\n console.log(\"Form data:\", data2);\n },\n includes: (array, value) => {\n if (!Array.isArray(array))\n return false;\n return array.includes(value);\n },\n checkboxPlugins: [selectAll],\n filters: []\n });\n await Promise.all(promises);\n const inputKeys = Object.keys(schemas);\n const formNames = inputKeys.map((key) => {\n if (key.startsWith(\"form/\")) {\n switch (key) {\n case \"form/tshirt\":\n return {\n id: key,\n name: \"Order Form\"\n };\n default:\n const name = key.replace(\"form/\", \"\");\n return {\n id: key,\n name: name.charAt(0).toUpperCase() + name.slice(1) + \" Form\"\n };\n }\n }\n return {\n id: key,\n name: \"\"\n };\n });\n const filteredFormNames = formNames.filter((form) => form.name !== \"\");\n const forms = inputKeys.filter((schema) => {\n return schema.startsWith(\"form/\");\n });\n const inputs = inputKeys.filter(\n (schema) => !schema.startsWith(\"form/\")\n );\n const tabs = [];\n if (inputs.length) {\n tabs.push({\n id: \"kitchen-sink\",\n name: \"Kitchen Sink\"\n });\n }\n if (forms.length) {\n tabs.push(...filteredFormNames.sort((a, b) => a.name > b.name ? 1 : -1));\n }\n if (tabs.length) {\n activeTab.value = tabs[0].id;\n }\n const kitchenSinkRenders = computed(() => {\n inputs.sort();\n const schemaDefinitions = inputs.reduce(\n (schemaDefinitions2, inputName) => {\n const schemaDefinition = schemas[inputName];\n schemaDefinitions2.push({\n $el: \"div\",\n if: '$includes($filters, \"' + inputName + '\")',\n attrs: {\n key: inputName,\n class: \"$twClasses.inputSection\",\n \"data-type\": inputName\n },\n children: [\n {\n $el: \"h2\",\n attrs: {\n class: \"$twClasses.inputType\"\n },\n children: inputName\n },\n {\n $el: \"div\",\n attrs: {\n class: \"$twClasses.specimenGroup\"\n },\n children: [\n ...(Array.isArray(schemaDefinition) ? schemaDefinition : [schemaDefinition]).map((specimen) => {\n return {\n $el: \"div\",\n attrs: {\n class: \"$twClasses.specimen\"\n },\n children: [specimen]\n };\n })\n ]\n }\n ]\n });\n return schemaDefinitions2;\n },\n []\n );\n return h(\n KeepAlive,\n {},\n {\n default: () => {\n return activeTab.value === \"kitchen-sink\" ? h(FormKitSchema, { schema: schemaDefinitions, data }) : null;\n }\n }\n );\n });\n const formRenders = computed(() => {\n return filteredFormNames.map((form) => {\n const schemaDefinition = schemas[form.id];\n return h(\n \"div\",\n {\n key: form.id\n },\n activeTab.value === form.id ? [\n h(\n \"div\",\n {\n class: classes.formContainer\n },\n [\n h(FormKitSchema, {\n schema: schemaDefinition[0],\n data\n })\n ]\n )\n ] : \"\"\n );\n }).filter((form) => form.children);\n });\n const tabBar = computed(() => {\n return h(\n \"div\",\n {\n key: \"tab-bar\",\n class: classes.tabs\n },\n tabs.map((tab) => {\n return h(\n \"span\",\n {\n class: classes.tab,\n key: tab.id,\n \"data-tab\": tab.id,\n \"data-active\": activeTab.value === tab.id || void 0,\n onClick: () => {\n activeTab.value = tab.id;\n }\n },\n tab.name\n );\n })\n );\n });\n const filterCheckboxes = computed(() => {\n const createCheckboxSchema = (inputGroup) => {\n return {\n $el: \"div\",\n attrs: {\n class: \"$twClasses.filterGroup\"\n },\n children: [\n {\n $formkit: \"checkbox\",\n name: inputGroup.name,\n label: inputGroup.label,\n plugins: \"$checkboxPlugins\",\n value: [\"all\"],\n options: [\n {\n label: \"All\",\n value: \"all\"\n },\n ...Array.isArray(inputGroup.inputs) ? inputGroup.inputs : []\n ]\n }\n ]\n };\n };\n const filterSchema = h(FormKitSchema, {\n key: \"filter-checkboxes\",\n data,\n schema: {\n $formkit: \"group\",\n id: \"filter-checkboxes\",\n children: [\n {\n $el: \"div\",\n attrs: {\n class: \"$twClasses.filterContainer\"\n },\n children: Object.keys(inputCheckboxes.value).map((key) => {\n const inputGroup = inputCheckboxes.value[key];\n return createCheckboxSchema(inputGroup);\n })\n }\n ]\n }\n });\n return h(\n KeepAlive,\n {},\n {\n default: () => {\n if (!(tabs.find((tab) => tab.id === \"kitchen-sink\") && activeTab.value === \"kitchen-sink\")) {\n return null;\n }\n return filterSchema;\n }\n }\n );\n });\n return () => {\n return h(\n \"div\",\n {\n class: classes.container\n },\n [\n tabs.length > 1 ? tabBar.value : void 0,\n filterCheckboxes.value,\n ...formRenders.value,\n kitchenSinkRenders.value\n ]\n );\n };\n }\n});\nvar messages = createSection(\"messages\", () => ({\n $el: \"ul\",\n if: \"$fns.length($messages)\"\n}));\nvar message = createSection(\"message\", () => ({\n $el: \"li\",\n for: [\"message\", \"$messages\"],\n attrs: {\n key: \"$message.key\",\n id: `$id + '-' + $message.key`,\n \"data-message-type\": \"$message.type\"\n }\n}));\nvar definition = messages(message(\"$message.value\"));\nvar FormKitMessages = /* @__PURE__ */ defineComponent({\n props: {\n node: {\n type: Object,\n required: false\n },\n sectionsSchema: {\n type: Object,\n default: {}\n },\n defaultPosition: {\n type: [String, Boolean],\n default: false\n },\n library: {\n type: Object,\n default: () => ({})\n }\n },\n setup(props, context) {\n const node = computed(() => {\n return props.node || inject(parentSymbol, void 0);\n });\n watch(\n node,\n () => {\n if (node.value?.context && !undefine(props.defaultPosition)) {\n node.value.context.defaultMessagePlacement = false;\n }\n },\n { immediate: true }\n );\n const schema = definition(props.sectionsSchema || {});\n const data = computed(() => {\n return {\n messages: node.value?.context?.messages || {},\n fns: node.value?.context?.fns || {},\n classes: node.value?.context?.classes || {}\n };\n });\n return () => node.value?.context ? h(\n FormKitSchema_default,\n { schema, data: data.value, library: props.library },\n { ...context.slots }\n ) : null;\n }\n});\nfunction useConfig(config) {\n const options = Object.assign(\n {\n alias: \"FormKit\",\n schemaAlias: \"FormKitSchema\"\n },\n typeof config === \"function\" ? config() : config\n );\n const rootConfig = createConfig(options.config || {});\n options.config = { rootConfig };\n provide(optionsSymbol, options);\n provide(configSymbol, rootConfig);\n if (typeof window !== \"undefined\") {\n globalThis.__FORMKIT_CONFIGS__ = (globalThis.__FORMKIT_CONFIGS__ || []).concat([rootConfig]);\n }\n}\nvar FormKitProvider = /* @__PURE__ */ defineComponent(\n function FormKitProvider2(props, { slots, attrs }) {\n const options = {};\n if (props.config) {\n useConfig(props.config);\n }\n return () => slots.default ? slots.default(options).map((vnode) => {\n return h(vnode, {\n ...attrs,\n ...vnode.props\n });\n }) : null;\n },\n { props: [\"config\"], name: \"FormKitProvider\", inheritAttrs: false }\n);\nvar FormKitConfigLoader = /* @__PURE__ */ defineComponent(\n async function FormKitConfigLoader2(props, context) {\n let config = {};\n if (props.configFile) {\n const configFile = await import(\n /*@__formkit.config.ts__*/\n /* @vite-ignore */\n /* webpackIgnore: true */\n props.configFile\n );\n config = \"default\" in configFile ? configFile.default : configFile;\n }\n if (typeof config === \"function\") {\n config = config();\n }\n const useDefaultConfig = props.defaultConfig ?? true;\n if (useDefaultConfig) {\n const { defaultConfig: defaultConfig2 } = await Promise.resolve().then(() => (init_defaultConfig(), defaultConfig_exports));\n config = /* @__PURE__ */ defaultConfig2(config);\n }\n return () => h(FormKitProvider, { ...context.attrs, config }, context.slots);\n },\n {\n props: [\"defaultConfig\", \"configFile\"],\n inheritAttrs: false\n }\n);\nvar FormKitLazyProvider = /* @__PURE__ */ defineComponent(\n function FormKitLazyProvider2(props, context) {\n const config = inject(optionsSymbol, null);\n const passthru = (vnode) => {\n return h(vnode, {\n ...context.attrs,\n ...vnode.props\n });\n };\n if (config) {\n return () => context.slots?.default ? context.slots.default().map(passthru) : null;\n }\n const instance = getCurrentInstance();\n if (instance.suspense) {\n return () => h(FormKitConfigLoader, props, {\n default: () => context.slots?.default ? context.slots.default().map(passthru) : null\n });\n }\n return () => h(Suspense, null, {\n ...context.slots,\n default: () => h(FormKitConfigLoader, { ...context.attrs, ...props }, context.slots)\n });\n },\n {\n props: [\"defaultConfig\", \"configFile\"],\n inheritAttrs: false\n }\n);\nfunction useFormKitContext(addressOrEffect, optionalEffect) {\n const address = typeof addressOrEffect === \"string\" ? addressOrEffect : void 0;\n const effect = typeof addressOrEffect === \"function\" ? addressOrEffect : optionalEffect;\n const context = ref();\n const parentNode = inject(parentSymbol, null);\n if (parentNode) {\n if (address) {\n context.value = parentNode.at(address)?.context;\n const root = parentNode.at(\"$root\");\n if (root) {\n const receipt = root.on(\"child.deep\", () => {\n const targetNode = parentNode.at(address);\n if (targetNode && targetNode.context !== context.value) {\n context.value = targetNode.context;\n if (effect)\n effect(context.value);\n }\n });\n onUnmounted(() => {\n root.off(receipt);\n });\n }\n } else {\n context.value = parentNode?.context;\n }\n }\n if (context.value && effect)\n effect(context.value);\n return context;\n}\nfunction useFormKitContextById(id, effect) {\n const context = ref();\n const targetNode = getNode(id);\n if (targetNode)\n context.value = targetNode.context;\n if (!targetNode) {\n const receipt = watchRegistry(id, ({ payload: node }) => {\n if (node) {\n context.value = node.context;\n stopWatch(receipt);\n if (effect)\n effect(context.value);\n }\n });\n }\n if (context.value && effect)\n effect(context.value);\n return context;\n}\nfunction useFormKitNodeById(id, effect) {\n const nodeRef = ref();\n const targetNode = getNode(id);\n if (targetNode)\n nodeRef.value = targetNode;\n if (!targetNode) {\n const receipt = watchRegistry(id, ({ payload: node }) => {\n if (node) {\n nodeRef.value = node;\n stopWatch(receipt);\n if (effect)\n effect(node);\n }\n });\n }\n if (nodeRef.value && effect)\n effect(nodeRef.value);\n return nodeRef;\n}\nvar summary = createSection(\"summary\", () => ({\n $el: \"div\",\n attrs: {\n \"aria-live\": \"polite\"\n }\n}));\nvar summaryInner = createSection(\"summaryInner\", () => ({\n $el: \"div\",\n if: \"$summaries.length && $showSummaries\"\n}));\nvar messages2 = createSection(\"messages\", () => ({\n $el: \"ul\",\n if: \"$summaries.length && $showSummaries\"\n}));\nvar message2 = createSection(\"message\", () => ({\n $el: \"li\",\n for: [\"summary\", \"$summaries\"],\n attrs: {\n key: \"$summary.key\",\n \"data-message-type\": \"$summary.type\"\n }\n}));\nvar summaryHeader = createSection(\"summaryHeader\", () => ({\n $el: \"h2\",\n attrs: {\n id: \"$id\"\n }\n}));\nvar messageLink = createSection(\"messageLink\", () => ({\n $el: \"a\",\n attrs: {\n id: \"$summary.key\",\n href: '$: \"#\" + $summary.id',\n onClick: \"$jumpLink\"\n }\n}));\nvar definition2 = summary(\n summaryInner(\n summaryHeader(\"$summaryHeader\"),\n messages2(message2(messageLink(\"$summary.message\")))\n )\n);\nvar FormKitSummary = /* @__PURE__ */ defineComponent({\n props: {\n node: {\n type: Object,\n required: false\n },\n forceShow: {\n type: Boolean,\n default: false\n },\n sectionsSchema: {\n type: Object,\n default: {}\n }\n },\n emits: {\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n show: (_summaries) => true\n },\n setup(props, context) {\n const id = `summary-${token()}`;\n const node = computed(() => {\n return props.node || inject(parentSymbol, void 0);\n });\n if (!node)\n throw new Error(\n \"FormKitSummary must have a FormKit parent or use the node prop.\"\n );\n const summaryContexts = ref([]);\n const showSummaries = ref(false);\n const summaries = computed(() => {\n const summarizedMessages = [];\n summaryContexts.value.forEach((context2) => {\n for (const idx in context2.messages) {\n const message3 = context2.messages[idx];\n if (typeof message3.value !== \"string\")\n continue;\n summarizedMessages.push({\n message: message3.value,\n id: context2.id,\n key: `${context2.id}-${message3.key}`,\n type: message3.type\n });\n }\n });\n return summarizedMessages;\n });\n const addContexts = () => {\n summaryContexts.value = [];\n node.value?.walk(\n (child) => child.context && summaryContexts.value.push(child.context)\n );\n };\n node.value?.on(\"submit-raw\", async () => {\n addContexts();\n if (summaries.value.length === 0)\n return;\n context.emit(\"show\", summaries.value);\n showSummaries.value = true;\n await nextTick();\n if (typeof window !== \"undefined\") {\n document.getElementById(id)?.scrollIntoView({ behavior: \"smooth\" });\n if (summaries.value[0]) {\n document.getElementById(summaries.value[0].key)?.focus();\n }\n }\n });\n node.value?.on(\"child\", addContexts);\n function jumpLink(e) {\n if (e.target instanceof HTMLAnchorElement) {\n e.preventDefault();\n const id2 = e.target.getAttribute(\"href\")?.substring(1);\n if (id2) {\n document.getElementById(id2)?.scrollIntoView({ behavior: \"smooth\" });\n document.getElementById(id2)?.focus();\n }\n }\n }\n localize(\"summaryHeader\", \"There were errors in your form.\")(node.value);\n const schema = definition2(props.sectionsSchema || {});\n const data = computed(() => {\n return {\n id,\n fns: node.value?.context?.fns || {},\n classes: node.value?.context?.classes || {},\n summaries: summaries.value,\n showSummaries: props.forceShow || showSummaries.value,\n summaryHeader: node.value?.context?.ui?.summaryHeader?.value || \"\",\n jumpLink\n };\n });\n return () => node.value?.context ? h(FormKitSchema_default, { schema, data: data.value }, { ...context.slots }) : null;\n }\n});\n\n// packages/vue/src/index.ts\ninit_defaultConfig();\ninit_bindings();\nvar FormKitIcon = /* @__PURE__ */ defineComponent({\n name: \"FormKitIcon\",\n props: {\n icon: {\n type: String,\n default: \"\"\n },\n iconLoader: {\n type: Function,\n default: null\n },\n iconLoaderUrl: {\n type: Function,\n default: null\n }\n },\n setup(props) {\n const icon = ref(void 0);\n const config = inject(optionsSymbol, {});\n const parent = inject(parentSymbol, null);\n let iconHandler = void 0;\n function loadIcon() {\n if (!iconHandler || typeof iconHandler !== \"function\")\n return;\n const iconOrPromise = iconHandler(props.icon);\n if (iconOrPromise instanceof Promise) {\n iconOrPromise.then((iconValue) => {\n icon.value = iconValue;\n });\n } else {\n icon.value = iconOrPromise;\n }\n }\n if (props.iconLoader && typeof props.iconLoader === \"function\") {\n iconHandler = createIconHandler(props.iconLoader);\n } else if (parent && parent.props?.iconLoader) {\n iconHandler = createIconHandler(parent.props.iconLoader);\n } else if (props.iconLoaderUrl && typeof props.iconLoaderUrl === \"function\") {\n iconHandler = createIconHandler(iconHandler, props.iconLoaderUrl);\n } else {\n const iconPlugin = config?.plugins?.find((plugin2) => {\n return typeof plugin2.iconHandler === \"function\";\n });\n if (iconPlugin) {\n iconHandler = iconPlugin.iconHandler;\n }\n }\n watch(\n () => props.icon,\n () => {\n loadIcon();\n },\n { immediate: true }\n );\n return () => {\n if (props.icon && icon.value) {\n return h(\"span\", {\n class: \"formkit-icon\",\n innerHTML: icon.value\n });\n }\n return null;\n };\n }\n});\nfunction resetCount() {\n resetCounts();\n resetCount$1();\n}\n\nexport { FormKit_default as FormKit, FormKitIcon, FormKitKitchenSink, FormKitLazyProvider, FormKitMessages, FormKitProvider, FormKitRoot, FormKitSchema, FormKitSummary, bindings_default as bindings, componentSymbol, configSymbol, createInput, defaultConfig, defineFormKitConfig, getCurrentSchemaNode, onSSRComplete, optionsSymbol, parentSymbol, plugin, resetCount, rootSymbol, ssrComplete, useConfig, useFormKitContext, useFormKitContextById, useFormKitNodeById, useInput };\n//# sourceMappingURL=out.js.map\n//# sourceMappingURL=index.mjs.map","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","import buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nimport buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toInteger from \"../toInteger/index.js\";\nimport getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import lightFormatters from \"../lightFormatters/index.js\";\nimport getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\n\nexport default function getTime(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}","import getTime from \"../getTime/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\n\nexport default function getUnixTime(dirtyDate) {\n requiredArgs(1, arguments);\n return Math.floor(getTime(dirtyDate) / 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward (toDate no longer accepts a string)\n * toDate(1392098430000) // Unix to timestamp\n * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import isSameDay from \"../isSameDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isToday\n * @category Day Helpers\n * @summary Is the given date today?\n * @pure false\n *\n * @description\n * Is the given date today?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is today\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\n\nexport default function isToday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, Date.now());\n}","import isSameDay from \"../isSameDay/index.js\";\nimport subDays from \"../subDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isYesterday\n * @category Day Helpers\n * @summary Is the given date yesterday?\n * @pure false\n *\n * @description\n * Is the given date yesterday?\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\n\nexport default function isYesterday(dirtyDate) {\n requiredArgs(1, arguments);\n return isSameDay(dirtyDate, subDays(Date.now(), 1));\n}","import { computed, unref } from 'vue';\nimport { getCurrentInstance } from 'vue';\n\nexport const useStore = () => {\n const vm = getCurrentInstance();\n if (!vm) throw new Error('must be called in setup');\n return vm.proxy.$store;\n};\n\nexport const useStoreGetters = () => {\n const store = useStore();\n return Object.fromEntries(\n Object.keys(store.getters).map(getter => [\n getter,\n computed(() => store.getters[getter]),\n ])\n );\n};\n\nexport const useMapGetter = key => {\n const store = useStore();\n return computed(() => store.getters[key]);\n};\n\nexport const useFunctionGetter = (key, ...args) => {\n const store = useStore();\n return computed(() => {\n const unrefedArgs = args.map(arg => unref(arg));\n return store.getters[key](...unrefedArgs);\n });\n};\n","(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActionCable = {});\n})(this, function(exports) {\n \"use strict\";\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n messages.push(Date.now());\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [ \"[ActionCable]\" ].concat(messages));\n }\n }\n };\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n return typeof obj;\n } : function(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n var classCallCheck = function(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var now = function now() {\n return new Date().getTime();\n };\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n var ConnectionMonitor = function() {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n this.pollTimeout = setTimeout(function() {\n _this.reconnectIfStale();\n _this.poll();\n }, this.getPollInterval());\n };\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval, min = _constructor$pollInte.min, max = _constructor$pollInte.max, multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n if (document.visibilityState === \"visible\") {\n setTimeout(function() {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = \" + document.visibilityState);\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n return ConnectionMonitor;\n }();\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n };\n var message_types = INTERNAL.message_types, protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n var Connection = function() {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n }, allowReconnect = _ref.allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return indexOf.call(states, this.getState()) >= 0;\n };\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n };\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function() {};\n }\n };\n return Connection;\n }();\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n var _JSON$parse = JSON.parse(event.data), identifier = _JSON$parse.identifier, message = _JSON$parse.message, reason = _JSON$parse.reason, reconnect = _JSON$parse.reconnect, type = _JSON$parse.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n var Subscription = function() {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n return Subscription;\n }();\n var Subscriptions = function() {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.subscriptions = [];\n }\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n return this.findAll(identifier).map(function(subscription) {\n _this.forget(subscription);\n _this.notify(subscription, \"rejected\");\n return subscription;\n });\n };\n Subscriptions.prototype.forget = function forget(subscription) {\n this.subscriptions = this.subscriptions.filter(function(s) {\n return s !== subscription;\n });\n return subscription;\n };\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function(s) {\n return s.identifier === identifier;\n });\n };\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n return this.subscriptions.map(function(subscription) {\n return _this2.sendCommand(subscription, \"subscribe\");\n });\n };\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return this.subscriptions.map(function(subscription) {\n return _this3.notify.apply(_this3, [ subscription, callbackName ].concat(args));\n });\n };\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n var subscriptions = void 0;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map(function(subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n return Subscriptions;\n }();\n var Consumer = function() {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n createClass(Consumer, [ {\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n } ]);\n return Consumer;\n }();\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});\n","import { createConsumer } from '@rails/actioncable';\n\nconst PRESENCE_INTERVAL = 20000;\nconst RECONNECT_INTERVAL = 1000;\n\nclass BaseActionCableConnector {\n static isDisconnected = false;\n\n constructor(app, pubsubToken, websocketHost = '') {\n const websocketURL = websocketHost ? `${websocketHost}/cable` : undefined;\n\n this.consumer = createConsumer(websocketURL);\n this.subscription = this.consumer.subscriptions.create(\n {\n channel: 'RoomChannel',\n pubsub_token: pubsubToken,\n account_id: app.$store.getters.getCurrentAccountId,\n user_id: app.$store.getters.getCurrentUserID,\n },\n {\n updatePresence() {\n this.perform('update_presence');\n },\n received: this.onReceived,\n disconnected: () => {\n BaseActionCableConnector.isDisconnected = true;\n this.onDisconnected();\n this.initReconnectTimer();\n },\n }\n );\n this.app = app;\n this.events = {};\n this.reconnectTimer = null;\n this.isAValidEvent = () => true;\n this.triggerPresenceInterval = () => {\n setTimeout(() => {\n this.subscription.updatePresence();\n this.triggerPresenceInterval();\n }, PRESENCE_INTERVAL);\n };\n this.triggerPresenceInterval();\n }\n\n checkConnection() {\n const isConnectionActive = this.consumer.connection.isOpen();\n const isReconnected =\n BaseActionCableConnector.isDisconnected && isConnectionActive;\n if (isReconnected) {\n this.clearReconnectTimer();\n this.onReconnect();\n BaseActionCableConnector.isDisconnected = false;\n } else {\n this.initReconnectTimer();\n }\n }\n\n clearReconnectTimer = () => {\n if (this.reconnectTimer) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n };\n\n initReconnectTimer = () => {\n this.clearReconnectTimer();\n this.reconnectTimer = setTimeout(() => {\n this.checkConnection();\n }, RECONNECT_INTERVAL);\n };\n\n // eslint-disable-next-line class-methods-use-this\n onReconnect = () => {};\n\n // eslint-disable-next-line class-methods-use-this\n onDisconnected = () => {};\n\n disconnect() {\n this.consumer.disconnect();\n }\n\n onReceived = ({ event, data } = {}) => {\n if (this.isAValidEvent(data)) {\n if (this.events[event] && typeof this.events[event] === 'function') {\n this.events[event](data);\n }\n }\n };\n}\n\nexport default BaseActionCableConnector;\n","const getUuid = () =>\n 'xxxxxxxx4xxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\nexport default getUuid;\n","import ar from './locale/ar.json';\nimport ca from './locale/ca.json';\nimport cs from './locale/cs.json';\nimport da from './locale/da.json';\nimport de from './locale/de.json';\nimport el from './locale/el.json';\nimport en from './locale/en.json';\nimport es from './locale/es.json';\nimport fa from './locale/fa.json';\nimport fi from './locale/fi.json';\nimport fr from './locale/fr.json';\nimport he from './locale/he.json';\nimport hi from './locale/hi.json';\nimport hu from './locale/hu.json';\nimport id from './locale/id.json';\nimport is from './locale/is.json';\nimport it from './locale/it.json';\nimport ja from './locale/ja.json';\nimport ko from './locale/ko.json';\nimport lt from './locale/lt.json';\nimport lv from './locale/lv.json';\nimport ml from './locale/ml.json';\nimport nl from './locale/nl.json';\nimport no from './locale/no.json';\nimport pl from './locale/pl.json';\nimport pt from './locale/pt.json';\nimport pt_BR from './locale/pt_BR.json';\nimport ro from './locale/ro.json';\nimport ru from './locale/ru.json';\nimport sk from './locale/sk.json';\nimport sr from './locale/sr.json';\nimport sv from './locale/sv.json';\nimport ta from './locale/ta.json';\nimport th from './locale/th.json';\nimport tr from './locale/tr.json';\nimport uk from './locale/uk.json';\nimport vi from './locale/vi.json';\nimport zh_CN from './locale/zh_CN.json';\nimport zh_TW from './locale/zh_TW.json';\n\nexport default {\n ar,\n ca,\n cs,\n da,\n de,\n el,\n en,\n es,\n fa,\n fi,\n fr,\n he,\n hi,\n hu,\n id,\n is,\n it,\n ja,\n ko,\n lt,\n lv,\n ml,\n nl,\n no,\n pl,\n pt_BR,\n pt,\n ro,\n ru,\n sk,\n sr,\n sv,\n ta,\n th,\n tr,\n uk,\n vi,\n zh_CN,\n zh_TW,\n};\n","import parse from 'date-fns/parse';\nimport getHours from 'date-fns/getHours';\nimport getMinutes from 'date-fns/getMinutes';\nimport timeZoneData from './timezones.json';\n\nexport const defaultTimeSlot = [\n {\n day: 0,\n to: '',\n from: '',\n valid: false,\n },\n {\n day: 1,\n to: '',\n from: '',\n valid: false,\n },\n {\n day: 2,\n to: '',\n from: '',\n valid: false,\n },\n {\n day: 3,\n to: '',\n from: '',\n valid: false,\n },\n {\n day: 4,\n to: '',\n from: '',\n valid: false,\n },\n {\n day: 5,\n to: '',\n from: '',\n valid: false,\n },\n {\n day: 6,\n to: '',\n from: '',\n valid: false,\n },\n];\n\nexport const generateTimeSlots = (step = 15) => {\n /* \n Generates a list of time strings from 12:00 AM to next 24 hours. Each new string\n will be generated by adding `step` minutes to the previous one.\n The list is generated by starting with a random day and adding step minutes till end of the same day.\n */\n const date = new Date(1970, 1, 1);\n const slots = [];\n while (date.getDate() === 1) {\n slots.push(\n date.toLocaleTimeString('en-US', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: true,\n })\n );\n date.setMinutes(date.getMinutes() + step);\n }\n return slots;\n};\n\nexport const getTime = (hour, minute) => {\n const merdian = hour > 11 ? 'PM' : 'AM';\n const modHour = hour > 12 ? hour % 12 : hour || 12;\n const parsedHour = modHour < 10 ? `0${modHour}` : modHour;\n const parsedMinute = minute < 10 ? `0${minute}` : minute;\n return `${parsedHour}:${parsedMinute} ${merdian}`;\n};\n\nexport const timeSlotParse = timeSlots => {\n return timeSlots.map(slot => {\n const {\n day_of_week: day,\n open_hour: openHour,\n open_minutes: openMinutes,\n close_hour: closeHour,\n close_minutes: closeMinutes,\n closed_all_day: closedAllDay,\n open_all_day: openAllDay,\n } = slot;\n const from = closedAllDay ? '' : getTime(openHour, openMinutes);\n const to = closedAllDay ? '' : getTime(closeHour, closeMinutes);\n\n return {\n day,\n to,\n from,\n valid: !closedAllDay,\n openAllDay,\n };\n });\n};\n\nexport const timeSlotTransform = timeSlots => {\n return timeSlots.map(slot => {\n const closed = slot.openAllDay ? false : !(slot.to && slot.from);\n const openAllDay = slot.openAllDay;\n let fromDate = '';\n let toDate = '';\n let openHour = '';\n let openMinutes = '';\n let closeHour = '';\n let closeMinutes = '';\n\n if (!closed) {\n fromDate = parse(slot.from, 'hh:mm a', new Date());\n toDate = parse(slot.to, 'hh:mm a', new Date());\n openHour = getHours(fromDate);\n openMinutes = getMinutes(fromDate);\n closeHour = getHours(toDate);\n closeMinutes = getMinutes(toDate);\n }\n\n return {\n day_of_week: slot.day,\n closed_all_day: closed,\n open_hour: openHour,\n open_minutes: openMinutes,\n close_hour: closeHour,\n close_minutes: closeMinutes,\n open_all_day: openAllDay,\n };\n });\n};\n\nexport const timeZoneOptions = () => {\n return Object.keys(timeZoneData).map(key => ({\n label: key,\n value: timeZoneData[key],\n }));\n};\n","import fromUnixTime from 'date-fns/fromUnixTime';\nimport format from 'date-fns/format';\nimport isToday from 'date-fns/isToday';\nimport isYesterday from 'date-fns/isYesterday';\nimport { endOfDay, getUnixTime, startOfDay, differenceInDays } from 'date-fns';\n\nexport const formatUnixDate = (date, dateFormat = 'MMM dd, yyyy') => {\n const unixDate = fromUnixTime(date);\n return format(unixDate, dateFormat);\n};\n\nexport const formatDate = ({ date, todayText, yesterdayText }) => {\n const dateValue = new Date(date);\n if (isToday(dateValue)) return todayText;\n if (isYesterday(dateValue)) return yesterdayText;\n return date;\n};\n\nexport const formatDigitToString = val => {\n return val > 9 ? `${val}` : `0${val}`;\n};\n\nexport const isTimeAfter = (h1, m1, h2, m2) => {\n if (h1 < h2) {\n return false;\n }\n\n if (h1 === h2) {\n return m1 >= m2;\n }\n\n return true;\n};\n\n/** Get start of day as a UNIX timestamp */\nexport const getUnixStartOfDay = date => getUnixTime(startOfDay(date));\n\n/** Get end of day as a UNIX timestamp */\nexport const getUnixEndOfDay = date => getUnixTime(endOfDay(date));\n\nexport const generateRelativeTime = (value, unit, languageCode) => {\n const code = languageCode?.replace(/_/g, '-'); // Hacky fix we need to handle it from source\n const rtf = new Intl.RelativeTimeFormat(code, {\n numeric: 'auto',\n });\n return rtf.format(value, unit);\n};\n\nexport const getDayDifferenceFromNow = (now, timestampInSeconds) => {\n const date = new Date(timestampInSeconds * 1000);\n return differenceInDays(now, date);\n};\n","export const set = (state, data) => {\n state.records = data;\n};\n\nexport const create = (state, data) => {\n state.records.push(data);\n};\n\nexport const setSingleRecord = (state, data) => {\n const recordIndex = state.records.findIndex(record => record.id === data.id);\n if (recordIndex > -1) {\n state.records[recordIndex] = data;\n } else {\n create(state, data);\n }\n};\n\nexport const update = (state, data) => {\n state.records.forEach((element, index) => {\n if (element.id === data.id) {\n state.records[index] = data;\n }\n });\n};\n\n/* when you don't want to overwrite the whole object */\nexport const updateAttributes = (state, data) => {\n state.records.forEach((element, index) => {\n if (element.id === data.id) {\n state.records[index] = { ...state.records[index], ...data };\n }\n });\n};\n\nexport const updatePresence = (state, data) => {\n state.records.forEach((element, index) => {\n const availabilityStatus = data[element.id];\n state.records[index].availability_status = availabilityStatus || 'offline';\n });\n};\n\nexport const updateSingleRecordPresence = (\n records,\n { id, availabilityStatus }\n) => {\n const [selectedRecord] = records.filter(record => record.id === Number(id));\n if (selectedRecord) {\n selectedRecord.availability_status = availabilityStatus;\n }\n};\n\nexport const destroy = (state, id) => {\n state.records = state.records.filter(record => record.id !== id);\n};\n","export const isAFormMessage = message => message.content_type === 'form';\nexport const isASubmittedFormMessage = (message = {}) =>\n isAFormMessage(message) && !!message.content_attributes?.submitted_values;\n\nexport const MESSAGE_MAX_LENGTH = {\n GENERAL: 10000,\n FACEBOOK: 1000,\n TWILIO_SMS: 320,\n TWILIO_WHATSAPP: 1600,\n EMAIL: 25000,\n};\n","var R=class{type=3;name=\"\";prefix=\"\";value=\"\";suffix=\"\";modifier=3;constructor(t,r,n,o,c,l){this.type=t,this.name=r,this.prefix=n,this.value=o,this.suffix=c,this.modifier=l}hasCustomName(){return this.name!==\"\"&&typeof this.name!=\"number\"}},be=/[$_\\p{ID_Start}]/u,Pe=/[$_\\u200C\\u200D\\p{ID_Continue}]/u,M=\".*\";function Re(e,t){return(t?/^[\\x00-\\xFF]*$/:/^[\\x00-\\x7F]*$/).test(e)}function v(e,t=!1){let r=[],n=0;for(;n{if(la(\"OTHER_MODIFIER\")??a(\"ASTERISK\"),d=h=>{let u=a(h);if(u!==void 0)return u;let{type:p,index:A}=r[l];throw new TypeError(`Unexpected ${p} at ${A}, expected ${h}`)},T=()=>{let h=\"\",u;for(;u=a(\"CHAR\")??a(\"ESCAPED_CHAR\");)h+=u;return h},Se=h=>h,L=t.encodePart||Se,I=\"\",U=h=>{I+=h},$=()=>{I.length&&(o.push(new R(3,\"\",\"\",L(I),\"\",3)),I=\"\")},V=(h,u,p,A,Y)=>{let g=3;switch(Y){case\"?\":g=1;break;case\"*\":g=0;break;case\"+\":g=2;break}if(!u&&!p&&g===3){U(h);return}if($(),!u&&!p){if(!h)return;o.push(new R(3,\"\",\"\",L(h),\"\",g));return}let m;p?p===\"*\"?m=M:m=p:m=n;let O=2;m===n?(O=1,m=\"\"):m===M&&(O=0,m=\"\");let P;if(u?P=u:p&&(P=c++),i.has(P))throw new TypeError(`Duplicate name '${P}'.`);i.add(P),o.push(new R(O,P,L(h),m,L(A),g))};for(;l-1)}return l||(n+=`(?=${c}|${o})`),new RegExp(n,X(r))}var x={delimiter:\"\",prefixes:\"\",sensitive:!0,strict:!0},B={delimiter:\".\",prefixes:\"\",sensitive:!0,strict:!0},q={delimiter:\"/\",prefixes:\"/\",sensitive:!0,strict:!0};function J(e,t){return e.length?e[0]===\"/\"?!0:!t||e.length<2?!1:(e[0]==\"\\\\\"||e[0]==\"{\")&&e[1]==\"/\":!1}function Q(e,t){return e.startsWith(t)?e.substring(t.length,e.length):e}function Ee(e,t){return e.endsWith(t)?e.substr(0,e.length-t.length):e}function W(e){return!e||e.length<2?!1:e[0]===\"[\"||(e[0]===\"\\\\\"||e[0]===\"{\")&&e[1]===\"[\"}var ee=[\"ftp\",\"file\",\"http\",\"https\",\"ws\",\"wss\"];function N(e){if(!e)return!0;for(let t of ee)if(e.test(t))return!0;return!1}function te(e,t){if(e=Q(e,\"#\"),t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.hash=e,r.hash?r.hash.substring(1,r.hash.length):\"\"}function re(e,t){if(e=Q(e,\"?\"),t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.search=e,r.search?r.search.substring(1,r.search.length):\"\"}function ne(e,t){return t||e===\"\"?e:W(e)?j(e):z(e)}function se(e,t){if(t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.password=e,r.password}function ie(e,t){if(t||e===\"\")return e;let r=new URL(\"https://example.com\");return r.username=e,r.username}function ae(e,t,r){if(r||e===\"\")return e;if(t&&!ee.includes(t))return new URL(`${t}:${e}`).pathname;let n=e[0]==\"/\";return e=new URL(n?e:\"/-\"+e,\"https://example.com\").pathname,n||(e=e.substring(2,e.length)),e}function oe(e,t,r){return _(t)===e&&(e=\"\"),r||e===\"\"?e:K(e)}function ce(e,t){return e=Ee(e,\":\"),t||e===\"\"?e:y(e)}function _(e){switch(e){case\"ws\":case\"http\":return\"80\";case\"wws\":case\"https\":return\"443\";case\"ftp\":return\"21\";default:return\"\"}}function y(e){if(e===\"\")return e;if(/^[-+.A-Za-z0-9]*$/.test(e))return e.toLowerCase();throw new TypeError(`Invalid protocol '${e}'.`)}function le(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.username=e,t.username}function fe(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.password=e,t.password}function z(e){if(e===\"\")return e;if(/[\\t\\n\\r #%/:<>?@[\\]^\\\\|]/g.test(e))throw new TypeError(`Invalid hostname '${e}'`);let t=new URL(\"https://example.com\");return t.hostname=e,t.hostname}function j(e){if(e===\"\")return e;if(/[^0-9a-fA-F[\\]:]/g.test(e))throw new TypeError(`Invalid IPv6 hostname '${e}'`);return e.toLowerCase()}function K(e){if(e===\"\"||/^[0-9]*$/.test(e)&&parseInt(e)<=65535)return e;throw new TypeError(`Invalid port '${e}'.`)}function he(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.pathname=e[0]!==\"/\"?\"/-\"+e:e,e[0]!==\"/\"?t.pathname.substring(2,t.pathname.length):t.pathname}function ue(e){return e===\"\"?e:new URL(`data:${e}`).pathname}function de(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.search=e,t.search.substring(1,t.search.length)}function pe(e){if(e===\"\")return e;let t=new URL(\"https://example.com\");return t.hash=e,t.hash.substring(1,t.hash.length)}var H=class{#i;#n=[];#t={};#e=0;#s=1;#l=0;#o=0;#d=0;#p=0;#g=!1;constructor(t){this.#i=t}get result(){return this.#t}parse(){for(this.#n=v(this.#i,!0);this.#e0)if(this.#A())this.#d-=1;else continue;if(this.#T()){this.#d+=1;continue}switch(this.#o){case 0:this.#P()&&this.#u(1);break;case 1:if(this.#P()){this.#C();let t=7,r=1;this.#E()?(t=2,r=3):this.#g&&(t=2),this.#r(t,r)}break;case 2:this.#S()?this.#u(3):(this.#x()||this.#h()||this.#f())&&this.#u(5);break;case 3:this.#O()?this.#r(4,1):this.#S()&&this.#r(5,1);break;case 4:this.#S()&&this.#r(5,1);break;case 5:this.#y()?this.#p+=1:this.#w()&&(this.#p-=1),this.#k()&&!this.#p?this.#r(6,1):this.#x()?this.#r(7,0):this.#h()?this.#r(8,1):this.#f()&&this.#r(9,1);break;case 6:this.#x()?this.#r(7,0):this.#h()?this.#r(8,1):this.#f()&&this.#r(9,1);break;case 7:this.#h()?this.#r(8,1):this.#f()&&this.#r(9,1);break;case 8:this.#f()&&this.#r(9,1);break;case 9:break;case 10:break}}this.#t.hostname!==void 0&&this.#t.port===void 0&&(this.#t.port=\"\")}#r(t,r){switch(this.#o){case 0:break;case 1:this.#t.protocol=this.#c();break;case 2:break;case 3:this.#t.username=this.#c();break;case 4:this.#t.password=this.#c();break;case 5:this.#t.hostname=this.#c();break;case 6:this.#t.port=this.#c();break;case 7:this.#t.pathname=this.#c();break;case 8:this.#t.search=this.#c();break;case 9:this.#t.hash=this.#c();break;case 10:break}this.#o!==0&&t!==10&&([1,2,3,4].includes(this.#o)&&[6,7,8,9].includes(t)&&(this.#t.hostname??=\"\"),[1,2,3,4,5,6].includes(this.#o)&&[8,9].includes(t)&&(this.#t.pathname??=this.#g?\"/\":\"\"),[1,2,3,4,5,6,7].includes(this.#o)&&t===9&&(this.#t.search??=\"\")),this.#R(t,r)}#R(t,r){this.#o=t,this.#l=this.#e+r,this.#e+=r,this.#s=0}#b(){this.#e=this.#l,this.#s=0}#u(t){this.#b(),this.#o=t}#m(t){return t<0&&(t=this.#n.length-t),t=0&&(e.pathname=b(n.pathname.substring(0,o+1),r)+e.pathname)}e.pathname=ae(e.pathname,e.protocol,r)}return typeof t.search==\"string\"&&(e.search=re(t.search,r)),typeof t.hash==\"string\"&&(e.hash=te(t.hash,r)),e}function C(e){return e.replace(/([+*?:{}()\\\\])/g,\"\\\\$1\")}function Oe(e){return e.replace(/([.+*?^${}()[\\]|/\\\\])/g,\"\\\\$1\")}function ke(e,t){t.delimiter??=\"/#?\",t.prefixes??=\"./\",t.sensitive??=!1,t.strict??=!1,t.end??=!0,t.start??=!0,t.endsWith=\"\";let r=\".*\",n=`[^${Oe(t.delimiter)}]+?`,o=/[$_\\u200C\\u200D\\p{ID_Continue}]/u,c=\"\";for(let l=0;l0?e[l-1]:null,d=l0?d.value[0]:\"\";a=o.test(T)}else a=!d.hasCustomName();if(!a&&!s.prefix.length&&f&&f.type===3){let T=f.value[f.value.length-1];a=t.prefixes.includes(T)}a&&(c+=\"{\"),c+=C(s.prefix),i&&(c+=`:${s.name}`),s.type===2?c+=`(${s.value})`:s.type===1?i||(c+=`(${n})`):s.type===0&&(!i&&(!f||f.type===3||f.modifier!==3||a||s.prefix!==\"\")?c+=\"*\":c+=`(${r})`),s.type===1&&i&&s.suffix.length&&o.test(s.suffix[0])&&(c+=\"\\\\\"),c+=C(s.suffix),a&&(c+=\"}\"),s.modifier!==3&&(c+=k(s.modifier))}return c}var me=class{#i;#n={};#t={};#e={};#s={};#l=!1;constructor(t={},r,n){try{let o;if(typeof r==\"string\"?o=r:n=r,typeof t==\"string\"){let i=new H(t);if(i.parse(),t=i.result,o===void 0&&typeof t.protocol!=\"string\")throw new TypeError(\"A base URL must be provided for a relative constructor string.\");t.baseURL=o}else{if(!t||typeof t!=\"object\")throw new TypeError(\"parameter 1 is not of type 'string' and cannot convert to dictionary.\");if(o)throw new TypeError(\"parameter 1 is not of type 'string'.\")}typeof n>\"u\"&&(n={ignoreCase:!1});let c={ignoreCase:n.ignoreCase===!0},l={pathname:E,protocol:E,username:E,password:E,hostname:E,port:E,search:E,hash:E};this.#i=w(l,t,!0),_(this.#i.protocol)===this.#i.port&&(this.#i.port=\"\");let s;for(s of G){if(!(s in this.#i))continue;let i={},a=this.#i[s];switch(this.#t[s]=[],s){case\"protocol\":Object.assign(i,x),i.encodePart=y;break;case\"username\":Object.assign(i,x),i.encodePart=le;break;case\"password\":Object.assign(i,x),i.encodePart=fe;break;case\"hostname\":Object.assign(i,B),W(a)?i.encodePart=j:i.encodePart=z;break;case\"port\":Object.assign(i,x),i.encodePart=K;break;case\"pathname\":N(this.#n.protocol)?(Object.assign(i,q,c),i.encodePart=he):(Object.assign(i,x,c),i.encodePart=ue);break;case\"search\":Object.assign(i,x,c),i.encodePart=de;break;case\"hash\":Object.assign(i,x,c),i.encodePart=pe;break}try{this.#s[s]=D(a,i),this.#n[s]=F(this.#s[s],this.#t[s],i),this.#e[s]=ke(this.#s[s],i),this.#l=this.#l||this.#s[s].some(f=>f.type===2)}catch{throw new TypeError(`invalid ${s} pattern '${this.#i[s]}'.`)}}}catch(o){throw new TypeError(`Failed to construct 'URLPattern': ${o.message}`)}}test(t={},r){let n={pathname:\"\",protocol:\"\",username:\"\",password:\"\",hostname:\"\",port:\"\",search:\"\",hash:\"\"};if(typeof t!=\"string\"&&r)throw new TypeError(\"parameter 1 is not of type 'string'.\");if(typeof t>\"u\")return!1;try{typeof t==\"object\"?n=w(n,t,!1):n=w(n,ge(t,r),!1)}catch{return!1}let o;for(o of G)if(!this.#n[o].exec(n[o]))return!1;return!0}exec(t={},r){let n={pathname:\"\",protocol:\"\",username:\"\",password:\"\",hostname:\"\",port:\"\",search:\"\",hash:\"\"};if(typeof t!=\"string\"&&r)throw new TypeError(\"parameter 1 is not of type 'string'.\");if(typeof t>\"u\")return;try{typeof t==\"object\"?n=w(n,t,!1):n=w(n,ge(t,r),!1)}catch{return null}let o={};r?o.inputs=[t,r]:o.inputs=[t];let c;for(c of G){let l=this.#n[c].exec(n[c]);if(!l)return null;let s={};for(let[i,a]of this.#t[c].entries())if(typeof a==\"string\"||typeof a==\"number\"){let f=l[i+1];s[a]=f}o[c]={input:n[c]??\"\",groups:s}}return o}static compareComponent(t,r,n){let o=(i,a)=>{for(let f of[\"type\",\"modifier\",\"prefix\",\"value\",\"suffix\"]){if(i[f]{let f=0;for(;f