toku-form-extensions 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/utils/typeChecker.ts","../node_modules/rut.js/index.js","../src/composables/useI18n.ts","../src/utils/parser/parser.ts","../src/utils/parser/index.ts","../src/composables/useRelatedFields.ts","../src/utils/formatters/date.ts","../src/utils/formatters/number.ts","../src/components/CustomForm/SignupCompleted.vue","../src/utils/string.ts","../node_modules/date-format-parse/es/util.js","../node_modules/date-format-parse/es/locale/en.js","../node_modules/date-format-parse/es/format.js","../node_modules/date-format-parse/es/parse.js","../node_modules/vue-datepicker-next/index.es.js","../src/components/CustomForm/SignupField.vue","../src/components/CustomForm/SignupFields.vue","../src/components/CustomForm/CustomForm.vue","../src/components/TCustomForm/CustomField.vue","../src/components/TCustomForm/FieldsSection.vue","../src/components/TCustomForm/TAlert.vue","../src/components/TCustomForm/TOverlay.vue","../src/components/TCustomForm/TCustomForm.vue"],"sourcesContent":["import { CustomCheckBoxField, CustomInputField } from '@/types/customFields';\n\nexport const isString = (\n value?: number | string | Date | boolean,\n): value is string => {\n return typeof value === 'string';\n};\n\nexport const isNumber = (\n value?: number | string | Date | boolean,\n): value is number => {\n return typeof value === 'number';\n};\n\n/** The prefill masks with runs of asterisks; a lone `*` is something a payer can type. */\nexport const isMaskedValue = (\n value?: number | string | Date | boolean,\n): boolean => {\n return isString(value) && value.includes('**');\n};\n\nexport const isDate = (\n value?: number | string | Date | boolean,\n): value is Date => {\n return value instanceof Date;\n};\n\nexport const isCheckboxField = (\n value: CustomInputField | CustomCheckBoxField,\n): value is CustomCheckBoxField => {\n return (value as CustomCheckBoxField).type === 'checkbox';\n};\n\nexport const hasExpressionToBoolField = (\n field: CustomInputField | CustomCheckBoxField,\n): field is CustomInputField => {\n return (field as CustomInputField).expressionToBool !== undefined;\n};\n","'use strict'\n\nfunction clean (rut) {\n return typeof rut === 'string'\n ? rut.replace(/^0+|[^0-9kK]+/g, '').toUpperCase()\n : ''\n}\n\nfunction validate (rut) {\n if (typeof rut !== 'string') {\n return false\n }\n if (!/^0*(\\d{1,3}(\\.?\\d{3})*)-?([\\dkK])$/.test(rut)) {\n return false\n }\n\n rut = clean(rut)\n\n var t = parseInt(rut.slice(0, -1), 10)\n var m = 0\n var s = 1\n\n while (t > 0) {\n s = (s + (t % 10) * (9 - m++ % 6)) % 11\n t = Math.floor(t / 10)\n }\n\n var v = s > 0 ? '' + (s - 1) : 'K'\n return v === rut.slice(-1)\n}\n\nfunction format (rut) {\n rut = clean(rut)\n\n var result = rut.slice(-4, -1) + '-' + rut.substr(rut.length - 1)\n for (var i = 4; i < rut.length; i += 3) {\n result = rut.slice(-3 - i, -i) + '.' + result\n }\n\n return result\n}\n\nmodule.exports = { validate: validate, clean: clean, format: format }\n","import { isMaskedValue } from '@/utils/typeChecker';\nimport { clean as cleanRut } from 'rut.js';\n\ninterface CountryMetadata {\n [countryCode: string]: {\n governmentIdCleaner?: (governmentId: string) => string;\n };\n}\n\nconst countryMetadata: CountryMetadata = {\n CL: {\n governmentIdCleaner: cleanRut,\n },\n MX: {},\n};\n\nexport default function useI18n() {\n const cleanGovernmentId = (\n governmentId: string,\n countryIso: string | null,\n ) => {\n if (governmentId && countryIso && !isMaskedValue(governmentId)) {\n const cleaner = countryMetadata[countryIso].governmentIdCleaner;\n if (cleaner) {\n return cleaner(governmentId);\n }\n return governmentId;\n }\n return governmentId;\n };\n\n return { cleanGovernmentId };\n}\n","/* eslint-disable */\n// @ts-nocheck\n// Generated by Peggy 3.0.2.\n//\n// https://peggyjs.org/\n\n'use strict';\n\nfunction peg$subclass(child, parent) {\n function C() {\n this.constructor = child;\n }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = 'SyntaxError';\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || ' ';\n if (str.length > targetLength) {\n return str;\n }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function (sources) {\n var str = 'Error: ' + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s =\n this.location.source && typeof this.location.source.offset === 'function'\n ? this.location.source.offset(s)\n : s;\n var loc =\n this.location.source + ':' + offset_s.line + ':' + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd('', offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = last - s.column || 1;\n str +=\n '\\n --> ' +\n loc +\n '\\n' +\n filler +\n ' |\\n' +\n offset_s.line +\n ' | ' +\n line +\n '\\n' +\n filler +\n ' | ' +\n peg$padEnd('', s.column - 1, ' ') +\n peg$padEnd('', hatLen, '^');\n } else {\n str += '\\n at ' + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function (expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function (expectation) {\n return '\"' + literalEscape(expectation.text) + '\"';\n },\n\n class: function (expectation) {\n var escapedParts = expectation.parts.map(function (part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + '-' + classEscape(part[1])\n : classEscape(part);\n });\n\n return (\n '[' + (expectation.inverted ? '^' : '') + escapedParts.join('') + ']'\n );\n },\n\n any: function () {\n return 'any character';\n },\n\n end: function () {\n return 'end of input';\n },\n\n other: function (expectation) {\n return expectation.description;\n },\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + ' or ' + descriptions[1];\n\n default:\n return (\n descriptions.slice(0, -1).join(', ') +\n ', or ' +\n descriptions[descriptions.length - 1]\n );\n }\n }\n\n function describeFound(found) {\n return found ? '\"' + literalEscape(found) + '\"' : 'end of input';\n }\n\n return (\n 'Expected ' +\n describeExpected(expected) +\n ' but ' +\n describeFound(found) +\n ' found.'\n );\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { Expression: peg$parseExpression };\n var peg$startRuleFunction = peg$parseExpression;\n\n var peg$c0 = '+';\n var peg$c1 = '-';\n var peg$c2 = '*';\n var peg$c3 = '/';\n var peg$c4 = '(';\n var peg$c5 = ')';\n var peg$c6 = ',';\n var peg$c7 = 'VAR(';\n var peg$c8 = '.';\n var peg$c9 = \"'\";\n\n var peg$r0 = /^[a-zA-Z]/;\n var peg$r1 = /^[a-zA-Z_]/;\n var peg$r2 = /^[0-9]/;\n var peg$r3 = /^[^']/;\n var peg$r4 = /^[ \\t\\n\\r]/;\n\n var peg$e0 = peg$literalExpectation('+', false);\n var peg$e1 = peg$literalExpectation('-', false);\n var peg$e2 = peg$literalExpectation('*', false);\n var peg$e3 = peg$literalExpectation('/', false);\n var peg$e4 = peg$literalExpectation('(', false);\n var peg$e5 = peg$literalExpectation(')', false);\n var peg$e6 = peg$classExpectation(\n [\n ['a', 'z'],\n ['A', 'Z'],\n ],\n false,\n false,\n );\n var peg$e7 = peg$literalExpectation(',', false);\n var peg$e8 = peg$literalExpectation('VAR(', false);\n var peg$e9 = peg$classExpectation(\n [['a', 'z'], ['A', 'Z'], '_'],\n false,\n false,\n );\n var peg$e10 = peg$otherExpectation('integer');\n var peg$e11 = peg$classExpectation([['0', '9']], false, false);\n var peg$e12 = peg$otherExpectation('decimal');\n var peg$e13 = peg$literalExpectation('.', false);\n var peg$e14 = peg$otherExpectation('string');\n var peg$e15 = peg$literalExpectation(\"'\", false);\n var peg$e16 = peg$classExpectation([\"'\"], true, false);\n var peg$e17 = peg$otherExpectation('whitespace');\n var peg$e18 = peg$classExpectation([' ', '\\t', '\\n', '\\r'], false, false);\n\n var peg$f0 = function (head, tail) {\n return tail.reduce(function (result, element) {\n if (element[1] === '+') {\n return result + element[3];\n }\n if (element[1] === '-') {\n return result - element[3];\n }\n }, head);\n };\n var peg$f1 = function (head, tail) {\n return tail.reduce(function (result, element) {\n if (element[1] === '*') {\n return result * element[3];\n }\n if (element[1] === '/') {\n return result / element[3];\n }\n }, head);\n };\n var peg$f2 = function (expr) {\n return expr;\n };\n var peg$f3 = function (functionName, args) {\n const name = functionName.join('');\n const a = args || [];\n if (name === 'ROUND') {\n return round(a[0], a[1]);\n }\n if (name === 'POWER') {\n return power(a[0], a[1]);\n }\n if (name === 'STARTSWITH') {\n return startsWith(a[0], a[1]);\n }\n if (name === 'ENDSWITH') {\n return endsWith(a[0], a[1]);\n }\n if (name === 'INCLUDES') {\n return includes(a[0], a[1]);\n }\n if (name === 'SLICE') {\n return slice(a[0], a[1], a[2]);\n }\n throw new Error('Function ' + name + ' is not defined');\n };\n var peg$f4 = function (head, tail) {\n return [head].concat(tail.map((element) => element[3]));\n };\n var peg$f5 = function (name) {\n if (variables.hasOwnProperty(name.join(''))) {\n return variables[name.join('')];\n } else {\n throw new Error('Variable ' + name.join('') + ' is not defined');\n }\n };\n var peg$f6 = function () {\n return parseInt(text(), 10);\n };\n var peg$f7 = function () {\n return parseFloat(text());\n };\n var peg$f8 = function (chars) {\n return chars.join('');\n };\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n\n var peg$result;\n\n if ('startRule' in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\n 'Can\\'t start parsing from rule \"' + options.startRule + '\".',\n );\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos,\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location =\n location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location,\n );\n }\n\n function error(message, location) {\n location =\n location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: 'literal', text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return {\n type: 'class',\n parts: parts,\n inverted: inverted,\n ignoreCase: ignoreCase,\n };\n }\n\n function peg$anyExpectation() {\n return { type: 'any' };\n }\n\n function peg$endExpectation() {\n return { type: 'end' };\n }\n\n function peg$otherExpectation(description) {\n return { type: 'other', description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column,\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column,\n },\n };\n if (offset && peg$source && typeof peg$source.offset === 'function') {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location,\n );\n }\n\n function peg$parseExpression() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseTerm();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 43) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e0);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e1);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseTerm();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 43) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e0);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e1);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseTerm();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f0(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTerm() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseFactor();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 42) {\n s5 = peg$c2;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e2);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e3);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseFactor();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 42) {\n s5 = peg$c2;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e2);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e3);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseFactor();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f1(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFactor() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 40) {\n s2 = peg$c4;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e4);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseExpression();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s6 = peg$c5;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f2(s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseFunctionCall();\n if (s0 === peg$FAILED) {\n s0 = peg$parseVariable();\n if (s0 === peg$FAILED) {\n s0 = peg$parseDecimal();\n if (s0 === peg$FAILED) {\n s0 = peg$parseInteger();\n if (s0 === peg$FAILED) {\n s0 = peg$parseString();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseFunctionCall() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = [];\n if (peg$r0.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e6);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$r0.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e6);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e4);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseArgumentList();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c5;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f3(s2, s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseArgumentList() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseArgument();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e7);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseArgument();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e7);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseArgument();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f4(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseArgument() {\n var s0;\n\n s0 = peg$parseString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseExpression();\n }\n\n return s0;\n }\n\n function peg$parseVariable() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 4) === peg$c7) {\n s2 = peg$c7;\n peg$currPos += 4;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e8);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$r1.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e9);\n }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$r1.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e9);\n }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c5;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseInteger() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = [];\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e10);\n }\n }\n\n return s0;\n }\n\n function peg$parseDecimal() {\n var s0, s1, s2, s3, s4, s5;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = [];\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s3 = peg$c8;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e13);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f7();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e12);\n }\n }\n\n return s0;\n }\n\n function peg$parseString() {\n var s0, s1, s2, s3, s4;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 39) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e15);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$r3.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e16);\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$r3.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e16);\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 39) {\n s4 = peg$c9;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e15);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f8(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e14);\n }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$r4.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e18);\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$r4.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e18);\n }\n }\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e17);\n }\n\n return s0;\n }\n\n const variables = options.variables || {};\n\n function round(number, decimals) {\n const factor = Math.pow(10, decimals);\n return Math.round(number * factor) / factor;\n }\n\n function power(number, exponent) {\n return Math.pow(number, exponent);\n }\n\n function startsWith(string, prefix) {\n return string.startsWith(prefix);\n }\n\n function endsWith(string, suffix) {\n return string.endsWith(suffix);\n }\n\n function includes(string, substring) {\n return string.includes(substring);\n }\n\n function slice(string, start, end) {\n return end === undefined ? string.slice(start) : string.slice(start, end);\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos),\n );\n }\n}\n\nexport { peg$SyntaxError as SyntaxError, peg$parse as parse };\n","import { parse } from './parser';\n\nexport function evaluateExpression(\n expression: string,\n variables?: Record<string, string | number | Date | undefined | boolean>,\n): number | string | boolean {\n try {\n return parse(expression, { variables });\n } catch (e) {\n return expression;\n }\n}\n","import { CustomCheckBoxField, CustomInputField } from '@/types/customFields';\nimport { SignupField } from '@/types/signUpField';\nimport { evaluateExpression } from '@/utils/parser';\nimport { hasExpressionToBoolField } from '@/utils/typeChecker';\nimport { ComputedRef, Ref, inject, provide } from 'vue';\n\nexport default function useRelatedFields(\n fields?:\n | Ref<Array<SignupField | CustomCheckBoxField | CustomInputField>>\n | ComputedRef<Array<SignupField | CustomCheckBoxField | CustomInputField>>,\n) {\n if (fields) {\n provide('fields', fields);\n } else {\n fields = inject('fields');\n if (!fields) {\n throw new Error('Fields were not provided');\n }\n }\n const shouldShowField = (\n field: SignupField | CustomCheckBoxField | CustomInputField,\n ): boolean => {\n if (field.relatedField) {\n const foundRelatedField = fields?.value.find(({ name, value }) => {\n if (field.relatedFieldValues && value) {\n return (\n field.relatedField === name &&\n field.relatedFieldValues.includes(value as string | number | Date)\n );\n }\n return false;\n });\n if (!foundRelatedField) {\n return false;\n }\n return shouldShowField(foundRelatedField);\n }\n if (hasExpressionToBoolField(field) && field.expressionToBool) {\n const variables = fields?.value.reduce<\n Record<string, string | number | Date | boolean>\n >((hasmap, currentField) => {\n if (currentField.value) hasmap[currentField.name] = currentField.value;\n return hasmap;\n }, {});\n const showField = evaluateExpression(field.expressionToBool, variables);\n return showField === true;\n }\n return true;\n };\n\n return { shouldShowField };\n}\n","const fillWithZero = (content: string | number) => {\n return `0${content}`.slice(-2);\n};\n\nexport const formatDueDate = (date: Date) => {\n return `${date.getFullYear()}-${fillWithZero(\n date.getMonth() + 1,\n )}-${fillWithZero(date.getDate())}`;\n};\n","export type ThousandsSeparator = '.' | ',';\n\n/**\n * Gets the decimal separator based on the thousands separator\n * If thousands separator is '.', decimal separator is ','\n * If thousands separator is ',', decimal separator is '.'\n */\nexport const getDecimalSeparator = (\n thousandsSeparator: ThousandsSeparator,\n): string => {\n return thousandsSeparator === '.' ? ',' : '.';\n};\n\n/**\n * Formats a number string with thousands separators\n * @param value - The string value to format\n * @param thousandsSeparator - The separator for thousands ('.' or ',')\n * @returns The formatted string with thousands separators\n */\nexport const formatWithThousands = (\n value: string,\n thousandsSeparator: ThousandsSeparator,\n): string => {\n if (!value) return '';\n\n const decimalSeparator = getDecimalSeparator(thousandsSeparator);\n\n // Split by decimal separator\n const parts = value.split(decimalSeparator);\n const integerPart = parts[0] || '';\n const decimalPart = parts[1];\n\n // Remove existing thousands separators and non-digits from integer part\n const cleanInteger = integerPart.replace(/[^0-9]/g, '');\n\n if (!cleanInteger && decimalPart === undefined) return '';\n\n // Add thousands separators\n const formattedInteger = cleanInteger.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousandsSeparator,\n );\n\n // Reconstruct with decimal part if present\n if (decimalPart !== undefined) {\n // Clean decimal part (only digits)\n const cleanDecimal = decimalPart.replace(/[^0-9]/g, '');\n return `${formattedInteger || '0'}${decimalSeparator}${cleanDecimal}`;\n }\n\n return formattedInteger;\n};\n\n/**\n * Parses a formatted number string to a raw number string\n * Removes thousands separators and normalizes decimal separator to '.'\n * Preserves intermediate states while typing (e.g., \"5.\" while user is typing decimals)\n * Returns empty string for completely invalid inputs\n * @param formattedValue - The formatted string with separators\n * @param thousandsSeparator - The thousands separator used in the formatted value\n * @returns The raw number string with '.' as decimal separator, or empty string if invalid\n */\nexport const parseFormattedNumber = (\n formattedValue: string,\n thousandsSeparator: ThousandsSeparator,\n): string => {\n if (!formattedValue) return '';\n\n const decimalSeparator = getDecimalSeparator(thousandsSeparator);\n\n // Remove thousands separators\n let cleaned = formattedValue.replace(\n new RegExp(`\\\\${thousandsSeparator}`, 'g'),\n '',\n );\n\n // Replace decimal separator with standard '.'\n cleaned = cleaned.replace(decimalSeparator, '.');\n\n // If it's just a decimal point, return empty (prevents NaN)\n if (cleaned === '.') {\n return '';\n }\n\n // Handle leading decimal: \".5\" -> \"0.5\"\n if (cleaned.startsWith('.')) {\n cleaned = `0${cleaned}`;\n }\n\n // Validate: check if the numeric part is valid\n // Allow trailing decimal for intermediate state (e.g., \"5.\" while typing)\n const testValue = cleaned.endsWith('.') ? cleaned.slice(0, -1) : cleaned;\n if (testValue && Number.isNaN(Number(testValue))) {\n return '';\n }\n\n return cleaned;\n};\n\n/**\n * Filters a string to only allow valid number characters\n * Ensures only one decimal separator is present\n * @param value - The input string\n * @param thousandsSeparator - The thousands separator\n * @returns The filtered string\n */\nexport const filterNumberInput = (\n value: string,\n thousandsSeparator: ThousandsSeparator,\n): string => {\n const decimalSeparator = getDecimalSeparator(thousandsSeparator);\n\n // Allow only digits, decimal separator, and thousands separator\n const allowedChars = new RegExp(\n `[^0-9\\\\${thousandsSeparator}\\\\${decimalSeparator}]`,\n 'g',\n );\n const filteredValue = value.replace(allowedChars, '');\n\n // Ensure only one decimal separator\n const decimalRegex = new RegExp(`\\\\${decimalSeparator}`, 'g');\n const decimalCount = (filteredValue.match(decimalRegex) || []).length;\n\n if (decimalCount > 1) {\n // Keep only the first decimal separator\n const firstDecimalIndex = filteredValue.indexOf(decimalSeparator);\n return (\n filteredValue.substring(0, firstDecimalIndex + 1) +\n filteredValue.substring(firstDecimalIndex + 1).replace(decimalRegex, '')\n );\n }\n\n return filteredValue;\n};\n","<template>\n <div class=\"success-form\">\n <TTypography variant=\"h1\">\n {{ message }}\n </TTypography>\n <TButton variant=\"secondary\" @click=\"$emit('reset')\">\n {{ buttonText }}\n </TButton>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { TButton, TTypography } from 'toku-ui';\nimport { computed, defineProps, defineEmits, withDefaults } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n type: 'success' | 'error';\n errorMessage: string;\n errorButtonLabel: string;\n successMessage: string;\n successButtonLabel: string;\n }>(),\n {\n type: 'success',\n },\n);\n\nconst message = computed(() =>\n props.type === 'error' ? props.errorMessage : props.successMessage,\n);\n\nconst buttonText = computed(() =>\n props.type === 'error' ? props.errorButtonLabel : props.successButtonLabel,\n);\n\ndefineEmits(['reset']);\n</script>\n<style scoped>\n.success-form {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 20px;\n height: 80vh;\n border-radius: 8px;\n padding: 40px;\n padding-inline: 80px;\n flex-wrap: wrap;\n width: 100%;\n}\n</style>\n","import DOMPurify from 'dompurify';\n\nexport const stringToHTML = (stringToConvert: string | undefined): string => {\n const config = {\n ALLOWED_TAGS: ['a'],\n ALLOWED_ATTR: ['href', 'target'],\n };\n if (stringToConvert) {\n return DOMPurify.sanitize(stringToConvert, config);\n }\n return '';\n};\n","export function isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function toDate(value) {\n if (isDate(value)) {\n return new Date(value.getTime());\n }\n\n if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(value);\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNaN(value.getTime());\n}\nexport function startOfWeek(value) {\n var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(value);\n var day = date.getDay();\n var diff = (day + 7 - firstDayOfWeek) % 7;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nexport function startOfWeekYear(value) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$firstDayOfWeek = _ref.firstDayOfWeek,\n firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,\n _ref$firstWeekContain = _ref.firstWeekContainsDate,\n firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain;\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7');\n }\n\n var date = toDate(value);\n var year = date.getFullYear();\n var firstDateOfFirstWeek = new Date(0);\n\n for (var i = year + 1; i >= year - 1; i--) {\n firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate);\n firstDateOfFirstWeek.setHours(0, 0, 0, 0);\n firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek);\n\n if (date.getTime() >= firstDateOfFirstWeek.getTime()) {\n break;\n }\n }\n\n return firstDateOfFirstWeek;\n}\nexport function getWeek(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$firstDayOfWeek = _ref2.firstDayOfWeek,\n firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek,\n _ref2$firstWeekContai = _ref2.firstWeekContainsDate,\n firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai;\n\n var date = toDate(value);\n var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek);\n var firstDateOfFirstWeek = startOfWeekYear(date, {\n firstDayOfWeek: firstDayOfWeek,\n firstWeekContainsDate: firstWeekContainsDate\n });\n var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime();\n return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1;\n}","var locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nexport default locale;","import { toDate, isValidDate, getWeek } from './util';\nimport defaultLocale from './locale/en';\nvar REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;\n\nfunction pad(val) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var output = \"\".concat(Math.abs(val));\n var sign = val < 0 ? '-' : '';\n\n while (output.length < len) {\n output = \"0\".concat(output);\n }\n\n return sign + output;\n}\n\nfunction getOffset(date) {\n return Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\nfunction formatTimezone(offset) {\n var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + pad(hours, 2) + delimeter + pad(minutes, 2);\n}\n\nvar meridiem = function meridiem(h, _, isLowercase) {\n var word = h < 12 ? 'AM' : 'PM';\n return isLowercase ? word.toLocaleLowerCase() : word;\n};\n\nvar formatFlags = {\n Y: function Y(date) {\n var y = date.getFullYear();\n return y <= 9999 ? \"\".concat(y) : \"+\".concat(y);\n },\n // Year: 00, 01, ..., 99\n YY: function YY(date) {\n return pad(date.getFullYear(), 4).substr(2);\n },\n // Year: 1900, 1901, ..., 2099\n YYYY: function YYYY(date) {\n return pad(date.getFullYear(), 4);\n },\n // Month: 1, 2, ..., 12\n M: function M(date) {\n return date.getMonth() + 1;\n },\n // Month: 01, 02, ..., 12\n MM: function MM(date) {\n return pad(date.getMonth() + 1, 2);\n },\n MMM: function MMM(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MMMM: function MMMM(date, locale) {\n return locale.months[date.getMonth()];\n },\n // Day of month: 1, 2, ..., 31\n D: function D(date) {\n return date.getDate();\n },\n // Day of month: 01, 02, ..., 31\n DD: function DD(date) {\n return pad(date.getDate(), 2);\n },\n // Hour: 0, 1, ... 23\n H: function H(date) {\n return date.getHours();\n },\n // Hour: 00, 01, ..., 23\n HH: function HH(date) {\n return pad(date.getHours(), 2);\n },\n // Hour: 1, 2, ..., 12\n h: function h(date) {\n var hours = date.getHours();\n\n if (hours === 0) {\n return 12;\n }\n\n if (hours > 12) {\n return hours % 12;\n }\n\n return hours;\n },\n // Hour: 01, 02, ..., 12\n hh: function hh() {\n var hours = formatFlags.h.apply(formatFlags, arguments);\n return pad(hours, 2);\n },\n // Minute: 0, 1, ..., 59\n m: function m(date) {\n return date.getMinutes();\n },\n // Minute: 00, 01, ..., 59\n mm: function mm(date) {\n return pad(date.getMinutes(), 2);\n },\n // Second: 0, 1, ..., 59\n s: function s(date) {\n return date.getSeconds();\n },\n // Second: 00, 01, ..., 59\n ss: function ss(date) {\n return pad(date.getSeconds(), 2);\n },\n // 1/10 of second: 0, 1, ..., 9\n S: function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n // 1/100 of second: 00, 01, ..., 99\n SS: function SS(date) {\n return pad(Math.floor(date.getMilliseconds() / 10), 2);\n },\n // Millisecond: 000, 001, ..., 999\n SSS: function SSS(date) {\n return pad(date.getMilliseconds(), 3);\n },\n // Day of week: 0, 1, ..., 6\n d: function d(date) {\n return date.getDay();\n },\n // Day of week: 'Su', 'Mo', ..., 'Sa'\n dd: function dd(date, locale) {\n return locale.weekdaysMin[date.getDay()];\n },\n // Day of week: 'Sun', 'Mon',..., 'Sat'\n ddd: function ddd(date, locale) {\n return locale.weekdaysShort[date.getDay()];\n },\n // Day of week: 'Sunday', 'Monday', ...,'Saturday'\n dddd: function dddd(date, locale) {\n return locale.weekdays[date.getDay()];\n },\n // AM, PM\n A: function A(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), false);\n },\n // am, pm\n a: function a(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), true);\n },\n // Timezone: -01:00, +00:00, ... +12:00\n Z: function Z(date) {\n return formatTimezone(getOffset(date), ':');\n },\n // Timezone: -0100, +0000, ... +1200\n ZZ: function ZZ(date) {\n return formatTimezone(getOffset(date));\n },\n // Seconds timestamp: 512969520\n X: function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n // Milliseconds timestamp: 512969520900\n x: function x(date) {\n return date.getTime();\n },\n w: function w(date, locale) {\n return getWeek(date, {\n firstDayOfWeek: locale.firstDayOfWeek,\n firstWeekContainsDate: locale.firstWeekContainsDate\n });\n },\n ww: function ww(date, locale) {\n return pad(formatFlags.w(date, locale), 2);\n }\n};\nexport function format(val, str) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var date = toDate(val);\n\n if (!isValidDate(date)) {\n return 'Invalid Date';\n }\n\n var locale = options.locale || defaultLocale;\n return formatStr.replace(REGEX_FORMAT, function (match, p1) {\n if (p1) {\n return p1;\n }\n\n if (typeof formatFlags[match] === 'function') {\n return \"\".concat(formatFlags[match](date, locale));\n }\n\n return match;\n });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport defaultLocale from './locale/en';\nimport { startOfWeekYear } from './util';\nvar formattingTokens = /(\\[[^\\[]*\\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchShortOffset = /[+-]\\d\\d:?\\d\\d/; // +00:00 -00:00 +0000 or -0000\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i; // Word\n\nvar YEAR = 'year';\nvar MONTH = 'month';\nvar DAY = 'day';\nvar HOUR = 'hour';\nvar MINUTE = 'minute';\nvar SECOND = 'second';\nvar MILLISECOND = 'millisecond';\nvar parseFlags = {};\n\nvar addParseFlag = function addParseFlag(token, regex, callback) {\n var tokens = Array.isArray(token) ? token : [token];\n var func;\n\n if (typeof callback === 'string') {\n func = function func(input) {\n var value = parseInt(input, 10);\n return _defineProperty({}, callback, value);\n };\n } else {\n func = callback;\n }\n\n tokens.forEach(function (key) {\n parseFlags[key] = [regex, func];\n });\n};\n\nvar escapeStringRegExp = function escapeStringRegExp(str) {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nvar matchWordRegExp = function matchWordRegExp(localeKey) {\n return function (locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n return new RegExp(array.map(escapeStringRegExp).join('|'));\n };\n};\n\nvar matchWordCallback = function matchWordCallback(localeKey, key) {\n return function (input, locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n var index = array.indexOf(input);\n\n if (index < 0) {\n throw new Error('Invalid Word');\n }\n\n return _defineProperty({}, key, index);\n };\n};\n\naddParseFlag('Y', matchSigned, YEAR);\naddParseFlag('YY', match2, function (input) {\n var year = new Date().getFullYear();\n var cent = Math.floor(year / 100);\n var value = parseInt(input, 10);\n value = (value > 68 ? cent - 1 : cent) * 100 + value;\n return _defineProperty({}, YEAR, value);\n});\naddParseFlag('YYYY', match4, YEAR);\naddParseFlag('M', match1to2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MM', match2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH));\naddParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH));\naddParseFlag('D', match1to2, DAY);\naddParseFlag('DD', match2, DAY);\naddParseFlag(['H', 'h'], match1to2, HOUR);\naddParseFlag(['HH', 'hh'], match2, HOUR);\naddParseFlag('m', match1to2, MINUTE);\naddParseFlag('mm', match2, MINUTE);\naddParseFlag('s', match1to2, SECOND);\naddParseFlag('ss', match2, SECOND);\naddParseFlag('S', match1, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100);\n});\naddParseFlag('SS', match2, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10);\n});\naddParseFlag('SSS', match3, MILLISECOND);\n\nfunction matchMeridiem(locale) {\n return locale.meridiemParse || /[ap]\\.?m?\\.?/i;\n}\n\nfunction defaultIsPM(input) {\n return \"\".concat(input).toLowerCase().charAt(0) === 'p';\n}\n\naddParseFlag(['A', 'a'], matchMeridiem, function (input, locale) {\n var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input);\n return {\n isPM: isPM\n };\n});\n\nfunction offsetFromString(str) {\n var _ref8 = str.match(/([+-]|\\d\\d)/g) || ['-', '0', '0'],\n _ref9 = _slicedToArray(_ref8, 3),\n symbol = _ref9[0],\n hour = _ref9[1],\n minute = _ref9[2];\n\n var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10);\n\n if (minutes === 0) {\n return 0;\n }\n\n return symbol === '+' ? -minutes : +minutes;\n}\n\naddParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) {\n return {\n offset: offsetFromString(input)\n };\n});\naddParseFlag('x', matchSigned, function (input) {\n return {\n date: new Date(parseInt(input, 10))\n };\n});\naddParseFlag('X', matchTimestamp, function (input) {\n return {\n date: new Date(parseFloat(input) * 1000)\n };\n});\naddParseFlag('d', match1, 'weekday');\naddParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday'));\naddParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday'));\naddParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday'));\naddParseFlag('w', match1to2, 'week');\naddParseFlag('ww', match2, 'week');\n\nfunction to24hour(hour, isPM) {\n if (hour !== undefined && isPM !== undefined) {\n if (isPM) {\n if (hour < 12) {\n return hour + 12;\n }\n } else if (hour === 12) {\n return 0;\n }\n }\n\n return hour;\n}\n\nfunction getFullInputArray(input) {\n var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n var result = [0, 0, 1, 0, 0, 0, 0];\n var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()];\n var useBackup = true;\n\n for (var i = 0; i < 7; i++) {\n if (input[i] === undefined) {\n result[i] = useBackup ? backupArr[i] : result[i];\n } else {\n result[i] = input[i];\n useBackup = false;\n }\n }\n\n return result;\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n var date;\n\n if (y < 100 && y >= 0) {\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate() {\n var date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var y = args[0];\n\n if (y < 100 && y >= 0) {\n args[0] += 400;\n date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(Date, args));\n }\n\n return date;\n}\n\nfunction makeParser(dateString, format, locale) {\n var tokens = format.match(formattingTokens);\n\n if (!tokens) {\n throw new Error();\n }\n\n var length = tokens.length;\n var mark = {};\n\n for (var i = 0; i < length; i += 1) {\n var token = tokens[i];\n var parseTo = parseFlags[token];\n\n if (!parseTo) {\n var word = token.replace(/^\\[|\\]$/g, '');\n\n if (dateString.indexOf(word) === 0) {\n dateString = dateString.substr(word.length);\n } else {\n throw new Error('not match');\n }\n } else {\n var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0];\n var parser = parseTo[1];\n var value = (regex.exec(dateString) || [])[0];\n var obj = parser(value, locale);\n mark = _objectSpread({}, mark, {}, obj);\n dateString = dateString.replace(value, '');\n }\n }\n\n return mark;\n}\n\nexport function parse(str, format) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n try {\n var _options$locale = options.locale,\n _locale = _options$locale === void 0 ? defaultLocale : _options$locale,\n _options$backupDate = options.backupDate,\n backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate;\n\n var parseResult = makeParser(str, format, _locale);\n var year = parseResult.year,\n month = parseResult.month,\n day = parseResult.day,\n hour = parseResult.hour,\n minute = parseResult.minute,\n second = parseResult.second,\n millisecond = parseResult.millisecond,\n isPM = parseResult.isPM,\n date = parseResult.date,\n offset = parseResult.offset,\n weekday = parseResult.weekday,\n week = parseResult.week;\n\n if (date) {\n return date;\n }\n\n var inputArray = [year, month, day, hour, minute, second, millisecond];\n inputArray[3] = to24hour(inputArray[3], isPM); // check week\n\n if (week !== undefined && month === undefined && day === undefined) {\n // new Date(year, 3) make sure in current year\n var firstDate = startOfWeekYear(year === undefined ? backupDate : new Date(year, 3), {\n firstDayOfWeek: _locale.firstDayOfWeek,\n firstWeekContainsDate: _locale.firstWeekContainsDate\n });\n return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000);\n }\n\n var parsedDate;\n var result = getFullInputArray(inputArray, backupDate);\n\n if (offset !== undefined) {\n result[6] += offset * 60 * 1000;\n parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result));\n } else {\n parsedDate = createDate.apply(void 0, _toConsumableArray(result));\n } // check weekday\n\n\n if (weekday !== undefined && parsedDate.getDay() !== weekday) {\n return new Date(NaN);\n }\n\n return parsedDate;\n } catch (e) {\n return new Date(NaN);\n }\n}","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nimport { inject, shallowRef, computed, provide, ref, watchEffect, createVNode, Teleport, Transition, openBlock, createElementBlock, createElementVNode, toRef, defineComponent, onMounted, onUnmounted, isVNode, watch, h } from \"vue\";\nimport { getWeek, format, parse } from \"date-format-parse\";\nimport en from \"date-format-parse/es/locale/en\";\nconst lang = {\n formatLocale: en,\n yearFormat: \"YYYY\",\n monthFormat: \"MMM\",\n monthBeforeYear: true\n};\nlet defaultLocale = \"en\";\nconst locales = {};\nlocales[defaultLocale] = lang;\nfunction locale(name, object, isLocal = false) {\n if (typeof name !== \"string\")\n return locales[defaultLocale];\n let l = defaultLocale;\n if (locales[name]) {\n l = name;\n }\n if (object) {\n locales[name] = object;\n l = name;\n }\n if (!isLocal) {\n defaultLocale = l;\n }\n return locales[name] || locales[defaultLocale];\n}\nfunction getLocale(name) {\n return locale(name, void 0, true);\n}\nfunction chunk(arr, size) {\n if (!Array.isArray(arr)) {\n return [];\n }\n const result = [];\n const len = arr.length;\n let i = 0;\n size = size || len;\n while (i < len) {\n result.push(arr.slice(i, i += size));\n }\n return result;\n}\nfunction last(array) {\n return Array.isArray(array) ? array[array.length - 1] : void 0;\n}\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction pick(obj, props) {\n const res = {};\n if (!isPlainObject(obj))\n return res;\n if (!Array.isArray(props)) {\n props = [props];\n }\n props.forEach((prop) => {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n res[prop] = obj[prop];\n }\n });\n return res;\n}\nfunction mergeDeep(target, source) {\n if (!isPlainObject(target)) {\n return {};\n }\n let result = target;\n if (isPlainObject(source)) {\n Object.keys(source).forEach((key) => {\n let value = source[key];\n const targetValue = target[key];\n if (isPlainObject(value) && isPlainObject(targetValue)) {\n value = mergeDeep(targetValue, value);\n }\n result = __spreadProps(__spreadValues({}, result), { [key]: value });\n });\n }\n return result;\n}\nfunction padNumber(value) {\n const num = parseInt(String(value), 10);\n return num < 10 ? `0${num}` : `${num}`;\n}\nfunction camelcase(str) {\n const camelizeRE = /-(\\w)/g;\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n}\nconst localeContextKey = \"datepicker_locale\";\nconst prefixClassKey = \"datepicker_prefixClass\";\nconst getWeekKey = \"datepicker_getWeek\";\nfunction useLocale() {\n return inject(localeContextKey, shallowRef(getLocale()));\n}\nfunction provideLocale(lang2) {\n const locale2 = computed(() => {\n if (isPlainObject(lang2.value)) {\n return mergeDeep(getLocale(), lang2.value);\n }\n return getLocale(lang2.value);\n });\n provide(localeContextKey, locale2);\n return locale2;\n}\nfunction providePrefixClass(value) {\n provide(prefixClassKey, value);\n}\nfunction usePrefixClass() {\n return inject(prefixClassKey, \"mx\");\n}\nfunction provideGetWeek(value) {\n provide(getWeekKey, value);\n}\nfunction useGetWeek() {\n return inject(getWeekKey, getWeek);\n}\nfunction getPopupElementSize(element) {\n const originalDisplay = element.style.display;\n const originalVisibility = element.style.visibility;\n element.style.display = \"block\";\n element.style.visibility = \"hidden\";\n const styles = window.getComputedStyle(element);\n const width = element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10);\n const height = element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10);\n element.style.display = originalDisplay;\n element.style.visibility = originalVisibility;\n return { width, height };\n}\nfunction getRelativePosition(el, targetWidth, targetHeight, fixed) {\n let left = 0;\n let top = 0;\n let offsetX = 0;\n let offsetY = 0;\n const relativeRect = el.getBoundingClientRect();\n const dw = document.documentElement.clientWidth;\n const dh = document.documentElement.clientHeight;\n if (fixed) {\n offsetX = window.pageXOffset + relativeRect.left;\n offsetY = window.pageYOffset + relativeRect.top;\n }\n if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) {\n left = offsetX - relativeRect.left + 1;\n } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) {\n left = offsetX;\n } else {\n left = offsetX + relativeRect.width - targetWidth;\n }\n if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) {\n top = offsetY + dh - relativeRect.top - targetHeight;\n } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) {\n top = offsetY + relativeRect.height;\n } else {\n top = offsetY - targetHeight;\n }\n return { left: `${left}px`, top: `${top}px` };\n}\nfunction getScrollParent(node, until = document.body) {\n if (!node || node === until) {\n return null;\n }\n const style = (value, prop) => getComputedStyle(value, null).getPropertyValue(prop);\n const regex = /(auto|scroll)/;\n const scroll = regex.test(style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\"));\n return scroll ? node : getScrollParent(node.parentElement, until);\n}\nlet scrollBarWidth;\nfunction getScrollbarWidth() {\n if (typeof window === \"undefined\")\n return 0;\n if (scrollBarWidth !== void 0)\n return scrollBarWidth;\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.overflow = \"scroll\";\n outer.style.width = \"100px\";\n outer.style.position = \"absolute\";\n outer.style.top = \"-9999px\";\n document.body.appendChild(outer);\n const inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n scrollBarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return scrollBarWidth;\n}\nconst mousedownEvent = \"ontouchend\" in document ? \"touchstart\" : \"mousedown\";\nfunction rafThrottle(fn) {\n let isRunning = false;\n return function fnBinfRaf(...args) {\n if (isRunning)\n return;\n isRunning = true;\n requestAnimationFrame(() => {\n isRunning = false;\n fn.apply(this, args);\n });\n };\n}\nfunction defineVueComponent(setup, props) {\n return { setup, name: setup.name, props };\n}\nfunction withDefault(props, defaultProps) {\n const result = new Proxy(props, {\n get(target, key) {\n const value = target[key];\n if (value !== void 0) {\n return value;\n }\n return defaultProps[key];\n }\n });\n return result;\n}\nconst keys = () => (props) => props;\nconst resolveProps = (obj, booleanKeys2) => {\n const props = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const camelizeKey = camelcase(key);\n let value = obj[key];\n if (booleanKeys2.indexOf(camelizeKey) !== -1 && value === \"\") {\n value = true;\n }\n props[camelizeKey] = value;\n }\n }\n return props;\n};\nfunction Popup(originalProps, {\n slots\n}) {\n const props = withDefault(originalProps, {\n appendToBody: true\n });\n const prefixClass = usePrefixClass();\n const popup = ref(null);\n const position = ref({\n left: \"\",\n top: \"\"\n });\n const displayPopup = () => {\n if (!props.visible || !popup.value)\n return;\n const relativeElement = props.getRelativeElement();\n if (!relativeElement)\n return;\n const {\n width,\n height\n } = getPopupElementSize(popup.value);\n position.value = getRelativePosition(relativeElement, width, height, props.appendToBody);\n };\n watchEffect(displayPopup, {\n flush: \"post\"\n });\n watchEffect((onInvalidate) => {\n const relativeElement = props.getRelativeElement();\n if (!relativeElement)\n return;\n const scrollElement = getScrollParent(relativeElement) || window;\n const handleMove = rafThrottle(displayPopup);\n scrollElement.addEventListener(\"scroll\", handleMove);\n window.addEventListener(\"resize\", handleMove);\n onInvalidate(() => {\n scrollElement.removeEventListener(\"scroll\", handleMove);\n window.removeEventListener(\"resize\", handleMove);\n });\n }, {\n flush: \"post\"\n });\n const handleClickOutside = (evt) => {\n if (!props.visible)\n return;\n const target = evt.target;\n const el = popup.value;\n const relativeElement = props.getRelativeElement();\n if (el && !el.contains(target) && relativeElement && !relativeElement.contains(target)) {\n props.onClickOutside(evt);\n }\n };\n watchEffect((onInvalidate) => {\n document.addEventListener(mousedownEvent, handleClickOutside);\n onInvalidate(() => {\n document.removeEventListener(mousedownEvent, handleClickOutside);\n });\n });\n return () => {\n return createVNode(Teleport, {\n \"to\": \"body\",\n \"disabled\": !props.appendToBody\n }, {\n default: () => [createVNode(Transition, {\n \"name\": `${prefixClass}-zoom-in-down`\n }, {\n default: () => {\n var _a;\n return [props.visible && createVNode(\"div\", {\n \"ref\": popup,\n \"class\": `${prefixClass}-datepicker-main ${prefixClass}-datepicker-popup ${props.className}`,\n \"style\": [__spreadValues({\n position: \"absolute\"\n }, position.value), props.style || {}]\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])];\n }\n })]\n });\n };\n}\nconst popupProps = keys()([\"style\", \"className\", \"visible\", \"appendToBody\", \"onClickOutside\", \"getRelativeElement\"]);\nvar Popup$1 = defineVueComponent(Popup, popupProps);\nconst _hoisted_1$2 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\",\n width: \"1em\",\n height: \"1em\"\n};\nconst _hoisted_2$2 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M940.218 107.055H730.764v-60.51H665.6v60.51H363.055v-60.51H297.89v60.51H83.78c-18.617 0-32.581 13.963-32.581 32.581v805.237c0 18.618 13.964 32.582 32.582 32.582h861.09c18.619 0 32.583-13.964 32.583-32.582V139.636c-4.655-18.618-18.619-32.581-37.237-32.581zm-642.327 65.163v60.51h65.164v-60.51h307.2v60.51h65.163v-60.51h176.873v204.8H116.364v-204.8H297.89zM116.364 912.291V442.18H912.29v470.11H116.364z\" }, null, -1);\nconst _hoisted_3$2 = [\n _hoisted_2$2\n];\nfunction render$2(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$2, _hoisted_3$2);\n}\nconst _hoisted_1$1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\",\n width: \"1em\",\n height: \"1em\"\n};\nconst _hoisted_2$1 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M810.005 274.005 572.011 512l237.994 237.995-60.01 60.01L512 572.011 274.005 810.005l-60.01-60.01L451.989 512 213.995 274.005l60.01-60.01L512 451.989l237.995-237.994z\" }, null, -1);\nconst _hoisted_3$1 = [\n _hoisted_2$1\n];\nfunction render$1(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$1, _hoisted_3$1);\n}\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" }, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\" }, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction render(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nfunction createDate(y, M = 0, d = 1, h2 = 0, m = 0, s = 0, ms = 0) {\n const date = new Date(y, M, d, h2, m, s, ms);\n if (y < 100 && y >= 0) {\n date.setFullYear(y);\n }\n return date;\n}\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n}\nfunction isValidRangeDate(dates) {\n return Array.isArray(dates) && dates.length === 2 && dates.every(isValidDate) && dates[0] <= dates[1];\n}\nfunction isValidDates(dates) {\n return Array.isArray(dates) && dates.every(isValidDate);\n}\nfunction getValidDate(...values) {\n if (values[0] !== void 0 && values[0] !== null) {\n const date = new Date(values[0]);\n if (isValidDate(date)) {\n return date;\n }\n }\n const rest = values.slice(1);\n if (rest.length) {\n return getValidDate(...rest);\n }\n return new Date();\n}\nfunction startOfYear(value) {\n const date = new Date(value);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfMonth(value) {\n const date = new Date(value);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfDay(value) {\n const date = new Date(value);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getCalendar({\n firstDayOfWeek,\n year,\n month\n}) {\n const arr = [];\n const calendar = createDate(year, month, 0);\n const lastDayInLastMonth = calendar.getDate();\n const firstDayInLastMonth = lastDayInLastMonth - (calendar.getDay() + 7 - firstDayOfWeek) % 7;\n for (let i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) {\n arr.push(createDate(year, month, i - lastDayInLastMonth));\n }\n calendar.setMonth(month + 1, 0);\n const lastDayInCurrentMonth = calendar.getDate();\n for (let i = 1; i <= lastDayInCurrentMonth; i++) {\n arr.push(createDate(year, month, i));\n }\n const lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1;\n const nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth;\n for (let i = 1; i <= nextMonthLength; i++) {\n arr.push(createDate(year, month, lastDayInCurrentMonth + i));\n }\n return arr;\n}\nfunction setMonth(dirtyDate, dirtyMonth) {\n const date = new Date(dirtyDate);\n const month = typeof dirtyMonth === \"function\" ? dirtyMonth(date.getMonth()) : Number(dirtyMonth);\n const year = date.getFullYear();\n const daysInMonth = createDate(year, month + 1, 0).getDate();\n const day = date.getDate();\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\nfunction setYear(dirtyDate, dirtyYear) {\n const date = new Date(dirtyDate);\n const year = typeof dirtyYear === \"function\" ? dirtyYear(date.getFullYear()) : dirtyYear;\n date.setFullYear(year);\n return date;\n}\nfunction diffCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n const dateRight = new Date(dirtyDateRight);\n const dateLeft = new Date(dirtyDateLeft);\n const yearDiff = dateRight.getFullYear() - dateLeft.getFullYear();\n const monthDiff = dateRight.getMonth() - dateLeft.getMonth();\n return yearDiff * 12 + monthDiff;\n}\nfunction assignTime(target, source) {\n const date = new Date(target);\n const time = new Date(source);\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds());\n return date;\n}\nfunction PickerInput(originalProps, {\n slots\n}) {\n const props = withDefault(originalProps, {\n editable: true,\n disabled: false,\n clearable: true,\n range: false,\n multiple: false\n });\n const prefixClass = usePrefixClass();\n const userInput = ref(null);\n const innerSeparator = computed(() => {\n return props.separator || (props.range ? \" ~ \" : \",\");\n });\n const isValidValue = (value) => {\n if (props.range) {\n return isValidRangeDate(value);\n }\n if (props.multiple) {\n return isValidDates(value);\n }\n return isValidDate(value);\n };\n const isDisabledValue = (value) => {\n if (Array.isArray(value)) {\n return value.some((v) => props.disabledDate(v));\n }\n return props.disabledDate(value);\n };\n const text = computed(() => {\n if (userInput.value !== null) {\n return userInput.value;\n }\n if (typeof props.renderInputText === \"function\") {\n return props.renderInputText(props.value);\n }\n if (!isValidValue(props.value)) {\n return \"\";\n }\n if (Array.isArray(props.value)) {\n return props.value.map((v) => props.formatDate(v)).join(innerSeparator.value);\n }\n return props.formatDate(props.value);\n });\n const handleClear = (evt) => {\n var _a;\n if (evt) {\n evt.stopPropagation();\n }\n props.onChange(props.range ? [null, null] : null);\n (_a = props.onClear) == null ? void 0 : _a.call(props);\n };\n const handleChange = () => {\n var _a;\n if (!props.editable || userInput.value === null)\n return;\n const text2 = userInput.value.trim();\n userInput.value = null;\n if (text2 === \"\") {\n handleClear();\n return;\n }\n let date;\n if (props.range) {\n let arr = text2.split(innerSeparator.value);\n if (arr.length !== 2) {\n arr = text2.split(innerSeparator.value.trim());\n }\n date = arr.map((v) => props.parseDate(v.trim()));\n } else if (props.multiple) {\n date = text2.split(innerSeparator.value).map((v) => props.parseDate(v.trim()));\n } else {\n date = props.parseDate(text2);\n }\n if (isValidValue(date) && !isDisabledValue(date)) {\n props.onChange(date);\n } else {\n (_a = props.onInputError) == null ? void 0 : _a.call(props, text2);\n }\n };\n const handleInput = (evt) => {\n userInput.value = typeof evt === \"string\" ? evt : evt.target.value;\n };\n const handleKeydown = (evt) => {\n const {\n keyCode\n } = evt;\n if (keyCode === 9) {\n props.onBlur();\n } else if (keyCode === 13) {\n handleChange();\n }\n };\n return () => {\n var _a, _b, _c;\n const showClearIcon = !props.disabled && props.clearable && text.value;\n const inputProps = __spreadProps(__spreadValues({\n name: \"date\",\n type: \"text\",\n autocomplete: \"off\",\n value: text.value,\n class: props.inputClass || `${prefixClass}-input`,\n readonly: !props.editable,\n disabled: props.disabled,\n placeholder: props.placeholder\n }, props.inputAttr), {\n onFocus: props.onFocus,\n onKeydown: handleKeydown,\n onInput: handleInput,\n onChange: handleChange\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-input-wrapper`,\n \"onClick\": props.onClick\n }, [((_a = slots.input) == null ? void 0 : _a.call(slots, inputProps)) || createVNode(\"input\", inputProps, null), showClearIcon ? createVNode(\"i\", {\n \"class\": `${prefixClass}-icon-clear`,\n \"onClick\": handleClear\n }, [((_b = slots[\"icon-clear\"]) == null ? void 0 : _b.call(slots)) || createVNode(render$1, null, null)]) : null, createVNode(\"i\", {\n \"class\": `${prefixClass}-icon-calendar`\n }, [((_c = slots[\"icon-calendar\"]) == null ? void 0 : _c.call(slots)) || createVNode(render$2, null, null)])]);\n };\n}\nconst pickerInputBaseProps = keys()([\"placeholder\", \"editable\", \"disabled\", \"clearable\", \"inputClass\", \"inputAttr\", \"range\", \"multiple\", \"separator\", \"renderInputText\", \"onInputError\", \"onClear\"]);\nconst pickerInputProps = keys()([\"value\", \"formatDate\", \"parseDate\", \"disabledDate\", \"onChange\", \"onFocus\", \"onBlur\", \"onClick\", ...pickerInputBaseProps]);\nvar PickerInput$1 = defineVueComponent(PickerInput, pickerInputProps);\nfunction Picker(originalProps, {\n slots\n}) {\n var _a;\n const props = withDefault(originalProps, {\n prefixClass: \"mx\",\n valueType: \"date\",\n format: \"YYYY-MM-DD\",\n type: \"date\",\n disabledDate: () => false,\n disabledTime: () => false,\n confirmText: \"OK\"\n });\n providePrefixClass(props.prefixClass);\n provideGetWeek(((_a = props.formatter) == null ? void 0 : _a.getWeek) || getWeek);\n const locale2 = provideLocale(toRef(originalProps, \"lang\"));\n const container = ref();\n const getContainer = () => container.value;\n const defaultOpen = ref(false);\n const popupVisible = computed(() => {\n return !props.disabled && (typeof props.open === \"boolean\" ? props.open : defaultOpen.value);\n });\n const openPopup = () => {\n var _a2, _b;\n if (props.disabled || popupVisible.value)\n return;\n defaultOpen.value = true;\n (_a2 = props[\"onUpdate:open\"]) == null ? void 0 : _a2.call(props, true);\n (_b = props.onOpen) == null ? void 0 : _b.call(props);\n };\n const closePopup = () => {\n var _a2, _b;\n if (!popupVisible.value)\n return;\n defaultOpen.value = false;\n (_a2 = props[\"onUpdate:open\"]) == null ? void 0 : _a2.call(props, false);\n (_b = props.onClose) == null ? void 0 : _b.call(props);\n };\n const formatDate = (date, fmt) => {\n fmt = fmt || props.format;\n if (isPlainObject(props.formatter) && typeof props.formatter.stringify === \"function\") {\n return props.formatter.stringify(date, fmt);\n }\n return format(date, fmt, {\n locale: locale2.value.formatLocale\n });\n };\n const parseDate = (value, fmt) => {\n fmt = fmt || props.format;\n if (isPlainObject(props.formatter) && typeof props.formatter.parse === \"function\") {\n return props.formatter.parse(value, fmt);\n }\n const backupDate = new Date();\n return parse(value, fmt, {\n locale: locale2.value.formatLocale,\n backupDate\n });\n };\n const value2date = (value) => {\n switch (props.valueType) {\n case \"date\":\n return value instanceof Date ? new Date(value.getTime()) : new Date(NaN);\n case \"timestamp\":\n return typeof value === \"number\" ? new Date(value) : new Date(NaN);\n case \"format\":\n return typeof value === \"string\" ? parseDate(value) : new Date(NaN);\n default:\n return typeof value === \"string\" ? parseDate(value, props.valueType) : new Date(NaN);\n }\n };\n const date2value = (date) => {\n if (!isValidDate(date))\n return null;\n switch (props.valueType) {\n case \"date\":\n return date;\n case \"timestamp\":\n return date.getTime();\n case \"format\":\n return formatDate(date);\n default:\n return formatDate(date, props.valueType);\n }\n };\n const innerValue = computed(() => {\n const value = props.value;\n if (props.range) {\n return (Array.isArray(value) ? value.slice(0, 2) : [null, null]).map(value2date);\n }\n if (props.multiple) {\n return (Array.isArray(value) ? value : []).map(value2date);\n }\n return value2date(value);\n });\n const emitValue = (date, type, close = true) => {\n var _a2, _b;\n const value = Array.isArray(date) ? date.map(date2value) : date2value(date);\n (_a2 = props[\"onUpdate:value\"]) == null ? void 0 : _a2.call(props, value);\n (_b = props.onChange) == null ? void 0 : _b.call(props, value, type);\n if (close) {\n closePopup();\n }\n return value;\n };\n const currentValue = ref(new Date());\n watchEffect(() => {\n if (popupVisible.value) {\n currentValue.value = innerValue.value;\n }\n });\n const handleSelect = (val, type) => {\n if (props.confirm) {\n currentValue.value = val;\n } else {\n emitValue(val, type, !props.multiple && (type === props.type || type === \"time\"));\n }\n };\n const handleConfirm = () => {\n var _a2;\n const value = emitValue(currentValue.value);\n (_a2 = props.onConfirm) == null ? void 0 : _a2.call(props, value);\n };\n const disabledDateTime = (v) => {\n return props.disabledDate(v) || props.disabledTime(v);\n };\n const renderSidebar = (slotProps) => {\n var _a2;\n const {\n prefixClass\n } = props;\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-sidebar`\n }, [(_a2 = slots.sidebar) == null ? void 0 : _a2.call(slots, slotProps), (props.shortcuts || []).map((v, i) => createVNode(\"button\", {\n \"key\": i,\n \"data-index\": i,\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-shortcut`,\n \"onClick\": () => {\n var _a3;\n const date = (_a3 = v.onClick) == null ? void 0 : _a3.call(v);\n if (date) {\n emitValue(date);\n }\n }\n }, [v.text]))]);\n };\n return () => {\n var _a2, _b;\n const {\n prefixClass,\n disabled,\n confirm,\n range,\n popupClass,\n popupStyle,\n appendToBody\n } = props;\n const slotProps = {\n value: currentValue.value,\n [\"onUpdate:value\"]: handleSelect,\n emit: emitValue\n };\n const header = slots.header && createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-header`\n }, [slots.header(slotProps)]);\n const footer = (slots.footer || confirm) && createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-footer`\n }, [(_a2 = slots.footer) == null ? void 0 : _a2.call(slots, slotProps), confirm && createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-datepicker-btn-confirm`,\n \"onClick\": handleConfirm\n }, [props.confirmText])]);\n const content = (_b = slots.content) == null ? void 0 : _b.call(slots, slotProps);\n const sidedar = (slots.sidebar || props.shortcuts) && renderSidebar(slotProps);\n return createVNode(\"div\", {\n \"ref\": container,\n \"class\": {\n [`${prefixClass}-datepicker`]: true,\n [`${prefixClass}-datepicker-range`]: range,\n disabled\n }\n }, [createVNode(PickerInput$1, __spreadProps(__spreadValues({}, pick(props, pickerInputBaseProps)), {\n \"value\": innerValue.value,\n \"formatDate\": formatDate,\n \"parseDate\": parseDate,\n \"disabledDate\": disabledDateTime,\n \"onChange\": emitValue,\n \"onClick\": openPopup,\n \"onFocus\": openPopup,\n \"onBlur\": closePopup\n }), pick(slots, [\"icon-calendar\", \"icon-clear\", \"input\"])), createVNode(Popup$1, {\n \"className\": popupClass,\n \"style\": popupStyle,\n \"visible\": popupVisible.value,\n \"appendToBody\": appendToBody,\n \"getRelativeElement\": getContainer,\n \"onClickOutside\": closePopup\n }, {\n default: () => [sidedar, createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-content`\n }, [header, content, footer])]\n })]);\n };\n}\nconst pickerbaseProps = keys()([\"value\", \"valueType\", \"type\", \"format\", \"formatter\", \"lang\", \"prefixClass\", \"appendToBody\", \"open\", \"popupClass\", \"popupStyle\", \"confirm\", \"confirmText\", \"shortcuts\", \"disabledDate\", \"disabledTime\", \"onOpen\", \"onClose\", \"onConfirm\", \"onChange\", \"onUpdate:open\", \"onUpdate:value\"]);\nconst pickerProps = [...pickerbaseProps, ...pickerInputBaseProps];\nvar Picker$1 = defineVueComponent(Picker, pickerProps);\nfunction ButtonIcon(_a) {\n var _b = _a, {\n value\n } = _b, rest = __objRest(_b, [\n \"value\"\n ]);\n const prefixClass = usePrefixClass();\n return createVNode(\"button\", __spreadProps(__spreadValues({}, rest), {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-icon-${value}`\n }), [createVNode(\"i\", {\n \"class\": `${prefixClass}-icon-${value}`\n }, null)]);\n}\nfunction TableHeader({\n type,\n calendar,\n onUpdateCalendar\n}, {\n slots\n}) {\n var _a;\n const prefixClass = usePrefixClass();\n const lastMonth = () => {\n onUpdateCalendar(setMonth(calendar, (v) => v - 1));\n };\n const nextMonth = () => {\n onUpdateCalendar(setMonth(calendar, (v) => v + 1));\n };\n const lastYear = () => {\n onUpdateCalendar(setYear(calendar, (v) => v - 1));\n };\n const nextYear = () => {\n onUpdateCalendar(setYear(calendar, (v) => v + 1));\n };\n const lastDecade = () => {\n onUpdateCalendar(setYear(calendar, (v) => v - 10));\n };\n const nextDecade = () => {\n onUpdateCalendar(setYear(calendar, (v) => v + 10));\n };\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-header`\n }, [createVNode(ButtonIcon, {\n \"value\": \"double-left\",\n \"onClick\": type === \"year\" ? lastDecade : lastYear\n }, null), type === \"date\" && createVNode(ButtonIcon, {\n \"value\": \"left\",\n \"onClick\": lastMonth\n }, null), createVNode(ButtonIcon, {\n \"value\": \"double-right\",\n \"onClick\": type === \"year\" ? nextDecade : nextYear\n }, null), type === \"date\" && createVNode(ButtonIcon, {\n \"value\": \"right\",\n \"onClick\": nextMonth\n }, null), createVNode(\"span\", {\n \"class\": `${prefixClass}-calendar-header-label`\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])]);\n}\nfunction TableDate({\n calendar,\n isWeekMode,\n showWeekNumber,\n titleFormat,\n getWeekActive,\n getCellClasses,\n onSelect,\n onUpdatePanel,\n onUpdateCalendar,\n onDateMouseEnter,\n onDateMouseLeave\n}) {\n const prefixClass = usePrefixClass();\n const getWeekNumber = useGetWeek();\n const locale2 = useLocale().value;\n const {\n yearFormat,\n monthBeforeYear,\n monthFormat = \"MMM\",\n formatLocale\n } = locale2;\n const firstDayOfWeek = formatLocale.firstDayOfWeek || 0;\n let days = locale2.days || formatLocale.weekdaysMin;\n days = days.concat(days).slice(firstDayOfWeek, firstDayOfWeek + 7);\n const year = calendar.getFullYear();\n const month = calendar.getMonth();\n const dates = chunk(getCalendar({\n firstDayOfWeek,\n year,\n month\n }), 7);\n const formatDate = (date, fmt) => {\n return format(date, fmt, {\n locale: locale2.formatLocale\n });\n };\n const handlePanelChange = (panel) => {\n onUpdatePanel(panel);\n };\n const getCellDate = (el) => {\n const index2 = el.getAttribute(\"data-index\");\n const [row, col] = index2.split(\",\").map((v) => parseInt(v, 10));\n const value = dates[row][col];\n return new Date(value);\n };\n const handleCellClick = (evt) => {\n onSelect(getCellDate(evt.currentTarget));\n };\n const handleMouseEnter = (evt) => {\n if (onDateMouseEnter) {\n onDateMouseEnter(getCellDate(evt.currentTarget));\n }\n };\n const handleMouseLeave = (evt) => {\n if (onDateMouseLeave) {\n onDateMouseLeave(getCellDate(evt.currentTarget));\n }\n };\n const yearLabel = createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-current-year`,\n \"onClick\": () => handlePanelChange(\"year\")\n }, [formatDate(calendar, yearFormat)]);\n const monthLabel = createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-current-month`,\n \"onClick\": () => handlePanelChange(\"month\")\n }, [formatDate(calendar, monthFormat)]);\n showWeekNumber = typeof showWeekNumber === \"boolean\" ? showWeekNumber : isWeekMode;\n return createVNode(\"div\", {\n \"class\": [`${prefixClass}-calendar ${prefixClass}-calendar-panel-date`, {\n [`${prefixClass}-calendar-week-mode`]: isWeekMode\n }]\n }, [createVNode(TableHeader, {\n \"type\": \"date\",\n \"calendar\": calendar,\n \"onUpdateCalendar\": onUpdateCalendar\n }, {\n default: () => [monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel]]\n }), createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-content`\n }, [createVNode(\"table\", {\n \"class\": `${prefixClass}-table ${prefixClass}-table-date`\n }, [createVNode(\"thead\", null, [createVNode(\"tr\", null, [showWeekNumber && createVNode(\"th\", {\n \"class\": `${prefixClass}-week-number-header`\n }, null), days.map((day) => createVNode(\"th\", {\n \"key\": day\n }, [day]))])]), createVNode(\"tbody\", null, [dates.map((row, i) => createVNode(\"tr\", {\n \"key\": i,\n \"class\": [`${prefixClass}-date-row`, {\n [`${prefixClass}-active-week`]: getWeekActive(row)\n }]\n }, [showWeekNumber && createVNode(\"td\", {\n \"class\": `${prefixClass}-week-number`,\n \"data-index\": `${i},0`,\n \"onClick\": handleCellClick\n }, [createVNode(\"div\", null, [getWeekNumber(row[0])])]), row.map((cell, j) => createVNode(\"td\", {\n \"key\": j,\n \"class\": [\"cell\", getCellClasses(cell)],\n \"title\": formatDate(cell, titleFormat),\n \"data-index\": `${i},${j}`,\n \"onClick\": handleCellClick,\n \"onMouseenter\": handleMouseEnter,\n \"onMouseleave\": handleMouseLeave\n }, [createVNode(\"div\", null, [cell.getDate()])]))]))])])])]);\n}\nfunction TableMonth({\n calendar,\n getCellClasses,\n onSelect,\n onUpdateCalendar,\n onUpdatePanel\n}) {\n const prefixClass = usePrefixClass();\n const locale2 = useLocale().value;\n const months = locale2.months || locale2.formatLocale.monthsShort;\n const getDate = (month) => {\n return createDate(calendar.getFullYear(), month);\n };\n const handleClick = (evt) => {\n const target = evt.currentTarget;\n const month = target.getAttribute(\"data-month\");\n onSelect(getDate(parseInt(month, 10)));\n };\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar ${prefixClass}-calendar-panel-month`\n }, [createVNode(TableHeader, {\n \"type\": \"month\",\n \"calendar\": calendar,\n \"onUpdateCalendar\": onUpdateCalendar\n }, {\n default: () => [createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-current-year`,\n \"onClick\": () => onUpdatePanel(\"year\")\n }, [calendar.getFullYear()])]\n }), createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-content`\n }, [createVNode(\"table\", {\n \"class\": `${prefixClass}-table ${prefixClass}-table-month`\n }, [chunk(months, 3).map((row, i) => createVNode(\"tr\", {\n \"key\": i\n }, [row.map((cell, j) => {\n const month = i * 3 + j;\n return createVNode(\"td\", {\n \"key\": j,\n \"class\": [\"cell\", getCellClasses(getDate(month))],\n \"data-month\": month,\n \"onClick\": handleClick\n }, [createVNode(\"div\", null, [cell])]);\n })]))])])]);\n}\nconst getDefaultYears = (calendar) => {\n const firstYear = Math.floor(calendar.getFullYear() / 10) * 10;\n const years = [];\n for (let i = 0; i < 10; i++) {\n years.push(firstYear + i);\n }\n return chunk(years, 2);\n};\nfunction TableYear({\n calendar,\n getCellClasses = () => [],\n getYearPanel = getDefaultYears,\n onSelect,\n onUpdateCalendar\n}) {\n const prefixClass = usePrefixClass();\n const getDate = (year) => {\n return createDate(year, 0);\n };\n const handleClick = (evt) => {\n const target = evt.currentTarget;\n const year = target.getAttribute(\"data-year\");\n onSelect(getDate(parseInt(year, 10)));\n };\n const years = getYearPanel(new Date(calendar));\n const firstYear = years[0][0];\n const lastYear = last(last(years));\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar ${prefixClass}-calendar-panel-year`\n }, [createVNode(TableHeader, {\n \"type\": \"year\",\n \"calendar\": calendar,\n \"onUpdateCalendar\": onUpdateCalendar\n }, {\n default: () => [createVNode(\"span\", null, [firstYear]), createVNode(\"span\", {\n \"class\": `${prefixClass}-calendar-decade-separator`\n }, null), createVNode(\"span\", null, [lastYear])]\n }), createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-content`\n }, [createVNode(\"table\", {\n \"class\": `${prefixClass}-table ${prefixClass}-table-year`\n }, [years.map((row, i) => createVNode(\"tr\", {\n \"key\": i\n }, [row.map((cell, j) => createVNode(\"td\", {\n \"key\": j,\n \"class\": [\"cell\", getCellClasses(getDate(cell))],\n \"data-year\": cell,\n \"onClick\": handleClick\n }, [createVNode(\"div\", null, [cell])]))]))])])]);\n}\nfunction Calendar(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n type: \"date\",\n disabledDate: () => false,\n getClasses: () => [],\n titleFormat: \"YYYY-MM-DD\"\n });\n const innerValue = computed(() => {\n const value = Array.isArray(props.value) ? props.value : [props.value];\n return value.filter(isValidDate).map((v) => {\n if (props.type === \"year\")\n return startOfYear(v);\n if (props.type === \"month\")\n return startOfMonth(v);\n return startOfDay(v);\n });\n });\n const innerCalendar = ref(new Date());\n watchEffect(() => {\n let calendarDate = props.calendar;\n if (!isValidDate(calendarDate)) {\n const {\n length\n } = innerValue.value;\n calendarDate = getValidDate(length > 0 ? innerValue.value[length - 1] : props.defaultValue);\n }\n innerCalendar.value = startOfMonth(calendarDate);\n });\n const handleCalendarChange = (calendar) => {\n var _a;\n innerCalendar.value = calendar;\n (_a = props.onCalendarChange) == null ? void 0 : _a.call(props, calendar);\n };\n const panel = ref(\"date\");\n watchEffect(() => {\n const panels = [\"date\", \"month\", \"year\"];\n const index2 = Math.max(panels.indexOf(props.type), panels.indexOf(props.defaultPanel));\n panel.value = index2 !== -1 ? panels[index2] : \"date\";\n });\n const handelPanelChange = (value) => {\n var _a;\n const oldPanel = panel.value;\n panel.value = value;\n (_a = props.onPanelChange) == null ? void 0 : _a.call(props, value, oldPanel);\n };\n const isDisabled = (date) => {\n return props.disabledDate(new Date(date), innerValue.value);\n };\n const emitDate = (date, type) => {\n var _a, _b, _c;\n if (!isDisabled(date)) {\n (_a = props.onPick) == null ? void 0 : _a.call(props, date);\n if (props.multiple === true) {\n const nextDates = innerValue.value.filter((v) => v.getTime() !== date.getTime());\n if (nextDates.length === innerValue.value.length) {\n nextDates.push(date);\n }\n (_b = props[\"onUpdate:value\"]) == null ? void 0 : _b.call(props, nextDates, type);\n } else {\n (_c = props[\"onUpdate:value\"]) == null ? void 0 : _c.call(props, date, type);\n }\n }\n };\n const handleSelectDate = (date) => {\n emitDate(date, props.type === \"week\" ? \"week\" : \"date\");\n };\n const handleSelectYear = (date) => {\n if (props.type === \"year\") {\n emitDate(date, \"year\");\n } else {\n handleCalendarChange(date);\n handelPanelChange(\"month\");\n if (props.partialUpdate && innerValue.value.length === 1) {\n const value = setYear(innerValue.value[0], date.getFullYear());\n emitDate(value, \"year\");\n }\n }\n };\n const handleSelectMonth = (date) => {\n if (props.type === \"month\") {\n emitDate(date, \"month\");\n } else {\n handleCalendarChange(date);\n handelPanelChange(\"date\");\n if (props.partialUpdate && innerValue.value.length === 1) {\n const value = setMonth(setYear(innerValue.value[0], date.getFullYear()), date.getMonth());\n emitDate(value, \"month\");\n }\n }\n };\n const getCellClasses = (cellDate, classes = []) => {\n if (isDisabled(cellDate)) {\n classes.push(\"disabled\");\n } else if (innerValue.value.some((v) => v.getTime() === cellDate.getTime())) {\n classes.push(\"active\");\n }\n return classes.concat(props.getClasses(cellDate, innerValue.value, classes.join(\" \")));\n };\n const getDateClasses = (cellDate) => {\n const notCurrentMonth = cellDate.getMonth() !== innerCalendar.value.getMonth();\n const classes = [];\n if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) {\n classes.push(\"today\");\n }\n if (notCurrentMonth) {\n classes.push(\"not-current-month\");\n }\n return getCellClasses(cellDate, classes);\n };\n const getMonthClasses = (cellDate) => {\n if (props.type !== \"month\") {\n return innerCalendar.value.getMonth() === cellDate.getMonth() ? \"active\" : \"\";\n }\n return getCellClasses(cellDate);\n };\n const getYearClasses = (cellDate) => {\n if (props.type !== \"year\") {\n return innerCalendar.value.getFullYear() === cellDate.getFullYear() ? \"active\" : \"\";\n }\n return getCellClasses(cellDate);\n };\n const getWeekActive = (row) => {\n if (props.type !== \"week\")\n return false;\n const start = row[0].getTime();\n const end = row[6].getTime();\n return innerValue.value.some((v) => {\n const time = v.getTime();\n return time >= start && time <= end;\n });\n };\n return () => {\n if (panel.value === \"year\") {\n return createVNode(TableYear, {\n \"calendar\": innerCalendar.value,\n \"getCellClasses\": getYearClasses,\n \"getYearPanel\": props.getYearPanel,\n \"onSelect\": handleSelectYear,\n \"onUpdateCalendar\": handleCalendarChange\n }, null);\n }\n if (panel.value === \"month\") {\n return createVNode(TableMonth, {\n \"calendar\": innerCalendar.value,\n \"getCellClasses\": getMonthClasses,\n \"onSelect\": handleSelectMonth,\n \"onUpdatePanel\": handelPanelChange,\n \"onUpdateCalendar\": handleCalendarChange\n }, null);\n }\n return createVNode(TableDate, {\n \"isWeekMode\": props.type === \"week\",\n \"showWeekNumber\": props.showWeekNumber,\n \"titleFormat\": props.titleFormat,\n \"calendar\": innerCalendar.value,\n \"getCellClasses\": getDateClasses,\n \"getWeekActive\": getWeekActive,\n \"onSelect\": handleSelectDate,\n \"onUpdatePanel\": handelPanelChange,\n \"onUpdateCalendar\": handleCalendarChange,\n \"onDateMouseEnter\": props.onDateMouseEnter,\n \"onDateMouseLeave\": props.onDateMouseLeave\n }, null);\n };\n}\nconst calendarProps = keys()([\"type\", \"value\", \"defaultValue\", \"defaultPanel\", \"disabledDate\", \"getClasses\", \"calendar\", \"multiple\", \"partialUpdate\", \"showWeekNumber\", \"titleFormat\", \"getYearPanel\", \"onDateMouseEnter\", \"onDateMouseLeave\", \"onCalendarChange\", \"onPanelChange\", \"onUpdate:value\", \"onPick\"]);\nvar Calendar$1 = defineVueComponent(Calendar, calendarProps);\nconst inRange = (date, range) => {\n const value = date.getTime();\n let [min, max] = range.map((v) => v.getTime());\n if (min > max) {\n [min, max] = [max, min];\n }\n return value > min && value < max;\n};\nfunction CalendarRange(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: new Date(),\n type: \"date\"\n });\n const prefixClass = usePrefixClass();\n const defaultValues = computed(() => {\n let values = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue];\n values = values.map((v) => startOfDay(v));\n if (isValidRangeDate(values)) {\n return values;\n }\n return [new Date(), new Date()].map((v) => startOfDay(v));\n });\n const innerValue = ref([new Date(NaN), new Date(NaN)]);\n watchEffect(() => {\n if (isValidRangeDate(props.value)) {\n innerValue.value = props.value;\n }\n });\n const handlePick = (date, type) => {\n var _a;\n const [startValue, endValue] = innerValue.value;\n if (isValidDate(startValue) && !isValidDate(endValue)) {\n if (startValue.getTime() > date.getTime()) {\n innerValue.value = [date, startValue];\n } else {\n innerValue.value = [startValue, date];\n }\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, innerValue.value, type);\n } else {\n innerValue.value = [date, new Date(NaN)];\n }\n };\n const defaultCalendars = ref([new Date(), new Date()]);\n const calendars = computed(() => {\n return isValidRangeDate(props.calendar) ? props.calendar : defaultCalendars.value;\n });\n const calendarMinDiff = computed(() => {\n if (props.type === \"year\")\n return 10 * 12;\n if (props.type === \"month\")\n return 1 * 12;\n return 1;\n });\n const updateCalendars = (dates, index2) => {\n var _a;\n const diff = diffCalendarMonths(dates[0], dates[1]);\n const gap = calendarMinDiff.value - diff;\n if (gap > 0) {\n const anotherIndex = index2 === 1 ? 0 : 1;\n dates[anotherIndex] = setMonth(dates[anotherIndex], (v) => v + (anotherIndex === 0 ? -gap : gap));\n }\n defaultCalendars.value = dates;\n (_a = props.onCalendarChange) == null ? void 0 : _a.call(props, dates, index2);\n };\n const updateCalendarStart = (date) => {\n updateCalendars([date, calendars.value[1]], 0);\n };\n const updateCalendarEnd = (date) => {\n updateCalendars([calendars.value[0], date], 1);\n };\n watchEffect(() => {\n const dates = isValidRangeDate(props.value) ? props.value : defaultValues.value;\n updateCalendars(dates.slice(0, 2));\n });\n const hoveredValue = ref(null);\n const handleMouseEnter = (v) => hoveredValue.value = v;\n const handleMouseLeave = () => hoveredValue.value = null;\n const getRangeClasses = (cellDate, currentDates, classnames) => {\n const outerClasses = props.getClasses ? props.getClasses(cellDate, currentDates, classnames) : [];\n const classes = Array.isArray(outerClasses) ? outerClasses : [outerClasses];\n if (/disabled|active/.test(classnames))\n return classes;\n if (currentDates.length === 2 && inRange(cellDate, currentDates)) {\n classes.push(\"in-range\");\n }\n if (currentDates.length === 1 && hoveredValue.value && inRange(cellDate, [currentDates[0], hoveredValue.value])) {\n return classes.concat(\"hover-in-range\");\n }\n return classes;\n };\n return () => {\n const calendarRange = calendars.value.map((calendar, index2) => {\n const calendarProps2 = __spreadProps(__spreadValues({}, props), {\n calendar,\n value: innerValue.value,\n defaultValue: defaultValues.value[index2],\n getClasses: getRangeClasses,\n partialUpdate: false,\n multiple: false,\n [\"onUpdate:value\"]: handlePick,\n onCalendarChange: index2 === 0 ? updateCalendarStart : updateCalendarEnd,\n onDateMouseLeave: handleMouseLeave,\n onDateMouseEnter: handleMouseEnter\n });\n return createVNode(Calendar$1, calendarProps2, null);\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-range`\n }, [calendarRange]);\n };\n}\nconst calendarRangeProps = calendarProps;\nvar CalendarRange$1 = defineVueComponent(CalendarRange, calendarRangeProps);\nconst ScrollbarVertical = defineComponent({\n setup(props, {\n slots\n }) {\n const prefixClass = usePrefixClass();\n const wrapper = ref();\n const thumbHeight = ref(\"\");\n const thumbTop = ref(\"\");\n const getThumbHeight = () => {\n if (!wrapper.value)\n return;\n const el = wrapper.value;\n const heightPercentage = el.clientHeight * 100 / el.scrollHeight;\n thumbHeight.value = heightPercentage < 100 ? `${heightPercentage}%` : \"\";\n };\n onMounted(getThumbHeight);\n const scrollbarWidth = getScrollbarWidth();\n const handleScroll = (evt) => {\n const el = evt.currentTarget;\n const {\n scrollHeight,\n scrollTop\n } = el;\n thumbTop.value = `${scrollTop * 100 / scrollHeight}%`;\n };\n let draggable = false;\n let prevY = 0;\n const handleDragstart = (evt) => {\n evt.stopImmediatePropagation();\n const el = evt.currentTarget;\n const {\n offsetTop\n } = el;\n draggable = true;\n prevY = evt.clientY - offsetTop;\n };\n const handleDraging = (evt) => {\n if (!draggable || !wrapper.value)\n return;\n const {\n clientY\n } = evt;\n const {\n scrollHeight,\n clientHeight\n } = wrapper.value;\n const offsetY = clientY - prevY;\n const top = offsetY * scrollHeight / clientHeight;\n wrapper.value.scrollTop = top;\n };\n const handleDragend = () => {\n draggable = false;\n };\n onMounted(() => {\n document.addEventListener(\"mousemove\", handleDraging);\n document.addEventListener(\"mouseup\", handleDragend);\n });\n onUnmounted(() => {\n document.addEventListener(\"mousemove\", handleDraging);\n document.addEventListener(\"mouseup\", handleDragend);\n });\n return () => {\n var _a;\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-scrollbar`,\n \"style\": {\n position: \"relative\",\n overflow: \"hidden\"\n }\n }, [createVNode(\"div\", {\n \"ref\": wrapper,\n \"class\": `${prefixClass}-scrollbar-wrap`,\n \"style\": {\n marginRight: `-${scrollbarWidth}px`\n },\n \"onScroll\": handleScroll\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]), createVNode(\"div\", {\n \"class\": `${prefixClass}-scrollbar-track`\n }, [createVNode(\"div\", {\n \"class\": `${prefixClass}-scrollbar-thumb`,\n \"style\": {\n height: thumbHeight.value,\n top: thumbTop.value\n },\n \"onMousedown\": handleDragstart\n }, null)])]);\n };\n }\n});\nfunction Columns({\n options,\n getClasses,\n onSelect\n}) {\n const prefixClass = usePrefixClass();\n const handleSelect = (evt) => {\n const target = evt.target;\n const currentTarget = evt.currentTarget;\n if (target.tagName.toUpperCase() !== \"LI\")\n return;\n const type = currentTarget.getAttribute(\"data-type\");\n const col = parseInt(currentTarget.getAttribute(\"data-index\"), 10);\n const index2 = parseInt(target.getAttribute(\"data-index\"), 10);\n const value = options[col].list[index2].value;\n onSelect(value, type);\n };\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-time-columns`\n }, [options.map((col, i) => createVNode(ScrollbarVertical, {\n \"key\": col.type,\n \"class\": `${prefixClass}-time-column`\n }, {\n default: () => [createVNode(\"ul\", {\n \"class\": `${prefixClass}-time-list`,\n \"data-index\": i,\n \"data-type\": col.type,\n \"onClick\": handleSelect\n }, [col.list.map((item, j) => createVNode(\"li\", {\n \"key\": item.text,\n \"data-index\": j,\n \"class\": [`${prefixClass}-time-item`, getClasses(item.value, col.type)]\n }, [item.text]))])]\n }))]);\n}\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nfunction FixedList(props) {\n let _slot;\n const prefixClass = usePrefixClass();\n return createVNode(ScrollbarVertical, null, _isSlot(_slot = props.options.map((item) => createVNode(\"div\", {\n \"key\": item.text,\n \"class\": [`${prefixClass}-time-option`, props.getClasses(item.value, \"time\")],\n \"onClick\": () => props.onSelect(item.value, \"time\")\n }, [item.text]))) ? _slot : {\n default: () => [_slot]\n });\n}\nfunction generateList({\n length,\n step = 1,\n options\n}) {\n if (Array.isArray(options)) {\n return options.filter((v) => v >= 0 && v < length);\n }\n if (step <= 0) {\n step = 1;\n }\n const arr = [];\n for (let i = 0; i < length; i += step) {\n arr.push(i);\n }\n return arr;\n}\nfunction getColumnOptions(date, options) {\n let { showHour, showMinute, showSecond, use12h } = options;\n const format2 = options.format || \"HH:mm:ss\";\n showHour = typeof showHour === \"boolean\" ? showHour : /[HhKk]/.test(format2);\n showMinute = typeof showMinute === \"boolean\" ? showMinute : /m/.test(format2);\n showSecond = typeof showSecond === \"boolean\" ? showSecond : /s/.test(format2);\n use12h = typeof use12h === \"boolean\" ? use12h : /a/i.test(format2);\n const columns = [];\n const isPM = use12h && date.getHours() >= 12;\n if (showHour) {\n columns.push({\n type: \"hour\",\n list: generateList({\n length: use12h ? 12 : 24,\n step: options.hourStep,\n options: options.hourOptions\n }).map((num) => {\n const text = num === 0 && use12h ? \"12\" : padNumber(num);\n const value = new Date(date);\n value.setHours(isPM ? num + 12 : num);\n return { value, text };\n })\n });\n }\n if (showMinute) {\n columns.push({\n type: \"minute\",\n list: generateList({\n length: 60,\n step: options.minuteStep,\n options: options.minuteOptions\n }).map((num) => {\n const value = new Date(date);\n value.setMinutes(num);\n return { value, text: padNumber(num) };\n })\n });\n }\n if (showSecond) {\n columns.push({\n type: \"second\",\n list: generateList({\n length: 60,\n step: options.secondStep,\n options: options.secondOptions\n }).map((num) => {\n const value = new Date(date);\n value.setSeconds(num);\n return { value, text: padNumber(num) };\n })\n });\n }\n if (use12h) {\n columns.push({\n type: \"ampm\",\n list: [\"AM\", \"PM\"].map((text, i) => {\n const value = new Date(date);\n value.setHours(value.getHours() % 12 + i * 12);\n return { text, value };\n })\n });\n }\n return columns;\n}\nfunction parseOption(time = \"\") {\n const values = time.split(\":\");\n if (values.length >= 2) {\n const hours = parseInt(values[0], 10);\n const minutes = parseInt(values[1], 10);\n return {\n hours,\n minutes\n };\n }\n return null;\n}\nfunction getFixedOptions({\n date,\n option,\n format: format2,\n formatDate\n}) {\n const result = [];\n if (typeof option === \"function\") {\n return option() || [];\n }\n const start = parseOption(option.start);\n const end = parseOption(option.end);\n const step = parseOption(option.step);\n const fmt = option.format || format2;\n if (start && end && step) {\n const startMinutes = start.minutes + start.hours * 60;\n const endMinutes = end.minutes + end.hours * 60;\n const stepMinutes = step.minutes + step.hours * 60;\n const len = Math.floor((endMinutes - startMinutes) / stepMinutes);\n for (let i = 0; i <= len; i++) {\n const timeMinutes = startMinutes + i * stepMinutes;\n const hours = Math.floor(timeMinutes / 60);\n const minutes = timeMinutes % 60;\n const value = new Date(date);\n value.setHours(hours, minutes, 0);\n result.push({\n value,\n text: formatDate(value, fmt)\n });\n }\n }\n return result;\n}\nconst scrollTo = (element, to, duration = 0) => {\n if (duration <= 0) {\n requestAnimationFrame(() => {\n element.scrollTop = to;\n });\n return;\n }\n const difference = to - element.scrollTop;\n const tick = difference / duration * 10;\n requestAnimationFrame(() => {\n const scrollTop = element.scrollTop + tick;\n if (scrollTop >= to) {\n element.scrollTop = to;\n return;\n }\n element.scrollTop = scrollTop;\n scrollTo(element, to, duration - 10);\n });\n};\nfunction TimePanel(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n format: \"HH:mm:ss\",\n timeTitleFormat: \"YYYY-MM-DD\",\n disabledTime: () => false,\n scrollDuration: 100\n });\n const prefixClass = usePrefixClass();\n const locale2 = useLocale();\n const formatDate = (date, fmt) => {\n return format(date, fmt, {\n locale: locale2.value.formatLocale\n });\n };\n const innerValue = ref(new Date());\n watchEffect(() => {\n innerValue.value = getValidDate(props.value, props.defaultValue);\n });\n const isDisabledTimes = (value) => {\n if (Array.isArray(value)) {\n return value.every((v) => props.disabledTime(new Date(v)));\n }\n return props.disabledTime(new Date(value));\n };\n const isDisabledHour = (date) => {\n const value = new Date(date);\n return isDisabledTimes([value.getTime(), value.setMinutes(0, 0, 0), value.setMinutes(59, 59, 999)]);\n };\n const isDisabledMinute = (date) => {\n const value = new Date(date);\n return isDisabledTimes([value.getTime(), value.setSeconds(0, 0), value.setSeconds(59, 999)]);\n };\n const isDisabledAMPM = (date) => {\n const value = new Date(date);\n const minHour = value.getHours() < 12 ? 0 : 12;\n const maxHour = minHour + 11;\n return isDisabledTimes([value.getTime(), value.setHours(minHour, 0, 0, 0), value.setHours(maxHour, 59, 59, 999)]);\n };\n const isDisabled = (date, type) => {\n if (type === \"hour\") {\n return isDisabledHour(date);\n }\n if (type === \"minute\") {\n return isDisabledMinute(date);\n }\n if (type === \"ampm\") {\n return isDisabledAMPM(date);\n }\n return isDisabledTimes(date);\n };\n const handleSelect = (value, type) => {\n var _a;\n if (!isDisabled(value, type)) {\n const date = new Date(value);\n innerValue.value = date;\n if (!isDisabledTimes(date)) {\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, date, type);\n }\n }\n };\n const getClasses = (cellDate, type) => {\n if (isDisabled(cellDate, type)) {\n return \"disabled\";\n }\n if (cellDate.getTime() === innerValue.value.getTime()) {\n return \"active\";\n }\n return \"\";\n };\n const container = ref();\n const scrollToSelected = (duration) => {\n if (!container.value)\n return;\n const elements = container.value.querySelectorAll(\".active\");\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const scrollElement = getScrollParent(element, container.value);\n if (scrollElement) {\n const to = element.offsetTop;\n scrollTo(scrollElement, to, duration);\n }\n }\n };\n onMounted(() => scrollToSelected(0));\n watch(innerValue, () => scrollToSelected(props.scrollDuration), {\n flush: \"post\"\n });\n return () => {\n let content;\n if (props.timePickerOptions) {\n content = createVNode(FixedList, {\n \"onSelect\": handleSelect,\n \"getClasses\": getClasses,\n \"options\": getFixedOptions({\n date: innerValue.value,\n format: props.format,\n option: props.timePickerOptions,\n formatDate\n })\n }, null);\n } else {\n content = createVNode(Columns, {\n \"options\": getColumnOptions(innerValue.value, props),\n \"onSelect\": handleSelect,\n \"getClasses\": getClasses\n }, null);\n }\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-time`,\n \"ref\": container\n }, [props.showTimeHeader && createVNode(\"div\", {\n \"class\": `${prefixClass}-time-header`\n }, [createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-time-header-title`,\n \"onClick\": props.onClickTitle\n }, [formatDate(innerValue.value, props.timeTitleFormat)])]), createVNode(\"div\", {\n \"class\": `${prefixClass}-time-content`\n }, [content])]);\n };\n}\nconst timePanelProps = keys()([\"value\", \"defaultValue\", \"format\", \"timeTitleFormat\", \"showTimeHeader\", \"disabledTime\", \"timePickerOptions\", \"hourOptions\", \"minuteOptions\", \"secondOptions\", \"hourStep\", \"minuteStep\", \"secondStep\", \"showHour\", \"showMinute\", \"showSecond\", \"use12h\", \"scrollDuration\", \"onClickTitle\", \"onUpdate:value\"]);\nvar TimePanel$1 = defineVueComponent(TimePanel, timePanelProps);\nfunction TimeRange(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n disabledTime: () => false\n });\n const prefixClass = usePrefixClass();\n const innerValue = ref([new Date(NaN), new Date(NaN)]);\n watchEffect(() => {\n if (isValidRangeDate(props.value)) {\n innerValue.value = props.value;\n } else {\n innerValue.value = [new Date(NaN), new Date(NaN)];\n }\n });\n const emitChange = (type, index2) => {\n var _a;\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, innerValue.value, type === \"time\" ? \"time-range\" : type, index2);\n };\n const handleSelectStart = (date, type) => {\n innerValue.value[0] = date;\n if (!(innerValue.value[1].getTime() >= date.getTime())) {\n innerValue.value[1] = date;\n }\n emitChange(type, 0);\n };\n const handleSelectEnd = (date, type) => {\n innerValue.value[1] = date;\n if (!(innerValue.value[0].getTime() <= date.getTime())) {\n innerValue.value[0] = date;\n }\n emitChange(type, 1);\n };\n const disabledStartTime = (date) => {\n return props.disabledTime(date, 0);\n };\n const disabledEndTime = (date) => {\n return date.getTime() < innerValue.value[0].getTime() || props.disabledTime(date, 1);\n };\n return () => {\n const defaultValues = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue];\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-time-range`\n }, [createVNode(TimePanel$1, __spreadProps(__spreadValues({}, props), {\n [\"onUpdate:value\"]: handleSelectStart,\n \"value\": innerValue.value[0],\n \"defaultValue\": defaultValues[0],\n \"disabledTime\": disabledStartTime\n }), null), createVNode(TimePanel$1, __spreadProps(__spreadValues({}, props), {\n [\"onUpdate:value\"]: handleSelectEnd,\n \"value\": innerValue.value[1],\n \"defaultValue\": defaultValues[1],\n \"disabledTime\": disabledEndTime\n }), null)]);\n };\n}\nconst timeRangeProps = timePanelProps;\nvar TimeRange$1 = defineVueComponent(TimeRange, timeRangeProps);\nfunction useTimePanelVisible(props) {\n const defaultTimeVisible = ref(false);\n const closeTimePanel = () => {\n var _a;\n defaultTimeVisible.value = false;\n (_a = props.onShowTimePanelChange) == null ? void 0 : _a.call(props, false);\n };\n const openTimePanel = () => {\n var _a;\n defaultTimeVisible.value = true;\n (_a = props.onShowTimePanelChange) == null ? void 0 : _a.call(props, true);\n };\n const timeVisible = computed(() => {\n return typeof props.showTimePanel === \"boolean\" ? props.showTimePanel : defaultTimeVisible.value;\n });\n return { timeVisible, openTimePanel, closeTimePanel };\n}\nfunction DateTime(originalProps) {\n const props = withDefault(originalProps, {\n disabledTime: () => false,\n defaultValue: startOfDay(new Date())\n });\n const currentValue = ref(props.value);\n watchEffect(() => {\n currentValue.value = props.value;\n });\n const {\n openTimePanel,\n closeTimePanel,\n timeVisible\n } = useTimePanelVisible(props);\n const handleSelect = (date, type) => {\n var _a;\n if (type === \"date\") {\n openTimePanel();\n }\n let datetime = assignTime(date, getValidDate(props.value, props.defaultValue));\n if (props.disabledTime(new Date(datetime))) {\n datetime = assignTime(date, props.defaultValue);\n if (props.disabledTime(new Date(datetime))) {\n currentValue.value = datetime;\n return;\n }\n }\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, datetime, type);\n };\n return () => {\n const prefixClass = usePrefixClass();\n const calendarProp = __spreadProps(__spreadValues({}, pick(props, calendarProps)), {\n multiple: false,\n type: \"date\",\n value: currentValue.value,\n [\"onUpdate:value\"]: handleSelect\n });\n const timeProps = __spreadProps(__spreadValues({}, pick(props, timePanelProps)), {\n showTimeHeader: true,\n value: currentValue.value,\n [\"onUpdate:value\"]: props[\"onUpdate:value\"],\n onClickTitle: closeTimePanel\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-date-time`\n }, [createVNode(Calendar$1, calendarProp, null), timeVisible.value && createVNode(TimePanel$1, timeProps, null)]);\n };\n}\nconst datetimeBaseProps = keys()([\"showTimePanel\", \"onShowTimePanelChange\"]);\nconst datetimeProps = [...datetimeBaseProps, ...calendarProps, ...timePanelProps];\nvar DateTime$1 = defineVueComponent(DateTime, datetimeProps);\nfunction DateTimeRange(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n disabledTime: () => false\n });\n const currentValue = ref(props.value);\n watchEffect(() => {\n currentValue.value = props.value;\n });\n const {\n openTimePanel,\n closeTimePanel,\n timeVisible\n } = useTimePanelVisible(props);\n const handleSelect = (dates, type) => {\n var _a;\n if (type === \"date\") {\n openTimePanel();\n }\n const defaultValues = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue];\n let datetimes = dates.map((date, i) => {\n const time = isValidRangeDate(props.value) ? props.value[i] : defaultValues[i];\n return assignTime(date, time);\n });\n if (datetimes[1].getTime() < datetimes[0].getTime()) {\n datetimes = [datetimes[0], datetimes[0]];\n }\n if (datetimes.some(props.disabledTime)) {\n datetimes = dates.map((date, i) => assignTime(date, defaultValues[i]));\n if (datetimes.some(props.disabledTime)) {\n currentValue.value = datetimes;\n return;\n }\n }\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, datetimes, type);\n };\n return () => {\n const prefixClass = usePrefixClass();\n const calendarProp = __spreadProps(__spreadValues({}, pick(props, calendarRangeProps)), {\n type: \"date\",\n value: currentValue.value,\n [\"onUpdate:value\"]: handleSelect\n });\n const timeProps = __spreadProps(__spreadValues({}, pick(props, timeRangeProps)), {\n showTimeHeader: true,\n value: currentValue.value,\n [\"onUpdate:value\"]: props[\"onUpdate:value\"],\n onClickTitle: closeTimePanel\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-date-time-range`\n }, [createVNode(CalendarRange$1, calendarProp, null), timeVisible.value && createVNode(TimeRange$1, timeProps, null)]);\n };\n}\nconst datetimeRangeProps = [...datetimeBaseProps, ...timeRangeProps, ...calendarRangeProps];\nvar DateTimeRange$1 = defineVueComponent(DateTimeRange, datetimeRangeProps);\nconst booleanKeys = keys()([\"range\", \"open\", \"appendToBody\", \"clearable\", \"confirm\", \"disabled\", \"editable\", \"multiple\", \"partialUpdate\", \"showHour\", \"showMinute\", \"showSecond\", \"showTimeHeader\", \"showTimePanel\", \"showWeekNumber\", \"use12h\"]);\nconst formatMap = {\n date: \"YYYY-MM-DD\",\n datetime: \"YYYY-MM-DD HH:mm:ss\",\n year: \"YYYY\",\n month: \"YYYY-MM\",\n time: \"HH:mm:ss\",\n week: \"w\"\n};\nfunction DatePicker(originalProps, {\n slots\n}) {\n const type = originalProps.type || \"date\";\n const format2 = originalProps.format || formatMap[type] || formatMap.date;\n const props = __spreadProps(__spreadValues({}, resolveProps(originalProps, booleanKeys)), {\n type,\n format: format2\n });\n return createVNode(Picker$1, pick(props, Picker$1.props), __spreadValues({\n content: (slotProps) => {\n if (props.range) {\n const Content = type === \"time\" ? TimeRange$1 : type === \"datetime\" ? DateTimeRange$1 : CalendarRange$1;\n return h(Content, pick(__spreadValues(__spreadValues({}, props), slotProps), Content.props));\n } else {\n const Content = type === \"time\" ? TimePanel$1 : type === \"datetime\" ? DateTime$1 : Calendar$1;\n return h(Content, pick(__spreadValues(__spreadValues({}, props), slotProps), Content.props));\n }\n },\n [\"icon-calendar\"]: () => type === \"time\" ? createVNode(render, null, null) : createVNode(render$2, null, null)\n }, slots));\n}\nconst api = {\n locale,\n install: (app) => {\n app.component(\"DatePicker\", DatePicker);\n }\n};\nvar index = Object.assign(DatePicker, api, {\n Calendar: Calendar$1,\n CalendarRange: CalendarRange$1,\n TimePanel: TimePanel$1,\n TimeRange: TimeRange$1,\n DateTime: DateTime$1,\n DateTimeRange: DateTimeRange$1\n});\nexport { index as default };\n","<template>\n <div class=\"t-field\">\n <label\n v-if=\"label\"\n :for=\"id\"\n class=\"t-field__label\"\n v-html=\"stringToHTML(label)\"\n />\n <TTypography v-if=\"displayInfo\" variant=\"b3\">\n {{ value }}\n </TTypography>\n <div v-else-if=\"type === 'date'\" class=\"t-field__calendar\">\n <Datepicker\n :value=\"value\"\n class=\"date-class\"\n @change=\"handleDatePicker\"\n :append-to-body=\"false\"\n format=\"DD/MM/YYYY\"\n />\n </div>\n <div v-else class=\"t-field__input\">\n <TTextInput\n :id=\"id\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :type=\"type\"\n :class=\"inputClass\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n :right-icon=\"rightIcon\"\n :left-icon=\"leftIcon\"\n full-width\n :error=\"isError\"\n >\n <template #helperText\n ><p :class=\"lowerLabelClass\" :for=\"id\" v-html=\"lowerLabel\"\n /></template>\n </TTextInput>\n <TIconButton\n v-if=\"isExternalId && autocomplete\"\n icon=\"magnifying-glass\"\n @click=\"handleRightIconClick\"\n ></TIconButton>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, defineEmits, defineProps, ref, watch } from 'vue';\nimport { InputFieldRegex } from '@/types/inputField';\nimport { stringToHTML } from '@/utils/string';\nimport Datepicker from 'vue-datepicker-next';\nimport { TIconButton, TTextInput, TTypography } from 'toku-ui';\n\nimport 'vue-datepicker-next/index.css';\n\ntype SignUpFieldProps = {\n id: string;\n value?: string | number | Date;\n label?: string;\n disabled?: boolean;\n displayInfo?: boolean;\n type?: string;\n decimals?: number;\n leftIcon?: string;\n rightIcon?: string;\n placeholder?: string;\n helperText?: string;\n errorText?: string;\n required?: boolean;\n regex?: InputFieldRegex;\n isMobile?: boolean;\n autocomplete?: boolean;\n isExternalId?: boolean;\n};\n\nconst props = defineProps<SignUpFieldProps>();\n\nconst emits = defineEmits<{\n (event: 'input', value: string | number | Date): void;\n (event: 'right-icon-click'): void;\n}>();\n\nconst isError = ref(false);\nconst displayRequired = ref(false);\nconst errorText = computed(() =>\n displayRequired.value\n ? 'Obligatorio'\n : props.errorText || props.regex?.message,\n);\nconst placeholder = computed(() => props.placeholder || '');\nconst lowerLabel = computed(() =>\n isError.value ? errorText.value : stringToHTML(props.helperText),\n);\nconst inputClass = computed(() => {\n let classes = '';\n if (isError.value) {\n classes += ' input-error';\n }\n return classes;\n});\nconst lowerLabelClass = computed(() => {\n let classes = 't-field__helper-text';\n if (isError.value) {\n classes += ' error';\n }\n return classes;\n});\n\nconst validate = () => {\n const isRequiredEmpty = !!props.required && !props.value;\n displayRequired.value = isRequiredEmpty;\n if (isRequiredEmpty) {\n isError.value = true;\n } else if (props.regex && typeof props.value === 'string') {\n isError.value = !RegExp(props.regex.pattern).test(props.value);\n } else if (props.required) {\n isError.value = false;\n }\n};\n\nwatch(() => props.value, validate);\n\nconst handleInput = (value: string | number) => {\n emits('input', value);\n};\n\nconst handleDatePicker = (value: Date) => {\n emits('input', value);\n};\n\nconst handleRightIconClick = () => {\n emits('right-icon-click');\n};\n</script>\n\n<style scoped lang=\"scss\">\n.t-field {\n width: 100%;\n\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__calendar {\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n\n &__input {\n display: flex;\n width: 100%;\n gap: 0.5rem;\n }\n}\n\n.error {\n color: #b72e29;\n}\n\n.date-class {\n width: 100%;\n\n &:deep(.mx-input) {\n height: 40px;\n }\n}\n\n.datepicker\n .datepicker-table\n .datepicker-body\n .datepicker-cell.is-selected.is-within-selected {\n background-color: #8d8d8d;\n}\n\n.t-field__label:deep(a),\n.t-field__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-field__label:deep(a:visited),\n.t-field__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-field__label:deep(a:active),\n.t-field__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<template>\n <div class=\"fields\">\n <TTypography variant=\"s2\" font-weight=\"medium\">\n {{ title }}\n </TTypography>\n <template v-for=\"field in fieldsToShow\">\n <TSelect\n v-if=\"fieldsType === 'invoice' && field.isAccount\"\n class=\"t-select\"\n :key=\"field.id || field.name\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n full-width\n @input=\"\n (value: string) =>\n handleInput(field.id || field.id || field.name, value)\n \"\n >\n <template #label>\n <label\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option v-for=\"{ id, name } in accounts\" :key=\"id\" :value=\"id\">\n {{ name }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <TSelect\n v-else-if=\"field.defaultOptions !== undefined\"\n class=\"t-select\"\n :key=\"field.id || field.name\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n @input=\"\n (value: string | number) => handleInput(field.id || field.name, value)\n \"\n full-width\n >\n <template #label>\n <label\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option\n v-for=\"option in field.defaultOptions\"\n :key=\"option.toString()\"\n :value=\"option.toString()\"\n >\n {{ option }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <SignupFieldComponent\n v-else\n :id=\"field.id || field.name\"\n :key=\"field.name\"\n :value=\"getFieldValue(field)\"\n :type=\"field.type\"\n :label=\"field.label\"\n :placeholder=\"field.placeholder\"\n :decimals=\"field.decimals\"\n :helper-text=\"field.helperText\"\n :left-icon=\"retrocompatibleIcon(field.leftIcon)\"\n :required=\"field.required\"\n :regex=\"field.regex\"\n :display-info=\"field.displayInfo\"\n :right-icon=\"isFieldSearchable(field) ? 'magnifying-glass' : undefined\"\n @input=\"(value) => handleInput(field.id || field.name, value)\"\n @right-icon-click=\"\n isFieldSearchable(field) ? handleRightIconClick() : undefined\n \"\n :is-mobile=\"isMobile\"\n :autocomplete=\"props.autocomplete\"\n :is-external-id=\"field.isExternalId\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { TTypography, TSelect } from 'toku-ui';\nimport { computed, defineEmits, defineProps } from 'vue';\nimport { Account } from '@/types/entities';\nimport { evaluateExpression } from '@/utils/parser';\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport { SignupField } from '@/types/signUpField';\nimport { isString } from '@/utils/typeChecker';\nimport { stringToHTML } from '@/utils/string';\nimport SignupFieldComponent from './SignupField.vue';\n\nconst props = defineProps<{\n fieldsType: 'invoice' | 'customer';\n title: string;\n fields: SignupField[];\n autocomplete?: boolean;\n accounts: Account[];\n isMobile?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (event: 'input', value: { id: string; value: string | number | Date }): void;\n (event: 'search'): void;\n}>();\n\nconst handleInput = (id: string, value: string | number | Date) => {\n emit('input', { id, value });\n};\n\nconst { shouldShowField } = useRelatedFields();\nconst fieldsToShow = computed(() => {\n return props.fields.filter(shouldShowField);\n});\n\nconst variables = computed(() => {\n const data: Record<string, SignupField['value']> = {};\n fieldsToShow.value.forEach((field) => {\n data[field.name] = field.value;\n });\n return data;\n});\n\nconst getFieldValue = (field: SignupField) => {\n if (field.displayInfo && isString(field.value) && !field.autocompleted) {\n return evaluateExpression(field.value, variables.value);\n }\n return field.value;\n};\n\nconst isFieldSearchable = (field: SignupField) => {\n return field.isExternalId && props.autocomplete;\n};\n\nconst handleRightIconClick = () => {\n emit('search');\n};\n\nconst retrocompatibleIcon = (iconName: string | undefined) => {\n if (iconName === 'DollarIcon') {\n return 'currency-dollar';\n }\n return iconName;\n};\n</script>\n\n<style scoped lang=\"scss\">\n.fields {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n height: 100%;\n width: 100%;\n gap: 1rem;\n}\n\n.t-select {\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n}\n\n.t-select__label:deep(a),\n.t-select__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-select__label:deep(a:visited),\n.t-select__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-select__label:deep(a:active),\n.t-select__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<template>\n <TThemeProvider :theme=\"theme\">\n <main>\n <transition name=\"slide-fade\" mode=\"out-in\">\n <div v-if=\"!signupCompleted\" class=\"custom-form__container\">\n <div\n class=\"custom-form__fields\"\n :class=\"[\n isMobile\n ? 'custom-form__fields--rows'\n : 'custom-form__fields--columns',\n ]\"\n >\n <SignupFields\n v-if=\"customerFields.length\"\n :fields=\"customerFields\"\n fields-type=\"customer\"\n :title=\"customerFieldsTitle\"\n :autocomplete=\"isAutocompleteEnabled\"\n :accounts=\"accounts\"\n @input=\"(payload) => handleInput(customerFields, payload)\"\n @search=\"handleSearch\"\n :is-mobile=\"isMobile\"\n />\n <SignupFields\n v-if=\"invoiceFields.length\"\n :fields=\"invoiceFields\"\n fields-type=\"invoice\"\n :title=\"invoiceFieldsTitle\"\n :accounts=\"accounts\"\n @input=\"(payload) => handleInput(invoiceFields, payload)\"\n :is-mobile=\"isMobile\"\n />\n </div>\n <TCheckbox\n label-position=\"right\"\n size=\"small\"\n id=\"send_email\"\n v-model=\"sendEmail\"\n >\n {{ sendByEmailText }}\n </TCheckbox>\n <TButton\n :disabled=\"disableSubmit\"\n @click=\"submitForm\"\n size=\"large\"\n :loading=\"isLoading\"\n :full-width=\"isMobile\"\n >\n {{ buttonLabel }}\n </TButton>\n </div>\n <SignupCompleted\n v-else\n :type=\"submitFormStatus\"\n :error-message=\"errorMessage\"\n :error-button-label=\"errorButtonLabel\"\n :success-message=\"successMessage\"\n :success-button-label=\"successButtonLabel\"\n @reset=\"emit('reset')\"\n />\n </transition>\n </main>\n </TThemeProvider>\n</template>\n<script setup lang=\"ts\">\nimport useI18n from '@/composables/useI18n';\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport { Account } from '@/types/entities';\nimport { SignupField } from '@/types/signUpField';\nimport { formatDueDate } from '@/utils/formatters';\nimport { evaluateExpression } from '@/utils/parser';\nimport { isDate, isString } from '@/utils/typeChecker';\nimport { TButton, TCheckbox, TThemeProvider, createTheme } from 'toku-ui';\nimport { computed, defineEmits, defineProps, ref, watch } from 'vue';\nimport SignupCompleted from './SignupCompleted.vue';\nimport SignupFields from './SignupFields.vue';\n\nimport '@/assets/scss/main.scss';\n\ninterface SignupRequestData {\n additional_data: Record<string, string | number | Date>;\n customer_metadata: Record<string, string | number | Date>;\n subscription_metadata: Record<string, string | number | Date>;\n invoice_metadata: Record<string, string | number | Date>;\n send_mail: boolean;\n [key: string]:\n | string\n | number\n | boolean\n | Record<string, string | number | Date>;\n}\n\ntype SubmitFormStatus = 'success' | 'error';\n\ninterface CustomFormProps {\n customerFields: SignupField[];\n invoiceFields: SignupField[];\n countryIso: string | null;\n isLoading: boolean;\n submitFormStatus: SubmitFormStatus;\n signupCompleted?: boolean;\n isAutocompleteEnabled: boolean;\n accounts: Account[];\n disableSubmit?: boolean;\n showSendByEmail?: boolean;\n invoiceFieldsTitle?: string;\n customerFieldsTitle?: string;\n buttonLabel?: string;\n sendByEmailText?: string;\n errorMessage?: string;\n errorButtonLabel?: string;\n successMessage?: string;\n successButtonLabel?: string;\n isMobile?: boolean;\n buttonColor?: string;\n}\n\nconst props = withDefaults(defineProps<CustomFormProps>(), {\n invoiceFieldsTitle: 'Plan de pagos',\n customerFieldsTitle: 'Información Cliente',\n buttonLabel: 'Registrar',\n sendByEmailText: 'Enviar información a correo electrónico',\n errorMessage: 'Error en la creación',\n errorButtonLabel: 'Intentar nuevamente',\n successMessage: 'Inscripción exitosa',\n successButtonLabel: 'Registrar nuevo cliente',\n isMobile: false,\n showSendByEmail: false,\n signupCompleted: false,\n buttonColor: '#5c0087',\n disableSubmit: false,\n});\n\nconst emit = defineEmits<{\n (event: 'submit-form-data', values: SignupRequestData): void;\n (event: 'reset'): void;\n (event: 'autocomplete-subscription', productId: string): void;\n (event: 'autocomplete-external-id', externalId: string): void;\n}>();\n\nconst customerFields = ref<SignupField[]>(props.customerFields);\nconst invoiceFields = ref<SignupField[]>(props.invoiceFields);\nconst isLoading = ref<boolean>(props.isLoading);\nconst submitFormStatus = ref<SubmitFormStatus>(props.submitFormStatus);\nconst signupCompleted = ref<boolean>(props.signupCompleted);\nconst errorMessage = ref<string>(props.errorMessage);\nconst isAutocompleteEnabled = ref<boolean>(props.isAutocompleteEnabled);\nconst sendEmail = ref<boolean>(!props.showSendByEmail);\n\nconst allFields = computed(() => [\n ...customerFields.value,\n ...invoiceFields.value,\n]);\n\nconst { shouldShowField } = useRelatedFields(allFields);\nconst { cleanGovernmentId } = useI18n();\n\nconst theme = createTheme({\n colors: {\n primary: {\n main: props.buttonColor,\n },\n },\n});\n\nwatch(props, (newProps) => {\n customerFields.value = newProps.customerFields;\n invoiceFields.value = newProps.invoiceFields;\n isLoading.value = newProps.isLoading;\n submitFormStatus.value = newProps.submitFormStatus;\n signupCompleted.value = newProps.signupCompleted;\n errorMessage.value = newProps.errorMessage;\n isAutocompleteEnabled.value = newProps.isAutocompleteEnabled;\n});\n\nconst formatFieldValue = (\n field: SignupField,\n value: string | number | Date,\n) => {\n if (field.type === 'number' && field.decimals) {\n return (\n Math.round(Number(value) * 10 ** field.decimals) /\n 10 ** field.decimals\n ).toString();\n }\n return value;\n};\n\nconst handleSearch = () => {\n const externalIdField = customerFields.value.find(\n ({ isExternalId }) => isExternalId,\n );\n emit('autocomplete-external-id', externalIdField?.value as string);\n};\n\nconst handleInput = (\n fields: SignupField[],\n { id, value }: { id: string; value: string | number | Date },\n) => {\n const index = fields.findIndex(\n (field) => id === field.id || id === field.name,\n );\n if (index !== -1) {\n const foundField = fields[index];\n foundField.value = formatFieldValue(foundField, value);\n\n if (foundField.name === 'product_id' && isAutocompleteEnabled.value) {\n emit('autocomplete-subscription', value as string);\n }\n }\n};\n\nconst getVariables = () => {\n const variables: Record<string, SignupField['value']> = {};\n allFields.value.forEach((field) => {\n if (shouldShowField(field)) {\n variables[field.name] = field.value;\n }\n });\n return variables;\n};\n\nconst buildSignupRequestBody = () => {\n const variables = getVariables();\n const data: SignupRequestData = {\n additional_data: {},\n customer_metadata: {},\n subscription_metadata: {},\n invoice_metadata: {},\n send_mail: sendEmail.value,\n };\n allFields.value.forEach((field) => {\n if (field.value) {\n if (\n (field.relatedField || field.expressionToBool) &&\n !shouldShowField(field)\n ) {\n return;\n }\n let { value } = field;\n if (field.displayInfo && isString(field.value) && !field.autocompleted) {\n value = evaluateExpression(value as string, variables);\n }\n if (field.name.includes('customer_metadata')) {\n data.customer_metadata[field.name.replace('customer_metadata_', '')] =\n value;\n } else if (field.name.includes('subscription_metadata')) {\n data.subscription_metadata[\n field.name.replace('subscription_metadata_', '')\n ] = value;\n } else if (field.name.includes('invoice_metadata')) {\n data.invoice_metadata[field.name.replace('invoice_metadata_', '')] =\n value;\n } else if (field.name.includes('additional_data')) {\n data.additional_data[field.name.replace('additional_data_', '')] =\n value;\n } else if (field.name === 'government_id' && props.countryIso === 'CL') {\n data[field.name] = cleanGovernmentId(value as string, props.countryIso);\n } else if (field.name === 'due_date' && isDate(value)) {\n data[field.name] = formatDueDate(value);\n } else if (field.isAccount) {\n data.id_account = value as string;\n } else {\n data[field.name] = value;\n }\n }\n });\n return data;\n};\n\nconst validateFormValues = () => {\n let isValid = true;\n allFields.value.forEach((field) => {\n const requiredInvalid =\n field.required &&\n (field.value === undefined || field.value === '') &&\n (!field.relatedField || shouldShowField(field));\n const regexInvalid =\n field.regex &&\n !RegExp(field.regex.pattern).test(field.value as string) &&\n (!field.relatedField || shouldShowField(field));\n if (requiredInvalid || regexInvalid) {\n isValid = false;\n }\n });\n return isValid;\n};\n\nconst submitForm = () => {\n const isValid = validateFormValues();\n if (!isValid) {\n return;\n }\n const dataToEmit = buildSignupRequestBody();\n emit('submit-form-data', dataToEmit);\n};\n</script>\n<style scoped lang=\"scss\">\n.custom-form {\n &__container {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: start;\n justify-items: center;\n gap: 2rem;\n }\n\n &__fields {\n display: flex;\n width: 100%;\n height: 100%;\n\n &--columns {\n flex-direction: row;\n gap: 5rem;\n justify-content: center;\n }\n\n &--rows {\n flex-direction: column;\n justify-content: center;\n gap: 2rem;\n overflow-y: auto;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { CustomFieldRegex } from '@/types/customFields';\nimport {\n filterNumberInput,\n formatWithThousands,\n getDecimalSeparator,\n parseFormattedNumber,\n type ThousandsSeparator,\n} from '@/utils/formatters/number';\nimport { stringToHTML } from '@/utils/string';\nimport { isMaskedValue } from '@/utils/typeChecker';\nimport { TIconButton, TTextInput, TTypography, useTheme } from 'toku-ui';\nimport { computed, ref, watch } from 'vue';\nimport Datepicker from 'vue-datepicker-next';\nimport 'vue-datepicker-next/index.css';\n\ninterface CustomFieldProps {\n id: string;\n value?: string | number | Date;\n label?: string;\n disabled?: boolean;\n displayInfo?: boolean;\n type?: string;\n decimals?: number;\n leftIcon?: string;\n rightIcon?: string;\n placeholder?: string;\n helperText?: string;\n errorText?: string;\n required?: boolean;\n regex?: CustomFieldRegex;\n isMobile?: boolean;\n autocomplete?: boolean;\n isExternalId?: boolean;\n touched?: boolean;\n thousandsSeparator?: ThousandsSeparator;\n}\n\nconst props = defineProps<CustomFieldProps>();\n\nconst emits = defineEmits<{\n input: [value: string | number | Date];\n 'right-icon-click': [];\n blur: [];\n}>();\n\nconst theme = useTheme();\nconst error = computed(() => theme.value.colors.error);\nconst grayMain = computed(() => theme.value.colors.gray.main);\nconst grayMedium1 = computed(() => theme.value.colors.gray.medium1);\nconst isError = ref(false);\nconst displayRequired = ref(false);\nconst errorText = computed(() =>\n displayRequired.value\n ? 'Obligatorio'\n : props.errorText ?? props.regex?.message,\n);\nconst placeholder = computed(() => props.placeholder || '');\nconst lowerLabel = computed(() =>\n isError.value ? errorText.value : stringToHTML(props.helperText),\n);\n\nconst isNumberType = computed(() => props.type === 'number');\nconst DEFAULT_SEPARATOR: ThousandsSeparator = '.';\n\nconst thousandsSep = computed((): ThousandsSeparator => {\n if (props.thousandsSeparator === ',' || props.thousandsSeparator === '.') {\n return props.thousandsSeparator;\n }\n return DEFAULT_SEPARATOR;\n});\n\nconst decimalSep = computed((): string =>\n getDecimalSeparator(thousandsSep.value),\n);\n\nconst displayValue = computed(() => {\n if (!isNumberType.value) {\n return props.value;\n }\n\n if (props.value === undefined || props.value === null || props.value === '') {\n return '';\n }\n\n let strValue = String(props.value);\n strValue = strValue.replace('.', decimalSep.value);\n return formatWithThousands(strValue, thousandsSep.value);\n});\n\nconst validate = () => {\n const isRegexPresent = props.regex && props.regex.pattern;\n const valueIsOfTypeString = typeof props.value === 'string';\n\n const shouldValidateRegex =\n isRegexPresent &&\n valueIsOfTypeString &&\n props.value &&\n !isMaskedValue(props.value);\n\n displayRequired.value = false;\n\n if (shouldValidateRegex) {\n isError.value = !RegExp(props.regex.pattern).test(props.value);\n return;\n }\n\n if (props.required) {\n isError.value = !props.value;\n displayRequired.value = !props.value;\n return;\n }\n\n isError.value = false;\n};\n\nconst handleInput = (value: string | number) => {\n if (isNumberType.value) {\n const strValue = String(value);\n const filteredValue = filterNumberInput(strValue, thousandsSep.value);\n const rawValue = parseFormattedNumber(filteredValue, thousandsSep.value);\n emits('input', rawValue);\n } else {\n emits('input', value);\n }\n\n if (props.touched) {\n validate();\n }\n};\n\nconst handleBlur = () => {\n emits('blur');\n validate();\n};\n\nconst handleDatePicker = (value: Date) => {\n emits('input', value);\n};\n\nconst handleRightIconClick = () => {\n emits('right-icon-click');\n};\n\nwatch(\n () => props.value,\n () => {\n if (props.touched) {\n validate();\n }\n },\n);\n\ndefineExpose({ validate });\n</script>\n\n<template>\n <div class=\"t-field\">\n <label\n v-if=\"label\"\n :for=\"id\"\n class=\"t-field__label\"\n v-html=\"stringToHTML(label)\"\n />{{ required ? '*' : '' }}\n <TTypography v-if=\"displayInfo\" variant=\"b3\">\n {{ displayValue }}\n </TTypography>\n <div v-else-if=\"type === 'date'\" class=\"t-field__calendar\">\n <Datepicker\n :value=\"value\"\n class=\"date-class\"\n @change=\"handleDatePicker\"\n :append-to-body=\"false\"\n format=\"DD/MM/YYYY\"\n />\n </div>\n <div v-else class=\"t-field__input\">\n <TTextInput\n :id=\"id\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :type=\"isNumberType ? 'text' : type\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n :right-icon=\"rightIcon\"\n :left-icon=\"leftIcon\"\n full-width\n :error=\"isError\"\n >\n <template #helperText\n ><p\n :class=\"['t-field__helper-text', { 't-field--error': isError }]\"\n :for=\"id\"\n v-html=\"lowerLabel\"\n /></template>\n </TTextInput>\n <TIconButton\n v-if=\"isExternalId && autocomplete\"\n icon=\"magnifying-glass\"\n @click=\"handleRightIconClick\"\n ></TIconButton>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.t-field {\n width: 100%;\n\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: v-bind(grayMain);\n }\n\n &__calendar {\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: v-bind(grayMedium1);\n }\n\n &__input {\n display: flex;\n width: 100%;\n gap: 0.5rem;\n }\n\n &--error {\n color: v-bind(error);\n }\n}\n\n.date-class {\n width: 100%;\n\n &:deep(.mx-input) {\n height: 40px;\n }\n}\n\n.datepicker\n .datepicker-table\n .datepicker-body\n .datepicker-cell.is-selected.is-within-selected {\n background-color: v-bind(grayMedium1);\n}\n\n.t-field__label:deep(a),\n.t-field__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-field__label:deep(a:visited),\n.t-field__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-field__label:deep(a:active),\n.t-field__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<script setup lang=\"ts\">\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport {\n CustomCheckBoxField,\n CustomFieldDefaultOption,\n CustomInputField,\n ThousandsSeparator,\n} from '@/types/customFields';\nimport { Account } from '@/types/entities';\nimport { evaluateExpression } from '@/utils/parser';\nimport { stringToHTML } from '@/utils/string';\nimport { isString } from '@/utils/typeChecker';\nimport { TCheckbox, TSelect, TTypography } from 'toku-ui';\nimport { computed, ref } from 'vue';\nimport CustomField from './CustomField.vue';\n\ninterface FieldSectionsProps {\n fieldsType: 'invoice' | 'customer';\n title: string | undefined;\n fields: CustomInputField[];\n autocomplete?: boolean;\n accounts: Account[];\n isMobile?: boolean;\n productIdsCheckboxes?: CustomCheckBoxField[];\n thousandsSeparator?: ThousandsSeparator;\n}\n\nconst props = defineProps<FieldSectionsProps>();\n\nconst emit = defineEmits<{\n input: [value: { id: string; value: string | number | Date | boolean }];\n search: [];\n blur: [value: { id: string }];\n}>();\n\nconst handleInput = (id: string, value: string | number | Date | boolean) => {\n emit('input', { id, value });\n};\n\nconst handleBlur = (id: string) => {\n emit('blur', { id });\n};\n\nconst selectAllChecked = computed(() => {\n if (!props.productIdsCheckboxes?.length) {\n return false;\n }\n const enabledCheckboxes = props.productIdsCheckboxes.filter(\n (cb) => !cb.disabled,\n );\n if (!enabledCheckboxes.length) {\n return false;\n }\n return enabledCheckboxes.every((cb) => cb.value === true);\n});\n\nconst selectAllIndeterminate = computed(() => {\n if (!props.productIdsCheckboxes?.length) {\n return false;\n }\n const enabledCheckboxes = props.productIdsCheckboxes.filter(\n (cb) => !cb.disabled,\n );\n if (!enabledCheckboxes.length) {\n return false;\n }\n const checkedCount = enabledCheckboxes.filter(\n (cb) => cb.value === true,\n ).length;\n return checkedCount > 0 && checkedCount < enabledCheckboxes.length;\n});\n\nconst handleSelectAll = (checked: boolean) => {\n if (!props.productIdsCheckboxes) {\n return;\n }\n props.productIdsCheckboxes\n .filter((checkbox) => !checkbox.disabled)\n .forEach((checkbox) => handleInput(checkbox.id, checked));\n};\n\nconst handleRightIconClick = () => {\n emit('search');\n};\n\ntype CustomFieldExposed = {\n validate: () => void;\n};\nconst customFieldRefs = ref<(CustomFieldExposed | null)[]>([]);\nconst validateCustomFields = () => {\n customFieldRefs.value.forEach((child) => {\n child?.validate();\n });\n};\n\nconst { shouldShowField } = useRelatedFields();\nconst fieldsToShow = computed(() => {\n return props.fields.filter(shouldShowField);\n});\n\nconst variables = computed(() => {\n const data: Record<string, CustomInputField['value']> = {};\n fieldsToShow.value.forEach((field) => {\n data[field.name] = field.value;\n });\n return data;\n});\n\nconst getFieldValue = (\n field: CustomInputField,\n): string | number | Date | undefined => {\n if (field.displayInfo && isString(field.value) && !field.autocompleted) {\n const evaluated = evaluateExpression(field.value, variables.value);\n if (typeof evaluated === 'boolean') {\n return undefined;\n }\n return evaluated;\n }\n if (field.displayInfo && field.defaultOptions && field.value !== undefined) {\n const valueString = String(field.value);\n const matchingOption = field.defaultOptions.find(\n (opt) => String(opt) === valueString,\n );\n if (matchingOption !== undefined) {\n return String(matchingOption);\n }\n }\n const { value } = field;\n if (typeof value === 'boolean') {\n return undefined;\n }\n return value;\n};\n\nconst isFieldSearchable = (field: CustomInputField) => {\n return field.isExternalId && props.autocomplete;\n};\n\nconst retrocompatibleIcon = (iconName: string | undefined) => {\n if (iconName === 'DollarIcon') {\n return 'currency-dollar';\n }\n return iconName;\n};\n\nconst isOptionObject = (\n option: CustomFieldDefaultOption,\n): option is { value: string | number; label: string } => {\n return (\n typeof option === 'object' &&\n option !== null &&\n !(option instanceof Date) &&\n 'value' in option &&\n 'label' in option\n );\n};\n\nconst getOptionValue = (option: CustomFieldDefaultOption): string => {\n return isOptionObject(option) ? String(option.value) : String(option);\n};\n\nconst getOptionLabel = (option: CustomFieldDefaultOption): string => {\n return isOptionObject(option) ? option.label : String(option);\n};\n\ndefineExpose({ validateCustomFields });\n</script>\n\n<template>\n <div class=\"fields-section\">\n <TTypography\n class=\"fields-section__title\"\n variant=\"s4\"\n font-weight=\"semibold\"\n v-if=\"title\"\n >\n {{ title }}\n </TTypography>\n <div class=\"fields-section__container\">\n <template v-for=\"field in fieldsToShow\">\n <TSelect\n v-if=\"fieldsType === 'invoice' && field.isAccount\"\n :key=\"field.id || field.name\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n full-width\n @input=\"(value: string) => handleInput(field.id || field.name, value)\"\n >\n <template #label>\n <p\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option v-for=\"{ id, name } in accounts\" :key=\"id\" :value=\"id\">\n {{ name }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <div\n v-else-if=\"field.name === 'product_ids'\"\n :key=\"`product_ids_${field.id || field.name}`\"\n class=\"fields-section__product-ids\"\n >\n <template\n v-if=\"productIdsCheckboxes && productIdsCheckboxes.length > 0\"\n >\n <p\n v-if=\"field.label\"\n class=\"fields-section__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n <p\n v-if=\"field.helperText\"\n class=\"fields-section__helper-text\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n <TCheckbox\n :id=\"`select-all-${field.id || field.name}`\"\n label-position=\"right\"\n size=\"small\"\n :value=\"selectAllChecked\"\n :indeterminate=\"selectAllIndeterminate\"\n class=\"fields-section__select-all\"\n @input=\"handleSelectAll\"\n >\n <span class=\"fields-section__select-all-text\">\n {{ field.selectAllLabel || 'Seleccionar todo' }}\n </span>\n </TCheckbox>\n <div class=\"fields-section__checkboxes\">\n <TCheckbox\n v-for=\"checkbox in productIdsCheckboxes\"\n :key=\"checkbox.id\"\n :id=\"checkbox.id\"\n label-position=\"right\"\n size=\"small\"\n :value=\"checkbox.value\"\n :disabled=\"checkbox.disabled\"\n @input=\"(value: boolean) => handleInput(checkbox.id, value)\"\n >\n <p\n class=\"fields-section__checkbox-text\"\n v-html=\"stringToHTML(checkbox.label ?? '')\"\n />\n </TCheckbox>\n </div>\n </template>\n </div>\n <TSelect\n v-else-if=\"field.defaultOptions && field.defaultOptions.length > 0\"\n class=\"t-select\"\n :key=\"`select_${field.id || field.name}_${field.value}`\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n @input=\"(value: string) => handleInput(field.id || field.name, value)\"\n full-width\n >\n <template #label>\n <p\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option\n v-for=\"option in field.defaultOptions\"\n :key=\"getOptionValue(option)\"\n :value=\"getOptionValue(option)\"\n >\n {{ getOptionLabel(option) }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <CustomField\n v-else-if=\"field.displayInfo === true\"\n :id=\"field.id || field.name\"\n :key=\"`display_${field.id || field.name}_${field.value}`\"\n ref=\"customFieldRefs\"\n :value=\"getFieldValue(field)\"\n :type=\"field.type\"\n :label=\"field.label\"\n :placeholder=\"field.placeholder\"\n :decimals=\"field.decimals\"\n :helper-text=\"field.helperText\"\n :left-icon=\"retrocompatibleIcon(field.leftIcon)\"\n :required=\"field.required\"\n :regex=\"field.regex\"\n :display-info=\"true\"\n :right-icon=\"\n isFieldSearchable(field) ? 'magnifying-glass' : undefined\n \"\n @input=\"\n (value: number | string | Date) =>\n handleInput(field.id || field.name, value)\n \"\n @blur=\"handleBlur(field.id || field.id || field.name)\"\n @right-icon-click=\"\n isFieldSearchable(field) ? handleRightIconClick() : undefined\n \"\n :is-mobile=\"isMobile\"\n :autocomplete=\"props.autocomplete\"\n :is-external-id=\"field.isExternalId\"\n :touched=\"field.touched\"\n :thousands-separator=\"props.thousandsSeparator\"\n />\n <CustomField\n v-else\n :id=\"field.id || field.name\"\n :key=\"field.name\"\n ref=\"customFieldRefs\"\n :value=\"getFieldValue(field)\"\n :type=\"field.type\"\n :label=\"field.label\"\n :placeholder=\"field.placeholder\"\n :decimals=\"field.decimals\"\n :helper-text=\"field.helperText\"\n :left-icon=\"retrocompatibleIcon(field.leftIcon)\"\n :required=\"field.required\"\n :regex=\"field.regex\"\n :display-info=\"field.displayInfo\"\n :right-icon=\"\n isFieldSearchable(field) ? 'magnifying-glass' : undefined\n \"\n @input=\"\n (value: number | string | Date) =>\n handleInput(field.id || field.name, value)\n \"\n @blur=\"handleBlur(field.id || field.id || field.name)\"\n @right-icon-click=\"\n isFieldSearchable(field) ? handleRightIconClick() : undefined\n \"\n :is-mobile=\"isMobile\"\n :autocomplete=\"props.autocomplete\"\n :is-external-id=\"field.isExternalId\"\n :touched=\"field.touched\"\n :thousands-separator=\"props.thousandsSeparator\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.fields-section {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n flex: 1;\n\n &__title {\n text-align: center;\n }\n\n &__container {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n }\n\n &__product-ids {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n }\n\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n\n &__label:deep(a),\n &__helper-text:deep(a) {\n text-decoration: underline;\n }\n\n &__label:deep(a:visited),\n &__helper-text:deep(a:visited) {\n color: #800080;\n }\n\n &__label:deep(a:active),\n &__helper-text:deep(a:active) {\n color: #8b0000;\n }\n\n &__select-all {\n margin-bottom: 0.25rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid #e5e5e5;\n }\n\n &__select-all-text {\n font-weight: 600;\n font-size: 0.875rem;\n color: #373737;\n }\n\n &__checkboxes {\n display: grid;\n grid-template-columns: 1fr;\n gap: 0.375rem;\n align-items: start;\n justify-items: start;\n\n @media (min-width: 480px) {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n }\n\n @media (min-width: 768px) {\n grid-template-columns: repeat(3, 1fr);\n }\n\n :deep(.t-checkbox) {\n width: 100%;\n justify-content: flex-start;\n }\n }\n\n &__checkbox-text {\n text-wrap: auto;\n\n &:deep(a) {\n text-decoration: underline;\n }\n &:deep(a:visited) {\n color: #800080;\n }\n &:deep(a:active) {\n color: #8b0000;\n }\n }\n}\n\n.t-select {\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n}\n\n.t-select__label:deep(a),\n.t-select__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-select__label:deep(a:visited),\n.t-select__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-select__label:deep(a:active),\n.t-select__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<template>\n <div\n :class=\"[\n 't-alert',\n `t-alert--${variant}`,\n { 't-alert--full-width': fullWidth },\n ]\"\n >\n <TIcon\n :class=\"['t-alert__icon', `t-alert__icon--${size}`]\"\n :icon=\"icon\"\n variant=\"solid\"\n :color=\"color\"\n />\n <TTypography :variant=\"size === 'small' ? 'b4' : 'b3'\" class=\"t-alert__text\"\n ><slot\n /></TTypography>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { TTypography, TIcon, useTheme } from 'toku-ui';\nimport { computed } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n variant: 'success' | 'in-process' | 'warning' | 'error' | 'info';\n fullWidth?: boolean;\n icon?: string;\n size: 'large' | 'small';\n }>(),\n {\n variant: 'success',\n icon: undefined,\n },\n);\n\nconst theme = useTheme();\nconst error = computed(() => theme.value.colors.error);\nconst success = computed(() => theme.value.colors.success);\nconst warning = computed(() => theme.value.colors.warning);\nconst info = computed(() => theme.value.colors.info);\nconst inProcess = computed(() => theme.value.colors.inProcess);\n\nconst icon = computed(() => {\n switch (props.variant) {\n case 'success':\n return 'check-circle';\n case 'info':\n return 'information-circle';\n case 'warning':\n return 'exclamation-circle';\n case 'error':\n return 'exclamation-circle';\n case 'in-process':\n return 'clock';\n default:\n return 'information-circle';\n }\n});\n\nconst color = computed(() => {\n switch (props.variant) {\n case 'success':\n return success.value;\n case 'info':\n return info.value;\n case 'warning':\n return warning.value;\n case 'error':\n return error.value;\n case 'in-process':\n return inProcess.value;\n default:\n return info.value;\n }\n});\n</script>\n\n<style scoped lang=\"scss\">\n.t-alert {\n border-radius: 0.625rem;\n padding: 0.5rem;\n border-width: 1px;\n border-style: solid;\n width: 75%;\n gap: 0.5rem;\n display: flex;\n align-items: center;\n\n &--full-width {\n width: 100%;\n }\n\n &--success {\n border-color: v-bind(success);\n background-color: rgba(#408645, 0.2);\n .t-alert__text {\n color: v-bind(success);\n }\n }\n\n &--in-process {\n border-color: v-bind(inProcess);\n background-color: rgba(#ffb038, 0.2);\n .t-alert__text {\n color: v-bind(inProcess);\n }\n }\n\n &--warning {\n border-color: #d06b35;\n background-color: rgba(#d06b35, 0.2);\n .t-alert__text {\n color: #d06b35;\n }\n }\n\n &--error {\n border-color: v-bind(error);\n background-color: rgba(#b72e29, 0.2);\n .t-alert__text {\n color: v-bind(error);\n }\n }\n\n &--info {\n border-color: v-bind(info);\n background-color: rgba(#3070dd, 0.2);\n .t-alert__text {\n color: v-bind(info);\n }\n }\n\n &__icon {\n &--small {\n min-width: 1rem;\n }\n &--large {\n min-width: 1.5rem;\n }\n }\n}\n</style>\n","<template>\n <div class=\"overlay\" ref=\"overlayRef\">\n <div v-if=\"!isMinimalView\" class=\"overlay__header\">\n <TTypography variant=\"s3\" font-weight=\"semibold\">\n {{ header }}\n </TTypography>\n <hr class=\"overlay__separator\" />\n </div>\n <div class=\"overlay__spinner\">\n <TSpinner size=\"small\" />\n </div>\n <div v-if=\"!isMinimalView\" class=\"overlay__footer\">\n <TTypography variant=\"b3\" font-weight=\"regular\">\n {{ footer }}\n </TTypography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { TSpinner, TTypography, useTheme } from 'toku-ui';\nimport { computed, defineProps, onMounted, ref } from 'vue';\n\ndefineProps<{\n header: string;\n footer: string;\n}>();\n\nconst overlayRef = ref<HTMLElement | null>(null);\nconst isMinimalView = ref(false);\nonMounted(() => {\n if (overlayRef.value) {\n const HEIGHT_THRESHOLD_IN_PX = 260;\n isMinimalView.value =\n overlayRef.value.offsetHeight < HEIGHT_THRESHOLD_IN_PX;\n }\n});\n\nconst theme = useTheme();\nconst grayLight2 = computed(() => theme.value.colors.gray.light2);\n</script>\n\n<style lang=\"scss\" scoped>\n.overlay {\n background-color: white;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n z-index: 10;\n\n gap: 2rem;\n\n &__header {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n width: 100%;\n }\n\n &__separator {\n margin: 0;\n height: 1.5px;\n max-width: 80%;\n width: 33.75rem;\n color: v-bind(grayLight2);\n }\n\n &__spinner {\n margin: 1rem 0;\n }\n\n &__footer {\n text-align: center;\n max-width: 80%;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport useI18n from '@/composables/useI18n';\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport {\n CustomCheckBoxField,\n CustomInputField,\n FormRequestData,\n TCustomFormProps,\n} from '@/types/customFields';\nimport { formatDueDate } from '@/utils/formatters';\nimport { evaluateExpression } from '@/utils/parser';\nimport { stringToHTML } from '@/utils/string';\nimport {\n isCheckboxField,\n isDate,\n isMaskedValue,\n isString,\n} from '@/utils/typeChecker';\nimport {\n TButton,\n TCheckbox,\n TThemeProvider,\n TTypography,\n createTheme,\n useTheme,\n} from 'toku-ui';\nimport { computed, defineEmits, defineProps, ref, watch } from 'vue';\nimport FieldsSection from './FieldsSection.vue';\nimport TAlert from './TAlert.vue';\nimport TOverlay from './TOverlay.vue';\n\nimport '@/assets/scss/main.scss';\n\nconst props = withDefaults(defineProps<TCustomFormProps>(), {\n customerFields: () => [],\n invoiceFields: () => [],\n accounts: () => [],\n checkboxes: () => [],\n buttonLabel: 'Registrar',\n layout: 'columns',\n themeColor: '#5c0087',\n thousandsSeparator: '.',\n overlay: () => ({\n header: 'Cargando...',\n footer: 'Por favor, no actualices ni cierres esta ventana',\n }),\n});\n\nconst emit = defineEmits<{\n 'submit-form-data': [values: FormRequestData];\n reset: [];\n 'autocomplete-subscription': [productId: string];\n 'autocomplete-external-id': [externalId: string];\n 'link-clicked': [];\n}>();\n\nconst formTheme = createTheme({\n colors: {\n primary: {\n main: props.themeColor,\n },\n },\n});\n\nconst theme = useTheme();\nconst grayMedium1 = computed(() => theme.value.colors.gray.medium1);\nconst grayLight2 = computed(() => theme.value.colors.gray.light2);\nconst grayMain = computed(() => theme.value.colors.gray.main);\n\nconst normalizeFieldOptions = (\n fields: CustomInputField[],\n): CustomInputField[] =>\n fields.map((field) => {\n if (\n field.defaultOptions !== null &&\n field.defaultOptions !== undefined &&\n !Array.isArray(field.defaultOptions) &&\n typeof field.defaultOptions === 'object'\n ) {\n return {\n ...field,\n defaultOptions: Object.entries(\n field.defaultOptions as Record<string, unknown>,\n ).map(([key, label]) => ({ value: key, label: String(label) })),\n };\n }\n return field;\n });\n\nconst customerFields = ref<CustomInputField[]>(\n normalizeFieldOptions(props.customerFields),\n);\nconst invoiceFields = ref<CustomInputField[]>(\n normalizeFieldOptions(props.invoiceFields),\n);\nconst checkboxes = ref<CustomCheckBoxField[]>(\n props.checkboxes.map((checkbox) => ({ ...checkbox, type: 'checkbox' })),\n);\n\nconst allFields = computed<Array<CustomInputField | CustomCheckBoxField>>(\n () => [...customerFields.value, ...invoiceFields.value, ...checkboxes.value],\n);\n\nconst { shouldShowField } = useRelatedFields(allFields);\nconst productIdsCheckboxes = computed(() =>\n checkboxes.value.filter(\n (cb) => cb.name === 'product_ids' && shouldShowField(cb),\n ),\n);\nconst checkboxesToShow = computed(() =>\n checkboxes.value.filter(\n (cb) => cb.name !== 'product_ids' && shouldShowField(cb),\n ),\n);\n\nconst formatFieldValue = (\n field: CustomInputField,\n value: string | number | Date | boolean,\n) => {\n if (field.type === 'number' && field.decimals) {\n const numValue = Number(value);\n if (Number.isNaN(numValue)) {\n return value;\n }\n return (\n Math.round(numValue * 10 ** field.decimals) /\n 10 ** field.decimals\n ).toString();\n }\n return value;\n};\n\nconst handleSearch = () => {\n const externalIdField = customerFields.value.find(\n ({ isExternalId }) => isExternalId,\n );\n emit('autocomplete-external-id', externalIdField?.value as string);\n};\n\nconst handleInput = ({\n id,\n value,\n}: {\n id: string;\n value: string | number | Date | boolean;\n}) => {\n const foundField = allFields.value.find((f) => id === f.id || id === f.name);\n if (foundField) {\n if (isCheckboxField(foundField)) {\n if (foundField.disabled) {\n return;\n }\n foundField.value = value as boolean;\n } else {\n foundField.value = formatFieldValue(foundField, value);\n if (foundField.name === 'product_id' && props.enableAutocomplete) {\n emit('autocomplete-subscription', value as string);\n }\n }\n }\n};\n\nconst handleBlur = ({ id }: { id: string }) => {\n const foundField = allFields.value.find((f) => id === f.id || id === f.name);\n if (foundField && !isCheckboxField(foundField)) {\n foundField.touched = true;\n }\n};\n\nconst getVariables = () => {\n const variables: Record<\n string,\n CustomInputField['value'] | CustomCheckBoxField['value']\n > = {};\n allFields.value.forEach((field) => {\n if (shouldShowField(field)) {\n variables[field.name] = field.value;\n }\n });\n return variables;\n};\n\nconst { cleanGovernmentId } = useI18n();\nconst buildSignupRequestBody = () => {\n const variables = getVariables();\n const data: FormRequestData = {\n additional_data: {},\n customer_metadata: {},\n subscription_metadata: {},\n invoice_metadata: {},\n checkboxes_values: {},\n };\n\n const productIdsCheckboxesForPayload = checkboxes.value.filter(\n (cb) => cb.name === 'product_ids',\n );\n const selectedProductIds = productIdsCheckboxesForPayload\n .filter((cb) => cb.value === true && cb.productId)\n .map((cb) => cb.productId as string);\n if (selectedProductIds.length > 0) {\n data.product_ids = selectedProductIds;\n }\n\n allFields.value.forEach((field) => {\n if (\n (field.relatedField || (field as CustomInputField).expressionToBool) &&\n !shouldShowField(field)\n ) {\n return;\n }\n if (isCheckboxField(field)) {\n data.checkboxes_values[field.id] = field.value ?? false;\n } else if (field.value) {\n let { value } = field;\n if (isString(field.value) && field.displayInfo && !field.autocompleted) {\n const evaluated = evaluateExpression(value as string, variables);\n if (typeof evaluated === 'boolean') {\n value = evaluated ? 'true' : 'false';\n } else {\n value = evaluated;\n }\n }\n if (field.name.includes('customer_metadata')) {\n data.customer_metadata[field.name.replace('customer_metadata_', '')] =\n value;\n } else if (field.name.includes('subscription_metadata')) {\n data.subscription_metadata[\n field.name.replace('subscription_metadata_', '')\n ] = value;\n } else if (field.name.includes('invoice_metadata')) {\n data.invoice_metadata[field.name.replace('invoice_metadata_', '')] =\n value;\n } else if (field.name.includes('additional_data')) {\n data.additional_data[field.name.replace('additional_data_', '')] =\n value;\n } else if (field.name === 'government_id' && props.countryIso === 'CL') {\n data[field.name] = cleanGovernmentId(value as string, props.countryIso);\n } else if (field.name === 'due_date' && isDate(value)) {\n data[field.name] = formatDueDate(value);\n } else if (field.name === 'product_id') {\n data[field.name] = String(value);\n } else if (field.isAccount) {\n data.id_account = value as string;\n } else {\n data[field.name] = value;\n }\n }\n });\n return data;\n};\n\nconst isEmptyValue = (field: CustomInputField) => {\n if (field.value !== undefined && field.value !== '') return false;\n if (field.relatedField && !shouldShowField(field)) return false;\n\n return true;\n};\n\nconst isRegexInvalid = (field: CustomInputField) => {\n if (!field.regex) return false;\n if (!field.regex.pattern) return false;\n if (isMaskedValue(field.value)) return false;\n if (RegExp(field.regex.pattern).test(field.value as string)) return false;\n if (field.relatedField && !shouldShowField(field)) return false;\n\n return true;\n};\n\nconst validateFormValues = () => {\n let isValid = true;\n\n allFields.value.forEach((field) => {\n if (isCheckboxField(field)) return;\n\n if (field.required && isEmptyValue(field)) {\n isValid = false;\n return;\n }\n\n if (!isEmptyValue(field) && isRegexInvalid(field)) {\n isValid = false;\n }\n });\n\n return isValid;\n};\n\ntype FieldsSectionExposed = {\n validateCustomFields: () => void;\n};\nconst customerFieldsSection = ref<FieldsSectionExposed | null>(null);\nconst invoiceFieldsSection = ref<FieldsSectionExposed | null>(null);\nconst showFieldErrors = () => {\n customerFieldsSection.value?.validateCustomFields();\n invoiceFieldsSection.value?.validateCustomFields();\n};\n\nconst submitForm = () => {\n showFieldErrors();\n\n const isValid = validateFormValues();\n if (!isValid) {\n return;\n }\n const dataToEmit = buildSignupRequestBody();\n emit('submit-form-data', dataToEmit);\n};\n\nconst top = ref<HTMLDivElement | null>(null);\nconst scrollToTop = () => {\n top.value?.scrollIntoView({ behavior: 'smooth' });\n};\n\nwatch(props, (newProps) => {\n customerFields.value = normalizeFieldOptions(newProps.customerFields);\n invoiceFields.value = normalizeFieldOptions(newProps.invoiceFields);\n if (\n newProps.messageAlert &&\n ['error', 'success'].includes(newProps.messageAlert.type)\n ) {\n scrollToTop();\n }\n});\n\nwatch(\n () => props.checkboxes,\n (newCheckboxes) => {\n const hasProductIds = newCheckboxes.some((cb) => cb.name === 'product_ids');\n if (hasProductIds) {\n const currentSelections = new Map(\n checkboxes.value.map((cb) => [\n cb.id,\n { value: cb.value, disabled: cb.disabled },\n ]),\n );\n checkboxes.value = newCheckboxes.map((checkboxFromProps) => {\n const checkbox = {\n ...checkboxFromProps,\n type: 'checkbox' as const,\n };\n const preservedState = currentSelections.get(checkbox.id);\n if (preservedState) {\n return {\n ...checkbox,\n value:\n checkbox.name === 'product_ids'\n ? checkbox.value\n : preservedState.value,\n disabled: checkbox.disabled,\n };\n }\n return checkbox;\n });\n } else {\n checkboxes.value = newCheckboxes.map((checkbox) => ({\n ...checkbox,\n type: 'checkbox',\n }));\n }\n },\n { deep: true, immediate: false },\n);\n</script>\n<template>\n <TThemeProvider :theme=\"formTheme\">\n <div\n class=\"t-custom-form__layout\"\n :class=\"{ 't-custom-form__layout--mobile': isMobile }\"\n ref=\"top\"\n >\n <TTypography\n v-if=\"title\"\n variant=\"s2\"\n font-weight=\"semibold\"\n :style=\"{ textAlign: 'center' }\"\n >\n {{ title }}\n </TTypography>\n <TTypography\n v-if=\"topSubtitle\"\n variant=\"b2\"\n font-weight=\"semibold\"\n :style=\"{ textAlign: 'center' }\"\n >{{ topSubtitle }}</TTypography\n >\n <TAlert\n v-if=\"messageAlert?.label && messageAlert?.type\"\n :size=\"isMobile ? 'small' : 'large'\"\n :full-width=\"isMobile || layout === 'rows'\"\n :variant=\"messageAlert.type\"\n >{{ messageAlert?.label }}</TAlert\n >\n <div\n :class=\"[\n 't-custom-form__fields-container',\n isMobile\n ? 't-custom-form__fields-container--mobile'\n : 't-custom-form__fields-container--desktop',\n ]\"\n >\n <div\n :class=\"[\n 't-custom-form__fields-layout',\n isMobile\n ? 't-custom-form__fields-layout--rows'\n : `t-custom-form__fields-layout--${layout}`,\n ]\"\n >\n <TOverlay\n v-if=\"loading\"\n class=\"t-custom-form__overlay\"\n :header=\"overlay.header\"\n :footer=\"overlay.footer\"\n />\n <FieldsSection\n v-if=\"customerFields.length\"\n ref=\"customerFieldsSection\"\n :fields=\"customerFields\"\n fields-type=\"customer\"\n :title=\"customerFieldsTitle\"\n :autocomplete=\"enableAutocomplete\"\n :accounts=\"accounts\"\n :product-ids-checkboxes=\"productIdsCheckboxes\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n @search=\"handleSearch\"\n :is-mobile=\"isMobile\"\n :thousands-separator=\"thousandsSeparator\"\n />\n <div\n v-if=\"customerFields.length && invoiceFields.length\"\n :class=\"[\n isMobile\n ? 't-custom-form__sepparation-line--rows'\n : `t-custom-form__sepparation-line--${layout}`,\n ]\"\n />\n <FieldsSection\n v-if=\"invoiceFields.length\"\n ref=\"invoiceFieldsSection\"\n :fields=\"invoiceFields\"\n fields-type=\"invoice\"\n :title=\"invoiceFieldsTitle\"\n :accounts=\"accounts\"\n :product-ids-checkboxes=\"productIdsCheckboxes\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n :is-mobile=\"isMobile\"\n :thousands-separator=\"thousandsSeparator\"\n />\n </div>\n <TButton\n variant=\"tertiary\"\n class=\"t-custom-form__link\"\n @click=\"emit('link-clicked')\"\n v-if=\"link?.label\"\n >{{ link.label }}</TButton\n >\n </div>\n <TTypography\n variant=\"b2\"\n font-weight=\"semibold\"\n v-if=\"bottomSubtitle\"\n :style=\"{ textAlign: 'center' }\"\n >{{ bottomSubtitle }}</TTypography\n >\n <div v-if=\"checkboxesToShow?.length\" class=\"t-custom-form__checkboxes\">\n <TCheckbox\n v-for=\"checkbox in checkboxesToShow\"\n class=\"t-custom-form__checkbox\"\n :key=\"checkbox.id\"\n :id=\"checkbox.id\"\n label-position=\"right\"\n size=\"small\"\n :value=\"checkbox.value\"\n :disabled=\"checkbox.disabled\"\n @input=\"(value: boolean) => handleInput({ id: checkbox.id, value })\"\n >\n <p\n class=\"t-custom-form__checkbox-text\"\n v-html=\"stringToHTML(checkbox.label)\"\n />\n </TCheckbox>\n </div>\n <TButton\n @click=\"submitForm\"\n size=\"medium\"\n :disabled=\"loading || disableSubmit\"\n :full-width=\"isMobile\"\n :class=\"{ 't-custom-form__submit-button': !isMobile }\"\n >\n {{ buttonLabel }}\n </TButton>\n </div>\n </TThemeProvider>\n</template>\n<style lang=\"scss\" scoped>\n.t-custom-form {\n &__overlay {\n position: absolute;\n inset: 0;\n }\n\n &__layout {\n display: flex;\n flex-direction: column;\n gap: 2.5rem;\n align-items: center;\n justify-content: center;\n\n &--desktop {\n padding: 0;\n }\n\n &--mobile {\n padding: 1rem;\n }\n }\n\n &__fields-container {\n display: flex;\n position: relative;\n gap: 1.5rem;\n flex-direction: column;\n\n &--desktop {\n width: 100%;\n padding: 2.5rem 3rem;\n border-radius: 0.625rem;\n box-shadow: 3px 3px 20px 0px rgba(38, 50, 56, 0.1);\n }\n &--mobile {\n width: 100%;\n }\n }\n\n &__fields-layout {\n display: flex;\n justify-content: center;\n width: 100%;\n height: 100%;\n\n &--columns {\n flex-direction: row;\n gap: 3rem;\n }\n &--rows {\n flex-direction: column;\n gap: 1.5rem;\n }\n }\n\n &__sepparation-line {\n &--columns {\n border-left: 1px solid #e2e2e2;\n }\n &--rows {\n border-top: 1px solid #e2e2e2;\n }\n }\n\n &__link {\n font-weight: 400;\n text-decoration: underline;\n color: v-bind(grayMain);\n\n &:hover:not(&:disabled) {\n color: v-bind(grayMedium1);\n }\n\n &:focus {\n color: v-bind(grayLight2);\n }\n }\n\n &__submit-button {\n min-width: 25.25rem;\n }\n\n &__checkboxes {\n width: fit-content;\n display: flex;\n flex-direction: column;\n align-items: start;\n gap: 0.5rem;\n }\n\n &__checkbox {\n display: flex;\n gap: 0.3rem;\n align-items: start;\n\n &:deep([class*='--small']) {\n white-space: normal;\n }\n &:deep([class*='--small__input']) {\n margin-top: 0.2rem;\n }\n }\n &__checkbox-text {\n text-wrap: auto;\n\n &:deep(a) {\n text-decoration: underline;\n }\n &:deep(a:visited) {\n color: #800080;\n }\n &:deep(a:active) {\n color: #8b0000;\n }\n }\n}\n</style>\n"],"names":["isString","value","isMaskedValue","isDate","isCheckboxField","hasExpressionToBoolField","field","clean","rut","validate","t","m","s","v","format","result","i","rut_js","countryMetadata","cleanRut","useI18n","governmentId","countryIso","cleaner","peg$subclass","child","parent","C","peg$SyntaxError","message","expected","found","location","self","peg$padEnd","str","targetLength","padString","sources","src","k","offset_s","loc","e","filler","line","last","hatLen","DESCRIBE_EXPECTATION_FNS","expectation","literalEscape","escapedParts","part","classEscape","hex","ch","describeExpectation","describeExpected","descriptions","j","describeFound","peg$parse","input","options","peg$FAILED","peg$source","peg$startRuleFunctions","peg$parseExpression","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$r0","peg$r1","peg$r2","peg$r3","peg$r4","peg$e0","peg$literalExpectation","peg$e1","peg$e2","peg$e3","peg$e4","peg$e5","peg$e6","peg$classExpectation","peg$e7","peg$e8","peg$e9","peg$e10","peg$otherExpectation","peg$e11","peg$e12","peg$e13","peg$e14","peg$e15","peg$e16","peg$e17","peg$e18","peg$f0","head","tail","element","peg$f1","peg$f2","expr","peg$f3","functionName","args","name","a","round","power","startsWith","endsWith","includes","slice","peg$f4","peg$f5","variables","peg$f6","text","peg$f7","peg$f8","chars","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","ignoreCase","parts","inverted","peg$endExpectation","description","peg$computePosDetails","pos","details","p","peg$computeLocation","startPos","endPos","offset","startPosDetails","endPosDetails","res","peg$fail","peg$buildStructuredError","s0","s1","s2","s3","s4","s5","s6","s7","peg$parseTerm","peg$parse_","peg$parseFactor","peg$parseFunctionCall","peg$parseVariable","peg$parseDecimal","peg$parseInteger","peg$parseString","peg$parseArgumentList","peg$parseArgument","number","decimals","factor","exponent","string","prefix","suffix","substring","start","end","evaluateExpression","expression","parse","useRelatedFields","fields","provide","inject","shouldShowField","foundRelatedField","hasmap","currentField","fillWithZero","content","formatDueDate","date","getDecimalSeparator","thousandsSeparator","formatWithThousands","decimalSeparator","integerPart","decimalPart","cleanInteger","formattedInteger","cleanDecimal","parseFormattedNumber","formattedValue","cleaned","testValue","filterNumberInput","allowedChars","filteredValue","decimalRegex","firstDecimalIndex","props","__props","computed","buttonText","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","TTypography","TButton","$emit","stringToHTML","stringToConvert","config","DOMPurify","toDate","isValidDate","startOfWeek","firstDayOfWeek","day","diff","startOfWeekYear","_ref","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","year","firstDateOfFirstWeek","getWeek","_ref2","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","locale","REGEX_FORMAT","pad","val","len","output","sign","getOffset","formatTimezone","delimeter","absOffset","hours","minutes","meridiem","h","_","isLowercase","word","formatFlags","y","meridiemFunc","formatStr","defaultLocale","match","p1","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","key","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_i","_s","err","obj","formattingTokens","match1","match2","match3","match4","match1to2","matchShortOffset","matchSigned","matchTimestamp","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","token","regex","callback","tokens","func","escapeStringRegExp","matchWordRegExp","localeKey","array","matchWordCallback","index","cent","matchMeridiem","defaultIsPM","isPM","offsetFromString","_ref8","_ref9","symbol","hour","minute","to24hour","getFullInputArray","backupDate","backupArr","useBackup","createDate","d","M","ms","createUTCDate","_len","_key","makeParser","dateString","length","mark","parseTo","parser","_options$locale","_locale","_options$backupDate","parseResult","month","second","millisecond","weekday","week","inputArray","firstDate","parsedDate","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","b","prop","__spreadProps","__objRest","exclude","lang","en","locales","isLocal","l","getLocale","chunk","size","isPlainObject","pick","mergeDeep","targetValue","padNumber","num","camelcase","camelizeRE","c","localeContextKey","prefixClassKey","getWeekKey","useLocale","shallowRef","provideLocale","lang2","locale2","providePrefixClass","usePrefixClass","provideGetWeek","useGetWeek","getPopupElementSize","originalDisplay","originalVisibility","styles","width","height","getRelativePosition","el","targetWidth","targetHeight","fixed","left","top","offsetX","offsetY","relativeRect","dw","dh","getScrollParent","node","until","style","scrollBarWidth","getScrollbarWidth","outer","inner","mousedownEvent","rafThrottle","fn","isRunning","defineVueComponent","setup","withDefault","defaultProps","resolveProps","booleanKeys2","camelizeKey","Popup","originalProps","slots","prefixClass","popup","ref","position","displayPopup","relativeElement","watchEffect","onInvalidate","scrollElement","handleMove","handleClickOutside","evt","createVNode","Teleport","Transition","_a","popupProps","Popup$1","_hoisted_1$2","_hoisted_2$2","createElementVNode","_hoisted_3$2","render$2","_ctx","_cache","openBlock","createElementBlock","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","render$1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","render","h2","isValidRangeDate","dates","isValidDates","getValidDate","values","rest","startOfYear","startOfMonth","startOfDay","getCalendar","calendar","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","lastMonthLength","nextMonthLength","setMonth","dirtyDate","dirtyMonth","daysInMonth","setYear","dirtyYear","diffCalendarMonths","dirtyDateLeft","dirtyDateRight","dateRight","dateLeft","yearDiff","monthDiff","assignTime","time","PickerInput","userInput","innerSeparator","isValidValue","isDisabledValue","handleClear","handleChange","text2","handleInput","handleKeydown","keyCode","_b","_c","showClearIcon","inputProps","pickerInputBaseProps","pickerInputProps","PickerInput$1","Picker","toRef","container","getContainer","defaultOpen","popupVisible","openPopup","_a2","closePopup","formatDate","fmt","parseDate","value2date","date2value","innerValue","emitValue","type","close","currentValue","handleSelect","handleConfirm","disabledDateTime","renderSidebar","slotProps","_a3","disabled","confirm","range","popupClass","popupStyle","appendToBody","header","footer","sidedar","pickerbaseProps","pickerProps","Picker$1","ButtonIcon","TableHeader","onUpdateCalendar","lastMonth","nextMonth","lastYear","nextYear","lastDecade","nextDecade","TableDate","isWeekMode","showWeekNumber","titleFormat","getWeekActive","getCellClasses","onSelect","onUpdatePanel","onDateMouseEnter","onDateMouseLeave","getWeekNumber","yearFormat","monthBeforeYear","monthFormat","formatLocale","days","handlePanelChange","panel","getCellDate","index2","row","col","handleCellClick","handleMouseEnter","handleMouseLeave","yearLabel","monthLabel","cell","TableMonth","months","getDate","handleClick","getDefaultYears","firstYear","years","TableYear","getYearPanel","Calendar","innerCalendar","calendarDate","handleCalendarChange","panels","handelPanelChange","oldPanel","isDisabled","emitDate","nextDates","handleSelectDate","handleSelectYear","handleSelectMonth","cellDate","classes","getDateClasses","notCurrentMonth","getMonthClasses","getYearClasses","calendarProps","Calendar$1","inRange","min","max","CalendarRange","defaultValues","handlePick","startValue","endValue","defaultCalendars","calendars","calendarMinDiff","updateCalendars","gap","anotherIndex","updateCalendarStart","updateCalendarEnd","hoveredValue","getRangeClasses","currentDates","classnames","outerClasses","calendarRange","calendarProps2","calendarRangeProps","CalendarRange$1","ScrollbarVertical","defineComponent","wrapper","thumbHeight","thumbTop","onMounted","heightPercentage","scrollbarWidth","handleScroll","scrollHeight","scrollTop","draggable","prevY","handleDragstart","offsetTop","handleDraging","clientY","clientHeight","handleDragend","onUnmounted","Columns","getClasses","currentTarget","item","_isSlot","isVNode","FixedList","_slot","generateList","step","getColumnOptions","showHour","showMinute","showSecond","use12h","format2","columns","parseOption","getFixedOptions","option","startMinutes","endMinutes","stepMinutes","timeMinutes","scrollTo","to","duration","tick","TimePanel","isDisabledTimes","isDisabledHour","isDisabledMinute","isDisabledAMPM","minHour","maxHour","scrollToSelected","elements","watch","timePanelProps","TimePanel$1","TimeRange","emitChange","handleSelectStart","handleSelectEnd","disabledStartTime","disabledEndTime","timeRangeProps","TimeRange$1","useTimePanelVisible","defaultTimeVisible","closeTimePanel","openTimePanel","DateTime","timeVisible","datetime","calendarProp","timeProps","datetimeBaseProps","datetimeProps","DateTime$1","DateTimeRange","datetimes","datetimeRangeProps","DateTimeRange$1","booleanKeys","formatMap","DatePicker","Content","api","app","emits","__emit","isError","displayRequired","errorText","placeholder","lowerLabel","inputClass","lowerLabelClass","isRequiredEmpty","handleDatePicker","handleRightIconClick","_createBlock","Datepicker","TTextInput","_createElementVNode","TIconButton","emit","id","fieldsToShow","data","getFieldValue","isFieldSearchable","retrocompatibleIcon","iconName","_Fragment","_renderList","TSelect","_hoisted_6","SignupFieldComponent","$event","customerFields","invoiceFields","isLoading","submitFormStatus","signupCompleted","errorMessage","isAutocompleteEnabled","sendEmail","allFields","cleanGovernmentId","theme","createTheme","newProps","formatFieldValue","handleSearch","externalIdField","isExternalId","foundField","getVariables","buildSignupRequestBody","validateFormValues","isValid","requiredInvalid","regexInvalid","submitForm","dataToEmit","TThemeProvider","_Transition","SignupCompleted","SignupFields","payload","TCheckbox","DEFAULT_SEPARATOR","useTheme","error","grayMain","grayMedium1","isNumberType","thousandsSep","decimalSep","displayValue","strValue","isRegexPresent","valueIsOfTypeString","shouldValidateRegex","rawValue","handleBlur","__expose","_createTextVNode","_toDisplayString","selectAllChecked","enabledCheckboxes","cb","selectAllIndeterminate","checkedCount","handleSelectAll","checked","checkbox","customFieldRefs","validateCustomFields","evaluated","valueString","matchingOption","opt","isOptionObject","getOptionValue","getOptionLabel","_hoisted_8","_hoisted_9","_hoisted_12","CustomField","success","warning","info","inProcess","icon","color","_normalizeClass","TIcon","_renderSlot","overlayRef","isMinimalView","grayLight2","TSpinner","formTheme","normalizeFieldOptions","label","checkboxes","productIdsCheckboxes","checkboxesToShow","numValue","f","selectedProductIds","isEmptyValue","isRegexInvalid","customerFieldsSection","invoiceFieldsSection","showFieldErrors","scrollToTop","newCheckboxes","currentSelections","checkboxFromProps","preservedState","TAlert","TOverlay","FieldsSection"],"mappings":"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","x_google_ignoreList":[1,10,11,12,13,14]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/utils/typeChecker.ts","../node_modules/rut.js/index.js","../src/composables/useI18n.ts","../src/utils/parser/parser.ts","../src/utils/parser/index.ts","../src/composables/useRelatedFields.ts","../src/utils/formatters/date.ts","../src/utils/formatters/number.ts","../src/components/CustomForm/SignupCompleted.vue","../src/utils/string.ts","../node_modules/date-format-parse/es/util.js","../node_modules/date-format-parse/es/locale/en.js","../node_modules/date-format-parse/es/format.js","../node_modules/date-format-parse/es/parse.js","../node_modules/vue-datepicker-next/index.es.js","../src/components/CustomForm/SignupField.vue","../src/components/CustomForm/SignupFields.vue","../src/components/CustomForm/CustomForm.vue","../src/components/TCustomForm/CustomField.vue","../src/components/TCustomForm/FieldsSection.vue","../src/components/TCustomForm/TAlert.vue","../src/components/TCustomForm/TOverlay.vue","../src/components/TCustomForm/TCustomForm.vue"],"sourcesContent":["import { CustomCheckBoxField, CustomInputField } from '@/types/customFields';\n\nexport const isString = (\n value?: number | string | Date | boolean,\n): value is string => {\n return typeof value === 'string';\n};\n\nexport const isNumber = (\n value?: number | string | Date | boolean,\n): value is number => {\n return typeof value === 'number';\n};\n\n/** The prefill masks with runs of asterisks; a lone `*` is something a payer can type. */\nexport const isMaskedValue = (\n value?: number | string | Date | boolean,\n): boolean => {\n return isString(value) && value.includes('**');\n};\n\nexport const isDate = (\n value?: number | string | Date | boolean,\n): value is Date => {\n return value instanceof Date;\n};\n\nexport const isCheckboxField = (\n value: CustomInputField | CustomCheckBoxField,\n): value is CustomCheckBoxField => {\n return (value as CustomCheckBoxField).type === 'checkbox';\n};\n\nexport const hasExpressionToBoolField = (\n field: CustomInputField | CustomCheckBoxField,\n): field is CustomInputField => {\n return (field as CustomInputField).expressionToBool !== undefined;\n};\n","'use strict'\n\nfunction clean (rut) {\n return typeof rut === 'string'\n ? rut.replace(/^0+|[^0-9kK]+/g, '').toUpperCase()\n : ''\n}\n\nfunction validate (rut) {\n if (typeof rut !== 'string') {\n return false\n }\n if (!/^0*(\\d{1,3}(\\.?\\d{3})*)-?([\\dkK])$/.test(rut)) {\n return false\n }\n\n rut = clean(rut)\n\n var t = parseInt(rut.slice(0, -1), 10)\n var m = 0\n var s = 1\n\n while (t > 0) {\n s = (s + (t % 10) * (9 - m++ % 6)) % 11\n t = Math.floor(t / 10)\n }\n\n var v = s > 0 ? '' + (s - 1) : 'K'\n return v === rut.slice(-1)\n}\n\nfunction format (rut) {\n rut = clean(rut)\n\n var result = rut.slice(-4, -1) + '-' + rut.substr(rut.length - 1)\n for (var i = 4; i < rut.length; i += 3) {\n result = rut.slice(-3 - i, -i) + '.' + result\n }\n\n return result\n}\n\nmodule.exports = { validate: validate, clean: clean, format: format }\n","import { isMaskedValue } from '@/utils/typeChecker';\nimport { clean as cleanRut } from 'rut.js';\n\ninterface CountryMetadata {\n [countryCode: string]: {\n governmentIdCleaner?: (governmentId: string) => string;\n };\n}\n\nconst countryMetadata: CountryMetadata = {\n CL: {\n governmentIdCleaner: cleanRut,\n },\n MX: {},\n};\n\nexport default function useI18n() {\n const cleanGovernmentId = (\n governmentId: string,\n countryIso: string | null,\n ) => {\n if (governmentId && countryIso && !isMaskedValue(governmentId)) {\n const cleaner = countryMetadata[countryIso].governmentIdCleaner;\n if (cleaner) {\n return cleaner(governmentId);\n }\n return governmentId;\n }\n return governmentId;\n };\n\n return { cleanGovernmentId };\n}\n","/* eslint-disable */\n// @ts-nocheck\n// Generated by Peggy 3.0.2.\n//\n// https://peggyjs.org/\n\n'use strict';\n\nfunction peg$subclass(child, parent) {\n function C() {\n this.constructor = child;\n }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = 'SyntaxError';\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || ' ';\n if (str.length > targetLength) {\n return str;\n }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function (sources) {\n var str = 'Error: ' + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s =\n this.location.source && typeof this.location.source.offset === 'function'\n ? this.location.source.offset(s)\n : s;\n var loc =\n this.location.source + ':' + offset_s.line + ':' + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd('', offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = last - s.column || 1;\n str +=\n '\\n --> ' +\n loc +\n '\\n' +\n filler +\n ' |\\n' +\n offset_s.line +\n ' | ' +\n line +\n '\\n' +\n filler +\n ' | ' +\n peg$padEnd('', s.column - 1, ' ') +\n peg$padEnd('', hatLen, '^');\n } else {\n str += '\\n at ' + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function (expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function (expectation) {\n return '\"' + literalEscape(expectation.text) + '\"';\n },\n\n class: function (expectation) {\n var escapedParts = expectation.parts.map(function (part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + '-' + classEscape(part[1])\n : classEscape(part);\n });\n\n return (\n '[' + (expectation.inverted ? '^' : '') + escapedParts.join('') + ']'\n );\n },\n\n any: function () {\n return 'any character';\n },\n\n end: function () {\n return 'end of input';\n },\n\n other: function (expectation) {\n return expectation.description;\n },\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function (ch) {\n return '\\\\x0' + hex(ch);\n })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return '\\\\x' + hex(ch);\n });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + ' or ' + descriptions[1];\n\n default:\n return (\n descriptions.slice(0, -1).join(', ') +\n ', or ' +\n descriptions[descriptions.length - 1]\n );\n }\n }\n\n function describeFound(found) {\n return found ? '\"' + literalEscape(found) + '\"' : 'end of input';\n }\n\n return (\n 'Expected ' +\n describeExpected(expected) +\n ' but ' +\n describeFound(found) +\n ' found.'\n );\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { Expression: peg$parseExpression };\n var peg$startRuleFunction = peg$parseExpression;\n\n var peg$c0 = '+';\n var peg$c1 = '-';\n var peg$c2 = '*';\n var peg$c3 = '/';\n var peg$c4 = '(';\n var peg$c5 = ')';\n var peg$c6 = ',';\n var peg$c7 = 'VAR(';\n var peg$c8 = '.';\n var peg$c9 = \"'\";\n\n var peg$r0 = /^[a-zA-Z]/;\n var peg$r1 = /^[a-zA-Z_]/;\n var peg$r2 = /^[0-9]/;\n var peg$r3 = /^[^']/;\n var peg$r4 = /^[ \\t\\n\\r]/;\n\n var peg$e0 = peg$literalExpectation('+', false);\n var peg$e1 = peg$literalExpectation('-', false);\n var peg$e2 = peg$literalExpectation('*', false);\n var peg$e3 = peg$literalExpectation('/', false);\n var peg$e4 = peg$literalExpectation('(', false);\n var peg$e5 = peg$literalExpectation(')', false);\n var peg$e6 = peg$classExpectation(\n [\n ['a', 'z'],\n ['A', 'Z'],\n ],\n false,\n false,\n );\n var peg$e7 = peg$literalExpectation(',', false);\n var peg$e8 = peg$literalExpectation('VAR(', false);\n var peg$e9 = peg$classExpectation(\n [['a', 'z'], ['A', 'Z'], '_'],\n false,\n false,\n );\n var peg$e10 = peg$otherExpectation('integer');\n var peg$e11 = peg$classExpectation([['0', '9']], false, false);\n var peg$e12 = peg$otherExpectation('decimal');\n var peg$e13 = peg$literalExpectation('.', false);\n var peg$e14 = peg$otherExpectation('string');\n var peg$e15 = peg$literalExpectation(\"'\", false);\n var peg$e16 = peg$classExpectation([\"'\"], true, false);\n var peg$e17 = peg$otherExpectation('whitespace');\n var peg$e18 = peg$classExpectation([' ', '\\t', '\\n', '\\r'], false, false);\n\n var peg$f0 = function (head, tail) {\n return tail.reduce(function (result, element) {\n if (element[1] === '+') {\n return result + element[3];\n }\n if (element[1] === '-') {\n return result - element[3];\n }\n }, head);\n };\n var peg$f1 = function (head, tail) {\n return tail.reduce(function (result, element) {\n if (element[1] === '*') {\n return result * element[3];\n }\n if (element[1] === '/') {\n return result / element[3];\n }\n }, head);\n };\n var peg$f2 = function (expr) {\n return expr;\n };\n var peg$f3 = function (functionName, args) {\n const name = functionName.join('');\n const a = args || [];\n if (name === 'ROUND') {\n return round(a[0], a[1]);\n }\n if (name === 'POWER') {\n return power(a[0], a[1]);\n }\n if (name === 'STARTSWITH') {\n return startsWith(a[0], a[1]);\n }\n if (name === 'ENDSWITH') {\n return endsWith(a[0], a[1]);\n }\n if (name === 'INCLUDES') {\n return includes(a[0], a[1]);\n }\n if (name === 'SLICE') {\n return slice(a[0], a[1], a[2]);\n }\n throw new Error('Function ' + name + ' is not defined');\n };\n var peg$f4 = function (head, tail) {\n return [head].concat(tail.map((element) => element[3]));\n };\n var peg$f5 = function (name) {\n if (variables.hasOwnProperty(name.join(''))) {\n return variables[name.join('')];\n } else {\n throw new Error('Variable ' + name.join('') + ' is not defined');\n }\n };\n var peg$f6 = function () {\n return parseInt(text(), 10);\n };\n var peg$f7 = function () {\n return parseFloat(text());\n };\n var peg$f8 = function (chars) {\n return chars.join('');\n };\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n\n var peg$result;\n\n if ('startRule' in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\n 'Can\\'t start parsing from rule \"' + options.startRule + '\".',\n );\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos,\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location =\n location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location,\n );\n }\n\n function error(message, location) {\n location =\n location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: 'literal', text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return {\n type: 'class',\n parts: parts,\n inverted: inverted,\n ignoreCase: ignoreCase,\n };\n }\n\n function peg$anyExpectation() {\n return { type: 'any' };\n }\n\n function peg$endExpectation() {\n return { type: 'end' };\n }\n\n function peg$otherExpectation(description) {\n return { type: 'other', description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column,\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column,\n },\n };\n if (offset && peg$source && typeof peg$source.offset === 'function') {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location,\n );\n }\n\n function peg$parseExpression() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseTerm();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 43) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e0);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e1);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseTerm();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 43) {\n s5 = peg$c0;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e0);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s5 = peg$c1;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e1);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseTerm();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f0(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTerm() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseFactor();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 42) {\n s5 = peg$c2;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e2);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e3);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseFactor();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 42) {\n s5 = peg$c2;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e2);\n }\n }\n if (s5 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 47) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e3);\n }\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseFactor();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f1(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFactor() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 40) {\n s2 = peg$c4;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e4);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n s4 = peg$parseExpression();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s6 = peg$c5;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s6 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f2(s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseFunctionCall();\n if (s0 === peg$FAILED) {\n s0 = peg$parseVariable();\n if (s0 === peg$FAILED) {\n s0 = peg$parseDecimal();\n if (s0 === peg$FAILED) {\n s0 = peg$parseInteger();\n if (s0 === peg$FAILED) {\n s0 = peg$parseString();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseFunctionCall() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = [];\n if (peg$r0.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e6);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$r0.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e6);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c4;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e4);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n s5 = peg$parseArgumentList();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n s6 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c5;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f3(s2, s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseArgumentList() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseArgument();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e7);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseArgument();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c6;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e7);\n }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n s7 = peg$parseArgument();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n }\n peg$savedPos = s0;\n s0 = peg$f4(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseArgument() {\n var s0;\n\n s0 = peg$parseString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseExpression();\n }\n\n return s0;\n }\n\n function peg$parseVariable() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.substr(peg$currPos, 4) === peg$c7) {\n s2 = peg$c7;\n peg$currPos += 4;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e8);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$r1.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e9);\n }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$r1.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e9);\n }\n }\n }\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c5;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseInteger() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = [];\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e10);\n }\n }\n\n return s0;\n }\n\n function peg$parseDecimal() {\n var s0, s1, s2, s3, s4, s5;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n s2 = [];\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s3 = peg$c8;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e13);\n }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n }\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f7();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e12);\n }\n }\n\n return s0;\n }\n\n function peg$parseString() {\n var s0, s1, s2, s3, s4;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (input.charCodeAt(peg$currPos) === 39) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e15);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$r3.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e16);\n }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$r3.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e16);\n }\n }\n }\n if (input.charCodeAt(peg$currPos) === 39) {\n s4 = peg$c9;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e15);\n }\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f8(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e14);\n }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$r4.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e18);\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$r4.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e18);\n }\n }\n }\n peg$silentFails--;\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e17);\n }\n\n return s0;\n }\n\n const variables = options.variables || {};\n\n function round(number, decimals) {\n const factor = Math.pow(10, decimals);\n return Math.round(number * factor) / factor;\n }\n\n function power(number, exponent) {\n return Math.pow(number, exponent);\n }\n\n function startsWith(string, prefix) {\n return string.startsWith(prefix);\n }\n\n function endsWith(string, suffix) {\n return string.endsWith(suffix);\n }\n\n function includes(string, substring) {\n return string.includes(substring);\n }\n\n function slice(string, start, end) {\n return end === undefined ? string.slice(start) : string.slice(start, end);\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos),\n );\n }\n}\n\nexport { peg$SyntaxError as SyntaxError, peg$parse as parse };\n","import { parse } from './parser';\n\nexport function evaluateExpression(\n expression: string,\n variables?: Record<string, string | number | Date | undefined | boolean>,\n): number | string | boolean {\n try {\n return parse(expression, { variables });\n } catch (e) {\n return expression;\n }\n}\n","import { CustomCheckBoxField, CustomInputField } from '@/types/customFields';\nimport { SignupField } from '@/types/signUpField';\nimport { evaluateExpression } from '@/utils/parser';\nimport { hasExpressionToBoolField } from '@/utils/typeChecker';\nimport { ComputedRef, Ref, inject, provide } from 'vue';\n\nexport default function useRelatedFields(\n fields?:\n | Ref<Array<SignupField | CustomCheckBoxField | CustomInputField>>\n | ComputedRef<Array<SignupField | CustomCheckBoxField | CustomInputField>>,\n) {\n if (fields) {\n provide('fields', fields);\n } else {\n fields = inject('fields');\n if (!fields) {\n throw new Error('Fields were not provided');\n }\n }\n const shouldShowField = (\n field: SignupField | CustomCheckBoxField | CustomInputField,\n ): boolean => {\n if (field.relatedField) {\n const foundRelatedField = fields?.value.find(({ name, value }) => {\n if (field.relatedFieldValues && value) {\n return (\n field.relatedField === name &&\n field.relatedFieldValues.includes(value as string | number | Date)\n );\n }\n return false;\n });\n if (!foundRelatedField) {\n return false;\n }\n return shouldShowField(foundRelatedField);\n }\n if (hasExpressionToBoolField(field) && field.expressionToBool) {\n const variables = fields?.value.reduce<\n Record<string, string | number | Date | boolean>\n >((hasmap, currentField) => {\n if (currentField.value) hasmap[currentField.name] = currentField.value;\n return hasmap;\n }, {});\n const showField = evaluateExpression(field.expressionToBool, variables);\n return showField === true;\n }\n return true;\n };\n\n return { shouldShowField };\n}\n","const fillWithZero = (content: string | number) => {\n return `0${content}`.slice(-2);\n};\n\nexport const formatDueDate = (date: Date) => {\n return `${date.getFullYear()}-${fillWithZero(\n date.getMonth() + 1,\n )}-${fillWithZero(date.getDate())}`;\n};\n","export type ThousandsSeparator = '.' | ',';\n\n/**\n * Gets the decimal separator based on the thousands separator\n * If thousands separator is '.', decimal separator is ','\n * If thousands separator is ',', decimal separator is '.'\n */\nexport const getDecimalSeparator = (\n thousandsSeparator: ThousandsSeparator,\n): string => {\n return thousandsSeparator === '.' ? ',' : '.';\n};\n\n/**\n * Formats a number string with thousands separators\n * @param value - The string value to format\n * @param thousandsSeparator - The separator for thousands ('.' or ',')\n * @returns The formatted string with thousands separators\n */\nexport const formatWithThousands = (\n value: string,\n thousandsSeparator: ThousandsSeparator,\n): string => {\n if (!value) return '';\n\n const decimalSeparator = getDecimalSeparator(thousandsSeparator);\n\n // Split by decimal separator\n const parts = value.split(decimalSeparator);\n const integerPart = parts[0] || '';\n const decimalPart = parts[1];\n\n // Remove existing thousands separators and non-digits from integer part\n const cleanInteger = integerPart.replace(/[^0-9]/g, '');\n\n if (!cleanInteger && decimalPart === undefined) return '';\n\n // Add thousands separators\n const formattedInteger = cleanInteger.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousandsSeparator,\n );\n\n // Reconstruct with decimal part if present\n if (decimalPart !== undefined) {\n // Clean decimal part (only digits)\n const cleanDecimal = decimalPart.replace(/[^0-9]/g, '');\n return `${formattedInteger || '0'}${decimalSeparator}${cleanDecimal}`;\n }\n\n return formattedInteger;\n};\n\n/**\n * Parses a formatted number string to a raw number string\n * Removes thousands separators and normalizes decimal separator to '.'\n * Preserves intermediate states while typing (e.g., \"5.\" while user is typing decimals)\n * Returns empty string for completely invalid inputs\n * @param formattedValue - The formatted string with separators\n * @param thousandsSeparator - The thousands separator used in the formatted value\n * @returns The raw number string with '.' as decimal separator, or empty string if invalid\n */\nexport const parseFormattedNumber = (\n formattedValue: string,\n thousandsSeparator: ThousandsSeparator,\n): string => {\n if (!formattedValue) return '';\n\n const decimalSeparator = getDecimalSeparator(thousandsSeparator);\n\n // Remove thousands separators\n let cleaned = formattedValue.replace(\n new RegExp(`\\\\${thousandsSeparator}`, 'g'),\n '',\n );\n\n // Replace decimal separator with standard '.'\n cleaned = cleaned.replace(decimalSeparator, '.');\n\n // If it's just a decimal point, return empty (prevents NaN)\n if (cleaned === '.') {\n return '';\n }\n\n // Handle leading decimal: \".5\" -> \"0.5\"\n if (cleaned.startsWith('.')) {\n cleaned = `0${cleaned}`;\n }\n\n // Validate: check if the numeric part is valid\n // Allow trailing decimal for intermediate state (e.g., \"5.\" while typing)\n const testValue = cleaned.endsWith('.') ? cleaned.slice(0, -1) : cleaned;\n if (testValue && Number.isNaN(Number(testValue))) {\n return '';\n }\n\n return cleaned;\n};\n\n/**\n * Filters a string to only allow valid number characters\n * Ensures only one decimal separator is present\n * @param value - The input string\n * @param thousandsSeparator - The thousands separator\n * @returns The filtered string\n */\nexport const filterNumberInput = (\n value: string,\n thousandsSeparator: ThousandsSeparator,\n): string => {\n const decimalSeparator = getDecimalSeparator(thousandsSeparator);\n\n // Allow only digits, decimal separator, and thousands separator\n const allowedChars = new RegExp(\n `[^0-9\\\\${thousandsSeparator}\\\\${decimalSeparator}]`,\n 'g',\n );\n const filteredValue = value.replace(allowedChars, '');\n\n // Ensure only one decimal separator\n const decimalRegex = new RegExp(`\\\\${decimalSeparator}`, 'g');\n const decimalCount = (filteredValue.match(decimalRegex) || []).length;\n\n if (decimalCount > 1) {\n // Keep only the first decimal separator\n const firstDecimalIndex = filteredValue.indexOf(decimalSeparator);\n return (\n filteredValue.substring(0, firstDecimalIndex + 1) +\n filteredValue.substring(firstDecimalIndex + 1).replace(decimalRegex, '')\n );\n }\n\n return filteredValue;\n};\n","<template>\n <div class=\"success-form\">\n <TTypography variant=\"h1\">\n {{ message }}\n </TTypography>\n <TButton variant=\"secondary\" @click=\"$emit('reset')\">\n {{ buttonText }}\n </TButton>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { TButton, TTypography } from 'toku-ui';\nimport { computed, defineProps, defineEmits, withDefaults } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n type: 'success' | 'error';\n errorMessage: string;\n errorButtonLabel: string;\n successMessage: string;\n successButtonLabel: string;\n }>(),\n {\n type: 'success',\n },\n);\n\nconst message = computed(() =>\n props.type === 'error' ? props.errorMessage : props.successMessage,\n);\n\nconst buttonText = computed(() =>\n props.type === 'error' ? props.errorButtonLabel : props.successButtonLabel,\n);\n\ndefineEmits(['reset']);\n</script>\n<style scoped>\n.success-form {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 20px;\n height: 80vh;\n border-radius: 8px;\n padding: 40px;\n padding-inline: 80px;\n flex-wrap: wrap;\n width: 100%;\n}\n</style>\n","import DOMPurify from 'dompurify';\n\nexport const stringToHTML = (stringToConvert: string | undefined): string => {\n const config = {\n ALLOWED_TAGS: ['a'],\n ALLOWED_ATTR: ['href', 'target'],\n };\n if (stringToConvert) {\n return DOMPurify.sanitize(stringToConvert, config);\n }\n return '';\n};\n","export function isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function toDate(value) {\n if (isDate(value)) {\n return new Date(value.getTime());\n }\n\n if (value == null) {\n return new Date(NaN);\n }\n\n return new Date(value);\n}\nexport function isValidDate(value) {\n return isDate(value) && !isNaN(value.getTime());\n}\nexport function startOfWeek(value) {\n var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6');\n }\n\n var date = toDate(value);\n var day = date.getDay();\n var diff = (day + 7 - firstDayOfWeek) % 7;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nexport function startOfWeekYear(value) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$firstDayOfWeek = _ref.firstDayOfWeek,\n firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,\n _ref$firstWeekContain = _ref.firstWeekContainsDate,\n firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain;\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7');\n }\n\n var date = toDate(value);\n var year = date.getFullYear();\n var firstDateOfFirstWeek = new Date(0);\n\n for (var i = year + 1; i >= year - 1; i--) {\n firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate);\n firstDateOfFirstWeek.setHours(0, 0, 0, 0);\n firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek);\n\n if (date.getTime() >= firstDateOfFirstWeek.getTime()) {\n break;\n }\n }\n\n return firstDateOfFirstWeek;\n}\nexport function getWeek(value) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$firstDayOfWeek = _ref2.firstDayOfWeek,\n firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek,\n _ref2$firstWeekContai = _ref2.firstWeekContainsDate,\n firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai;\n\n var date = toDate(value);\n var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek);\n var firstDateOfFirstWeek = startOfWeekYear(date, {\n firstDayOfWeek: firstDayOfWeek,\n firstWeekContainsDate: firstWeekContainsDate\n });\n var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime();\n return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1;\n}","var locale = {\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n firstDayOfWeek: 0,\n firstWeekContainsDate: 1\n};\nexport default locale;","import { toDate, isValidDate, getWeek } from './util';\nimport defaultLocale from './locale/en';\nvar REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;\n\nfunction pad(val) {\n var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var output = \"\".concat(Math.abs(val));\n var sign = val < 0 ? '-' : '';\n\n while (output.length < len) {\n output = \"0\".concat(output);\n }\n\n return sign + output;\n}\n\nfunction getOffset(date) {\n return Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\nfunction formatTimezone(offset) {\n var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + pad(hours, 2) + delimeter + pad(minutes, 2);\n}\n\nvar meridiem = function meridiem(h, _, isLowercase) {\n var word = h < 12 ? 'AM' : 'PM';\n return isLowercase ? word.toLocaleLowerCase() : word;\n};\n\nvar formatFlags = {\n Y: function Y(date) {\n var y = date.getFullYear();\n return y <= 9999 ? \"\".concat(y) : \"+\".concat(y);\n },\n // Year: 00, 01, ..., 99\n YY: function YY(date) {\n return pad(date.getFullYear(), 4).substr(2);\n },\n // Year: 1900, 1901, ..., 2099\n YYYY: function YYYY(date) {\n return pad(date.getFullYear(), 4);\n },\n // Month: 1, 2, ..., 12\n M: function M(date) {\n return date.getMonth() + 1;\n },\n // Month: 01, 02, ..., 12\n MM: function MM(date) {\n return pad(date.getMonth() + 1, 2);\n },\n MMM: function MMM(date, locale) {\n return locale.monthsShort[date.getMonth()];\n },\n MMMM: function MMMM(date, locale) {\n return locale.months[date.getMonth()];\n },\n // Day of month: 1, 2, ..., 31\n D: function D(date) {\n return date.getDate();\n },\n // Day of month: 01, 02, ..., 31\n DD: function DD(date) {\n return pad(date.getDate(), 2);\n },\n // Hour: 0, 1, ... 23\n H: function H(date) {\n return date.getHours();\n },\n // Hour: 00, 01, ..., 23\n HH: function HH(date) {\n return pad(date.getHours(), 2);\n },\n // Hour: 1, 2, ..., 12\n h: function h(date) {\n var hours = date.getHours();\n\n if (hours === 0) {\n return 12;\n }\n\n if (hours > 12) {\n return hours % 12;\n }\n\n return hours;\n },\n // Hour: 01, 02, ..., 12\n hh: function hh() {\n var hours = formatFlags.h.apply(formatFlags, arguments);\n return pad(hours, 2);\n },\n // Minute: 0, 1, ..., 59\n m: function m(date) {\n return date.getMinutes();\n },\n // Minute: 00, 01, ..., 59\n mm: function mm(date) {\n return pad(date.getMinutes(), 2);\n },\n // Second: 0, 1, ..., 59\n s: function s(date) {\n return date.getSeconds();\n },\n // Second: 00, 01, ..., 59\n ss: function ss(date) {\n return pad(date.getSeconds(), 2);\n },\n // 1/10 of second: 0, 1, ..., 9\n S: function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n // 1/100 of second: 00, 01, ..., 99\n SS: function SS(date) {\n return pad(Math.floor(date.getMilliseconds() / 10), 2);\n },\n // Millisecond: 000, 001, ..., 999\n SSS: function SSS(date) {\n return pad(date.getMilliseconds(), 3);\n },\n // Day of week: 0, 1, ..., 6\n d: function d(date) {\n return date.getDay();\n },\n // Day of week: 'Su', 'Mo', ..., 'Sa'\n dd: function dd(date, locale) {\n return locale.weekdaysMin[date.getDay()];\n },\n // Day of week: 'Sun', 'Mon',..., 'Sat'\n ddd: function ddd(date, locale) {\n return locale.weekdaysShort[date.getDay()];\n },\n // Day of week: 'Sunday', 'Monday', ...,'Saturday'\n dddd: function dddd(date, locale) {\n return locale.weekdays[date.getDay()];\n },\n // AM, PM\n A: function A(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), false);\n },\n // am, pm\n a: function a(date, locale) {\n var meridiemFunc = locale.meridiem || meridiem;\n return meridiemFunc(date.getHours(), date.getMinutes(), true);\n },\n // Timezone: -01:00, +00:00, ... +12:00\n Z: function Z(date) {\n return formatTimezone(getOffset(date), ':');\n },\n // Timezone: -0100, +0000, ... +1200\n ZZ: function ZZ(date) {\n return formatTimezone(getOffset(date));\n },\n // Seconds timestamp: 512969520\n X: function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n // Milliseconds timestamp: 512969520900\n x: function x(date) {\n return date.getTime();\n },\n w: function w(date, locale) {\n return getWeek(date, {\n firstDayOfWeek: locale.firstDayOfWeek,\n firstWeekContainsDate: locale.firstWeekContainsDate\n });\n },\n ww: function ww(date, locale) {\n return pad(formatFlags.w(date, locale), 2);\n }\n};\nexport function format(val, str) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var date = toDate(val);\n\n if (!isValidDate(date)) {\n return 'Invalid Date';\n }\n\n var locale = options.locale || defaultLocale;\n return formatStr.replace(REGEX_FORMAT, function (match, p1) {\n if (p1) {\n return p1;\n }\n\n if (typeof formatFlags[match] === 'function') {\n return \"\".concat(formatFlags[match](date, locale));\n }\n\n return match;\n });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport defaultLocale from './locale/en';\nimport { startOfWeekYear } from './util';\nvar formattingTokens = /(\\[[^\\[]*\\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchShortOffset = /[+-]\\d\\d:?\\d\\d/; // +00:00 -00:00 +0000 or -0000\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i; // Word\n\nvar YEAR = 'year';\nvar MONTH = 'month';\nvar DAY = 'day';\nvar HOUR = 'hour';\nvar MINUTE = 'minute';\nvar SECOND = 'second';\nvar MILLISECOND = 'millisecond';\nvar parseFlags = {};\n\nvar addParseFlag = function addParseFlag(token, regex, callback) {\n var tokens = Array.isArray(token) ? token : [token];\n var func;\n\n if (typeof callback === 'string') {\n func = function func(input) {\n var value = parseInt(input, 10);\n return _defineProperty({}, callback, value);\n };\n } else {\n func = callback;\n }\n\n tokens.forEach(function (key) {\n parseFlags[key] = [regex, func];\n });\n};\n\nvar escapeStringRegExp = function escapeStringRegExp(str) {\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nvar matchWordRegExp = function matchWordRegExp(localeKey) {\n return function (locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n return new RegExp(array.map(escapeStringRegExp).join('|'));\n };\n};\n\nvar matchWordCallback = function matchWordCallback(localeKey, key) {\n return function (input, locale) {\n var array = locale[localeKey];\n\n if (!Array.isArray(array)) {\n throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n }\n\n var index = array.indexOf(input);\n\n if (index < 0) {\n throw new Error('Invalid Word');\n }\n\n return _defineProperty({}, key, index);\n };\n};\n\naddParseFlag('Y', matchSigned, YEAR);\naddParseFlag('YY', match2, function (input) {\n var year = new Date().getFullYear();\n var cent = Math.floor(year / 100);\n var value = parseInt(input, 10);\n value = (value > 68 ? cent - 1 : cent) * 100 + value;\n return _defineProperty({}, YEAR, value);\n});\naddParseFlag('YYYY', match4, YEAR);\naddParseFlag('M', match1to2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MM', match2, function (input) {\n return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH));\naddParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH));\naddParseFlag('D', match1to2, DAY);\naddParseFlag('DD', match2, DAY);\naddParseFlag(['H', 'h'], match1to2, HOUR);\naddParseFlag(['HH', 'hh'], match2, HOUR);\naddParseFlag('m', match1to2, MINUTE);\naddParseFlag('mm', match2, MINUTE);\naddParseFlag('s', match1to2, SECOND);\naddParseFlag('ss', match2, SECOND);\naddParseFlag('S', match1, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100);\n});\naddParseFlag('SS', match2, function (input) {\n return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10);\n});\naddParseFlag('SSS', match3, MILLISECOND);\n\nfunction matchMeridiem(locale) {\n return locale.meridiemParse || /[ap]\\.?m?\\.?/i;\n}\n\nfunction defaultIsPM(input) {\n return \"\".concat(input).toLowerCase().charAt(0) === 'p';\n}\n\naddParseFlag(['A', 'a'], matchMeridiem, function (input, locale) {\n var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input);\n return {\n isPM: isPM\n };\n});\n\nfunction offsetFromString(str) {\n var _ref8 = str.match(/([+-]|\\d\\d)/g) || ['-', '0', '0'],\n _ref9 = _slicedToArray(_ref8, 3),\n symbol = _ref9[0],\n hour = _ref9[1],\n minute = _ref9[2];\n\n var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10);\n\n if (minutes === 0) {\n return 0;\n }\n\n return symbol === '+' ? -minutes : +minutes;\n}\n\naddParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) {\n return {\n offset: offsetFromString(input)\n };\n});\naddParseFlag('x', matchSigned, function (input) {\n return {\n date: new Date(parseInt(input, 10))\n };\n});\naddParseFlag('X', matchTimestamp, function (input) {\n return {\n date: new Date(parseFloat(input) * 1000)\n };\n});\naddParseFlag('d', match1, 'weekday');\naddParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday'));\naddParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday'));\naddParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday'));\naddParseFlag('w', match1to2, 'week');\naddParseFlag('ww', match2, 'week');\n\nfunction to24hour(hour, isPM) {\n if (hour !== undefined && isPM !== undefined) {\n if (isPM) {\n if (hour < 12) {\n return hour + 12;\n }\n } else if (hour === 12) {\n return 0;\n }\n }\n\n return hour;\n}\n\nfunction getFullInputArray(input) {\n var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n var result = [0, 0, 1, 0, 0, 0, 0];\n var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()];\n var useBackup = true;\n\n for (var i = 0; i < 7; i++) {\n if (input[i] === undefined) {\n result[i] = useBackup ? backupArr[i] : result[i];\n } else {\n result[i] = input[i];\n useBackup = false;\n }\n }\n\n return result;\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n var date;\n\n if (y < 100 && y >= 0) {\n date = new Date(y + 400, m, d, h, M, s, ms);\n\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n}\n\nfunction createUTCDate() {\n var date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var y = args[0];\n\n if (y < 100 && y >= 0) {\n args[0] += 400;\n date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals\n\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(Date, args));\n }\n\n return date;\n}\n\nfunction makeParser(dateString, format, locale) {\n var tokens = format.match(formattingTokens);\n\n if (!tokens) {\n throw new Error();\n }\n\n var length = tokens.length;\n var mark = {};\n\n for (var i = 0; i < length; i += 1) {\n var token = tokens[i];\n var parseTo = parseFlags[token];\n\n if (!parseTo) {\n var word = token.replace(/^\\[|\\]$/g, '');\n\n if (dateString.indexOf(word) === 0) {\n dateString = dateString.substr(word.length);\n } else {\n throw new Error('not match');\n }\n } else {\n var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0];\n var parser = parseTo[1];\n var value = (regex.exec(dateString) || [])[0];\n var obj = parser(value, locale);\n mark = _objectSpread({}, mark, {}, obj);\n dateString = dateString.replace(value, '');\n }\n }\n\n return mark;\n}\n\nexport function parse(str, format) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n try {\n var _options$locale = options.locale,\n _locale = _options$locale === void 0 ? defaultLocale : _options$locale,\n _options$backupDate = options.backupDate,\n backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate;\n\n var parseResult = makeParser(str, format, _locale);\n var year = parseResult.year,\n month = parseResult.month,\n day = parseResult.day,\n hour = parseResult.hour,\n minute = parseResult.minute,\n second = parseResult.second,\n millisecond = parseResult.millisecond,\n isPM = parseResult.isPM,\n date = parseResult.date,\n offset = parseResult.offset,\n weekday = parseResult.weekday,\n week = parseResult.week;\n\n if (date) {\n return date;\n }\n\n var inputArray = [year, month, day, hour, minute, second, millisecond];\n inputArray[3] = to24hour(inputArray[3], isPM); // check week\n\n if (week !== undefined && month === undefined && day === undefined) {\n // new Date(year, 3) make sure in current year\n var firstDate = startOfWeekYear(year === undefined ? backupDate : new Date(year, 3), {\n firstDayOfWeek: _locale.firstDayOfWeek,\n firstWeekContainsDate: _locale.firstWeekContainsDate\n });\n return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000);\n }\n\n var parsedDate;\n var result = getFullInputArray(inputArray, backupDate);\n\n if (offset !== undefined) {\n result[6] += offset * 60 * 1000;\n parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result));\n } else {\n parsedDate = createDate.apply(void 0, _toConsumableArray(result));\n } // check weekday\n\n\n if (weekday !== undefined && parsedDate.getDay() !== weekday) {\n return new Date(NaN);\n }\n\n return parsedDate;\n } catch (e) {\n return new Date(NaN);\n }\n}","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nimport { inject, shallowRef, computed, provide, ref, watchEffect, createVNode, Teleport, Transition, openBlock, createElementBlock, createElementVNode, toRef, defineComponent, onMounted, onUnmounted, isVNode, watch, h } from \"vue\";\nimport { getWeek, format, parse } from \"date-format-parse\";\nimport en from \"date-format-parse/es/locale/en\";\nconst lang = {\n formatLocale: en,\n yearFormat: \"YYYY\",\n monthFormat: \"MMM\",\n monthBeforeYear: true\n};\nlet defaultLocale = \"en\";\nconst locales = {};\nlocales[defaultLocale] = lang;\nfunction locale(name, object, isLocal = false) {\n if (typeof name !== \"string\")\n return locales[defaultLocale];\n let l = defaultLocale;\n if (locales[name]) {\n l = name;\n }\n if (object) {\n locales[name] = object;\n l = name;\n }\n if (!isLocal) {\n defaultLocale = l;\n }\n return locales[name] || locales[defaultLocale];\n}\nfunction getLocale(name) {\n return locale(name, void 0, true);\n}\nfunction chunk(arr, size) {\n if (!Array.isArray(arr)) {\n return [];\n }\n const result = [];\n const len = arr.length;\n let i = 0;\n size = size || len;\n while (i < len) {\n result.push(arr.slice(i, i += size));\n }\n return result;\n}\nfunction last(array) {\n return Array.isArray(array) ? array[array.length - 1] : void 0;\n}\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction pick(obj, props) {\n const res = {};\n if (!isPlainObject(obj))\n return res;\n if (!Array.isArray(props)) {\n props = [props];\n }\n props.forEach((prop) => {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n res[prop] = obj[prop];\n }\n });\n return res;\n}\nfunction mergeDeep(target, source) {\n if (!isPlainObject(target)) {\n return {};\n }\n let result = target;\n if (isPlainObject(source)) {\n Object.keys(source).forEach((key) => {\n let value = source[key];\n const targetValue = target[key];\n if (isPlainObject(value) && isPlainObject(targetValue)) {\n value = mergeDeep(targetValue, value);\n }\n result = __spreadProps(__spreadValues({}, result), { [key]: value });\n });\n }\n return result;\n}\nfunction padNumber(value) {\n const num = parseInt(String(value), 10);\n return num < 10 ? `0${num}` : `${num}`;\n}\nfunction camelcase(str) {\n const camelizeRE = /-(\\w)/g;\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n}\nconst localeContextKey = \"datepicker_locale\";\nconst prefixClassKey = \"datepicker_prefixClass\";\nconst getWeekKey = \"datepicker_getWeek\";\nfunction useLocale() {\n return inject(localeContextKey, shallowRef(getLocale()));\n}\nfunction provideLocale(lang2) {\n const locale2 = computed(() => {\n if (isPlainObject(lang2.value)) {\n return mergeDeep(getLocale(), lang2.value);\n }\n return getLocale(lang2.value);\n });\n provide(localeContextKey, locale2);\n return locale2;\n}\nfunction providePrefixClass(value) {\n provide(prefixClassKey, value);\n}\nfunction usePrefixClass() {\n return inject(prefixClassKey, \"mx\");\n}\nfunction provideGetWeek(value) {\n provide(getWeekKey, value);\n}\nfunction useGetWeek() {\n return inject(getWeekKey, getWeek);\n}\nfunction getPopupElementSize(element) {\n const originalDisplay = element.style.display;\n const originalVisibility = element.style.visibility;\n element.style.display = \"block\";\n element.style.visibility = \"hidden\";\n const styles = window.getComputedStyle(element);\n const width = element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10);\n const height = element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10);\n element.style.display = originalDisplay;\n element.style.visibility = originalVisibility;\n return { width, height };\n}\nfunction getRelativePosition(el, targetWidth, targetHeight, fixed) {\n let left = 0;\n let top = 0;\n let offsetX = 0;\n let offsetY = 0;\n const relativeRect = el.getBoundingClientRect();\n const dw = document.documentElement.clientWidth;\n const dh = document.documentElement.clientHeight;\n if (fixed) {\n offsetX = window.pageXOffset + relativeRect.left;\n offsetY = window.pageYOffset + relativeRect.top;\n }\n if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) {\n left = offsetX - relativeRect.left + 1;\n } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) {\n left = offsetX;\n } else {\n left = offsetX + relativeRect.width - targetWidth;\n }\n if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) {\n top = offsetY + dh - relativeRect.top - targetHeight;\n } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) {\n top = offsetY + relativeRect.height;\n } else {\n top = offsetY - targetHeight;\n }\n return { left: `${left}px`, top: `${top}px` };\n}\nfunction getScrollParent(node, until = document.body) {\n if (!node || node === until) {\n return null;\n }\n const style = (value, prop) => getComputedStyle(value, null).getPropertyValue(prop);\n const regex = /(auto|scroll)/;\n const scroll = regex.test(style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\"));\n return scroll ? node : getScrollParent(node.parentElement, until);\n}\nlet scrollBarWidth;\nfunction getScrollbarWidth() {\n if (typeof window === \"undefined\")\n return 0;\n if (scrollBarWidth !== void 0)\n return scrollBarWidth;\n const outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.overflow = \"scroll\";\n outer.style.width = \"100px\";\n outer.style.position = \"absolute\";\n outer.style.top = \"-9999px\";\n document.body.appendChild(outer);\n const inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n scrollBarWidth = outer.offsetWidth - inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return scrollBarWidth;\n}\nconst mousedownEvent = \"ontouchend\" in document ? \"touchstart\" : \"mousedown\";\nfunction rafThrottle(fn) {\n let isRunning = false;\n return function fnBinfRaf(...args) {\n if (isRunning)\n return;\n isRunning = true;\n requestAnimationFrame(() => {\n isRunning = false;\n fn.apply(this, args);\n });\n };\n}\nfunction defineVueComponent(setup, props) {\n return { setup, name: setup.name, props };\n}\nfunction withDefault(props, defaultProps) {\n const result = new Proxy(props, {\n get(target, key) {\n const value = target[key];\n if (value !== void 0) {\n return value;\n }\n return defaultProps[key];\n }\n });\n return result;\n}\nconst keys = () => (props) => props;\nconst resolveProps = (obj, booleanKeys2) => {\n const props = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const camelizeKey = camelcase(key);\n let value = obj[key];\n if (booleanKeys2.indexOf(camelizeKey) !== -1 && value === \"\") {\n value = true;\n }\n props[camelizeKey] = value;\n }\n }\n return props;\n};\nfunction Popup(originalProps, {\n slots\n}) {\n const props = withDefault(originalProps, {\n appendToBody: true\n });\n const prefixClass = usePrefixClass();\n const popup = ref(null);\n const position = ref({\n left: \"\",\n top: \"\"\n });\n const displayPopup = () => {\n if (!props.visible || !popup.value)\n return;\n const relativeElement = props.getRelativeElement();\n if (!relativeElement)\n return;\n const {\n width,\n height\n } = getPopupElementSize(popup.value);\n position.value = getRelativePosition(relativeElement, width, height, props.appendToBody);\n };\n watchEffect(displayPopup, {\n flush: \"post\"\n });\n watchEffect((onInvalidate) => {\n const relativeElement = props.getRelativeElement();\n if (!relativeElement)\n return;\n const scrollElement = getScrollParent(relativeElement) || window;\n const handleMove = rafThrottle(displayPopup);\n scrollElement.addEventListener(\"scroll\", handleMove);\n window.addEventListener(\"resize\", handleMove);\n onInvalidate(() => {\n scrollElement.removeEventListener(\"scroll\", handleMove);\n window.removeEventListener(\"resize\", handleMove);\n });\n }, {\n flush: \"post\"\n });\n const handleClickOutside = (evt) => {\n if (!props.visible)\n return;\n const target = evt.target;\n const el = popup.value;\n const relativeElement = props.getRelativeElement();\n if (el && !el.contains(target) && relativeElement && !relativeElement.contains(target)) {\n props.onClickOutside(evt);\n }\n };\n watchEffect((onInvalidate) => {\n document.addEventListener(mousedownEvent, handleClickOutside);\n onInvalidate(() => {\n document.removeEventListener(mousedownEvent, handleClickOutside);\n });\n });\n return () => {\n return createVNode(Teleport, {\n \"to\": \"body\",\n \"disabled\": !props.appendToBody\n }, {\n default: () => [createVNode(Transition, {\n \"name\": `${prefixClass}-zoom-in-down`\n }, {\n default: () => {\n var _a;\n return [props.visible && createVNode(\"div\", {\n \"ref\": popup,\n \"class\": `${prefixClass}-datepicker-main ${prefixClass}-datepicker-popup ${props.className}`,\n \"style\": [__spreadValues({\n position: \"absolute\"\n }, position.value), props.style || {}]\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])];\n }\n })]\n });\n };\n}\nconst popupProps = keys()([\"style\", \"className\", \"visible\", \"appendToBody\", \"onClickOutside\", \"getRelativeElement\"]);\nvar Popup$1 = defineVueComponent(Popup, popupProps);\nconst _hoisted_1$2 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\",\n width: \"1em\",\n height: \"1em\"\n};\nconst _hoisted_2$2 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M940.218 107.055H730.764v-60.51H665.6v60.51H363.055v-60.51H297.89v60.51H83.78c-18.617 0-32.581 13.963-32.581 32.581v805.237c0 18.618 13.964 32.582 32.582 32.582h861.09c18.619 0 32.583-13.964 32.583-32.582V139.636c-4.655-18.618-18.619-32.581-37.237-32.581zm-642.327 65.163v60.51h65.164v-60.51h307.2v60.51h65.163v-60.51h176.873v204.8H116.364v-204.8H297.89zM116.364 912.291V442.18H912.29v470.11H116.364z\" }, null, -1);\nconst _hoisted_3$2 = [\n _hoisted_2$2\n];\nfunction render$2(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$2, _hoisted_3$2);\n}\nconst _hoisted_1$1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 1024\",\n width: \"1em\",\n height: \"1em\"\n};\nconst _hoisted_2$1 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M810.005 274.005 572.011 512l237.994 237.995-60.01 60.01L512 572.011 274.005 810.005l-60.01-60.01L451.989 512 213.995 274.005l60.01-60.01L512 451.989l237.995-237.994z\" }, null, -1);\nconst _hoisted_3$1 = [\n _hoisted_2$1\n];\nfunction render$1(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$1, _hoisted_3$1);\n}\nconst _hoisted_1 = {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n};\nconst _hoisted_2 = /* @__PURE__ */ createElementVNode(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n}, null, -1);\nconst _hoisted_3 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" }, null, -1);\nconst _hoisted_4 = /* @__PURE__ */ createElementVNode(\"path\", { d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\" }, null, -1);\nconst _hoisted_5 = [\n _hoisted_2,\n _hoisted_3,\n _hoisted_4\n];\nfunction render(_ctx, _cache) {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1, _hoisted_5);\n}\nfunction createDate(y, M = 0, d = 1, h2 = 0, m = 0, s = 0, ms = 0) {\n const date = new Date(y, M, d, h2, m, s, ms);\n if (y < 100 && y >= 0) {\n date.setFullYear(y);\n }\n return date;\n}\nfunction isValidDate(date) {\n return date instanceof Date && !isNaN(date.getTime());\n}\nfunction isValidRangeDate(dates) {\n return Array.isArray(dates) && dates.length === 2 && dates.every(isValidDate) && dates[0] <= dates[1];\n}\nfunction isValidDates(dates) {\n return Array.isArray(dates) && dates.every(isValidDate);\n}\nfunction getValidDate(...values) {\n if (values[0] !== void 0 && values[0] !== null) {\n const date = new Date(values[0]);\n if (isValidDate(date)) {\n return date;\n }\n }\n const rest = values.slice(1);\n if (rest.length) {\n return getValidDate(...rest);\n }\n return new Date();\n}\nfunction startOfYear(value) {\n const date = new Date(value);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfMonth(value) {\n const date = new Date(value);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction startOfDay(value) {\n const date = new Date(value);\n date.setHours(0, 0, 0, 0);\n return date;\n}\nfunction getCalendar({\n firstDayOfWeek,\n year,\n month\n}) {\n const arr = [];\n const calendar = createDate(year, month, 0);\n const lastDayInLastMonth = calendar.getDate();\n const firstDayInLastMonth = lastDayInLastMonth - (calendar.getDay() + 7 - firstDayOfWeek) % 7;\n for (let i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) {\n arr.push(createDate(year, month, i - lastDayInLastMonth));\n }\n calendar.setMonth(month + 1, 0);\n const lastDayInCurrentMonth = calendar.getDate();\n for (let i = 1; i <= lastDayInCurrentMonth; i++) {\n arr.push(createDate(year, month, i));\n }\n const lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1;\n const nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth;\n for (let i = 1; i <= nextMonthLength; i++) {\n arr.push(createDate(year, month, lastDayInCurrentMonth + i));\n }\n return arr;\n}\nfunction setMonth(dirtyDate, dirtyMonth) {\n const date = new Date(dirtyDate);\n const month = typeof dirtyMonth === \"function\" ? dirtyMonth(date.getMonth()) : Number(dirtyMonth);\n const year = date.getFullYear();\n const daysInMonth = createDate(year, month + 1, 0).getDate();\n const day = date.getDate();\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\nfunction setYear(dirtyDate, dirtyYear) {\n const date = new Date(dirtyDate);\n const year = typeof dirtyYear === \"function\" ? dirtyYear(date.getFullYear()) : dirtyYear;\n date.setFullYear(year);\n return date;\n}\nfunction diffCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n const dateRight = new Date(dirtyDateRight);\n const dateLeft = new Date(dirtyDateLeft);\n const yearDiff = dateRight.getFullYear() - dateLeft.getFullYear();\n const monthDiff = dateRight.getMonth() - dateLeft.getMonth();\n return yearDiff * 12 + monthDiff;\n}\nfunction assignTime(target, source) {\n const date = new Date(target);\n const time = new Date(source);\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds());\n return date;\n}\nfunction PickerInput(originalProps, {\n slots\n}) {\n const props = withDefault(originalProps, {\n editable: true,\n disabled: false,\n clearable: true,\n range: false,\n multiple: false\n });\n const prefixClass = usePrefixClass();\n const userInput = ref(null);\n const innerSeparator = computed(() => {\n return props.separator || (props.range ? \" ~ \" : \",\");\n });\n const isValidValue = (value) => {\n if (props.range) {\n return isValidRangeDate(value);\n }\n if (props.multiple) {\n return isValidDates(value);\n }\n return isValidDate(value);\n };\n const isDisabledValue = (value) => {\n if (Array.isArray(value)) {\n return value.some((v) => props.disabledDate(v));\n }\n return props.disabledDate(value);\n };\n const text = computed(() => {\n if (userInput.value !== null) {\n return userInput.value;\n }\n if (typeof props.renderInputText === \"function\") {\n return props.renderInputText(props.value);\n }\n if (!isValidValue(props.value)) {\n return \"\";\n }\n if (Array.isArray(props.value)) {\n return props.value.map((v) => props.formatDate(v)).join(innerSeparator.value);\n }\n return props.formatDate(props.value);\n });\n const handleClear = (evt) => {\n var _a;\n if (evt) {\n evt.stopPropagation();\n }\n props.onChange(props.range ? [null, null] : null);\n (_a = props.onClear) == null ? void 0 : _a.call(props);\n };\n const handleChange = () => {\n var _a;\n if (!props.editable || userInput.value === null)\n return;\n const text2 = userInput.value.trim();\n userInput.value = null;\n if (text2 === \"\") {\n handleClear();\n return;\n }\n let date;\n if (props.range) {\n let arr = text2.split(innerSeparator.value);\n if (arr.length !== 2) {\n arr = text2.split(innerSeparator.value.trim());\n }\n date = arr.map((v) => props.parseDate(v.trim()));\n } else if (props.multiple) {\n date = text2.split(innerSeparator.value).map((v) => props.parseDate(v.trim()));\n } else {\n date = props.parseDate(text2);\n }\n if (isValidValue(date) && !isDisabledValue(date)) {\n props.onChange(date);\n } else {\n (_a = props.onInputError) == null ? void 0 : _a.call(props, text2);\n }\n };\n const handleInput = (evt) => {\n userInput.value = typeof evt === \"string\" ? evt : evt.target.value;\n };\n const handleKeydown = (evt) => {\n const {\n keyCode\n } = evt;\n if (keyCode === 9) {\n props.onBlur();\n } else if (keyCode === 13) {\n handleChange();\n }\n };\n return () => {\n var _a, _b, _c;\n const showClearIcon = !props.disabled && props.clearable && text.value;\n const inputProps = __spreadProps(__spreadValues({\n name: \"date\",\n type: \"text\",\n autocomplete: \"off\",\n value: text.value,\n class: props.inputClass || `${prefixClass}-input`,\n readonly: !props.editable,\n disabled: props.disabled,\n placeholder: props.placeholder\n }, props.inputAttr), {\n onFocus: props.onFocus,\n onKeydown: handleKeydown,\n onInput: handleInput,\n onChange: handleChange\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-input-wrapper`,\n \"onClick\": props.onClick\n }, [((_a = slots.input) == null ? void 0 : _a.call(slots, inputProps)) || createVNode(\"input\", inputProps, null), showClearIcon ? createVNode(\"i\", {\n \"class\": `${prefixClass}-icon-clear`,\n \"onClick\": handleClear\n }, [((_b = slots[\"icon-clear\"]) == null ? void 0 : _b.call(slots)) || createVNode(render$1, null, null)]) : null, createVNode(\"i\", {\n \"class\": `${prefixClass}-icon-calendar`\n }, [((_c = slots[\"icon-calendar\"]) == null ? void 0 : _c.call(slots)) || createVNode(render$2, null, null)])]);\n };\n}\nconst pickerInputBaseProps = keys()([\"placeholder\", \"editable\", \"disabled\", \"clearable\", \"inputClass\", \"inputAttr\", \"range\", \"multiple\", \"separator\", \"renderInputText\", \"onInputError\", \"onClear\"]);\nconst pickerInputProps = keys()([\"value\", \"formatDate\", \"parseDate\", \"disabledDate\", \"onChange\", \"onFocus\", \"onBlur\", \"onClick\", ...pickerInputBaseProps]);\nvar PickerInput$1 = defineVueComponent(PickerInput, pickerInputProps);\nfunction Picker(originalProps, {\n slots\n}) {\n var _a;\n const props = withDefault(originalProps, {\n prefixClass: \"mx\",\n valueType: \"date\",\n format: \"YYYY-MM-DD\",\n type: \"date\",\n disabledDate: () => false,\n disabledTime: () => false,\n confirmText: \"OK\"\n });\n providePrefixClass(props.prefixClass);\n provideGetWeek(((_a = props.formatter) == null ? void 0 : _a.getWeek) || getWeek);\n const locale2 = provideLocale(toRef(originalProps, \"lang\"));\n const container = ref();\n const getContainer = () => container.value;\n const defaultOpen = ref(false);\n const popupVisible = computed(() => {\n return !props.disabled && (typeof props.open === \"boolean\" ? props.open : defaultOpen.value);\n });\n const openPopup = () => {\n var _a2, _b;\n if (props.disabled || popupVisible.value)\n return;\n defaultOpen.value = true;\n (_a2 = props[\"onUpdate:open\"]) == null ? void 0 : _a2.call(props, true);\n (_b = props.onOpen) == null ? void 0 : _b.call(props);\n };\n const closePopup = () => {\n var _a2, _b;\n if (!popupVisible.value)\n return;\n defaultOpen.value = false;\n (_a2 = props[\"onUpdate:open\"]) == null ? void 0 : _a2.call(props, false);\n (_b = props.onClose) == null ? void 0 : _b.call(props);\n };\n const formatDate = (date, fmt) => {\n fmt = fmt || props.format;\n if (isPlainObject(props.formatter) && typeof props.formatter.stringify === \"function\") {\n return props.formatter.stringify(date, fmt);\n }\n return format(date, fmt, {\n locale: locale2.value.formatLocale\n });\n };\n const parseDate = (value, fmt) => {\n fmt = fmt || props.format;\n if (isPlainObject(props.formatter) && typeof props.formatter.parse === \"function\") {\n return props.formatter.parse(value, fmt);\n }\n const backupDate = new Date();\n return parse(value, fmt, {\n locale: locale2.value.formatLocale,\n backupDate\n });\n };\n const value2date = (value) => {\n switch (props.valueType) {\n case \"date\":\n return value instanceof Date ? new Date(value.getTime()) : new Date(NaN);\n case \"timestamp\":\n return typeof value === \"number\" ? new Date(value) : new Date(NaN);\n case \"format\":\n return typeof value === \"string\" ? parseDate(value) : new Date(NaN);\n default:\n return typeof value === \"string\" ? parseDate(value, props.valueType) : new Date(NaN);\n }\n };\n const date2value = (date) => {\n if (!isValidDate(date))\n return null;\n switch (props.valueType) {\n case \"date\":\n return date;\n case \"timestamp\":\n return date.getTime();\n case \"format\":\n return formatDate(date);\n default:\n return formatDate(date, props.valueType);\n }\n };\n const innerValue = computed(() => {\n const value = props.value;\n if (props.range) {\n return (Array.isArray(value) ? value.slice(0, 2) : [null, null]).map(value2date);\n }\n if (props.multiple) {\n return (Array.isArray(value) ? value : []).map(value2date);\n }\n return value2date(value);\n });\n const emitValue = (date, type, close = true) => {\n var _a2, _b;\n const value = Array.isArray(date) ? date.map(date2value) : date2value(date);\n (_a2 = props[\"onUpdate:value\"]) == null ? void 0 : _a2.call(props, value);\n (_b = props.onChange) == null ? void 0 : _b.call(props, value, type);\n if (close) {\n closePopup();\n }\n return value;\n };\n const currentValue = ref(new Date());\n watchEffect(() => {\n if (popupVisible.value) {\n currentValue.value = innerValue.value;\n }\n });\n const handleSelect = (val, type) => {\n if (props.confirm) {\n currentValue.value = val;\n } else {\n emitValue(val, type, !props.multiple && (type === props.type || type === \"time\"));\n }\n };\n const handleConfirm = () => {\n var _a2;\n const value = emitValue(currentValue.value);\n (_a2 = props.onConfirm) == null ? void 0 : _a2.call(props, value);\n };\n const disabledDateTime = (v) => {\n return props.disabledDate(v) || props.disabledTime(v);\n };\n const renderSidebar = (slotProps) => {\n var _a2;\n const {\n prefixClass\n } = props;\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-sidebar`\n }, [(_a2 = slots.sidebar) == null ? void 0 : _a2.call(slots, slotProps), (props.shortcuts || []).map((v, i) => createVNode(\"button\", {\n \"key\": i,\n \"data-index\": i,\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-shortcut`,\n \"onClick\": () => {\n var _a3;\n const date = (_a3 = v.onClick) == null ? void 0 : _a3.call(v);\n if (date) {\n emitValue(date);\n }\n }\n }, [v.text]))]);\n };\n return () => {\n var _a2, _b;\n const {\n prefixClass,\n disabled,\n confirm,\n range,\n popupClass,\n popupStyle,\n appendToBody\n } = props;\n const slotProps = {\n value: currentValue.value,\n [\"onUpdate:value\"]: handleSelect,\n emit: emitValue\n };\n const header = slots.header && createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-header`\n }, [slots.header(slotProps)]);\n const footer = (slots.footer || confirm) && createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-footer`\n }, [(_a2 = slots.footer) == null ? void 0 : _a2.call(slots, slotProps), confirm && createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-datepicker-btn-confirm`,\n \"onClick\": handleConfirm\n }, [props.confirmText])]);\n const content = (_b = slots.content) == null ? void 0 : _b.call(slots, slotProps);\n const sidedar = (slots.sidebar || props.shortcuts) && renderSidebar(slotProps);\n return createVNode(\"div\", {\n \"ref\": container,\n \"class\": {\n [`${prefixClass}-datepicker`]: true,\n [`${prefixClass}-datepicker-range`]: range,\n disabled\n }\n }, [createVNode(PickerInput$1, __spreadProps(__spreadValues({}, pick(props, pickerInputBaseProps)), {\n \"value\": innerValue.value,\n \"formatDate\": formatDate,\n \"parseDate\": parseDate,\n \"disabledDate\": disabledDateTime,\n \"onChange\": emitValue,\n \"onClick\": openPopup,\n \"onFocus\": openPopup,\n \"onBlur\": closePopup\n }), pick(slots, [\"icon-calendar\", \"icon-clear\", \"input\"])), createVNode(Popup$1, {\n \"className\": popupClass,\n \"style\": popupStyle,\n \"visible\": popupVisible.value,\n \"appendToBody\": appendToBody,\n \"getRelativeElement\": getContainer,\n \"onClickOutside\": closePopup\n }, {\n default: () => [sidedar, createVNode(\"div\", {\n \"class\": `${prefixClass}-datepicker-content`\n }, [header, content, footer])]\n })]);\n };\n}\nconst pickerbaseProps = keys()([\"value\", \"valueType\", \"type\", \"format\", \"formatter\", \"lang\", \"prefixClass\", \"appendToBody\", \"open\", \"popupClass\", \"popupStyle\", \"confirm\", \"confirmText\", \"shortcuts\", \"disabledDate\", \"disabledTime\", \"onOpen\", \"onClose\", \"onConfirm\", \"onChange\", \"onUpdate:open\", \"onUpdate:value\"]);\nconst pickerProps = [...pickerbaseProps, ...pickerInputBaseProps];\nvar Picker$1 = defineVueComponent(Picker, pickerProps);\nfunction ButtonIcon(_a) {\n var _b = _a, {\n value\n } = _b, rest = __objRest(_b, [\n \"value\"\n ]);\n const prefixClass = usePrefixClass();\n return createVNode(\"button\", __spreadProps(__spreadValues({}, rest), {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-icon-${value}`\n }), [createVNode(\"i\", {\n \"class\": `${prefixClass}-icon-${value}`\n }, null)]);\n}\nfunction TableHeader({\n type,\n calendar,\n onUpdateCalendar\n}, {\n slots\n}) {\n var _a;\n const prefixClass = usePrefixClass();\n const lastMonth = () => {\n onUpdateCalendar(setMonth(calendar, (v) => v - 1));\n };\n const nextMonth = () => {\n onUpdateCalendar(setMonth(calendar, (v) => v + 1));\n };\n const lastYear = () => {\n onUpdateCalendar(setYear(calendar, (v) => v - 1));\n };\n const nextYear = () => {\n onUpdateCalendar(setYear(calendar, (v) => v + 1));\n };\n const lastDecade = () => {\n onUpdateCalendar(setYear(calendar, (v) => v - 10));\n };\n const nextDecade = () => {\n onUpdateCalendar(setYear(calendar, (v) => v + 10));\n };\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-header`\n }, [createVNode(ButtonIcon, {\n \"value\": \"double-left\",\n \"onClick\": type === \"year\" ? lastDecade : lastYear\n }, null), type === \"date\" && createVNode(ButtonIcon, {\n \"value\": \"left\",\n \"onClick\": lastMonth\n }, null), createVNode(ButtonIcon, {\n \"value\": \"double-right\",\n \"onClick\": type === \"year\" ? nextDecade : nextYear\n }, null), type === \"date\" && createVNode(ButtonIcon, {\n \"value\": \"right\",\n \"onClick\": nextMonth\n }, null), createVNode(\"span\", {\n \"class\": `${prefixClass}-calendar-header-label`\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])]);\n}\nfunction TableDate({\n calendar,\n isWeekMode,\n showWeekNumber,\n titleFormat,\n getWeekActive,\n getCellClasses,\n onSelect,\n onUpdatePanel,\n onUpdateCalendar,\n onDateMouseEnter,\n onDateMouseLeave\n}) {\n const prefixClass = usePrefixClass();\n const getWeekNumber = useGetWeek();\n const locale2 = useLocale().value;\n const {\n yearFormat,\n monthBeforeYear,\n monthFormat = \"MMM\",\n formatLocale\n } = locale2;\n const firstDayOfWeek = formatLocale.firstDayOfWeek || 0;\n let days = locale2.days || formatLocale.weekdaysMin;\n days = days.concat(days).slice(firstDayOfWeek, firstDayOfWeek + 7);\n const year = calendar.getFullYear();\n const month = calendar.getMonth();\n const dates = chunk(getCalendar({\n firstDayOfWeek,\n year,\n month\n }), 7);\n const formatDate = (date, fmt) => {\n return format(date, fmt, {\n locale: locale2.formatLocale\n });\n };\n const handlePanelChange = (panel) => {\n onUpdatePanel(panel);\n };\n const getCellDate = (el) => {\n const index2 = el.getAttribute(\"data-index\");\n const [row, col] = index2.split(\",\").map((v) => parseInt(v, 10));\n const value = dates[row][col];\n return new Date(value);\n };\n const handleCellClick = (evt) => {\n onSelect(getCellDate(evt.currentTarget));\n };\n const handleMouseEnter = (evt) => {\n if (onDateMouseEnter) {\n onDateMouseEnter(getCellDate(evt.currentTarget));\n }\n };\n const handleMouseLeave = (evt) => {\n if (onDateMouseLeave) {\n onDateMouseLeave(getCellDate(evt.currentTarget));\n }\n };\n const yearLabel = createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-current-year`,\n \"onClick\": () => handlePanelChange(\"year\")\n }, [formatDate(calendar, yearFormat)]);\n const monthLabel = createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-current-month`,\n \"onClick\": () => handlePanelChange(\"month\")\n }, [formatDate(calendar, monthFormat)]);\n showWeekNumber = typeof showWeekNumber === \"boolean\" ? showWeekNumber : isWeekMode;\n return createVNode(\"div\", {\n \"class\": [`${prefixClass}-calendar ${prefixClass}-calendar-panel-date`, {\n [`${prefixClass}-calendar-week-mode`]: isWeekMode\n }]\n }, [createVNode(TableHeader, {\n \"type\": \"date\",\n \"calendar\": calendar,\n \"onUpdateCalendar\": onUpdateCalendar\n }, {\n default: () => [monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel]]\n }), createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-content`\n }, [createVNode(\"table\", {\n \"class\": `${prefixClass}-table ${prefixClass}-table-date`\n }, [createVNode(\"thead\", null, [createVNode(\"tr\", null, [showWeekNumber && createVNode(\"th\", {\n \"class\": `${prefixClass}-week-number-header`\n }, null), days.map((day) => createVNode(\"th\", {\n \"key\": day\n }, [day]))])]), createVNode(\"tbody\", null, [dates.map((row, i) => createVNode(\"tr\", {\n \"key\": i,\n \"class\": [`${prefixClass}-date-row`, {\n [`${prefixClass}-active-week`]: getWeekActive(row)\n }]\n }, [showWeekNumber && createVNode(\"td\", {\n \"class\": `${prefixClass}-week-number`,\n \"data-index\": `${i},0`,\n \"onClick\": handleCellClick\n }, [createVNode(\"div\", null, [getWeekNumber(row[0])])]), row.map((cell, j) => createVNode(\"td\", {\n \"key\": j,\n \"class\": [\"cell\", getCellClasses(cell)],\n \"title\": formatDate(cell, titleFormat),\n \"data-index\": `${i},${j}`,\n \"onClick\": handleCellClick,\n \"onMouseenter\": handleMouseEnter,\n \"onMouseleave\": handleMouseLeave\n }, [createVNode(\"div\", null, [cell.getDate()])]))]))])])])]);\n}\nfunction TableMonth({\n calendar,\n getCellClasses,\n onSelect,\n onUpdateCalendar,\n onUpdatePanel\n}) {\n const prefixClass = usePrefixClass();\n const locale2 = useLocale().value;\n const months = locale2.months || locale2.formatLocale.monthsShort;\n const getDate = (month) => {\n return createDate(calendar.getFullYear(), month);\n };\n const handleClick = (evt) => {\n const target = evt.currentTarget;\n const month = target.getAttribute(\"data-month\");\n onSelect(getDate(parseInt(month, 10)));\n };\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar ${prefixClass}-calendar-panel-month`\n }, [createVNode(TableHeader, {\n \"type\": \"month\",\n \"calendar\": calendar,\n \"onUpdateCalendar\": onUpdateCalendar\n }, {\n default: () => [createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-current-year`,\n \"onClick\": () => onUpdatePanel(\"year\")\n }, [calendar.getFullYear()])]\n }), createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-content`\n }, [createVNode(\"table\", {\n \"class\": `${prefixClass}-table ${prefixClass}-table-month`\n }, [chunk(months, 3).map((row, i) => createVNode(\"tr\", {\n \"key\": i\n }, [row.map((cell, j) => {\n const month = i * 3 + j;\n return createVNode(\"td\", {\n \"key\": j,\n \"class\": [\"cell\", getCellClasses(getDate(month))],\n \"data-month\": month,\n \"onClick\": handleClick\n }, [createVNode(\"div\", null, [cell])]);\n })]))])])]);\n}\nconst getDefaultYears = (calendar) => {\n const firstYear = Math.floor(calendar.getFullYear() / 10) * 10;\n const years = [];\n for (let i = 0; i < 10; i++) {\n years.push(firstYear + i);\n }\n return chunk(years, 2);\n};\nfunction TableYear({\n calendar,\n getCellClasses = () => [],\n getYearPanel = getDefaultYears,\n onSelect,\n onUpdateCalendar\n}) {\n const prefixClass = usePrefixClass();\n const getDate = (year) => {\n return createDate(year, 0);\n };\n const handleClick = (evt) => {\n const target = evt.currentTarget;\n const year = target.getAttribute(\"data-year\");\n onSelect(getDate(parseInt(year, 10)));\n };\n const years = getYearPanel(new Date(calendar));\n const firstYear = years[0][0];\n const lastYear = last(last(years));\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar ${prefixClass}-calendar-panel-year`\n }, [createVNode(TableHeader, {\n \"type\": \"year\",\n \"calendar\": calendar,\n \"onUpdateCalendar\": onUpdateCalendar\n }, {\n default: () => [createVNode(\"span\", null, [firstYear]), createVNode(\"span\", {\n \"class\": `${prefixClass}-calendar-decade-separator`\n }, null), createVNode(\"span\", null, [lastYear])]\n }), createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-content`\n }, [createVNode(\"table\", {\n \"class\": `${prefixClass}-table ${prefixClass}-table-year`\n }, [years.map((row, i) => createVNode(\"tr\", {\n \"key\": i\n }, [row.map((cell, j) => createVNode(\"td\", {\n \"key\": j,\n \"class\": [\"cell\", getCellClasses(getDate(cell))],\n \"data-year\": cell,\n \"onClick\": handleClick\n }, [createVNode(\"div\", null, [cell])]))]))])])]);\n}\nfunction Calendar(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n type: \"date\",\n disabledDate: () => false,\n getClasses: () => [],\n titleFormat: \"YYYY-MM-DD\"\n });\n const innerValue = computed(() => {\n const value = Array.isArray(props.value) ? props.value : [props.value];\n return value.filter(isValidDate).map((v) => {\n if (props.type === \"year\")\n return startOfYear(v);\n if (props.type === \"month\")\n return startOfMonth(v);\n return startOfDay(v);\n });\n });\n const innerCalendar = ref(new Date());\n watchEffect(() => {\n let calendarDate = props.calendar;\n if (!isValidDate(calendarDate)) {\n const {\n length\n } = innerValue.value;\n calendarDate = getValidDate(length > 0 ? innerValue.value[length - 1] : props.defaultValue);\n }\n innerCalendar.value = startOfMonth(calendarDate);\n });\n const handleCalendarChange = (calendar) => {\n var _a;\n innerCalendar.value = calendar;\n (_a = props.onCalendarChange) == null ? void 0 : _a.call(props, calendar);\n };\n const panel = ref(\"date\");\n watchEffect(() => {\n const panels = [\"date\", \"month\", \"year\"];\n const index2 = Math.max(panels.indexOf(props.type), panels.indexOf(props.defaultPanel));\n panel.value = index2 !== -1 ? panels[index2] : \"date\";\n });\n const handelPanelChange = (value) => {\n var _a;\n const oldPanel = panel.value;\n panel.value = value;\n (_a = props.onPanelChange) == null ? void 0 : _a.call(props, value, oldPanel);\n };\n const isDisabled = (date) => {\n return props.disabledDate(new Date(date), innerValue.value);\n };\n const emitDate = (date, type) => {\n var _a, _b, _c;\n if (!isDisabled(date)) {\n (_a = props.onPick) == null ? void 0 : _a.call(props, date);\n if (props.multiple === true) {\n const nextDates = innerValue.value.filter((v) => v.getTime() !== date.getTime());\n if (nextDates.length === innerValue.value.length) {\n nextDates.push(date);\n }\n (_b = props[\"onUpdate:value\"]) == null ? void 0 : _b.call(props, nextDates, type);\n } else {\n (_c = props[\"onUpdate:value\"]) == null ? void 0 : _c.call(props, date, type);\n }\n }\n };\n const handleSelectDate = (date) => {\n emitDate(date, props.type === \"week\" ? \"week\" : \"date\");\n };\n const handleSelectYear = (date) => {\n if (props.type === \"year\") {\n emitDate(date, \"year\");\n } else {\n handleCalendarChange(date);\n handelPanelChange(\"month\");\n if (props.partialUpdate && innerValue.value.length === 1) {\n const value = setYear(innerValue.value[0], date.getFullYear());\n emitDate(value, \"year\");\n }\n }\n };\n const handleSelectMonth = (date) => {\n if (props.type === \"month\") {\n emitDate(date, \"month\");\n } else {\n handleCalendarChange(date);\n handelPanelChange(\"date\");\n if (props.partialUpdate && innerValue.value.length === 1) {\n const value = setMonth(setYear(innerValue.value[0], date.getFullYear()), date.getMonth());\n emitDate(value, \"month\");\n }\n }\n };\n const getCellClasses = (cellDate, classes = []) => {\n if (isDisabled(cellDate)) {\n classes.push(\"disabled\");\n } else if (innerValue.value.some((v) => v.getTime() === cellDate.getTime())) {\n classes.push(\"active\");\n }\n return classes.concat(props.getClasses(cellDate, innerValue.value, classes.join(\" \")));\n };\n const getDateClasses = (cellDate) => {\n const notCurrentMonth = cellDate.getMonth() !== innerCalendar.value.getMonth();\n const classes = [];\n if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) {\n classes.push(\"today\");\n }\n if (notCurrentMonth) {\n classes.push(\"not-current-month\");\n }\n return getCellClasses(cellDate, classes);\n };\n const getMonthClasses = (cellDate) => {\n if (props.type !== \"month\") {\n return innerCalendar.value.getMonth() === cellDate.getMonth() ? \"active\" : \"\";\n }\n return getCellClasses(cellDate);\n };\n const getYearClasses = (cellDate) => {\n if (props.type !== \"year\") {\n return innerCalendar.value.getFullYear() === cellDate.getFullYear() ? \"active\" : \"\";\n }\n return getCellClasses(cellDate);\n };\n const getWeekActive = (row) => {\n if (props.type !== \"week\")\n return false;\n const start = row[0].getTime();\n const end = row[6].getTime();\n return innerValue.value.some((v) => {\n const time = v.getTime();\n return time >= start && time <= end;\n });\n };\n return () => {\n if (panel.value === \"year\") {\n return createVNode(TableYear, {\n \"calendar\": innerCalendar.value,\n \"getCellClasses\": getYearClasses,\n \"getYearPanel\": props.getYearPanel,\n \"onSelect\": handleSelectYear,\n \"onUpdateCalendar\": handleCalendarChange\n }, null);\n }\n if (panel.value === \"month\") {\n return createVNode(TableMonth, {\n \"calendar\": innerCalendar.value,\n \"getCellClasses\": getMonthClasses,\n \"onSelect\": handleSelectMonth,\n \"onUpdatePanel\": handelPanelChange,\n \"onUpdateCalendar\": handleCalendarChange\n }, null);\n }\n return createVNode(TableDate, {\n \"isWeekMode\": props.type === \"week\",\n \"showWeekNumber\": props.showWeekNumber,\n \"titleFormat\": props.titleFormat,\n \"calendar\": innerCalendar.value,\n \"getCellClasses\": getDateClasses,\n \"getWeekActive\": getWeekActive,\n \"onSelect\": handleSelectDate,\n \"onUpdatePanel\": handelPanelChange,\n \"onUpdateCalendar\": handleCalendarChange,\n \"onDateMouseEnter\": props.onDateMouseEnter,\n \"onDateMouseLeave\": props.onDateMouseLeave\n }, null);\n };\n}\nconst calendarProps = keys()([\"type\", \"value\", \"defaultValue\", \"defaultPanel\", \"disabledDate\", \"getClasses\", \"calendar\", \"multiple\", \"partialUpdate\", \"showWeekNumber\", \"titleFormat\", \"getYearPanel\", \"onDateMouseEnter\", \"onDateMouseLeave\", \"onCalendarChange\", \"onPanelChange\", \"onUpdate:value\", \"onPick\"]);\nvar Calendar$1 = defineVueComponent(Calendar, calendarProps);\nconst inRange = (date, range) => {\n const value = date.getTime();\n let [min, max] = range.map((v) => v.getTime());\n if (min > max) {\n [min, max] = [max, min];\n }\n return value > min && value < max;\n};\nfunction CalendarRange(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: new Date(),\n type: \"date\"\n });\n const prefixClass = usePrefixClass();\n const defaultValues = computed(() => {\n let values = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue];\n values = values.map((v) => startOfDay(v));\n if (isValidRangeDate(values)) {\n return values;\n }\n return [new Date(), new Date()].map((v) => startOfDay(v));\n });\n const innerValue = ref([new Date(NaN), new Date(NaN)]);\n watchEffect(() => {\n if (isValidRangeDate(props.value)) {\n innerValue.value = props.value;\n }\n });\n const handlePick = (date, type) => {\n var _a;\n const [startValue, endValue] = innerValue.value;\n if (isValidDate(startValue) && !isValidDate(endValue)) {\n if (startValue.getTime() > date.getTime()) {\n innerValue.value = [date, startValue];\n } else {\n innerValue.value = [startValue, date];\n }\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, innerValue.value, type);\n } else {\n innerValue.value = [date, new Date(NaN)];\n }\n };\n const defaultCalendars = ref([new Date(), new Date()]);\n const calendars = computed(() => {\n return isValidRangeDate(props.calendar) ? props.calendar : defaultCalendars.value;\n });\n const calendarMinDiff = computed(() => {\n if (props.type === \"year\")\n return 10 * 12;\n if (props.type === \"month\")\n return 1 * 12;\n return 1;\n });\n const updateCalendars = (dates, index2) => {\n var _a;\n const diff = diffCalendarMonths(dates[0], dates[1]);\n const gap = calendarMinDiff.value - diff;\n if (gap > 0) {\n const anotherIndex = index2 === 1 ? 0 : 1;\n dates[anotherIndex] = setMonth(dates[anotherIndex], (v) => v + (anotherIndex === 0 ? -gap : gap));\n }\n defaultCalendars.value = dates;\n (_a = props.onCalendarChange) == null ? void 0 : _a.call(props, dates, index2);\n };\n const updateCalendarStart = (date) => {\n updateCalendars([date, calendars.value[1]], 0);\n };\n const updateCalendarEnd = (date) => {\n updateCalendars([calendars.value[0], date], 1);\n };\n watchEffect(() => {\n const dates = isValidRangeDate(props.value) ? props.value : defaultValues.value;\n updateCalendars(dates.slice(0, 2));\n });\n const hoveredValue = ref(null);\n const handleMouseEnter = (v) => hoveredValue.value = v;\n const handleMouseLeave = () => hoveredValue.value = null;\n const getRangeClasses = (cellDate, currentDates, classnames) => {\n const outerClasses = props.getClasses ? props.getClasses(cellDate, currentDates, classnames) : [];\n const classes = Array.isArray(outerClasses) ? outerClasses : [outerClasses];\n if (/disabled|active/.test(classnames))\n return classes;\n if (currentDates.length === 2 && inRange(cellDate, currentDates)) {\n classes.push(\"in-range\");\n }\n if (currentDates.length === 1 && hoveredValue.value && inRange(cellDate, [currentDates[0], hoveredValue.value])) {\n return classes.concat(\"hover-in-range\");\n }\n return classes;\n };\n return () => {\n const calendarRange = calendars.value.map((calendar, index2) => {\n const calendarProps2 = __spreadProps(__spreadValues({}, props), {\n calendar,\n value: innerValue.value,\n defaultValue: defaultValues.value[index2],\n getClasses: getRangeClasses,\n partialUpdate: false,\n multiple: false,\n [\"onUpdate:value\"]: handlePick,\n onCalendarChange: index2 === 0 ? updateCalendarStart : updateCalendarEnd,\n onDateMouseLeave: handleMouseLeave,\n onDateMouseEnter: handleMouseEnter\n });\n return createVNode(Calendar$1, calendarProps2, null);\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-calendar-range`\n }, [calendarRange]);\n };\n}\nconst calendarRangeProps = calendarProps;\nvar CalendarRange$1 = defineVueComponent(CalendarRange, calendarRangeProps);\nconst ScrollbarVertical = defineComponent({\n setup(props, {\n slots\n }) {\n const prefixClass = usePrefixClass();\n const wrapper = ref();\n const thumbHeight = ref(\"\");\n const thumbTop = ref(\"\");\n const getThumbHeight = () => {\n if (!wrapper.value)\n return;\n const el = wrapper.value;\n const heightPercentage = el.clientHeight * 100 / el.scrollHeight;\n thumbHeight.value = heightPercentage < 100 ? `${heightPercentage}%` : \"\";\n };\n onMounted(getThumbHeight);\n const scrollbarWidth = getScrollbarWidth();\n const handleScroll = (evt) => {\n const el = evt.currentTarget;\n const {\n scrollHeight,\n scrollTop\n } = el;\n thumbTop.value = `${scrollTop * 100 / scrollHeight}%`;\n };\n let draggable = false;\n let prevY = 0;\n const handleDragstart = (evt) => {\n evt.stopImmediatePropagation();\n const el = evt.currentTarget;\n const {\n offsetTop\n } = el;\n draggable = true;\n prevY = evt.clientY - offsetTop;\n };\n const handleDraging = (evt) => {\n if (!draggable || !wrapper.value)\n return;\n const {\n clientY\n } = evt;\n const {\n scrollHeight,\n clientHeight\n } = wrapper.value;\n const offsetY = clientY - prevY;\n const top = offsetY * scrollHeight / clientHeight;\n wrapper.value.scrollTop = top;\n };\n const handleDragend = () => {\n draggable = false;\n };\n onMounted(() => {\n document.addEventListener(\"mousemove\", handleDraging);\n document.addEventListener(\"mouseup\", handleDragend);\n });\n onUnmounted(() => {\n document.addEventListener(\"mousemove\", handleDraging);\n document.addEventListener(\"mouseup\", handleDragend);\n });\n return () => {\n var _a;\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-scrollbar`,\n \"style\": {\n position: \"relative\",\n overflow: \"hidden\"\n }\n }, [createVNode(\"div\", {\n \"ref\": wrapper,\n \"class\": `${prefixClass}-scrollbar-wrap`,\n \"style\": {\n marginRight: `-${scrollbarWidth}px`\n },\n \"onScroll\": handleScroll\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]), createVNode(\"div\", {\n \"class\": `${prefixClass}-scrollbar-track`\n }, [createVNode(\"div\", {\n \"class\": `${prefixClass}-scrollbar-thumb`,\n \"style\": {\n height: thumbHeight.value,\n top: thumbTop.value\n },\n \"onMousedown\": handleDragstart\n }, null)])]);\n };\n }\n});\nfunction Columns({\n options,\n getClasses,\n onSelect\n}) {\n const prefixClass = usePrefixClass();\n const handleSelect = (evt) => {\n const target = evt.target;\n const currentTarget = evt.currentTarget;\n if (target.tagName.toUpperCase() !== \"LI\")\n return;\n const type = currentTarget.getAttribute(\"data-type\");\n const col = parseInt(currentTarget.getAttribute(\"data-index\"), 10);\n const index2 = parseInt(target.getAttribute(\"data-index\"), 10);\n const value = options[col].list[index2].value;\n onSelect(value, type);\n };\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-time-columns`\n }, [options.map((col, i) => createVNode(ScrollbarVertical, {\n \"key\": col.type,\n \"class\": `${prefixClass}-time-column`\n }, {\n default: () => [createVNode(\"ul\", {\n \"class\": `${prefixClass}-time-list`,\n \"data-index\": i,\n \"data-type\": col.type,\n \"onClick\": handleSelect\n }, [col.list.map((item, j) => createVNode(\"li\", {\n \"key\": item.text,\n \"data-index\": j,\n \"class\": [`${prefixClass}-time-item`, getClasses(item.value, col.type)]\n }, [item.text]))])]\n }))]);\n}\nfunction _isSlot(s) {\n return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nfunction FixedList(props) {\n let _slot;\n const prefixClass = usePrefixClass();\n return createVNode(ScrollbarVertical, null, _isSlot(_slot = props.options.map((item) => createVNode(\"div\", {\n \"key\": item.text,\n \"class\": [`${prefixClass}-time-option`, props.getClasses(item.value, \"time\")],\n \"onClick\": () => props.onSelect(item.value, \"time\")\n }, [item.text]))) ? _slot : {\n default: () => [_slot]\n });\n}\nfunction generateList({\n length,\n step = 1,\n options\n}) {\n if (Array.isArray(options)) {\n return options.filter((v) => v >= 0 && v < length);\n }\n if (step <= 0) {\n step = 1;\n }\n const arr = [];\n for (let i = 0; i < length; i += step) {\n arr.push(i);\n }\n return arr;\n}\nfunction getColumnOptions(date, options) {\n let { showHour, showMinute, showSecond, use12h } = options;\n const format2 = options.format || \"HH:mm:ss\";\n showHour = typeof showHour === \"boolean\" ? showHour : /[HhKk]/.test(format2);\n showMinute = typeof showMinute === \"boolean\" ? showMinute : /m/.test(format2);\n showSecond = typeof showSecond === \"boolean\" ? showSecond : /s/.test(format2);\n use12h = typeof use12h === \"boolean\" ? use12h : /a/i.test(format2);\n const columns = [];\n const isPM = use12h && date.getHours() >= 12;\n if (showHour) {\n columns.push({\n type: \"hour\",\n list: generateList({\n length: use12h ? 12 : 24,\n step: options.hourStep,\n options: options.hourOptions\n }).map((num) => {\n const text = num === 0 && use12h ? \"12\" : padNumber(num);\n const value = new Date(date);\n value.setHours(isPM ? num + 12 : num);\n return { value, text };\n })\n });\n }\n if (showMinute) {\n columns.push({\n type: \"minute\",\n list: generateList({\n length: 60,\n step: options.minuteStep,\n options: options.minuteOptions\n }).map((num) => {\n const value = new Date(date);\n value.setMinutes(num);\n return { value, text: padNumber(num) };\n })\n });\n }\n if (showSecond) {\n columns.push({\n type: \"second\",\n list: generateList({\n length: 60,\n step: options.secondStep,\n options: options.secondOptions\n }).map((num) => {\n const value = new Date(date);\n value.setSeconds(num);\n return { value, text: padNumber(num) };\n })\n });\n }\n if (use12h) {\n columns.push({\n type: \"ampm\",\n list: [\"AM\", \"PM\"].map((text, i) => {\n const value = new Date(date);\n value.setHours(value.getHours() % 12 + i * 12);\n return { text, value };\n })\n });\n }\n return columns;\n}\nfunction parseOption(time = \"\") {\n const values = time.split(\":\");\n if (values.length >= 2) {\n const hours = parseInt(values[0], 10);\n const minutes = parseInt(values[1], 10);\n return {\n hours,\n minutes\n };\n }\n return null;\n}\nfunction getFixedOptions({\n date,\n option,\n format: format2,\n formatDate\n}) {\n const result = [];\n if (typeof option === \"function\") {\n return option() || [];\n }\n const start = parseOption(option.start);\n const end = parseOption(option.end);\n const step = parseOption(option.step);\n const fmt = option.format || format2;\n if (start && end && step) {\n const startMinutes = start.minutes + start.hours * 60;\n const endMinutes = end.minutes + end.hours * 60;\n const stepMinutes = step.minutes + step.hours * 60;\n const len = Math.floor((endMinutes - startMinutes) / stepMinutes);\n for (let i = 0; i <= len; i++) {\n const timeMinutes = startMinutes + i * stepMinutes;\n const hours = Math.floor(timeMinutes / 60);\n const minutes = timeMinutes % 60;\n const value = new Date(date);\n value.setHours(hours, minutes, 0);\n result.push({\n value,\n text: formatDate(value, fmt)\n });\n }\n }\n return result;\n}\nconst scrollTo = (element, to, duration = 0) => {\n if (duration <= 0) {\n requestAnimationFrame(() => {\n element.scrollTop = to;\n });\n return;\n }\n const difference = to - element.scrollTop;\n const tick = difference / duration * 10;\n requestAnimationFrame(() => {\n const scrollTop = element.scrollTop + tick;\n if (scrollTop >= to) {\n element.scrollTop = to;\n return;\n }\n element.scrollTop = scrollTop;\n scrollTo(element, to, duration - 10);\n });\n};\nfunction TimePanel(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n format: \"HH:mm:ss\",\n timeTitleFormat: \"YYYY-MM-DD\",\n disabledTime: () => false,\n scrollDuration: 100\n });\n const prefixClass = usePrefixClass();\n const locale2 = useLocale();\n const formatDate = (date, fmt) => {\n return format(date, fmt, {\n locale: locale2.value.formatLocale\n });\n };\n const innerValue = ref(new Date());\n watchEffect(() => {\n innerValue.value = getValidDate(props.value, props.defaultValue);\n });\n const isDisabledTimes = (value) => {\n if (Array.isArray(value)) {\n return value.every((v) => props.disabledTime(new Date(v)));\n }\n return props.disabledTime(new Date(value));\n };\n const isDisabledHour = (date) => {\n const value = new Date(date);\n return isDisabledTimes([value.getTime(), value.setMinutes(0, 0, 0), value.setMinutes(59, 59, 999)]);\n };\n const isDisabledMinute = (date) => {\n const value = new Date(date);\n return isDisabledTimes([value.getTime(), value.setSeconds(0, 0), value.setSeconds(59, 999)]);\n };\n const isDisabledAMPM = (date) => {\n const value = new Date(date);\n const minHour = value.getHours() < 12 ? 0 : 12;\n const maxHour = minHour + 11;\n return isDisabledTimes([value.getTime(), value.setHours(minHour, 0, 0, 0), value.setHours(maxHour, 59, 59, 999)]);\n };\n const isDisabled = (date, type) => {\n if (type === \"hour\") {\n return isDisabledHour(date);\n }\n if (type === \"minute\") {\n return isDisabledMinute(date);\n }\n if (type === \"ampm\") {\n return isDisabledAMPM(date);\n }\n return isDisabledTimes(date);\n };\n const handleSelect = (value, type) => {\n var _a;\n if (!isDisabled(value, type)) {\n const date = new Date(value);\n innerValue.value = date;\n if (!isDisabledTimes(date)) {\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, date, type);\n }\n }\n };\n const getClasses = (cellDate, type) => {\n if (isDisabled(cellDate, type)) {\n return \"disabled\";\n }\n if (cellDate.getTime() === innerValue.value.getTime()) {\n return \"active\";\n }\n return \"\";\n };\n const container = ref();\n const scrollToSelected = (duration) => {\n if (!container.value)\n return;\n const elements = container.value.querySelectorAll(\".active\");\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const scrollElement = getScrollParent(element, container.value);\n if (scrollElement) {\n const to = element.offsetTop;\n scrollTo(scrollElement, to, duration);\n }\n }\n };\n onMounted(() => scrollToSelected(0));\n watch(innerValue, () => scrollToSelected(props.scrollDuration), {\n flush: \"post\"\n });\n return () => {\n let content;\n if (props.timePickerOptions) {\n content = createVNode(FixedList, {\n \"onSelect\": handleSelect,\n \"getClasses\": getClasses,\n \"options\": getFixedOptions({\n date: innerValue.value,\n format: props.format,\n option: props.timePickerOptions,\n formatDate\n })\n }, null);\n } else {\n content = createVNode(Columns, {\n \"options\": getColumnOptions(innerValue.value, props),\n \"onSelect\": handleSelect,\n \"getClasses\": getClasses\n }, null);\n }\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-time`,\n \"ref\": container\n }, [props.showTimeHeader && createVNode(\"div\", {\n \"class\": `${prefixClass}-time-header`\n }, [createVNode(\"button\", {\n \"type\": \"button\",\n \"class\": `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-time-header-title`,\n \"onClick\": props.onClickTitle\n }, [formatDate(innerValue.value, props.timeTitleFormat)])]), createVNode(\"div\", {\n \"class\": `${prefixClass}-time-content`\n }, [content])]);\n };\n}\nconst timePanelProps = keys()([\"value\", \"defaultValue\", \"format\", \"timeTitleFormat\", \"showTimeHeader\", \"disabledTime\", \"timePickerOptions\", \"hourOptions\", \"minuteOptions\", \"secondOptions\", \"hourStep\", \"minuteStep\", \"secondStep\", \"showHour\", \"showMinute\", \"showSecond\", \"use12h\", \"scrollDuration\", \"onClickTitle\", \"onUpdate:value\"]);\nvar TimePanel$1 = defineVueComponent(TimePanel, timePanelProps);\nfunction TimeRange(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n disabledTime: () => false\n });\n const prefixClass = usePrefixClass();\n const innerValue = ref([new Date(NaN), new Date(NaN)]);\n watchEffect(() => {\n if (isValidRangeDate(props.value)) {\n innerValue.value = props.value;\n } else {\n innerValue.value = [new Date(NaN), new Date(NaN)];\n }\n });\n const emitChange = (type, index2) => {\n var _a;\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, innerValue.value, type === \"time\" ? \"time-range\" : type, index2);\n };\n const handleSelectStart = (date, type) => {\n innerValue.value[0] = date;\n if (!(innerValue.value[1].getTime() >= date.getTime())) {\n innerValue.value[1] = date;\n }\n emitChange(type, 0);\n };\n const handleSelectEnd = (date, type) => {\n innerValue.value[1] = date;\n if (!(innerValue.value[0].getTime() <= date.getTime())) {\n innerValue.value[0] = date;\n }\n emitChange(type, 1);\n };\n const disabledStartTime = (date) => {\n return props.disabledTime(date, 0);\n };\n const disabledEndTime = (date) => {\n return date.getTime() < innerValue.value[0].getTime() || props.disabledTime(date, 1);\n };\n return () => {\n const defaultValues = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue];\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-time-range`\n }, [createVNode(TimePanel$1, __spreadProps(__spreadValues({}, props), {\n [\"onUpdate:value\"]: handleSelectStart,\n \"value\": innerValue.value[0],\n \"defaultValue\": defaultValues[0],\n \"disabledTime\": disabledStartTime\n }), null), createVNode(TimePanel$1, __spreadProps(__spreadValues({}, props), {\n [\"onUpdate:value\"]: handleSelectEnd,\n \"value\": innerValue.value[1],\n \"defaultValue\": defaultValues[1],\n \"disabledTime\": disabledEndTime\n }), null)]);\n };\n}\nconst timeRangeProps = timePanelProps;\nvar TimeRange$1 = defineVueComponent(TimeRange, timeRangeProps);\nfunction useTimePanelVisible(props) {\n const defaultTimeVisible = ref(false);\n const closeTimePanel = () => {\n var _a;\n defaultTimeVisible.value = false;\n (_a = props.onShowTimePanelChange) == null ? void 0 : _a.call(props, false);\n };\n const openTimePanel = () => {\n var _a;\n defaultTimeVisible.value = true;\n (_a = props.onShowTimePanelChange) == null ? void 0 : _a.call(props, true);\n };\n const timeVisible = computed(() => {\n return typeof props.showTimePanel === \"boolean\" ? props.showTimePanel : defaultTimeVisible.value;\n });\n return { timeVisible, openTimePanel, closeTimePanel };\n}\nfunction DateTime(originalProps) {\n const props = withDefault(originalProps, {\n disabledTime: () => false,\n defaultValue: startOfDay(new Date())\n });\n const currentValue = ref(props.value);\n watchEffect(() => {\n currentValue.value = props.value;\n });\n const {\n openTimePanel,\n closeTimePanel,\n timeVisible\n } = useTimePanelVisible(props);\n const handleSelect = (date, type) => {\n var _a;\n if (type === \"date\") {\n openTimePanel();\n }\n let datetime = assignTime(date, getValidDate(props.value, props.defaultValue));\n if (props.disabledTime(new Date(datetime))) {\n datetime = assignTime(date, props.defaultValue);\n if (props.disabledTime(new Date(datetime))) {\n currentValue.value = datetime;\n return;\n }\n }\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, datetime, type);\n };\n return () => {\n const prefixClass = usePrefixClass();\n const calendarProp = __spreadProps(__spreadValues({}, pick(props, calendarProps)), {\n multiple: false,\n type: \"date\",\n value: currentValue.value,\n [\"onUpdate:value\"]: handleSelect\n });\n const timeProps = __spreadProps(__spreadValues({}, pick(props, timePanelProps)), {\n showTimeHeader: true,\n value: currentValue.value,\n [\"onUpdate:value\"]: props[\"onUpdate:value\"],\n onClickTitle: closeTimePanel\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-date-time`\n }, [createVNode(Calendar$1, calendarProp, null), timeVisible.value && createVNode(TimePanel$1, timeProps, null)]);\n };\n}\nconst datetimeBaseProps = keys()([\"showTimePanel\", \"onShowTimePanelChange\"]);\nconst datetimeProps = [...datetimeBaseProps, ...calendarProps, ...timePanelProps];\nvar DateTime$1 = defineVueComponent(DateTime, datetimeProps);\nfunction DateTimeRange(originalProps) {\n const props = withDefault(originalProps, {\n defaultValue: startOfDay(new Date()),\n disabledTime: () => false\n });\n const currentValue = ref(props.value);\n watchEffect(() => {\n currentValue.value = props.value;\n });\n const {\n openTimePanel,\n closeTimePanel,\n timeVisible\n } = useTimePanelVisible(props);\n const handleSelect = (dates, type) => {\n var _a;\n if (type === \"date\") {\n openTimePanel();\n }\n const defaultValues = Array.isArray(props.defaultValue) ? props.defaultValue : [props.defaultValue, props.defaultValue];\n let datetimes = dates.map((date, i) => {\n const time = isValidRangeDate(props.value) ? props.value[i] : defaultValues[i];\n return assignTime(date, time);\n });\n if (datetimes[1].getTime() < datetimes[0].getTime()) {\n datetimes = [datetimes[0], datetimes[0]];\n }\n if (datetimes.some(props.disabledTime)) {\n datetimes = dates.map((date, i) => assignTime(date, defaultValues[i]));\n if (datetimes.some(props.disabledTime)) {\n currentValue.value = datetimes;\n return;\n }\n }\n (_a = props[\"onUpdate:value\"]) == null ? void 0 : _a.call(props, datetimes, type);\n };\n return () => {\n const prefixClass = usePrefixClass();\n const calendarProp = __spreadProps(__spreadValues({}, pick(props, calendarRangeProps)), {\n type: \"date\",\n value: currentValue.value,\n [\"onUpdate:value\"]: handleSelect\n });\n const timeProps = __spreadProps(__spreadValues({}, pick(props, timeRangeProps)), {\n showTimeHeader: true,\n value: currentValue.value,\n [\"onUpdate:value\"]: props[\"onUpdate:value\"],\n onClickTitle: closeTimePanel\n });\n return createVNode(\"div\", {\n \"class\": `${prefixClass}-date-time-range`\n }, [createVNode(CalendarRange$1, calendarProp, null), timeVisible.value && createVNode(TimeRange$1, timeProps, null)]);\n };\n}\nconst datetimeRangeProps = [...datetimeBaseProps, ...timeRangeProps, ...calendarRangeProps];\nvar DateTimeRange$1 = defineVueComponent(DateTimeRange, datetimeRangeProps);\nconst booleanKeys = keys()([\"range\", \"open\", \"appendToBody\", \"clearable\", \"confirm\", \"disabled\", \"editable\", \"multiple\", \"partialUpdate\", \"showHour\", \"showMinute\", \"showSecond\", \"showTimeHeader\", \"showTimePanel\", \"showWeekNumber\", \"use12h\"]);\nconst formatMap = {\n date: \"YYYY-MM-DD\",\n datetime: \"YYYY-MM-DD HH:mm:ss\",\n year: \"YYYY\",\n month: \"YYYY-MM\",\n time: \"HH:mm:ss\",\n week: \"w\"\n};\nfunction DatePicker(originalProps, {\n slots\n}) {\n const type = originalProps.type || \"date\";\n const format2 = originalProps.format || formatMap[type] || formatMap.date;\n const props = __spreadProps(__spreadValues({}, resolveProps(originalProps, booleanKeys)), {\n type,\n format: format2\n });\n return createVNode(Picker$1, pick(props, Picker$1.props), __spreadValues({\n content: (slotProps) => {\n if (props.range) {\n const Content = type === \"time\" ? TimeRange$1 : type === \"datetime\" ? DateTimeRange$1 : CalendarRange$1;\n return h(Content, pick(__spreadValues(__spreadValues({}, props), slotProps), Content.props));\n } else {\n const Content = type === \"time\" ? TimePanel$1 : type === \"datetime\" ? DateTime$1 : Calendar$1;\n return h(Content, pick(__spreadValues(__spreadValues({}, props), slotProps), Content.props));\n }\n },\n [\"icon-calendar\"]: () => type === \"time\" ? createVNode(render, null, null) : createVNode(render$2, null, null)\n }, slots));\n}\nconst api = {\n locale,\n install: (app) => {\n app.component(\"DatePicker\", DatePicker);\n }\n};\nvar index = Object.assign(DatePicker, api, {\n Calendar: Calendar$1,\n CalendarRange: CalendarRange$1,\n TimePanel: TimePanel$1,\n TimeRange: TimeRange$1,\n DateTime: DateTime$1,\n DateTimeRange: DateTimeRange$1\n});\nexport { index as default };\n","<template>\n <div class=\"t-field\">\n <label\n v-if=\"label\"\n :for=\"id\"\n class=\"t-field__label\"\n v-html=\"stringToHTML(label)\"\n />\n <TTypography v-if=\"displayInfo\" variant=\"b3\">\n {{ value }}\n </TTypography>\n <div v-else-if=\"type === 'date'\" class=\"t-field__calendar\">\n <Datepicker\n :value=\"value\"\n class=\"date-class\"\n @change=\"handleDatePicker\"\n :append-to-body=\"false\"\n format=\"DD/MM/YYYY\"\n />\n </div>\n <div v-else class=\"t-field__input\">\n <TTextInput\n :id=\"id\"\n :value=\"value\"\n :placeholder=\"placeholder\"\n :type=\"type\"\n :class=\"inputClass\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n :right-icon=\"rightIcon\"\n :left-icon=\"leftIcon\"\n full-width\n :error=\"isError\"\n >\n <template #helperText\n ><p :class=\"lowerLabelClass\" :for=\"id\" v-html=\"lowerLabel\"\n /></template>\n </TTextInput>\n <TIconButton\n v-if=\"isExternalId && autocomplete\"\n icon=\"magnifying-glass\"\n @click=\"handleRightIconClick\"\n ></TIconButton>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, defineEmits, defineProps, ref, watch } from 'vue';\nimport { InputFieldRegex } from '@/types/inputField';\nimport { stringToHTML } from '@/utils/string';\nimport Datepicker from 'vue-datepicker-next';\nimport { TIconButton, TTextInput, TTypography } from 'toku-ui';\n\nimport 'vue-datepicker-next/index.css';\n\ntype SignUpFieldProps = {\n id: string;\n value?: string | number | Date;\n label?: string;\n disabled?: boolean;\n displayInfo?: boolean;\n type?: string;\n decimals?: number;\n leftIcon?: string;\n rightIcon?: string;\n placeholder?: string;\n helperText?: string;\n errorText?: string;\n required?: boolean;\n regex?: InputFieldRegex;\n isMobile?: boolean;\n autocomplete?: boolean;\n isExternalId?: boolean;\n};\n\nconst props = defineProps<SignUpFieldProps>();\n\nconst emits = defineEmits<{\n (event: 'input', value: string | number | Date): void;\n (event: 'right-icon-click'): void;\n}>();\n\nconst isError = ref(false);\nconst displayRequired = ref(false);\nconst errorText = computed(() =>\n displayRequired.value\n ? 'Obligatorio'\n : props.errorText || props.regex?.message,\n);\nconst placeholder = computed(() => props.placeholder || '');\nconst lowerLabel = computed(() =>\n isError.value ? errorText.value : stringToHTML(props.helperText),\n);\nconst inputClass = computed(() => {\n let classes = '';\n if (isError.value) {\n classes += ' input-error';\n }\n return classes;\n});\nconst lowerLabelClass = computed(() => {\n let classes = 't-field__helper-text';\n if (isError.value) {\n classes += ' error';\n }\n return classes;\n});\n\nconst validate = () => {\n const isRequiredEmpty = !!props.required && !props.value;\n displayRequired.value = isRequiredEmpty;\n if (isRequiredEmpty) {\n isError.value = true;\n } else if (props.regex && typeof props.value === 'string') {\n isError.value = !RegExp(props.regex.pattern).test(props.value);\n } else if (props.required) {\n isError.value = false;\n }\n};\n\nwatch(() => props.value, validate);\n\nconst handleInput = (value: string | number) => {\n emits('input', value);\n};\n\nconst handleDatePicker = (value: Date) => {\n emits('input', value);\n};\n\nconst handleRightIconClick = () => {\n emits('right-icon-click');\n};\n</script>\n\n<style scoped lang=\"scss\">\n.t-field {\n width: 100%;\n\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__calendar {\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n\n &__input {\n display: flex;\n width: 100%;\n gap: 0.5rem;\n }\n}\n\n.error {\n color: #b72e29;\n}\n\n.date-class {\n width: 100%;\n\n &:deep(.mx-input) {\n height: 40px;\n }\n}\n\n.datepicker\n .datepicker-table\n .datepicker-body\n .datepicker-cell.is-selected.is-within-selected {\n background-color: #8d8d8d;\n}\n\n.t-field__label:deep(a),\n.t-field__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-field__label:deep(a:visited),\n.t-field__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-field__label:deep(a:active),\n.t-field__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<template>\n <div class=\"fields\">\n <TTypography variant=\"s2\" font-weight=\"medium\">\n {{ title }}\n </TTypography>\n <template v-for=\"field in fieldsToShow\">\n <TSelect\n v-if=\"fieldsType === 'invoice' && field.isAccount\"\n class=\"t-select\"\n :key=\"field.id || field.name\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n full-width\n @input=\"\n (value: string) =>\n handleInput(field.id || field.id || field.name, value)\n \"\n >\n <template #label>\n <label\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option v-for=\"{ id, name } in accounts\" :key=\"id\" :value=\"id\">\n {{ name }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <TSelect\n v-else-if=\"field.defaultOptions !== undefined\"\n class=\"t-select\"\n :key=\"field.id || field.name\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n @input=\"\n (value: string | number) => handleInput(field.id || field.name, value)\n \"\n full-width\n >\n <template #label>\n <label\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option\n v-for=\"option in field.defaultOptions\"\n :key=\"option.toString()\"\n :value=\"option.toString()\"\n >\n {{ option }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <SignupFieldComponent\n v-else\n :id=\"field.id || field.name\"\n :key=\"field.name\"\n :value=\"getFieldValue(field)\"\n :type=\"field.type\"\n :label=\"field.label\"\n :placeholder=\"field.placeholder\"\n :decimals=\"field.decimals\"\n :helper-text=\"field.helperText\"\n :left-icon=\"retrocompatibleIcon(field.leftIcon)\"\n :required=\"field.required\"\n :regex=\"field.regex\"\n :display-info=\"field.displayInfo\"\n :right-icon=\"isFieldSearchable(field) ? 'magnifying-glass' : undefined\"\n @input=\"(value) => handleInput(field.id || field.name, value)\"\n @right-icon-click=\"\n isFieldSearchable(field) ? handleRightIconClick() : undefined\n \"\n :is-mobile=\"isMobile\"\n :autocomplete=\"props.autocomplete\"\n :is-external-id=\"field.isExternalId\"\n />\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { TTypography, TSelect } from 'toku-ui';\nimport { computed, defineEmits, defineProps } from 'vue';\nimport { Account } from '@/types/entities';\nimport { evaluateExpression } from '@/utils/parser';\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport { SignupField } from '@/types/signUpField';\nimport { isString } from '@/utils/typeChecker';\nimport { stringToHTML } from '@/utils/string';\nimport SignupFieldComponent from './SignupField.vue';\n\nconst props = defineProps<{\n fieldsType: 'invoice' | 'customer';\n title: string;\n fields: SignupField[];\n autocomplete?: boolean;\n accounts: Account[];\n isMobile?: boolean;\n}>();\n\nconst emit = defineEmits<{\n (event: 'input', value: { id: string; value: string | number | Date }): void;\n (event: 'search'): void;\n}>();\n\nconst handleInput = (id: string, value: string | number | Date) => {\n emit('input', { id, value });\n};\n\nconst { shouldShowField } = useRelatedFields();\nconst fieldsToShow = computed(() => {\n return props.fields.filter(shouldShowField);\n});\n\nconst variables = computed(() => {\n const data: Record<string, SignupField['value']> = {};\n fieldsToShow.value.forEach((field) => {\n data[field.name] = field.value;\n });\n return data;\n});\n\nconst getFieldValue = (field: SignupField) => {\n if (field.displayInfo && isString(field.value) && !field.autocompleted) {\n return evaluateExpression(field.value, variables.value);\n }\n return field.value;\n};\n\nconst isFieldSearchable = (field: SignupField) => {\n return field.isExternalId && props.autocomplete;\n};\n\nconst handleRightIconClick = () => {\n emit('search');\n};\n\nconst retrocompatibleIcon = (iconName: string | undefined) => {\n if (iconName === 'DollarIcon') {\n return 'currency-dollar';\n }\n return iconName;\n};\n</script>\n\n<style scoped lang=\"scss\">\n.fields {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n height: 100%;\n width: 100%;\n gap: 1rem;\n}\n\n.t-select {\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n}\n\n.t-select__label:deep(a),\n.t-select__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-select__label:deep(a:visited),\n.t-select__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-select__label:deep(a:active),\n.t-select__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<template>\n <TThemeProvider :theme=\"theme\">\n <main>\n <transition name=\"slide-fade\" mode=\"out-in\">\n <div v-if=\"!signupCompleted\" class=\"custom-form__container\">\n <div\n class=\"custom-form__fields\"\n :class=\"[\n isMobile\n ? 'custom-form__fields--rows'\n : 'custom-form__fields--columns',\n ]\"\n >\n <SignupFields\n v-if=\"customerFields.length\"\n :fields=\"customerFields\"\n fields-type=\"customer\"\n :title=\"customerFieldsTitle\"\n :autocomplete=\"isAutocompleteEnabled\"\n :accounts=\"accounts\"\n @input=\"(payload) => handleInput(customerFields, payload)\"\n @search=\"handleSearch\"\n :is-mobile=\"isMobile\"\n />\n <SignupFields\n v-if=\"invoiceFields.length\"\n :fields=\"invoiceFields\"\n fields-type=\"invoice\"\n :title=\"invoiceFieldsTitle\"\n :accounts=\"accounts\"\n @input=\"(payload) => handleInput(invoiceFields, payload)\"\n :is-mobile=\"isMobile\"\n />\n </div>\n <TCheckbox\n label-position=\"right\"\n size=\"small\"\n id=\"send_email\"\n v-model=\"sendEmail\"\n >\n {{ sendByEmailText }}\n </TCheckbox>\n <TButton\n :disabled=\"disableSubmit\"\n @click=\"submitForm\"\n size=\"large\"\n :loading=\"isLoading\"\n :full-width=\"isMobile\"\n >\n {{ buttonLabel }}\n </TButton>\n </div>\n <SignupCompleted\n v-else\n :type=\"submitFormStatus\"\n :error-message=\"errorMessage\"\n :error-button-label=\"errorButtonLabel\"\n :success-message=\"successMessage\"\n :success-button-label=\"successButtonLabel\"\n @reset=\"emit('reset')\"\n />\n </transition>\n </main>\n </TThemeProvider>\n</template>\n<script setup lang=\"ts\">\nimport useI18n from '@/composables/useI18n';\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport { Account } from '@/types/entities';\nimport { SignupField } from '@/types/signUpField';\nimport { formatDueDate } from '@/utils/formatters';\nimport { evaluateExpression } from '@/utils/parser';\nimport { isDate, isString } from '@/utils/typeChecker';\nimport { TButton, TCheckbox, TThemeProvider, createTheme } from 'toku-ui';\nimport { computed, defineEmits, defineProps, ref, watch } from 'vue';\nimport SignupCompleted from './SignupCompleted.vue';\nimport SignupFields from './SignupFields.vue';\n\nimport '@/assets/scss/main.scss';\n\ninterface SignupRequestData {\n additional_data: Record<string, string | number | Date>;\n customer_metadata: Record<string, string | number | Date>;\n subscription_metadata: Record<string, string | number | Date>;\n invoice_metadata: Record<string, string | number | Date>;\n send_mail: boolean;\n [key: string]:\n | string\n | number\n | boolean\n | Record<string, string | number | Date>;\n}\n\ntype SubmitFormStatus = 'success' | 'error';\n\ninterface CustomFormProps {\n customerFields: SignupField[];\n invoiceFields: SignupField[];\n countryIso: string | null;\n isLoading: boolean;\n submitFormStatus: SubmitFormStatus;\n signupCompleted?: boolean;\n isAutocompleteEnabled: boolean;\n accounts: Account[];\n disableSubmit?: boolean;\n showSendByEmail?: boolean;\n invoiceFieldsTitle?: string;\n customerFieldsTitle?: string;\n buttonLabel?: string;\n sendByEmailText?: string;\n errorMessage?: string;\n errorButtonLabel?: string;\n successMessage?: string;\n successButtonLabel?: string;\n isMobile?: boolean;\n buttonColor?: string;\n}\n\nconst props = withDefaults(defineProps<CustomFormProps>(), {\n invoiceFieldsTitle: 'Plan de pagos',\n customerFieldsTitle: 'Información Cliente',\n buttonLabel: 'Registrar',\n sendByEmailText: 'Enviar información a correo electrónico',\n errorMessage: 'Error en la creación',\n errorButtonLabel: 'Intentar nuevamente',\n successMessage: 'Inscripción exitosa',\n successButtonLabel: 'Registrar nuevo cliente',\n isMobile: false,\n showSendByEmail: false,\n signupCompleted: false,\n buttonColor: '#5c0087',\n disableSubmit: false,\n});\n\nconst emit = defineEmits<{\n (event: 'submit-form-data', values: SignupRequestData): void;\n (event: 'reset'): void;\n (event: 'autocomplete-subscription', productId: string): void;\n (event: 'autocomplete-external-id', externalId: string): void;\n}>();\n\nconst customerFields = ref<SignupField[]>(props.customerFields);\nconst invoiceFields = ref<SignupField[]>(props.invoiceFields);\nconst isLoading = ref<boolean>(props.isLoading);\nconst submitFormStatus = ref<SubmitFormStatus>(props.submitFormStatus);\nconst signupCompleted = ref<boolean>(props.signupCompleted);\nconst errorMessage = ref<string>(props.errorMessage);\nconst isAutocompleteEnabled = ref<boolean>(props.isAutocompleteEnabled);\nconst sendEmail = ref<boolean>(!props.showSendByEmail);\n\nconst allFields = computed(() => [\n ...customerFields.value,\n ...invoiceFields.value,\n]);\n\nconst { shouldShowField } = useRelatedFields(allFields);\nconst { cleanGovernmentId } = useI18n();\n\nconst theme = createTheme({\n colors: {\n primary: {\n main: props.buttonColor,\n },\n },\n});\n\nwatch(props, (newProps) => {\n customerFields.value = newProps.customerFields;\n invoiceFields.value = newProps.invoiceFields;\n isLoading.value = newProps.isLoading;\n submitFormStatus.value = newProps.submitFormStatus;\n signupCompleted.value = newProps.signupCompleted;\n errorMessage.value = newProps.errorMessage;\n isAutocompleteEnabled.value = newProps.isAutocompleteEnabled;\n});\n\nconst formatFieldValue = (\n field: SignupField,\n value: string | number | Date,\n) => {\n if (field.type === 'number' && field.decimals) {\n return (\n Math.round(Number(value) * 10 ** field.decimals) /\n 10 ** field.decimals\n ).toString();\n }\n return value;\n};\n\nconst handleSearch = () => {\n const externalIdField = customerFields.value.find(\n ({ isExternalId }) => isExternalId,\n );\n emit('autocomplete-external-id', externalIdField?.value as string);\n};\n\nconst handleInput = (\n fields: SignupField[],\n { id, value }: { id: string; value: string | number | Date },\n) => {\n const index = fields.findIndex(\n (field) => id === field.id || id === field.name,\n );\n if (index !== -1) {\n const foundField = fields[index];\n foundField.value = formatFieldValue(foundField, value);\n\n if (foundField.name === 'product_id' && isAutocompleteEnabled.value) {\n emit('autocomplete-subscription', value as string);\n }\n }\n};\n\nconst getVariables = () => {\n const variables: Record<string, SignupField['value']> = {};\n allFields.value.forEach((field) => {\n if (shouldShowField(field)) {\n variables[field.name] = field.value;\n }\n });\n return variables;\n};\n\nconst buildSignupRequestBody = () => {\n const variables = getVariables();\n const data: SignupRequestData = {\n additional_data: {},\n customer_metadata: {},\n subscription_metadata: {},\n invoice_metadata: {},\n send_mail: sendEmail.value,\n };\n allFields.value.forEach((field) => {\n if (field.value) {\n if (\n (field.relatedField || field.expressionToBool) &&\n !shouldShowField(field)\n ) {\n return;\n }\n let { value } = field;\n if (field.displayInfo && isString(field.value) && !field.autocompleted) {\n value = evaluateExpression(value as string, variables);\n }\n if (field.name.includes('customer_metadata')) {\n data.customer_metadata[field.name.replace('customer_metadata_', '')] =\n value;\n } else if (field.name.includes('subscription_metadata')) {\n data.subscription_metadata[\n field.name.replace('subscription_metadata_', '')\n ] = value;\n } else if (field.name.includes('invoice_metadata')) {\n data.invoice_metadata[field.name.replace('invoice_metadata_', '')] =\n value;\n } else if (field.name.includes('additional_data')) {\n data.additional_data[field.name.replace('additional_data_', '')] =\n value;\n } else if (field.name === 'government_id' && props.countryIso === 'CL') {\n data[field.name] = cleanGovernmentId(value as string, props.countryIso);\n } else if (field.name === 'due_date' && isDate(value)) {\n data[field.name] = formatDueDate(value);\n } else if (field.isAccount) {\n data.id_account = value as string;\n } else {\n data[field.name] = value;\n }\n }\n });\n return data;\n};\n\nconst validateFormValues = () => {\n let isValid = true;\n allFields.value.forEach((field) => {\n const requiredInvalid =\n field.required &&\n (field.value === undefined || field.value === '') &&\n (!field.relatedField || shouldShowField(field));\n const regexInvalid =\n field.regex &&\n !RegExp(field.regex.pattern).test(field.value as string) &&\n (!field.relatedField || shouldShowField(field));\n if (requiredInvalid || regexInvalid) {\n isValid = false;\n }\n });\n return isValid;\n};\n\nconst submitForm = () => {\n const isValid = validateFormValues();\n if (!isValid) {\n return;\n }\n const dataToEmit = buildSignupRequestBody();\n emit('submit-form-data', dataToEmit);\n};\n</script>\n<style scoped lang=\"scss\">\n.custom-form {\n &__container {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: start;\n justify-items: center;\n gap: 2rem;\n }\n\n &__fields {\n display: flex;\n width: 100%;\n height: 100%;\n\n &--columns {\n flex-direction: row;\n gap: 5rem;\n justify-content: center;\n }\n\n &--rows {\n flex-direction: column;\n justify-content: center;\n gap: 2rem;\n overflow-y: auto;\n }\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { CustomFieldRegex } from '@/types/customFields';\nimport {\n filterNumberInput,\n formatWithThousands,\n getDecimalSeparator,\n parseFormattedNumber,\n type ThousandsSeparator,\n} from '@/utils/formatters/number';\nimport { stringToHTML } from '@/utils/string';\nimport { isMaskedValue } from '@/utils/typeChecker';\nimport { TIconButton, TTextInput, TTypography, useTheme } from 'toku-ui';\nimport { computed, ref, watch } from 'vue';\nimport Datepicker from 'vue-datepicker-next';\nimport 'vue-datepicker-next/index.css';\n\ninterface CustomFieldProps {\n id: string;\n value?: string | number | Date;\n label?: string;\n disabled?: boolean;\n displayInfo?: boolean;\n type?: string;\n decimals?: number;\n leftIcon?: string;\n rightIcon?: string;\n placeholder?: string;\n helperText?: string;\n errorText?: string;\n required?: boolean;\n regex?: CustomFieldRegex;\n isMobile?: boolean;\n autocomplete?: boolean;\n isExternalId?: boolean;\n touched?: boolean;\n thousandsSeparator?: ThousandsSeparator;\n}\n\nconst props = defineProps<CustomFieldProps>();\n\nconst emits = defineEmits<{\n input: [value: string | number | Date];\n 'right-icon-click': [];\n blur: [];\n}>();\n\nconst theme = useTheme();\nconst error = computed(() => theme.value.colors.error);\nconst grayMain = computed(() => theme.value.colors.gray.main);\nconst grayMedium1 = computed(() => theme.value.colors.gray.medium1);\nconst isError = ref(false);\nconst displayRequired = ref(false);\nconst errorText = computed(() =>\n displayRequired.value\n ? 'Obligatorio'\n : props.errorText ?? props.regex?.message,\n);\nconst placeholder = computed(() => props.placeholder || '');\nconst lowerLabel = computed(() =>\n isError.value ? errorText.value : stringToHTML(props.helperText),\n);\n\nconst isNumberType = computed(() => props.type === 'number');\nconst DEFAULT_SEPARATOR: ThousandsSeparator = '.';\n\nconst thousandsSep = computed((): ThousandsSeparator => {\n if (props.thousandsSeparator === ',' || props.thousandsSeparator === '.') {\n return props.thousandsSeparator;\n }\n return DEFAULT_SEPARATOR;\n});\n\nconst decimalSep = computed((): string =>\n getDecimalSeparator(thousandsSep.value),\n);\n\nconst displayValue = computed(() => {\n if (!isNumberType.value) {\n return props.value;\n }\n\n if (props.value === undefined || props.value === null || props.value === '') {\n return '';\n }\n\n let strValue = String(props.value);\n strValue = strValue.replace('.', decimalSep.value);\n return formatWithThousands(strValue, thousandsSep.value);\n});\n\nconst validate = () => {\n const isRegexPresent = props.regex && props.regex.pattern;\n const valueIsOfTypeString = typeof props.value === 'string';\n\n const shouldValidateRegex =\n isRegexPresent &&\n valueIsOfTypeString &&\n props.value &&\n !isMaskedValue(props.value);\n\n displayRequired.value = false;\n\n if (shouldValidateRegex) {\n isError.value = !RegExp(props.regex.pattern).test(props.value);\n return;\n }\n\n if (props.required) {\n isError.value = !props.value;\n displayRequired.value = !props.value;\n return;\n }\n\n isError.value = false;\n};\n\nconst handleInput = (value: string | number) => {\n if (isNumberType.value) {\n const strValue = String(value);\n const filteredValue = filterNumberInput(strValue, thousandsSep.value);\n const rawValue = parseFormattedNumber(filteredValue, thousandsSep.value);\n emits('input', rawValue);\n } else {\n emits('input', value);\n }\n\n if (props.touched) {\n validate();\n }\n};\n\nconst handleBlur = () => {\n emits('blur');\n validate();\n};\n\nconst handleDatePicker = (value: Date) => {\n emits('input', value);\n};\n\nconst handleRightIconClick = () => {\n emits('right-icon-click');\n};\n\nwatch(\n () => props.value,\n () => {\n if (props.touched) {\n validate();\n }\n },\n);\n\ndefineExpose({ validate });\n</script>\n\n<template>\n <div class=\"t-field\">\n <label\n v-if=\"label\"\n :for=\"id\"\n class=\"t-field__label\"\n v-html=\"stringToHTML(label)\"\n />{{ required ? '*' : '' }}\n <TTypography v-if=\"displayInfo\" variant=\"b3\">\n {{ displayValue }}\n </TTypography>\n <div v-else-if=\"type === 'date'\" class=\"t-field__calendar\">\n <Datepicker\n :value=\"value\"\n class=\"date-class\"\n @change=\"handleDatePicker\"\n :append-to-body=\"false\"\n format=\"DD/MM/YYYY\"\n />\n </div>\n <div v-else class=\"t-field__input\">\n <TTextInput\n :id=\"id\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :type=\"isNumberType ? 'text' : type\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n :right-icon=\"rightIcon\"\n :left-icon=\"leftIcon\"\n full-width\n :error=\"isError\"\n >\n <template #helperText\n ><p\n :class=\"['t-field__helper-text', { 't-field--error': isError }]\"\n :for=\"id\"\n v-html=\"lowerLabel\"\n /></template>\n </TTextInput>\n <TIconButton\n v-if=\"isExternalId && autocomplete\"\n icon=\"magnifying-glass\"\n @click=\"handleRightIconClick\"\n ></TIconButton>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.t-field {\n width: 100%;\n\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: v-bind(grayMain);\n }\n\n &__calendar {\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: v-bind(grayMedium1);\n }\n\n &__input {\n display: flex;\n width: 100%;\n gap: 0.5rem;\n }\n\n &--error {\n color: v-bind(error);\n }\n}\n\n.date-class {\n width: 100%;\n\n &:deep(.mx-input) {\n height: 40px;\n }\n}\n\n.datepicker\n .datepicker-table\n .datepicker-body\n .datepicker-cell.is-selected.is-within-selected {\n background-color: v-bind(grayMedium1);\n}\n\n.t-field__label:deep(a),\n.t-field__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-field__label:deep(a:visited),\n.t-field__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-field__label:deep(a:active),\n.t-field__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<script setup lang=\"ts\">\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport {\n CustomCheckBoxField,\n CustomFieldDefaultOption,\n CustomInputField,\n ThousandsSeparator,\n} from '@/types/customFields';\nimport { Account } from '@/types/entities';\nimport { evaluateExpression } from '@/utils/parser';\nimport { stringToHTML } from '@/utils/string';\nimport { isString } from '@/utils/typeChecker';\nimport { TCheckbox, TSelect, TTypography } from 'toku-ui';\nimport { computed, ref } from 'vue';\nimport CustomField from './CustomField.vue';\n\ninterface FieldSectionsProps {\n fieldsType: 'invoice' | 'customer';\n title: string | undefined;\n fields: CustomInputField[];\n autocomplete?: boolean;\n accounts: Account[];\n isMobile?: boolean;\n productIdsCheckboxes?: CustomCheckBoxField[];\n thousandsSeparator?: ThousandsSeparator;\n}\n\nconst props = defineProps<FieldSectionsProps>();\n\nconst emit = defineEmits<{\n input: [value: { id: string; value: string | number | Date | boolean }];\n search: [];\n blur: [value: { id: string }];\n}>();\n\nconst handleInput = (id: string, value: string | number | Date | boolean) => {\n emit('input', { id, value });\n};\n\nconst handleBlur = (id: string) => {\n emit('blur', { id });\n};\n\nconst selectAllChecked = computed(() => {\n if (!props.productIdsCheckboxes?.length) {\n return false;\n }\n const enabledCheckboxes = props.productIdsCheckboxes.filter(\n (cb) => !cb.disabled,\n );\n if (!enabledCheckboxes.length) {\n return false;\n }\n return enabledCheckboxes.every((cb) => cb.value === true);\n});\n\nconst selectAllIndeterminate = computed(() => {\n if (!props.productIdsCheckboxes?.length) {\n return false;\n }\n const enabledCheckboxes = props.productIdsCheckboxes.filter(\n (cb) => !cb.disabled,\n );\n if (!enabledCheckboxes.length) {\n return false;\n }\n const checkedCount = enabledCheckboxes.filter(\n (cb) => cb.value === true,\n ).length;\n return checkedCount > 0 && checkedCount < enabledCheckboxes.length;\n});\n\nconst handleSelectAll = (checked: boolean) => {\n if (!props.productIdsCheckboxes) {\n return;\n }\n props.productIdsCheckboxes\n .filter((checkbox) => !checkbox.disabled)\n .forEach((checkbox) => handleInput(checkbox.id, checked));\n};\n\nconst handleRightIconClick = () => {\n emit('search');\n};\n\ntype CustomFieldExposed = {\n validate: () => void;\n};\nconst customFieldRefs = ref<(CustomFieldExposed | null)[]>([]);\nconst validateCustomFields = () => {\n customFieldRefs.value.forEach((child) => {\n child?.validate();\n });\n};\n\nconst { shouldShowField } = useRelatedFields();\nconst fieldsToShow = computed(() => {\n return props.fields.filter(shouldShowField);\n});\n\nconst variables = computed(() => {\n const data: Record<string, CustomInputField['value']> = {};\n fieldsToShow.value.forEach((field) => {\n data[field.name] = field.value;\n });\n return data;\n});\n\nconst getFieldValue = (\n field: CustomInputField,\n): string | number | Date | undefined => {\n if (field.displayInfo && isString(field.value) && !field.autocompleted) {\n const evaluated = evaluateExpression(field.value, variables.value);\n if (typeof evaluated === 'boolean') {\n return undefined;\n }\n return evaluated;\n }\n if (field.displayInfo && field.defaultOptions && field.value !== undefined) {\n const valueString = String(field.value);\n const matchingOption = field.defaultOptions.find(\n (opt) => String(opt) === valueString,\n );\n if (matchingOption !== undefined) {\n return String(matchingOption);\n }\n }\n const { value } = field;\n if (typeof value === 'boolean') {\n return undefined;\n }\n return value;\n};\n\nconst isFieldSearchable = (field: CustomInputField) => {\n return field.isExternalId && props.autocomplete;\n};\n\nconst retrocompatibleIcon = (iconName: string | undefined) => {\n if (iconName === 'DollarIcon') {\n return 'currency-dollar';\n }\n return iconName;\n};\n\nconst isOptionObject = (\n option: CustomFieldDefaultOption,\n): option is { value: string | number; label: string } => {\n return (\n typeof option === 'object' &&\n option !== null &&\n !(option instanceof Date) &&\n 'value' in option &&\n 'label' in option\n );\n};\n\nconst getOptionValue = (option: CustomFieldDefaultOption): string => {\n return isOptionObject(option) ? String(option.value) : String(option);\n};\n\nconst getOptionLabel = (option: CustomFieldDefaultOption): string => {\n return isOptionObject(option) ? option.label : String(option);\n};\n\ndefineExpose({ validateCustomFields });\n</script>\n\n<template>\n <div class=\"fields-section\">\n <TTypography\n class=\"fields-section__title\"\n variant=\"s4\"\n font-weight=\"semibold\"\n v-if=\"title\"\n >\n {{ title }}\n </TTypography>\n <div class=\"fields-section__container\">\n <template v-for=\"field in fieldsToShow\">\n <TSelect\n v-if=\"fieldsType === 'invoice' && field.isAccount\"\n :key=\"field.id || field.name\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n full-width\n @input=\"(value: string) => handleInput(field.id || field.name, value)\"\n >\n <template #label>\n <p\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option v-for=\"{ id, name } in accounts\" :key=\"id\" :value=\"id\">\n {{ name }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <div\n v-else-if=\"field.name === 'product_ids'\"\n :key=\"`product_ids_${field.id || field.name}`\"\n class=\"fields-section__product-ids\"\n >\n <template\n v-if=\"productIdsCheckboxes && productIdsCheckboxes.length > 0\"\n >\n <p\n v-if=\"field.label\"\n class=\"fields-section__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n <p\n v-if=\"field.helperText\"\n class=\"fields-section__helper-text\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n <TCheckbox\n :id=\"`select-all-${field.id || field.name}`\"\n label-position=\"right\"\n size=\"small\"\n :value=\"selectAllChecked\"\n :indeterminate=\"selectAllIndeterminate\"\n class=\"fields-section__select-all\"\n @input=\"handleSelectAll\"\n >\n <span class=\"fields-section__select-all-text\">\n {{ field.selectAllLabel || 'Seleccionar todo' }}\n </span>\n </TCheckbox>\n <div class=\"fields-section__checkboxes\">\n <TCheckbox\n v-for=\"checkbox in productIdsCheckboxes\"\n :key=\"checkbox.id\"\n :id=\"checkbox.id\"\n label-position=\"right\"\n size=\"small\"\n :value=\"checkbox.value\"\n :disabled=\"checkbox.disabled\"\n @input=\"(value: boolean) => handleInput(checkbox.id, value)\"\n >\n <p\n class=\"fields-section__checkbox-text\"\n v-html=\"stringToHTML(checkbox.label ?? '')\"\n />\n </TCheckbox>\n </div>\n </template>\n </div>\n <TSelect\n v-else-if=\"field.defaultOptions && field.defaultOptions.length > 0\"\n class=\"t-select\"\n :key=\"`select_${field.id || field.name}_${field.value}`\"\n :placeholder=\"field.placeholder\"\n :value=\"field.value?.toString()\"\n @input=\"(value: string) => handleInput(field.id || field.name, value)\"\n full-width\n >\n <template #label>\n <p\n :for=\"field.id || field.name\"\n v-if=\"field.label\"\n class=\"t-select__label\"\n v-html=\"stringToHTML(field.label)\"\n />\n </template>\n <option\n v-for=\"option in field.defaultOptions\"\n :key=\"getOptionValue(option)\"\n :value=\"getOptionValue(option)\"\n >\n {{ getOptionLabel(option) }}\n </option>\n <template #helperText>\n <p\n class=\"t-select__helper-text\"\n v-if=\"field.helperText\"\n v-html=\"stringToHTML(field.helperText)\"\n />\n </template>\n </TSelect>\n <CustomField\n v-else-if=\"field.displayInfo === true\"\n :id=\"field.id || field.name\"\n :key=\"`display_${field.id || field.name}_${field.value}`\"\n ref=\"customFieldRefs\"\n :value=\"getFieldValue(field)\"\n :type=\"field.type\"\n :label=\"field.label\"\n :placeholder=\"field.placeholder\"\n :decimals=\"field.decimals\"\n :helper-text=\"field.helperText\"\n :left-icon=\"retrocompatibleIcon(field.leftIcon)\"\n :required=\"field.required\"\n :regex=\"field.regex\"\n :display-info=\"true\"\n :right-icon=\"\n isFieldSearchable(field) ? 'magnifying-glass' : undefined\n \"\n @input=\"\n (value: number | string | Date) =>\n handleInput(field.id || field.name, value)\n \"\n @blur=\"handleBlur(field.id || field.id || field.name)\"\n @right-icon-click=\"\n isFieldSearchable(field) ? handleRightIconClick() : undefined\n \"\n :is-mobile=\"isMobile\"\n :autocomplete=\"props.autocomplete\"\n :is-external-id=\"field.isExternalId\"\n :touched=\"field.touched\"\n :thousands-separator=\"props.thousandsSeparator\"\n />\n <CustomField\n v-else\n :id=\"field.id || field.name\"\n :key=\"field.name\"\n ref=\"customFieldRefs\"\n :value=\"getFieldValue(field)\"\n :type=\"field.type\"\n :label=\"field.label\"\n :placeholder=\"field.placeholder\"\n :decimals=\"field.decimals\"\n :helper-text=\"field.helperText\"\n :left-icon=\"retrocompatibleIcon(field.leftIcon)\"\n :required=\"field.required\"\n :regex=\"field.regex\"\n :display-info=\"field.displayInfo\"\n :right-icon=\"\n isFieldSearchable(field) ? 'magnifying-glass' : undefined\n \"\n @input=\"\n (value: number | string | Date) =>\n handleInput(field.id || field.name, value)\n \"\n @blur=\"handleBlur(field.id || field.id || field.name)\"\n @right-icon-click=\"\n isFieldSearchable(field) ? handleRightIconClick() : undefined\n \"\n :is-mobile=\"isMobile\"\n :autocomplete=\"props.autocomplete\"\n :is-external-id=\"field.isExternalId\"\n :touched=\"field.touched\"\n :thousands-separator=\"props.thousandsSeparator\"\n />\n </template>\n </div>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.fields-section {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n flex: 1;\n\n &__title {\n text-align: center;\n }\n\n &__container {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n }\n\n &__product-ids {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n }\n\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n\n &__label:deep(a),\n &__helper-text:deep(a) {\n text-decoration: underline;\n }\n\n &__label:deep(a:visited),\n &__helper-text:deep(a:visited) {\n color: #800080;\n }\n\n &__label:deep(a:active),\n &__helper-text:deep(a:active) {\n color: #8b0000;\n }\n\n &__select-all {\n margin-bottom: 0.25rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid #e5e5e5;\n }\n\n &__select-all-text {\n font-weight: 600;\n font-size: 0.875rem;\n color: #373737;\n }\n\n &__checkboxes {\n display: grid;\n grid-template-columns: 1fr;\n gap: 0.375rem;\n align-items: start;\n justify-items: start;\n\n @media (min-width: 480px) {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n }\n\n @media (min-width: 768px) {\n grid-template-columns: repeat(3, 1fr);\n }\n\n :deep(.t-checkbox) {\n width: 100%;\n justify-content: flex-start;\n }\n }\n\n &__checkbox-text {\n text-wrap: auto;\n\n &:deep(a) {\n text-decoration: underline;\n }\n &:deep(a:visited) {\n color: #800080;\n }\n &:deep(a:active) {\n color: #8b0000;\n }\n }\n}\n\n.t-select {\n &__label {\n font-style: normal;\n font-weight: 600;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #373737;\n }\n\n &__helper-text {\n font-style: normal;\n font-weight: 400;\n font-size: 0.75rem;\n line-height: 1.125rem;\n color: #8d8d8d;\n }\n}\n\n.t-select__label:deep(a),\n.t-select__helper-text:deep(a) {\n text-decoration: underline;\n}\n.t-select__label:deep(a:visited),\n.t-select__helper-text:deep(a:visited) {\n color: #800080;\n}\n.t-select__label:deep(a:active),\n.t-select__helper-text:deep(a:active) {\n color: #8b0000;\n}\n</style>\n","<template>\n <div\n :class=\"[\n 't-alert',\n `t-alert--${variant}`,\n { 't-alert--full-width': fullWidth },\n ]\"\n >\n <TIcon\n :class=\"['t-alert__icon', `t-alert__icon--${size}`]\"\n :icon=\"icon\"\n variant=\"solid\"\n :color=\"color\"\n />\n <TTypography :variant=\"size === 'small' ? 'b4' : 'b3'\" class=\"t-alert__text\"\n ><slot\n /></TTypography>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { TTypography, TIcon, useTheme } from 'toku-ui';\nimport { computed } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n variant: 'success' | 'in-process' | 'warning' | 'error' | 'info';\n fullWidth?: boolean;\n icon?: string;\n size: 'large' | 'small';\n }>(),\n {\n variant: 'success',\n icon: undefined,\n },\n);\n\nconst theme = useTheme();\nconst error = computed(() => theme.value.colors.error);\nconst success = computed(() => theme.value.colors.success);\nconst warning = computed(() => theme.value.colors.warning);\nconst info = computed(() => theme.value.colors.info);\nconst inProcess = computed(() => theme.value.colors.inProcess);\n\nconst icon = computed(() => {\n switch (props.variant) {\n case 'success':\n return 'check-circle';\n case 'info':\n return 'information-circle';\n case 'warning':\n return 'exclamation-circle';\n case 'error':\n return 'exclamation-circle';\n case 'in-process':\n return 'clock';\n default:\n return 'information-circle';\n }\n});\n\nconst color = computed(() => {\n switch (props.variant) {\n case 'success':\n return success.value;\n case 'info':\n return info.value;\n case 'warning':\n return warning.value;\n case 'error':\n return error.value;\n case 'in-process':\n return inProcess.value;\n default:\n return info.value;\n }\n});\n</script>\n\n<style scoped lang=\"scss\">\n.t-alert {\n border-radius: 0.625rem;\n padding: 0.5rem;\n border-width: 1px;\n border-style: solid;\n width: 75%;\n gap: 0.5rem;\n display: flex;\n align-items: center;\n\n &--full-width {\n width: 100%;\n }\n\n &--success {\n border-color: v-bind(success);\n background-color: rgba(#408645, 0.2);\n .t-alert__text {\n color: v-bind(success);\n }\n }\n\n &--in-process {\n border-color: v-bind(inProcess);\n background-color: rgba(#ffb038, 0.2);\n .t-alert__text {\n color: v-bind(inProcess);\n }\n }\n\n &--warning {\n border-color: #d06b35;\n background-color: rgba(#d06b35, 0.2);\n .t-alert__text {\n color: #d06b35;\n }\n }\n\n &--error {\n border-color: v-bind(error);\n background-color: rgba(#b72e29, 0.2);\n .t-alert__text {\n color: v-bind(error);\n }\n }\n\n &--info {\n border-color: v-bind(info);\n background-color: rgba(#3070dd, 0.2);\n .t-alert__text {\n color: v-bind(info);\n }\n }\n\n &__icon {\n &--small {\n min-width: 1rem;\n }\n &--large {\n min-width: 1.5rem;\n }\n }\n}\n</style>\n","<template>\n <div class=\"overlay\" ref=\"overlayRef\">\n <div v-if=\"!isMinimalView\" class=\"overlay__header\">\n <TTypography variant=\"s3\" font-weight=\"semibold\">\n {{ header }}\n </TTypography>\n <hr class=\"overlay__separator\" />\n </div>\n <div class=\"overlay__spinner\">\n <TSpinner size=\"small\" />\n </div>\n <div v-if=\"!isMinimalView\" class=\"overlay__footer\">\n <TTypography variant=\"b3\" font-weight=\"regular\">\n {{ footer }}\n </TTypography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { TSpinner, TTypography, useTheme } from 'toku-ui';\nimport { computed, defineProps, onMounted, ref } from 'vue';\n\ndefineProps<{\n header: string;\n footer: string;\n}>();\n\nconst overlayRef = ref<HTMLElement | null>(null);\nconst isMinimalView = ref(false);\nonMounted(() => {\n if (overlayRef.value) {\n const HEIGHT_THRESHOLD_IN_PX = 260;\n isMinimalView.value =\n overlayRef.value.offsetHeight < HEIGHT_THRESHOLD_IN_PX;\n }\n});\n\nconst theme = useTheme();\nconst grayLight2 = computed(() => theme.value.colors.gray.light2);\n</script>\n\n<style lang=\"scss\" scoped>\n.overlay {\n background-color: white;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n z-index: 10;\n\n gap: 2rem;\n\n &__header {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n width: 100%;\n }\n\n &__separator {\n margin: 0;\n height: 1.5px;\n max-width: 80%;\n width: 33.75rem;\n color: v-bind(grayLight2);\n }\n\n &__spinner {\n margin: 1rem 0;\n }\n\n &__footer {\n text-align: center;\n max-width: 80%;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport useI18n from '@/composables/useI18n';\nimport useRelatedFields from '@/composables/useRelatedFields';\nimport {\n CustomCheckBoxField,\n CustomInputField,\n FormRequestData,\n TCustomFormProps,\n} from '@/types/customFields';\nimport { formatDueDate } from '@/utils/formatters';\nimport { evaluateExpression } from '@/utils/parser';\nimport { stringToHTML } from '@/utils/string';\nimport {\n isCheckboxField,\n isDate,\n isMaskedValue,\n isString,\n} from '@/utils/typeChecker';\nimport {\n TButton,\n TCheckbox,\n TThemeProvider,\n TTypography,\n createTheme,\n useTheme,\n} from 'toku-ui';\nimport { computed, defineEmits, defineProps, ref, watch } from 'vue';\nimport FieldsSection from './FieldsSection.vue';\nimport TAlert from './TAlert.vue';\nimport TOverlay from './TOverlay.vue';\n\nimport '@/assets/scss/main.scss';\n\nconst props = withDefaults(defineProps<TCustomFormProps>(), {\n customerFields: () => [],\n invoiceFields: () => [],\n accounts: () => [],\n checkboxes: () => [],\n buttonLabel: 'Registrar',\n layout: 'columns',\n themeColor: '#5c0087',\n thousandsSeparator: '.',\n overlay: () => ({\n header: 'Cargando...',\n footer: 'Por favor, no actualices ni cierres esta ventana',\n }),\n});\n\nconst emit = defineEmits<{\n 'submit-form-data': [values: FormRequestData];\n reset: [];\n 'autocomplete-subscription': [productId: string];\n 'autocomplete-external-id': [externalId: string];\n 'link-clicked': [];\n}>();\n\nconst formTheme = createTheme({\n colors: {\n primary: {\n main: props.themeColor,\n },\n },\n});\n\nconst theme = useTheme();\nconst grayMedium1 = computed(() => theme.value.colors.gray.medium1);\nconst grayLight2 = computed(() => theme.value.colors.gray.light2);\nconst grayMain = computed(() => theme.value.colors.gray.main);\n\nconst normalizeFieldOptions = (\n fields: CustomInputField[],\n): CustomInputField[] =>\n fields.map((field) => {\n if (\n field.defaultOptions !== null &&\n field.defaultOptions !== undefined &&\n !Array.isArray(field.defaultOptions) &&\n typeof field.defaultOptions === 'object'\n ) {\n return {\n ...field,\n defaultOptions: Object.entries(\n field.defaultOptions as Record<string, unknown>,\n ).map(([key, label]) => ({ value: key, label: String(label) })),\n };\n }\n return field;\n });\n\nconst customerFields = ref<CustomInputField[]>(\n normalizeFieldOptions(props.customerFields),\n);\nconst invoiceFields = ref<CustomInputField[]>(\n normalizeFieldOptions(props.invoiceFields),\n);\nconst checkboxes = ref<CustomCheckBoxField[]>(\n props.checkboxes.map((checkbox) => ({ ...checkbox, type: 'checkbox' })),\n);\n\nconst allFields = computed<Array<CustomInputField | CustomCheckBoxField>>(\n () => [...customerFields.value, ...invoiceFields.value, ...checkboxes.value],\n);\n\nconst { shouldShowField } = useRelatedFields(allFields);\nconst productIdsCheckboxes = computed(() =>\n checkboxes.value.filter(\n (cb) => cb.name === 'product_ids' && shouldShowField(cb),\n ),\n);\nconst checkboxesToShow = computed(() =>\n checkboxes.value.filter(\n (cb) => cb.name !== 'product_ids' && shouldShowField(cb),\n ),\n);\n\nconst formatFieldValue = (\n field: CustomInputField,\n value: string | number | Date | boolean,\n) => {\n if (field.type === 'number' && field.decimals) {\n const numValue = Number(value);\n if (Number.isNaN(numValue)) {\n return value;\n }\n return (\n Math.round(numValue * 10 ** field.decimals) /\n 10 ** field.decimals\n ).toString();\n }\n return value;\n};\n\nconst handleSearch = () => {\n const externalIdField = customerFields.value.find(\n ({ isExternalId }) => isExternalId,\n );\n emit('autocomplete-external-id', externalIdField?.value as string);\n};\n\nconst handleInput = ({\n id,\n value,\n}: {\n id: string;\n value: string | number | Date | boolean;\n}) => {\n const foundField = allFields.value.find((f) => id === f.id || id === f.name);\n if (foundField) {\n if (isCheckboxField(foundField)) {\n if (foundField.disabled) {\n return;\n }\n foundField.value = value as boolean;\n } else {\n foundField.value = formatFieldValue(foundField, value);\n if (foundField.name === 'product_id' && props.enableAutocomplete) {\n emit('autocomplete-subscription', value as string);\n }\n }\n }\n};\n\nconst handleBlur = ({ id }: { id: string }) => {\n const foundField = allFields.value.find((f) => id === f.id || id === f.name);\n if (foundField && !isCheckboxField(foundField)) {\n foundField.touched = true;\n }\n};\n\nconst getVariables = () => {\n const variables: Record<\n string,\n CustomInputField['value'] | CustomCheckBoxField['value']\n > = {};\n allFields.value.forEach((field) => {\n if (shouldShowField(field)) {\n variables[field.name] = field.value;\n }\n });\n return variables;\n};\n\nconst { cleanGovernmentId } = useI18n();\nconst buildSignupRequestBody = () => {\n const variables = getVariables();\n const data: FormRequestData = {\n additional_data: {},\n customer_metadata: {},\n subscription_metadata: {},\n invoice_metadata: {},\n checkboxes_values: {},\n };\n\n const productIdsCheckboxesForPayload = checkboxes.value.filter(\n (cb) => cb.name === 'product_ids',\n );\n const selectedProductIds = productIdsCheckboxesForPayload\n .filter((cb) => cb.value === true && cb.productId)\n .map((cb) => cb.productId as string);\n if (selectedProductIds.length > 0) {\n data.product_ids = selectedProductIds;\n }\n\n allFields.value.forEach((field) => {\n if (\n (field.relatedField || (field as CustomInputField).expressionToBool) &&\n !shouldShowField(field)\n ) {\n return;\n }\n if (isCheckboxField(field)) {\n data.checkboxes_values[field.id] = field.value ?? false;\n } else if (field.value) {\n let { value } = field;\n if (\n isString(field.value) &&\n field.displayInfo &&\n !field.autocompleted &&\n !field.isExternalId\n ) {\n const evaluated = evaluateExpression(value as string, variables);\n if (typeof evaluated === 'boolean') {\n value = evaluated ? 'true' : 'false';\n } else {\n value = evaluated;\n }\n }\n if (field.name.includes('customer_metadata')) {\n data.customer_metadata[field.name.replace('customer_metadata_', '')] =\n value;\n } else if (field.name.includes('subscription_metadata')) {\n data.subscription_metadata[\n field.name.replace('subscription_metadata_', '')\n ] = value;\n } else if (field.name.includes('invoice_metadata')) {\n data.invoice_metadata[field.name.replace('invoice_metadata_', '')] =\n value;\n } else if (field.name.includes('additional_data')) {\n data.additional_data[field.name.replace('additional_data_', '')] =\n value;\n } else if (field.name === 'government_id' && props.countryIso === 'CL') {\n data[field.name] = cleanGovernmentId(value as string, props.countryIso);\n } else if (field.name === 'due_date' && isDate(value)) {\n data[field.name] = formatDueDate(value);\n } else if (field.name === 'product_id') {\n data[field.name] = String(value);\n } else if (field.isAccount) {\n data.id_account = value as string;\n } else {\n data[field.name] = value;\n }\n }\n });\n return data;\n};\n\nconst isEmptyValue = (field: CustomInputField) => {\n if (field.value !== undefined && field.value !== '') return false;\n if (field.relatedField && !shouldShowField(field)) return false;\n\n return true;\n};\n\nconst isRegexInvalid = (field: CustomInputField) => {\n if (!field.regex) return false;\n if (!field.regex.pattern) return false;\n if (isMaskedValue(field.value)) return false;\n if (RegExp(field.regex.pattern).test(field.value as string)) return false;\n if (field.relatedField && !shouldShowField(field)) return false;\n\n return true;\n};\n\nconst validateFormValues = () => {\n let isValid = true;\n\n allFields.value.forEach((field) => {\n if (isCheckboxField(field)) return;\n\n if (field.required && isEmptyValue(field)) {\n isValid = false;\n return;\n }\n\n if (!isEmptyValue(field) && isRegexInvalid(field)) {\n isValid = false;\n }\n });\n\n return isValid;\n};\n\ntype FieldsSectionExposed = {\n validateCustomFields: () => void;\n};\nconst customerFieldsSection = ref<FieldsSectionExposed | null>(null);\nconst invoiceFieldsSection = ref<FieldsSectionExposed | null>(null);\nconst showFieldErrors = () => {\n customerFieldsSection.value?.validateCustomFields();\n invoiceFieldsSection.value?.validateCustomFields();\n};\n\nconst submitForm = () => {\n showFieldErrors();\n\n const isValid = validateFormValues();\n if (!isValid) {\n return;\n }\n const dataToEmit = buildSignupRequestBody();\n emit('submit-form-data', dataToEmit);\n};\n\nconst top = ref<HTMLDivElement | null>(null);\nconst scrollToTop = () => {\n top.value?.scrollIntoView({ behavior: 'smooth' });\n};\n\nwatch(props, (newProps) => {\n customerFields.value = normalizeFieldOptions(newProps.customerFields);\n invoiceFields.value = normalizeFieldOptions(newProps.invoiceFields);\n if (\n newProps.messageAlert &&\n ['error', 'success'].includes(newProps.messageAlert.type)\n ) {\n scrollToTop();\n }\n});\n\nwatch(\n () => props.checkboxes,\n (newCheckboxes) => {\n const hasProductIds = newCheckboxes.some((cb) => cb.name === 'product_ids');\n if (hasProductIds) {\n const currentSelections = new Map(\n checkboxes.value.map((cb) => [\n cb.id,\n { value: cb.value, disabled: cb.disabled },\n ]),\n );\n checkboxes.value = newCheckboxes.map((checkboxFromProps) => {\n const checkbox = {\n ...checkboxFromProps,\n type: 'checkbox' as const,\n };\n const preservedState = currentSelections.get(checkbox.id);\n if (preservedState) {\n return {\n ...checkbox,\n value:\n checkbox.name === 'product_ids'\n ? checkbox.value\n : preservedState.value,\n disabled: checkbox.disabled,\n };\n }\n return checkbox;\n });\n } else {\n checkboxes.value = newCheckboxes.map((checkbox) => ({\n ...checkbox,\n type: 'checkbox',\n }));\n }\n },\n { deep: true, immediate: false },\n);\n</script>\n<template>\n <TThemeProvider :theme=\"formTheme\">\n <div\n class=\"t-custom-form__layout\"\n :class=\"{ 't-custom-form__layout--mobile': isMobile }\"\n ref=\"top\"\n >\n <TTypography\n v-if=\"title\"\n variant=\"s2\"\n font-weight=\"semibold\"\n :style=\"{ textAlign: 'center' }\"\n >\n {{ title }}\n </TTypography>\n <TTypography\n v-if=\"topSubtitle\"\n variant=\"b2\"\n font-weight=\"semibold\"\n :style=\"{ textAlign: 'center' }\"\n >{{ topSubtitle }}</TTypography\n >\n <TAlert\n v-if=\"messageAlert?.label && messageAlert?.type\"\n :size=\"isMobile ? 'small' : 'large'\"\n :full-width=\"isMobile || layout === 'rows'\"\n :variant=\"messageAlert.type\"\n >{{ messageAlert?.label }}</TAlert\n >\n <div\n :class=\"[\n 't-custom-form__fields-container',\n isMobile\n ? 't-custom-form__fields-container--mobile'\n : 't-custom-form__fields-container--desktop',\n ]\"\n >\n <div\n :class=\"[\n 't-custom-form__fields-layout',\n isMobile\n ? 't-custom-form__fields-layout--rows'\n : `t-custom-form__fields-layout--${layout}`,\n ]\"\n >\n <TOverlay\n v-if=\"loading\"\n class=\"t-custom-form__overlay\"\n :header=\"overlay.header\"\n :footer=\"overlay.footer\"\n />\n <FieldsSection\n v-if=\"customerFields.length\"\n ref=\"customerFieldsSection\"\n :fields=\"customerFields\"\n fields-type=\"customer\"\n :title=\"customerFieldsTitle\"\n :autocomplete=\"enableAutocomplete\"\n :accounts=\"accounts\"\n :product-ids-checkboxes=\"productIdsCheckboxes\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n @search=\"handleSearch\"\n :is-mobile=\"isMobile\"\n :thousands-separator=\"thousandsSeparator\"\n />\n <div\n v-if=\"customerFields.length && invoiceFields.length\"\n :class=\"[\n isMobile\n ? 't-custom-form__sepparation-line--rows'\n : `t-custom-form__sepparation-line--${layout}`,\n ]\"\n />\n <FieldsSection\n v-if=\"invoiceFields.length\"\n ref=\"invoiceFieldsSection\"\n :fields=\"invoiceFields\"\n fields-type=\"invoice\"\n :title=\"invoiceFieldsTitle\"\n :accounts=\"accounts\"\n :product-ids-checkboxes=\"productIdsCheckboxes\"\n @input=\"handleInput\"\n @blur=\"handleBlur\"\n :is-mobile=\"isMobile\"\n :thousands-separator=\"thousandsSeparator\"\n />\n </div>\n <TButton\n variant=\"tertiary\"\n class=\"t-custom-form__link\"\n @click=\"emit('link-clicked')\"\n v-if=\"link?.label\"\n >{{ link.label }}</TButton\n >\n </div>\n <TTypography\n variant=\"b2\"\n font-weight=\"semibold\"\n v-if=\"bottomSubtitle\"\n :style=\"{ textAlign: 'center' }\"\n >{{ bottomSubtitle }}</TTypography\n >\n <div v-if=\"checkboxesToShow?.length\" class=\"t-custom-form__checkboxes\">\n <TCheckbox\n v-for=\"checkbox in checkboxesToShow\"\n class=\"t-custom-form__checkbox\"\n :key=\"checkbox.id\"\n :id=\"checkbox.id\"\n label-position=\"right\"\n size=\"small\"\n :value=\"checkbox.value\"\n :disabled=\"checkbox.disabled\"\n @input=\"(value: boolean) => handleInput({ id: checkbox.id, value })\"\n >\n <p\n class=\"t-custom-form__checkbox-text\"\n v-html=\"stringToHTML(checkbox.label)\"\n />\n </TCheckbox>\n </div>\n <TButton\n @click=\"submitForm\"\n size=\"medium\"\n :disabled=\"loading || disableSubmit\"\n :full-width=\"isMobile\"\n :class=\"{ 't-custom-form__submit-button': !isMobile }\"\n >\n {{ buttonLabel }}\n </TButton>\n </div>\n </TThemeProvider>\n</template>\n<style lang=\"scss\" scoped>\n.t-custom-form {\n &__overlay {\n position: absolute;\n inset: 0;\n }\n\n &__layout {\n display: flex;\n flex-direction: column;\n gap: 2.5rem;\n align-items: center;\n justify-content: center;\n\n &--desktop {\n padding: 0;\n }\n\n &--mobile {\n padding: 1rem;\n }\n }\n\n &__fields-container {\n display: flex;\n position: relative;\n gap: 1.5rem;\n flex-direction: column;\n\n &--desktop {\n width: 100%;\n padding: 2.5rem 3rem;\n border-radius: 0.625rem;\n box-shadow: 3px 3px 20px 0px rgba(38, 50, 56, 0.1);\n }\n &--mobile {\n width: 100%;\n }\n }\n\n &__fields-layout {\n display: flex;\n justify-content: center;\n width: 100%;\n height: 100%;\n\n &--columns {\n flex-direction: row;\n gap: 3rem;\n }\n &--rows {\n flex-direction: column;\n gap: 1.5rem;\n }\n }\n\n &__sepparation-line {\n &--columns {\n border-left: 1px solid #e2e2e2;\n }\n &--rows {\n border-top: 1px solid #e2e2e2;\n }\n }\n\n &__link {\n font-weight: 400;\n text-decoration: underline;\n color: v-bind(grayMain);\n\n &:hover:not(&:disabled) {\n color: v-bind(grayMedium1);\n }\n\n &:focus {\n color: v-bind(grayLight2);\n }\n }\n\n &__submit-button {\n min-width: 25.25rem;\n }\n\n &__checkboxes {\n width: fit-content;\n display: flex;\n flex-direction: column;\n align-items: start;\n gap: 0.5rem;\n }\n\n &__checkbox {\n display: flex;\n gap: 0.3rem;\n align-items: start;\n\n &:deep([class*='--small']) {\n white-space: normal;\n }\n &:deep([class*='--small__input']) {\n margin-top: 0.2rem;\n }\n }\n &__checkbox-text {\n text-wrap: auto;\n\n &:deep(a) {\n text-decoration: underline;\n }\n &:deep(a:visited) {\n color: #800080;\n }\n &:deep(a:active) {\n color: #8b0000;\n }\n }\n}\n</style>\n"],"names":["isString","value","isMaskedValue","isDate","isCheckboxField","hasExpressionToBoolField","field","clean","rut","validate","t","m","s","v","format","result","i","rut_js","countryMetadata","cleanRut","useI18n","governmentId","countryIso","cleaner","peg$subclass","child","parent","C","peg$SyntaxError","message","expected","found","location","self","peg$padEnd","str","targetLength","padString","sources","src","k","offset_s","loc","e","filler","line","last","hatLen","DESCRIBE_EXPECTATION_FNS","expectation","literalEscape","escapedParts","part","classEscape","hex","ch","describeExpectation","describeExpected","descriptions","j","describeFound","peg$parse","input","options","peg$FAILED","peg$source","peg$startRuleFunctions","peg$parseExpression","peg$startRuleFunction","peg$c0","peg$c1","peg$c2","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$r0","peg$r1","peg$r2","peg$r3","peg$r4","peg$e0","peg$literalExpectation","peg$e1","peg$e2","peg$e3","peg$e4","peg$e5","peg$e6","peg$classExpectation","peg$e7","peg$e8","peg$e9","peg$e10","peg$otherExpectation","peg$e11","peg$e12","peg$e13","peg$e14","peg$e15","peg$e16","peg$e17","peg$e18","peg$f0","head","tail","element","peg$f1","peg$f2","expr","peg$f3","functionName","args","name","a","round","power","startsWith","endsWith","includes","slice","peg$f4","peg$f5","variables","peg$f6","text","peg$f7","peg$f8","chars","peg$currPos","peg$savedPos","peg$posDetailsCache","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","peg$result","ignoreCase","parts","inverted","peg$endExpectation","description","peg$computePosDetails","pos","details","p","peg$computeLocation","startPos","endPos","offset","startPosDetails","endPosDetails","res","peg$fail","peg$buildStructuredError","s0","s1","s2","s3","s4","s5","s6","s7","peg$parseTerm","peg$parse_","peg$parseFactor","peg$parseFunctionCall","peg$parseVariable","peg$parseDecimal","peg$parseInteger","peg$parseString","peg$parseArgumentList","peg$parseArgument","number","decimals","factor","exponent","string","prefix","suffix","substring","start","end","evaluateExpression","expression","parse","useRelatedFields","fields","provide","inject","shouldShowField","foundRelatedField","hasmap","currentField","fillWithZero","content","formatDueDate","date","getDecimalSeparator","thousandsSeparator","formatWithThousands","decimalSeparator","integerPart","decimalPart","cleanInteger","formattedInteger","cleanDecimal","parseFormattedNumber","formattedValue","cleaned","testValue","filterNumberInput","allowedChars","filteredValue","decimalRegex","firstDecimalIndex","props","__props","computed","buttonText","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","TTypography","TButton","$emit","stringToHTML","stringToConvert","config","DOMPurify","toDate","isValidDate","startOfWeek","firstDayOfWeek","day","diff","startOfWeekYear","_ref","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","year","firstDateOfFirstWeek","getWeek","_ref2","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","locale","REGEX_FORMAT","pad","val","len","output","sign","getOffset","formatTimezone","delimeter","absOffset","hours","minutes","meridiem","h","_","isLowercase","word","formatFlags","y","meridiemFunc","formatStr","defaultLocale","match","p1","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","arr2","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread","target","source","key","_defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_i","_s","err","obj","formattingTokens","match1","match2","match3","match4","match1to2","matchShortOffset","matchSigned","matchTimestamp","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","token","regex","callback","tokens","func","escapeStringRegExp","matchWordRegExp","localeKey","array","matchWordCallback","index","cent","matchMeridiem","defaultIsPM","isPM","offsetFromString","_ref8","_ref9","symbol","hour","minute","to24hour","getFullInputArray","backupDate","backupArr","useBackup","createDate","d","M","ms","createUTCDate","_len","_key","makeParser","dateString","length","mark","parseTo","parser","_options$locale","_locale","_options$backupDate","parseResult","month","second","millisecond","weekday","week","inputArray","firstDate","parsedDate","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","b","prop","__spreadProps","__objRest","exclude","lang","en","locales","isLocal","l","getLocale","chunk","size","isPlainObject","pick","mergeDeep","targetValue","padNumber","num","camelcase","camelizeRE","c","localeContextKey","prefixClassKey","getWeekKey","useLocale","shallowRef","provideLocale","lang2","locale2","providePrefixClass","usePrefixClass","provideGetWeek","useGetWeek","getPopupElementSize","originalDisplay","originalVisibility","styles","width","height","getRelativePosition","el","targetWidth","targetHeight","fixed","left","top","offsetX","offsetY","relativeRect","dw","dh","getScrollParent","node","until","style","scrollBarWidth","getScrollbarWidth","outer","inner","mousedownEvent","rafThrottle","fn","isRunning","defineVueComponent","setup","withDefault","defaultProps","resolveProps","booleanKeys2","camelizeKey","Popup","originalProps","slots","prefixClass","popup","ref","position","displayPopup","relativeElement","watchEffect","onInvalidate","scrollElement","handleMove","handleClickOutside","evt","createVNode","Teleport","Transition","_a","popupProps","Popup$1","_hoisted_1$2","_hoisted_2$2","createElementVNode","_hoisted_3$2","render$2","_ctx","_cache","openBlock","createElementBlock","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","render$1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","render","h2","isValidRangeDate","dates","isValidDates","getValidDate","values","rest","startOfYear","startOfMonth","startOfDay","getCalendar","calendar","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","lastMonthLength","nextMonthLength","setMonth","dirtyDate","dirtyMonth","daysInMonth","setYear","dirtyYear","diffCalendarMonths","dirtyDateLeft","dirtyDateRight","dateRight","dateLeft","yearDiff","monthDiff","assignTime","time","PickerInput","userInput","innerSeparator","isValidValue","isDisabledValue","handleClear","handleChange","text2","handleInput","handleKeydown","keyCode","_b","_c","showClearIcon","inputProps","pickerInputBaseProps","pickerInputProps","PickerInput$1","Picker","toRef","container","getContainer","defaultOpen","popupVisible","openPopup","_a2","closePopup","formatDate","fmt","parseDate","value2date","date2value","innerValue","emitValue","type","close","currentValue","handleSelect","handleConfirm","disabledDateTime","renderSidebar","slotProps","_a3","disabled","confirm","range","popupClass","popupStyle","appendToBody","header","footer","sidedar","pickerbaseProps","pickerProps","Picker$1","ButtonIcon","TableHeader","onUpdateCalendar","lastMonth","nextMonth","lastYear","nextYear","lastDecade","nextDecade","TableDate","isWeekMode","showWeekNumber","titleFormat","getWeekActive","getCellClasses","onSelect","onUpdatePanel","onDateMouseEnter","onDateMouseLeave","getWeekNumber","yearFormat","monthBeforeYear","monthFormat","formatLocale","days","handlePanelChange","panel","getCellDate","index2","row","col","handleCellClick","handleMouseEnter","handleMouseLeave","yearLabel","monthLabel","cell","TableMonth","months","getDate","handleClick","getDefaultYears","firstYear","years","TableYear","getYearPanel","Calendar","innerCalendar","calendarDate","handleCalendarChange","panels","handelPanelChange","oldPanel","isDisabled","emitDate","nextDates","handleSelectDate","handleSelectYear","handleSelectMonth","cellDate","classes","getDateClasses","notCurrentMonth","getMonthClasses","getYearClasses","calendarProps","Calendar$1","inRange","min","max","CalendarRange","defaultValues","handlePick","startValue","endValue","defaultCalendars","calendars","calendarMinDiff","updateCalendars","gap","anotherIndex","updateCalendarStart","updateCalendarEnd","hoveredValue","getRangeClasses","currentDates","classnames","outerClasses","calendarRange","calendarProps2","calendarRangeProps","CalendarRange$1","ScrollbarVertical","defineComponent","wrapper","thumbHeight","thumbTop","onMounted","heightPercentage","scrollbarWidth","handleScroll","scrollHeight","scrollTop","draggable","prevY","handleDragstart","offsetTop","handleDraging","clientY","clientHeight","handleDragend","onUnmounted","Columns","getClasses","currentTarget","item","_isSlot","isVNode","FixedList","_slot","generateList","step","getColumnOptions","showHour","showMinute","showSecond","use12h","format2","columns","parseOption","getFixedOptions","option","startMinutes","endMinutes","stepMinutes","timeMinutes","scrollTo","to","duration","tick","TimePanel","isDisabledTimes","isDisabledHour","isDisabledMinute","isDisabledAMPM","minHour","maxHour","scrollToSelected","elements","watch","timePanelProps","TimePanel$1","TimeRange","emitChange","handleSelectStart","handleSelectEnd","disabledStartTime","disabledEndTime","timeRangeProps","TimeRange$1","useTimePanelVisible","defaultTimeVisible","closeTimePanel","openTimePanel","DateTime","timeVisible","datetime","calendarProp","timeProps","datetimeBaseProps","datetimeProps","DateTime$1","DateTimeRange","datetimes","datetimeRangeProps","DateTimeRange$1","booleanKeys","formatMap","DatePicker","Content","api","app","emits","__emit","isError","displayRequired","errorText","placeholder","lowerLabel","inputClass","lowerLabelClass","isRequiredEmpty","handleDatePicker","handleRightIconClick","_createBlock","Datepicker","TTextInput","_createElementVNode","TIconButton","emit","id","fieldsToShow","data","getFieldValue","isFieldSearchable","retrocompatibleIcon","iconName","_Fragment","_renderList","TSelect","_hoisted_6","SignupFieldComponent","$event","customerFields","invoiceFields","isLoading","submitFormStatus","signupCompleted","errorMessage","isAutocompleteEnabled","sendEmail","allFields","cleanGovernmentId","theme","createTheme","newProps","formatFieldValue","handleSearch","externalIdField","isExternalId","foundField","getVariables","buildSignupRequestBody","validateFormValues","isValid","requiredInvalid","regexInvalid","submitForm","dataToEmit","TThemeProvider","_Transition","SignupCompleted","SignupFields","payload","TCheckbox","DEFAULT_SEPARATOR","useTheme","error","grayMain","grayMedium1","isNumberType","thousandsSep","decimalSep","displayValue","strValue","isRegexPresent","valueIsOfTypeString","shouldValidateRegex","rawValue","handleBlur","__expose","_createTextVNode","_toDisplayString","selectAllChecked","enabledCheckboxes","cb","selectAllIndeterminate","checkedCount","handleSelectAll","checked","checkbox","customFieldRefs","validateCustomFields","evaluated","valueString","matchingOption","opt","isOptionObject","getOptionValue","getOptionLabel","_hoisted_8","_hoisted_9","_hoisted_12","CustomField","success","warning","info","inProcess","icon","color","_normalizeClass","TIcon","_renderSlot","overlayRef","isMinimalView","grayLight2","TSpinner","formTheme","normalizeFieldOptions","label","checkboxes","productIdsCheckboxes","checkboxesToShow","numValue","f","selectedProductIds","isEmptyValue","isRegexInvalid","customerFieldsSection","invoiceFieldsSection","showFieldErrors","scrollToTop","newCheckboxes","currentSelections","checkboxFromProps","preservedState","TAlert","TOverlay","FieldsSection"],"mappings":"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","x_google_ignoreList":[1,10,11,12,13,14]}
|