{"version":3,"sources":["../../src/lib/utils.ts","../../src/lib/core/search-params.ts","../../src/vanilla/create-search-params.ts"],"names":["toArray","value","serialize","deserialize","validateParams","key","values","createUrl","pathname","params","search","createSearchParamsCore","adapter","searchParams","navigate","getMutableParams","updateAndNavigate","updater","newParams","get","options","parsedValues","v","flattenedValues","set","add","currentValues","updated","remove","valuesToRemove","valueStr","defaultValue","currentValue","oldValue","newValue","result","existing","createSearchParams","url"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Converts a value to an array if it isn't already one.\n */\nexport function toArray<T>(value: T | T[] | undefined): T[] {\n  if (value === undefined) return [];\n  return Array.isArray(value) ? value : [value];\n}\n\n/**\n * Serializes a value to a URL-safe string.\n */\nexport function serialize(value: unknown): string {\n  if (value === undefined || value === null) return \"\";\n  return JSON.stringify(value);\n}\n\n/**\n * Deserializes a URL-safe string to a value.\n */\nexport function deserialize<T>(value: string): T | undefined {\n  try {\n    return JSON.parse(value) as T;\n  } catch (error) {\n    return undefined;\n  }\n}\n\n/**\n * Creates a new URLSearchParams instance with updated parameters.\n */\nexport function updateSearchParams(\n  current: URLSearchParams,\n  key: string,\n  values: string[]\n): URLSearchParams {\n  const newParams = new URLSearchParams(current);\n  newParams.delete(key);\n  values.forEach((value) => newParams.append(key, value));\n  return newParams;\n}\n\n/**\n * Validates search parameter inputs.\n */\nexport function validateParams(key: string, values: unknown | unknown[]): void {\n  if (!key) throw new Error(\"Key cannot be empty\");\n  if (values === undefined) throw new Error(\"Values cannot be undefined\");\n}\n\n/**\n * Creates a URL string from pathname and search params.\n */\nexport function createUrl(pathname: string, params: URLSearchParams): string {\n  const search = params.toString();\n  return `${pathname}${search ? `?${search}` : \"\"}`;\n}\n\n/**\n * Processes multiple parameter updates.\n */\nexport function batchUpdateParams(\n  current: URLSearchParams,\n  updates: Record<string, string[]>\n): URLSearchParams {\n  const newParams = new URLSearchParams(current);\n\n  Object.entries(updates).forEach(([key, values]) => {\n    newParams.delete(key);\n    values.forEach((value) => newParams.append(key, value));\n  });\n\n  return newParams;\n}\n","import {\n  serialize,\n  deserialize,\n  toArray,\n  validateParams,\n  createUrl,\n} from \"../utils\";\nimport type { ParamOptions } from \"../types\";\nimport { ReadonlyURLSearchParams } from \"next/navigation\";\n\n/**\n * Creates core search parameter functionality that can be used across different adapters.\n * This is the shared implementation used by both React hooks and vanilla JS.\n *\n * @param adapter - An object containing the adapter implementation\n * @param adapter.pathname - The current URL pathname\n * @param adapter.searchParams - The URLSearchParams instance (can be readonly in Next.js)\n * @param adapter.navigate - Function to handle URL navigation\n * @returns An object containing methods for manipulating URL parameters\n */\nexport function createSearchParamsCore(adapter: {\n  pathname: string;\n  searchParams: URLSearchParams | ReadonlyURLSearchParams;\n  navigate: (url: string) => void;\n}) {\n  const { pathname, searchParams, navigate } = adapter;\n\n  const getMutableParams = () => {\n    return new URLSearchParams(searchParams.toString());\n  };\n\n  const updateAndNavigate = (updater: (params: URLSearchParams) => void) => {\n    const newParams = getMutableParams();\n    updater(newParams);\n    navigate(createUrl(pathname, newParams));\n  };\n\n  /**\n   * Gets values for a key as a structured object containing both key and value(s).\n   * If there's only one value, returns it as a string. If multiple values exist,\n   * returns them as an array.\n   *\n   * @param key - The URL parameter key to get values for\n   * @param options - Optional configuration for parsing values\n   * @returns The value(s) for the key, or undefined if not found\n   *\n   * @example\n   * // URL: ?filter=active\n   * get('filter') // Returns: 'active'\n   *\n   * // URL: ?filter=active&filter=pending\n   * get('filter') // Returns: ['active', 'pending']\n   *\n   * // URL: ?data={\"test\":true}\n   * get('data', { parse: true }) // Returns: { test: true }\n   */\n  const get = <T>(key: string, options?: ParamOptions): T | undefined => {\n    const values = searchParams.getAll(key);\n    if (values.length === 0) return undefined;\n\n    if (options?.parse) {\n      try {\n        const parsedValues = values.map((v) => deserialize<T>(v));\n        return options?.forceArray || values.length > 1\n          ? (parsedValues as T) \n          : (parsedValues[0] as T);\n      } catch (error) {\n        return undefined;\n      }\n    }\n\n    const flattenedValues = values.flatMap(v => v.split(','));\n    return options?.forceArray || flattenedValues.length > 1\n      ? (flattenedValues as T) \n      : (flattenedValues[0] as T);\n  };\n\n  /**\n   * Sets/replaces all values for a key.\n   *\n   * @param key - The URL parameter key to set values for\n   * @param values - Single value or array of values to set\n   * @param options - Optional configuration for serializing values\n   *\n   * @example\n   * // Set single value\n   * set('view', 'grid');\n   *\n   * // Set multiple values\n   * set('filter', ['active', 'pending']);\n   *\n   * // Set serialized object\n   * set('filters', { status: 'active' }, { serialize: true });\n   */\n  const set = (key: string, values: unknown | unknown[], options?: ParamOptions): void => {\n    validateParams(key, values);\n    updateAndNavigate((params) => {\n      params.delete(key);\n      const processedValues = options?.serialize\n        ? toArray(values).map((v) => serialize(v))\n        : toArray(values).map(String);\n      processedValues.forEach((value) => params.append(key, value));\n    });\n  };\n\n  /**\n   * Adds new values to existing ones for a key, preventing duplicates.\n   * Accepts either a single value or an array of values.\n   *\n   * @param key - The URL parameter key to add values to\n   * @param values - Single value or array of values to add\n   * @param options - Optional configuration for serializing values\n   *\n   * @example\n   * // Add single value\n   * add('filter', 'completed');\n   *\n   * // Add multiple values\n   * add('filter', ['archived', 'draft']);\n   */\n  const add = (key: string, values: unknown | unknown[], options?: ParamOptions): void => {\n    validateParams(key, values);\n    const currentValues = get(key) || [];\n    const updated = [...new Set([\n      ...toArray(currentValues),\n      ...toArray(options?.serialize ? toArray(values).map(serialize) : values)\n    ])];\n    \n    updateAndNavigate((params) => {\n      params.delete(key);\n      updated.forEach((value) => params.append(key, String(value)));\n    });\n  };\n\n  /**\n   * Removes specific values from a key's array.\n   * Accepts either a single value or an array of values to remove.\n   *\n   * @param key - The URL parameter key to remove values from\n   * @param values - Single value or array of values to remove\n   *\n   * @example\n   * // Remove single value\n   * remove('filter', 'pending');\n   *\n   * // Remove multiple values\n   * remove('filter', ['archived', 'draft']);\n   */\n  const remove = (key: string, values: unknown | unknown[]): void => {\n    const currentValues = toArray(get(key));\n    const valuesToRemove = toArray(values);\n    const updated = currentValues.filter(\n      (value) => !valuesToRemove.includes(value)\n    );\n    \n    updateAndNavigate((params) => {\n      params.delete(key);\n      updated.forEach((value) => params.append(key, String(value)));\n    });\n  };\n\n  /**\n   * Checks if a URL parameter key contains a specific value.\n   * For single values, checks for exact match.\n   * For array values, checks if value exists in the array.\n   *\n   * @param key - The URL parameter key to check\n   * @param value - The value to look for\n   * @param options - Optional configuration for parsing values before comparison\n   * @returns True if the key contains the value, false otherwise\n   *\n   * @example\n   * // URL: ?filter=active\n   * matches('filter', 'active') // true\n   * matches('filter', 'pending') // false\n   *\n   * // URL: ?filter=active&filter=pending\n   * matches('filter', 'active') // true\n   * matches('filter', 'completed') // false\n   */\n  const matches = (key: string, value: unknown, options?: ParamOptions): boolean => {\n    const values = get(key, options);\n    if (!values) return false;\n\n    // For parsed objects, use JSON string comparison\n    if (options?.parse) {\n      const valueStr = JSON.stringify(value);\n      if (Array.isArray(values)) {\n        return values.some(v => JSON.stringify(v) === valueStr);\n      }\n      return JSON.stringify(values) === valueStr;\n    }\n\n    // For regular values, use direct comparison\n    if (Array.isArray(values)) {\n      return values.includes(value as never);\n    }\n    return values === value;\n  };\n\n  /**\n   * Gets a value with a default fallback if the key doesn't exist.\n   *\n   * @param key - The URL parameter key to get the value for\n   * @param defaultValue - The default value to return if the key doesn't exist\n   * @param options - Optional configuration for parsing values\n   * @returns The value if it exists, otherwise the default value\n   */\n  const getWithDefault = <T>(\n    key: string,\n    defaultValue: T,\n    options?: ParamOptions\n  ): T => {\n    const value = get<T>(key, options);\n    return value === undefined ? defaultValue : value;\n  };\n\n  /**\n   * Clears a specific key from the URL parameters\n   */\n  const clear = (key: string): void => {\n    updateAndNavigate((params) => params.delete(key));\n  };\n\n  /**\n   * Resets all URL search parameters\n   */\n  const resetAllParams = (): void => {\n    navigate(pathname);\n  };\n\n  /**\n   * Sets multiple URL parameter key/value pairs simultaneously.\n   * Preserves any existing parameters not included in the update.\n   *\n   * @param params - An object where keys are parameter names and values are arrays of values\n   * @param options - Optional configuration for serializing values\n   *\n   * @example\n   * // Set multiple parameters at once\n   * setMany({\n   *   filter: ['active', 'pending'],\n   *   sort: ['date'],\n   *   view: ['grid']\n   * });\n   *\n   * // Set serialized objects\n   * setMany({\n   *   filters: [{ status: 'active' }],\n   *   config: [{ view: 'grid' }]\n   * }, { serialize: true });\n   */\n  const setMany = (\n    params: Record<string, string | string[]>,\n    options?: ParamOptions\n  ): void => {\n    Object.entries(params).forEach(([key, values]) => {\n      validateParams(key, values);\n    });\n\n    updateAndNavigate((newParams) => {\n      Object.entries(params).forEach(([key, values]) => {\n        newParams.delete(key);\n        const processedValues = options?.serialize\n          ? toArray(values).map((v) => serialize(v))\n          : toArray(values).map(String);\n        processedValues.forEach((value) => newParams.append(key, value));\n      });\n    });\n  };\n\n  const toggle = (key: string, value?: string, options?: ParamOptions): void => {\n    const currentValue = get(key, options);\n    if (currentValue) {\n      remove(key, currentValue);\n    } else {\n      add(key, value || 'true', options);\n    }\n  };\n\n  const update = (key: string, oldValue: string, newValue: string): void => {\n    const currentValues = toArray(get(key));\n    const updated = currentValues.map((value) => (value === oldValue ? newValue : value));\n    set(key, updated);\n  };\n\n  const getAll = (): Record<string, string | string[]> => {\n    const result: Record<string, string | string[]> = {};\n    searchParams.forEach((value, key) => {\n      const existing = result[key];\n      result[key] = existing ? [...toArray(existing), value] : value;\n    });\n    return result;\n  };\n\n  return {\n    get,\n    set,\n    add,\n    remove,\n    matches,\n    getWithDefault,\n    clear,\n    resetAllParams,\n    setMany,\n    toggle,\n    update,\n    getAll,\n    params: searchParams,\n  };\n}\n","import { createSearchParamsCore } from \"../lib/core/search-params\";\n\nexport function createSearchParams() {\n  const searchParams = new URLSearchParams(window.location.search);\n\n  return createSearchParamsCore({\n    pathname: window.location.pathname,\n    searchParams,\n    navigate: (url) => {\n      window.history.pushState({}, \"\", url);\n    },\n  });\n}\n\n// Expose to window for IIFE/UMD builds\nif (typeof window !== \"undefined\") {\n  (window as any).UseSearchParams = {\n    createSearchParams,\n  };\n}\n"]}