{"version":3,"file":"normalise-dataset.mjs","sources":["../../../src/govuk/common/normalise-dataset.mjs"],"sourcesContent":["/**\n * Normalise string\n *\n * 'If it looks like a duck, and it quacks like a duck…' 🦆\n *\n * If the passed value looks like a boolean or a number, convert it to a boolean\n * or number.\n *\n * Designed to be used to convert config passed via data attributes (which are\n * always strings) into something sensible.\n *\n * @internal\n * @param {string | undefined} value - The value to normalise\n * @returns {string | boolean | number | undefined} Normalised data\n */\nexport function normaliseString(value) {\n if (typeof value !== 'string') {\n return value\n }\n\n const trimmedValue = value.trim()\n\n if (trimmedValue === 'true') {\n return true\n }\n\n if (trimmedValue === 'false') {\n return false\n }\n\n // Empty / whitespace-only strings are considered finite so we need to check\n // the length of the trimmed string as well\n if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n return Number(trimmedValue)\n }\n\n return value\n}\n\n/**\n * Normalise dataset\n *\n * Loop over an object and normalise each value using normaliseData function\n *\n * @internal\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {{ [key: string]: string | boolean | number | undefined }} Normalised dataset\n */\nexport function normaliseDataset(dataset) {\n /** @type {ReturnType} */\n const out = {}\n\n for (const [key, value] of Object.entries(dataset)) {\n out[key] = normaliseString(value)\n }\n\n return out\n}\n"],"names":["normaliseString","value","trimmedValue","trim","length","isFinite","Number","normaliseDataset","dataset","out","key","Object","entries"],"mappings":"AAeO,SAASA,eAAeA,CAACC,KAAK,EAAE;AACrC,EAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AAC7B,IAAA,OAAOA,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,MAAMC,YAAY,GAAGD,KAAK,CAACE,IAAI,EAAE,CAAA;EAEjC,IAAID,YAAY,KAAK,MAAM,EAAE;AAC3B,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,IAAIA,YAAY,KAAK,OAAO,EAAE;AAC5B,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAIA,EAAA,IAAIA,YAAY,CAACE,MAAM,GAAG,CAAC,IAAIC,QAAQ,CAACC,MAAM,CAACJ,YAAY,CAAC,CAAC,EAAE;IAC7D,OAAOI,MAAM,CAACJ,YAAY,CAAC,CAAA;AAC7B,GAAA;AAEA,EAAA,OAAOD,KAAK,CAAA;AACd,CAAA;AAWO,SAASM,gBAAgBA,CAACC,OAAO,EAAE;EAExC,MAAMC,GAAG,GAAG,EAAE,CAAA;AAEd,EAAA,KAAK,MAAM,CAACC,GAAG,EAAET,KAAK,CAAC,IAAIU,MAAM,CAACC,OAAO,CAACJ,OAAO,CAAC,EAAE;AAClDC,IAAAA,GAAG,CAACC,GAAG,CAAC,GAAGV,eAAe,CAACC,KAAK,CAAC,CAAA;AACnC,GAAA;AAEA,EAAA,OAAOQ,GAAG,CAAA;AACZ;;;;"}