{"version":3,"file":"Utils.mjs","names":["useLocation","useParams","useMemo","useUdpFormParameters","$","_c","search","pathParams","pathFormId","formId","pathSubmissionId","submissionId","extracted","rawParams","URLSearchParams","window","location","t0","Symbol","for","formVersion","tenantId","keys","urlContext","forEach","value","key","keyLower","toLowerCase","startsWith","Object","values","includes","cleanKey","slice"],"sources":["../../../../src/udp/pages/UdpFormsUtils/Utils.js"],"sourcesContent":["import { useLocation, useParams } from 'react-router-dom';\nimport { useMemo } from 'react';\n\n// Path params override query params on the new /forms/:formId/... routes.\n// Query params remain the legacy fallback (?udpf_formId=...&udpf_submissionId=...)\n// and are still authoritative for `udpf_formVersion` (alias `v`), `udpf_tenantId`,\n// and any `udpf_*` seed/context values.\nexport const useUdpFormParameters = () => {\n  const { search } = useLocation();\n  const pathParams = useParams();\n  const pathFormId = pathParams?.formId;\n  const pathSubmissionId = pathParams?.submissionId;\n\n  return useMemo(() => {\n    const rawParams = new URLSearchParams(typeof search === 'string' ? search : window.location.search);\n    const keys = {\n      formId: 'udpf_formid',\n      formVersion: 'udpf_formversion',\n      submissionId: 'udpf_submissionid',\n      tenantId: 'udpf_tenantid',\n    };\n\n    const extracted = {\n      formId: null,\n      formVersion: null,\n      submissionId: null,\n      tenantId: null,\n      urlContext: {}\n    };\n\n    rawParams.forEach((value, key) => {\n      const keyLower = key.toLowerCase();\n\n      if (keyLower === keys.formId) extracted.formId = value;\n      else if (keyLower === keys.formVersion) extracted.formVersion = value;\n      else if (keyLower === keys.submissionId) extracted.submissionId = value;\n      else if (keyLower === keys.tenantId) extracted.tenantId = value;\n      else if (keyLower === 'v' && extracted.formVersion == null) extracted.formVersion = value;\n\n      // Automatically group anything else starting with udpf_ into the context (case-insensitive)\n      if (keyLower.startsWith('udpf_') && !Object.values(keys).includes(keyLower)) {\n        // strip first 5 chars (\"udpf_\") regardless of original casing\n        const cleanKey = key.slice(5).toLowerCase();\n        extracted.urlContext[cleanKey] = value;\n      }\n    });\n\n    if (pathFormId) extracted.formId = pathFormId;\n    if (pathSubmissionId) extracted.submissionId = pathSubmissionId;\n\n    return extracted;\n  }, [search, pathFormId, pathSubmissionId]);\n};\n"],"mappings":";;;;AAOA,MAAaG,6BAAuB;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAClC,MAAA,EAAAC,WAAmBN,aAAa;CAChC,MAAAO,aAAmBN,WAAW;CAC9B,MAAAO,aAAmBD,YAAUE;CAC7B,MAAAC,mBAAyBH,YAAUI;CAAe,IAAAC;AAAA,KAAAR,EAAA,OAAAI,cAAAJ,EAAA,OAAAM,oBAAAN,EAAA,OAAAE,QAAA;EAGhD,MAAAO,YAAkB,IAAIC,gBAAgB,OAAOR,WAAW,WAAlBA,SAAsCS,OAAMC,SAASV,OAAQ;EAAC,IAAAW;AAAA,MAAAb,EAAA,OAAAc,OAAAC,IAAA,4BAAA,EAAA;AACvFF,QAAA;IAAAR,QACH;IAAaW,aACR;IAAkBT,cACjB;IAAmBU,UACvB;IACX;AAAAjB,KAAA,KAAAa;QAAAA,MAAAb,EAAA;EALD,MAAAkB,OAAaL;AAObL,cAAkB;GAAAH,QACR;GAAIW,aACC;GAAIT,cACH;GAAIU,UACR;GAAIE,YACF,EAAC;GACd;AAEDV,YAASW,SAASC,OAAAC,QAAA;GAChB,MAAAC,WAAiBD,IAAGE,aAAc;AAElC,OAAID,aAAaL,KAAIb,OAASG,WAASH,SAAUgB;YACxCE,aAAaL,KAAIF,YAAcR,WAASQ,cAAeK;YACvDE,aAAaL,KAAIX,aAAeC,WAASD,eAAgBc;YACzDE,aAAaL,KAAID,SAAWT,WAASS,WAAYI;YACjDE,aAAa,OAAOf,UAASQ,eAAgB,KAAMR,WAASQ,cAAeK;AAGpF,OAAIE,SAAQE,WAAY,QAAmD,IAAvE,CAAiCC,OAAMC,OAAQT,KAAK,CAAAU,SAAUL,SAAS,EAAA;IAEzE,MAAAM,WAAiBP,IAAGQ,MAAO,EAAE,CAAAN,aAAc;AAC3ChB,cAASW,WAAYU,YAAYR;;IAEnC;AAEF,MAAIjB,WAAYI,WAASH,SAAUD;AACnC,MAAIE,iBAAkBE,WAASD,eAAgBD;AAAiBN,IAAA,KAAAI;AAAAJ,IAAA,KAAAM;AAAAN,IAAA,KAAAE;AAAAF,IAAA,KAAAQ;OAAAA,aAAAR,EAAA;AAAA,QAEhEQ"}