{"version":3,"file":"utils.cjs","sources":["../../../../src/components/date-input/utils.ts"],"sourcesContent":["const paddedNumber = (number: string | number): string => {\n    const num = Number(number);\n    if (!Number.isFinite(num)) return \"\";\n    return num < 10 ? `0${num}` : `${num}`;\n};\n\nconst isValidIsoDate = (iso: string): boolean => {\n    const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(iso);\n    if (!match) return false;\n\n    const [, y, m, d] = match;\n    const year = Number(y);\n    const month = Number(m);\n    const day = Number(d);\n\n    const parsed = new Date(Date.UTC(year, month - 1, day));\n    return (\n        Number.isFinite(parsed.getTime()) &&\n        parsed.getUTCFullYear() === year &&\n        parsed.getUTCMonth() === month - 1 &&\n        parsed.getUTCDate() === day\n    );\n};\n\n/**\n * Normaliserer en dato til ISO-formatet `DateInput` forventer (`YYYY-MM-DD`).\n *\n * Godtar `Date`-objekter, ISO-strenger (`YYYY-MM-DD`) og norsk punktumformat\n * (`DD.MM.YYYY`). Ugyldige verdier gir tom streng (`\"\"`).\n *\n * @example\n * toValidInputValue(new Date(2026, 7, 13)); // \"2026-08-13\"\n * toValidInputValue(\"13.08.2026\");          // \"2026-08-13\"\n * toValidInputValue(\"ikke en dato\");        // \"\"\n */\nexport const toValidInputValue = (date: Date | string | undefined): string => {\n    let iso = \"\";\n\n    if (date instanceof Date) {\n        const year = date.getFullYear();\n        const month = paddedNumber(date.getMonth() + 1);\n        const day = paddedNumber(date.getDate());\n        iso = `${year}-${month}-${day}`;\n        return isValidIsoDate(iso) ? iso : \"\";\n    }\n\n    if (!date) return \"\";\n\n    const norwegianMatch = /^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{4})$/.exec(date);\n    if (norwegianMatch) {\n        const [, day, month, year] = norwegianMatch;\n        iso = `${year}-${paddedNumber(month)}-${paddedNumber(day)}`;\n        return isValidIsoDate(iso) ? iso : \"\";\n    }\n\n    const isoMatch = /^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/.exec(date);\n    if (isoMatch) {\n        const [, year, month, day] = isoMatch;\n        iso = `${year}-${paddedNumber(month)}-${paddedNumber(day)}`;\n        return isValidIsoDate(iso) ? iso : \"\";\n    }\n\n    return \"\";\n};\n\n/**\n * Gjør ISO-dato (`YYYY-MM-DD`) om til lesbar norsk dato. Overstyr med `options`. Ugyldig → `\"\"`.\n *\n * @example\n * toNorwegianDateFormat(\"2026-08-13\");                    // \"13.08.2026\"\n * toNorwegianDateFormat(\"2026-08-13\", \"nb-NO\", { month: \"long\" }); // \"august\"\n */\nexport const toNorwegianDateFormat = (\n    date: string,\n    locale = \"nb-NO\",\n    options: Intl.DateTimeFormatOptions = {\n        day: \"2-digit\",\n        month: \"2-digit\",\n        year: \"numeric\",\n    },\n): string => {\n    if (!isValidIsoDate(date)) {\n        return \"\";\n    }\n\n    const [year, month, day] = date.split(\"-\").map(Number);\n    const parsed = new Date(year, month - 1, day);\n    if (\n        !Number.isFinite(parsed.getTime()) ||\n        parsed.getFullYear() !== year ||\n        parsed.getMonth() !== month - 1 ||\n        parsed.getDate() !== day\n    ) {\n        return \"\";\n    }\n    return parsed.toLocaleDateString(locale, options);\n};\n\n/**\n * Normaliserer `min`/`max` til ISO-format (`YYYY-MM-DD`).\n *\n * `number` godtas fordi react-hook-forms `register()` typer `min`/`max` som\n * `string | number`. Tall tolkes som millisekunder siden epoch (`Date.now()`).\n * Verdier som ikke gir en gyldig dato blir `undefined`, slik at både det native\n * feltet og kalenderen ser bort fra grensen i stedet for å få en søppelverdi.\n *\n * @example\n * toValidBoundary(\"13.08.2026\");            // \"2026-08-13\"\n * toValidBoundary(Date.now());              // dagens dato som ISO\n * toValidBoundary(\"ikke en dato\");          // undefined\n */\nexport const toValidBoundary = (\n    boundary: string | number | undefined,\n): string | undefined => {\n    if (boundary === undefined || boundary === null || boundary === \"\") {\n        return undefined;\n    }\n\n    let iso = \"\";\n    if (typeof boundary === \"number\") {\n        iso = Number.isFinite(boundary)\n            ? toValidInputValue(new Date(boundary))\n            : \"\";\n    } else {\n        iso = toValidInputValue(boundary);\n    }\n\n    return iso === \"\" ? undefined : iso;\n};\n"],"names":["paddedNumber","number","num","Number","isFinite","isValidIsoDate","iso","match","exec","y","m","d","year","month","day","parsed","Date","UTC","getTime","getUTCFullYear","getUTCMonth","getUTCDate","toValidInputValue","date","getFullYear","getMonth","getDate","norwegianMatch","isoMatch","locale","options","split","map","toLocaleDateString","boundary"],"mappings":"gFAAA,MAAMA,EAAgBC,IAClB,MAAMC,EAAMC,OAAOF,GACnB,OAAKE,OAAOC,SAASF,GACdA,EAAM,GAAK,IAAIA,IAAQ,GAAGA,IADC,IAIhCG,EAAkBC,IACpB,MAAMC,EAAQ,4BAA4BC,KAAKF,GAC/C,IAAKC,EAAO,OAAO,EAEnB,OAASE,EAAGC,EAAGC,GAAKJ,EACdK,EAAOT,OAAOM,GACdI,EAAQV,OAAOO,GACfI,EAAMX,OAAOQ,GAEbI,EAAS,IAAIC,KAAKA,KAAKC,IAAIL,EAAMC,EAAQ,EAAGC,IAClD,OACIX,OAAOC,SAASW,EAAOG,YACvBH,EAAOI,mBAAqBP,GAC5BG,EAAOK,gBAAkBP,EAAQ,GACjCE,EAAOM,eAAiBP,GAenBQ,EAAqBC,IAC9B,IAAIjB,EAAM,GAEV,GAAIiB,aAAgBP,KAAM,CAItB,OAAAV,EAAM,GAHOiB,EAAKC,iBACJxB,EAAauB,EAAKE,WAAa,MACjCzB,EAAauB,EAAKG,aAEvBrB,EAAeC,GAAOA,EAAM,EACvC,CAEA,IAAKiB,EAAM,MAAO,GAElB,MAAMI,EAAiB,kCAAkCnB,KAAKe,GAC9D,GAAII,EAAgB,CAChB,OAASb,EAAKD,EAAOD,GAAQe,EAC7B,OAAArB,EAAM,GAAGM,KAAQZ,EAAaa,MAAUb,EAAac,KAC9CT,EAAeC,GAAOA,EAAM,EACvC,CAEA,MAAMsB,EAAW,gCAAgCpB,KAAKe,GACtD,GAAIK,EAAU,CACV,OAAShB,EAAMC,EAAOC,GAAOc,EAC7B,OAAAtB,EAAM,GAAGM,KAAQZ,EAAaa,MAAUb,EAAac,KAC9CT,EAAeC,GAAOA,EAAM,EACvC,CAEA,MAAO,kCAU0B,CACjCiB,EACAM,EAAS,QACTC,EAAsC,CAClChB,IAAK,UACLD,MAAO,UACPD,KAAM,cAGV,IAAKP,EAAekB,GAChB,MAAO,GAGX,MAAOX,EAAMC,EAAOC,GAAOS,EAAKQ,MAAM,KAAKC,IAAI7B,QACzCY,EAAS,IAAIC,KAAKJ,EAAMC,EAAQ,EAAGC,GACzC,OACKX,OAAOC,SAASW,EAAOG,YACxBH,EAAOS,gBAAkBZ,GACzBG,EAAOU,aAAeZ,EAAQ,GAC9BE,EAAOW,YAAcZ,EAIlBC,EAAOkB,mBAAmBJ,EAAQC,GAF9B,4BAmBXI,IAEA,GAA2C,MAAbA,GAAkC,KAAbA,EAC/C,OAGJ,IAAI5B,EAAM,GACV,OACIA,EADoB,iBAAb4B,EACD/B,OAAOC,SAAS8B,GAChBZ,EAAkB,IAAIN,KAAKkB,IAC3B,GAEAZ,EAAkBY,GAGb,KAAR5B,OAAa,EAAYA"}