{"version":3,"file":"util-BcM111R2.js","sources":["../src/scripts/common/util.js"],"sourcesContent":["export const isTouchDevice = \"ontouchstart\" in document.documentElement;\n\nexport const generateQueryString = (data = {}) => {\n let params = data;\n\n if (data instanceof FormData === true) {\n params = {};\n\n data.forEach((value, key) => (params[key] = value));\n }\n\n for (const key in params) {\n if (params[key] === \"\") {\n delete params[key];\n }\n }\n\n return new URLSearchParams(params);\n};\n\nexport const updateQueryParams = (params = []) => {\n const url = new URL(window.location.href);\n const updatedParams = new URLSearchParams(url.search);\n\n params.forEach((param) => {\n const key = param[0];\n const value = param[1] ?? false;\n\n if (value) {\n updatedParams.set(key, value);\n } else {\n updatedParams.delete(key);\n }\n });\n\n url.search = updatedParams.toString();\n\n return url;\n};\n\nexport const trackGoogleAnalytics = (event) => {\n if (window.dataLayer) {\n window.dataLayer.push(event);\n }\n};\n\n/**\n * Fires a custom event with the given name on the specified target element(s),\n * and passes optional detail data.\n *\n * @param {string} eventName - The name of the custom event to fire.\n * @param {EventTarget | Iterable} target - The target element or a collection of elements to dispatch the event on.\n * @param {Object} [detail={}] - Optional data to pass with the event (default is an empty object).\n */\nexport const fireEvent = (eventName, target, detail = {}) => {\n // Create the custom event with the specified name and detail\n const event = new CustomEvent(eventName, {\n detail: detail,\n bubbles: true,\n cancelable: true,\n });\n\n // Check if the target is iterable (e.g., NodeList, Array)\n if (target && typeof target[Symbol.iterator] === \"function\") {\n for (const element of target) {\n // Ensure the current item is a valid EventTarget\n if (element && typeof element.dispatchEvent === \"function\") {\n element.dispatchEvent(event);\n } else {\n console.warn(`fireEvent: One of the targets is not a valid EventTarget.`);\n }\n }\n }\n // If the target is a single EventTarget\n else if (target && typeof target.dispatchEvent === \"function\") {\n target.dispatchEvent(event);\n }\n // If the target is neither a single EventTarget nor iterable\n else {\n console.warn(\n `fireEvent: target must be an EventTarget or an iterable of EventTargets. Received type '${typeof target}'.`,\n );\n }\n};\n"],"names":["isTouchDevice","generateQueryString","data","params","value","key","updateQueryParams","url","updatedParams","param","trackGoogleAnalytics","event","fireEvent","eventName","target","detail","element"],"mappings":"AAAY,MAACA,EAAgB,iBAAkB,SAAS,gBAE3CC,EAAsB,CAACC,EAAO,KAAO,CAChD,IAAIC,EAASD,EAETA,aAAgB,WAClBC,EAAS,CAAA,EAETD,EAAK,QAAQ,CAACE,EAAOC,IAASF,EAAOE,CAAG,EAAID,CAAM,GAGpD,UAAWC,KAAOF,EACZA,EAAOE,CAAG,IAAM,IAClB,OAAOF,EAAOE,CAAG,EAIrB,OAAO,IAAI,gBAAgBF,CAAM,CACnC,EAEaG,EAAoB,CAACH,EAAS,KAAO,CAChD,MAAMI,EAAM,IAAI,IAAI,OAAO,SAAS,IAAI,EAClCC,EAAgB,IAAI,gBAAgBD,EAAI,MAAM,EAEpD,OAAAJ,EAAO,QAASM,GAAU,CACxB,MAAMJ,EAAMI,EAAM,CAAC,EACbL,EAAQK,EAAM,CAAC,GAAK,GAEtBL,EACFI,EAAc,IAAIH,EAAKD,CAAK,EAE5BI,EAAc,OAAOH,CAAG,CAE9B,CAAG,EAEDE,EAAI,OAASC,EAAc,WAEpBD,CACT,EAEaG,EAAwBC,GAAU,CACzC,OAAO,WACT,OAAO,UAAU,KAAKA,CAAK,CAE/B,EAUaC,EAAY,CAACC,EAAWC,EAAQC,EAAS,CAAA,IAAO,CAE3D,MAAMJ,EAAQ,IAAI,YAAYE,EAAW,CACvC,OAAQE,EACR,QAAS,GACT,WAAY,EAChB,CAAG,EAGD,GAAID,GAAU,OAAOA,EAAO,OAAO,QAAQ,GAAM,WAC/C,UAAWE,KAAWF,EAEhBE,GAAW,OAAOA,EAAQ,eAAkB,WAC9CA,EAAQ,cAAcL,CAAK,EAE3B,QAAQ,KAAK,2DAA2D,OAKrEG,GAAU,OAAOA,EAAO,eAAkB,WACjDA,EAAO,cAAcH,CAAK,EAI1B,QAAQ,KACN,2FAA2F,OAAOG,CAAM,IAC9G,CAEA"}