{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { getWindow, getDocument } from \"ssr-window\";\n\r\ntype TQueryParams = Record<string, string | number | boolean | null> | FormData;\r\n\r\nexport type TGetUrlWithQueryParamsArgs = Parameters<typeof getUrlWithQueryParams>;\r\n\r\nexport type TGetUrlWithQueryParamsReturn = ReturnType<typeof getUrlWithQueryParams>;\r\n\r\n/**\r\n * Returns a URL string with updated query parameters from an object or `FormData`.\r\n *\r\n * @param {string} [uri=window.location.href] Source URL\n * @param {Record<string, string|number|boolean|null>|FormData} [params={}] Params to merge into the query string\n * @returns {string} Updated URL\n * @example\n * // Add pagination and sorting parameters to an existing URL\n * const nextPageUrl = getUrlWithQueryParams(\"/products?category=plants\", {\n *   page: 2,\n *   sort: \"price\",\n * });\n * @example\n * // Build a filter URL that preserves repeated FormData values\n * const filters = new FormData();\n * filters.append(\"tag\", \"indoor\");\n * filters.append(\"tag\", \"sale\");\n * const filterUrl = getUrlWithQueryParams(\"/products\", filters);\n */\nexport const getUrlWithQueryParams = (\n  uri: string,\n  params: TQueryParams = {}\n): string => {\n\r\n  if (typeof uri !== \"string\") {\r\n    throw new TypeError(\"getUrlWithQueryParams: uri must be a string\");\r\n  } else if (!uri.length) {\r\n    uri = getWindow().location.href;\r\n  }\r\n\r\n  if (!params || typeof params !== \"object\") {\n    throw new TypeError(\"getUrlWithQueryParams: params must be an object\");\n  }\n\n  const a: HTMLAnchorElement = getDocument().createElement(\"a\");\n  a.href = uri;\n\n  const searchParams = new URLSearchParams(a.search);\n  if (params instanceof FormData) {\n    const replacedKeys = new Set<string>();\n    params.forEach((value, key) => {\n      if (!replacedKeys.has(key)) {\n        searchParams.delete(key);\n        replacedKeys.add(key);\n      }\n      searchParams.append(key, String(value));\n    });\n  } else {\n    Object.entries(params).forEach(([ key, value ]) => {\n      searchParams.set(key, String(value));\n    });\n  }\n  a.search = searchParams.toString();\n\n  return a.href;\n};\n"],"names":["getUrlWithQueryParams","uri","params","TypeError","length","getWindow","location","href","a","getDocument","createElement","searchParams","URLSearchParams","search","FormData","replacedKeys","Set","forEach","value","key","has","delete","add","append","String","Object","entries","set","toString"],"mappings":"8CA2BO,MAAMA,sBAAwB,CACnCC,IACAC,OAAuB,MAGvB,UAAWD,MAAQ,SACjB,MAAM,IAAIE,UAAU,oDACf,IAAKF,IAAIG,OACdH,IAAMI,YAAYC,SAASC,KAG7B,IAAKL,eAAiBA,SAAW,SAC/B,MAAM,IAAIC,UAAU,mDAGtB,MAAMK,EAAuBC,cAAcC,cAAc,KACzDF,EAAED,KAAON,IAET,MAAMU,aAAe,IAAIC,gBAAgBJ,EAAEK,QAC3C,GAAIX,kBAAkBY,SAAU,CAC9B,MAAMC,aAAe,IAAIC,IACzBd,OAAOe,QAAQ,CAACC,MAAOC,OACrB,IAAKJ,aAAaK,IAAID,KAAM,CAC1BR,aAAaU,OAAOF,KACpBJ,aAAaO,IAAIH,IACnB,CACAR,aAAaY,OAAOJ,IAAKK,OAAON,SAEpC,MACEO,OAAOC,QAAQxB,QAAQe,QAAQ,EAAGE,IAAKD,UACrCP,aAAagB,IAAIR,IAAKK,OAAON,UAGjCV,EAAEK,OAASF,aAAaiB,WAExB,OAAOpB,EAAED"}