{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { getWindow } from \"ssr-window\";\n\nexport type TQueryParamsInput = string | URL | URLSearchParams;\n\nexport type TGetQueryParamsArgs = Parameters<typeof getQueryParams>;\n\nexport type TGetQueryParamsReturn = ReturnType<typeof getQueryParams>;\n\nconst getSearchParams = (input?: TQueryParamsInput): URLSearchParams => {\n  if (input instanceof URLSearchParams) {\n    return new URLSearchParams(input);\n  }\n  if (input instanceof URL) {\n    return new URLSearchParams(input.search);\n  }\n  if (input !== undefined && typeof input !== \"string\") {\n    throw new TypeError(\"getQueryParams: input must be a string, URL, or URLSearchParams\");\n  }\n\n  const currentUrl = getWindow().location?.href || \"http://localhost/\";\n  const source = input ?? currentUrl;\n  if (typeof source !== \"string\") {\n    throw new TypeError(\"getQueryParams: input must be a string, URL, or URLSearchParams\");\n  }\n  const isQueryOnly = source.startsWith(\"?\")\n    || (!source.includes(\"/\") && !source.includes(\":\"));\n  return isQueryOnly\n    ? new URLSearchParams(source)\n    : new URL(source, currentUrl).searchParams;\n};\n\n/**\n * Reads URL query parameters into an object and preserves repeated values and bare flags.\n * @param {TQueryParamsInput} [input] URL, query string, or URLSearchParams; current URL by default\n * @returns {Record<string,string|string[]>} Query object\n * @throws {TypeError} getQueryParams: input is invalid\n * @example\n * getQueryParams(\"?tag=a&tag=b&page=1\"); // { tag: [ \"a\", \"b\" ], page: \"1\" }\n * @example\n * // Restore product filters from a shared search URL\n * const filters = getQueryParams(window.location.href);\n * const selectedBrands = Array.isArray(filters.brand)\n *   ? filters.brand\n *   : [ filters.brand ].filter(Boolean);\n */\nexport const getQueryParams = (input?: TQueryParamsInput): Record<string, string | string[]> => {\n  const result: Record<string, string | string[]> = Object.create(null);\n  getSearchParams(input).forEach((value, key) => {\n    const current = result[key];\n    if (current === undefined) {\n      result[key] = value;\n    } else if (Array.isArray(current)) {\n      current.push(value);\n    } else {\n      result[key] = [ current, value ];\n    }\n  });\n  return result;\n};\n"],"names":["getSearchParams","input","URLSearchParams","URL","search","undefined","TypeError","currentUrl","getWindow","location","href","source","isQueryOnly","startsWith","includes","searchParams","getQueryParams","result","Object","create","forEach","value","key","current","Array","isArray","push"],"mappings":"kCAQA,MAAMA,gBAAmBC,QACvB,GAAIA,iBAAiBC,gBACnB,OAAO,IAAIA,gBAAgBD,OAE7B,GAAIA,iBAAiBE,IACnB,OAAO,IAAID,gBAAgBD,MAAMG,QAEnC,GAAIH,aAAUI,UAAoBJ,QAAU,SAC1C,MAAM,IAAIK,UAAU,mEAGtB,MAAMC,WAAaC,YAAYC,UAAUC,MAAQ,oBACjD,MAAMC,OAASV,OAASM,WACxB,UAAWI,SAAW,SACpB,MAAM,IAAIL,UAAU,mEAEtB,MAAMM,YAAcD,OAAOE,WAAW,OAC/BF,OAAOG,SAAS,OAASH,OAAOG,SAAS,KAChD,OAAOF,YACH,IAAIV,gBAAgBS,QACpB,IAAIR,IAAIQ,OAAQJ,YAAYQ,cAiB3B,MAAMC,eAAkBf,QAC7B,MAAMgB,OAA4CC,OAAOC,OAAO,MAChEnB,gBAAgBC,OAAOmB,QAAQ,CAACC,MAAOC,OACrC,MAAMC,QAAUN,OAAOK,KACvB,GAAIC,eAAYlB,EACdY,OAAOK,KAAOD,WACT,GAAIG,MAAMC,QAAQF,SACvBA,QAAQG,KAAKL,YAEbJ,OAAOK,KAAO,CAAEC,QAASF,SAG7B,OAAOJ"}