{"version":3,"file":"remove-query-parameters.mjs","sources":["../../src/url/helpers.ts","../../src/url/get-query-parameter.ts","../../src/url/remove-query-parameters.ts"],"sourcesContent":["function splitHashQuery(hash: string): { path: string; query: string | null } {\n  const queryIndex = hash.indexOf('?');\n  if (queryIndex === -1) {\n    return { path: hash, query: null };\n  }\n\n  return {\n    path: hash.slice(0, queryIndex),\n    query: hash.slice(queryIndex + 1),\n  };\n}\n\n/**\n * Returns a query parameter from the hash fragment when the hash contains a query string.\n */\nexport function getHashQueryParameter(hash: string, param: string): string | null {\n  const { query } = splitHashQuery(hash);\n  if (query === null) {\n    return null;\n  }\n\n  return new URLSearchParams(query).get(param);\n}\n\nexport function removeParameters(queryString: string, params: string[]): string {\n  const searchParams = new URLSearchParams(queryString);\n\n  for (const param of params) {\n    searchParams.delete(param);\n  }\n\n  return searchParams.toString();\n}\n\n/**\n * Removes query parameters from the hash fragment while preserving the hash path.\n */\nexport function removeHashQueryParameters(hash: string, params: string[]): string {\n  const { path, query } = splitHashQuery(hash);\n  if (query === null) {\n    return hash;\n  }\n\n  const nextQuery = removeParameters(query, params);\n\n  return nextQuery ? `${path}?${nextQuery}` : path;\n}\n","import { getHashQueryParameter } from './helpers';\n\n/**\n * Returns the first matching query parameter from the current URL.\n *\n * Regular search parameters take precedence over parameters embedded in the hash.\n */\nexport function getQueryParameter(param: string): string | null {\n  const currentWindow = globalThis.window;\n\n  if (currentWindow === undefined) {\n    return null;\n  }\n\n  const { search, hash } = currentWindow.location;\n\n  return new URLSearchParams(search).get(param) ?? getHashQueryParameter(hash, param);\n}\n","import { removeHashQueryParameters, removeParameters } from './helpers';\n\n/**\n * Removes query parameters from the current URL and hash fragment.\n */\nexport function removeQueryParameters(params: string[]): void {\n  const currentWindow = globalThis.window;\n\n  if (currentWindow === undefined || params.length === 0) {\n    return;\n  }\n\n  const { pathname, search, hash } = currentWindow.location;\n  const newSearch = removeParameters(search, params);\n  const newHash = removeHashQueryParameters(hash, params);\n  const currentUrl = `${pathname}${search}${hash}`;\n  const nextUrl = buildRelativeUrl(pathname, newSearch, newHash);\n\n  if (currentUrl === nextUrl) {\n    return;\n  }\n\n  currentWindow.history.replaceState(null, document.title, nextUrl);\n}\n\nfunction buildRelativeUrl(pathname: string, search: string, hash: string): string {\n  return search ? `${pathname}?${search}${hash}` : `${pathname}${hash}`;\n}\n"],"names":["splitHashQuery","hash","queryIndex","getHashQueryParameter","param","query","removeParameters","queryString","params","searchParams","removeHashQueryParameters","path","nextQuery","getQueryParameter","currentWindow","search","removeQueryParameters","pathname","newSearch","newHash","currentUrl","nextUrl","buildRelativeUrl"],"mappings":"AAAA,SAASA,EAAeC,GAAsD;AAC5E,QAAMC,IAAaD,EAAK,QAAQ,GAAG;AACnC,SAAIC,MAAe,KACV,EAAE,MAAMD,GAAM,OAAO,KAAA,IAGvB;AAAA,IACL,MAAMA,EAAK,MAAM,GAAGC,CAAU;AAAA,IAC9B,OAAOD,EAAK,MAAMC,IAAa,CAAC;AAAA,EAAA;AAEpC;AAKO,SAASC,EAAsBF,GAAcG,GAA8B;AAChF,QAAM,EAAE,OAAAC,EAAA,IAAUL,EAAeC,CAAI;AACrC,SAAII,MAAU,OACL,OAGF,IAAI,gBAAgBA,CAAK,EAAE,IAAID,CAAK;AAC7C;AAEO,SAASE,EAAiBC,GAAqBC,GAA0B;AAC9E,QAAMC,IAAe,IAAI,gBAAgBF,CAAW;AAEpD,aAAWH,KAASI;AAClB,IAAAC,EAAa,OAAOL,CAAK;AAG3B,SAAOK,EAAa,SAAA;AACtB;AAKO,SAASC,EAA0BT,GAAcO,GAA0B;AAChF,QAAM,EAAE,MAAAG,GAAM,OAAAN,MAAUL,EAAeC,CAAI;AAC3C,MAAII,MAAU;AACZ,WAAOJ;AAGT,QAAMW,IAAYN,EAAiBD,GAAOG,CAAM;AAEhD,SAAOI,IAAY,GAAGD,CAAI,IAAIC,CAAS,KAAKD;AAC9C;ACvCO,SAASE,EAAkBT,GAA8B;AAC9D,QAAMU,IAAgB,WAAW;AAEjC,MAAIA,MAAkB;AACpB,WAAO;AAGT,QAAM,EAAE,QAAAC,GAAQ,MAAAd,EAAA,IAASa,EAAc;AAEvC,SAAO,IAAI,gBAAgBC,CAAM,EAAE,IAAIX,CAAK,KAAKD,EAAsBF,GAAMG,CAAK;AACpF;ACZO,SAASY,EAAsBR,GAAwB;AAC5D,QAAMM,IAAgB,WAAW;AAEjC,MAAIA,MAAkB,UAAaN,EAAO,WAAW;AACnD;AAGF,QAAM,EAAE,UAAAS,GAAU,QAAAF,GAAQ,MAAAd,EAAA,IAASa,EAAc,UAC3CI,IAAYZ,EAAiBS,GAAQP,CAAM,GAC3CW,IAAUT,EAA0BT,GAAMO,CAAM,GAChDY,IAAa,GAAGH,CAAQ,GAAGF,CAAM,GAAGd,CAAI,IACxCoB,IAAUC,EAAiBL,GAAUC,GAAWC,CAAO;AAE7D,EAAIC,MAAeC,KAInBP,EAAc,QAAQ,aAAa,MAAM,SAAS,OAAOO,CAAO;AAClE;AAEA,SAASC,EAAiBL,GAAkBF,GAAgBd,GAAsB;AAChF,SAAOc,IAAS,GAAGE,CAAQ,IAAIF,CAAM,GAAGd,CAAI,KAAK,GAAGgB,CAAQ,GAAGhB,CAAI;AACrE;"}