UNPKG

advanced-search-params

Version:

[![npm version](https://badge.fury.io/js/%40urlkit%2Fsearch-params.svg)](https://www.npmjs.com/package/advanced-search-params) [![jsDelivr hits](https://data.jsdelivr.com/v1/package/npm/advanced-search-params/badge)](https://www.jsdelivr.com/package/npm/a

2 lines (1 loc) 2.31 kB
var UseSearchParams=function(o){"use strict";function u(c){return c===void 0?[]:Array.isArray(c)?c:[c]}function g(c){return c==null?"":JSON.stringify(c)}function y(c){try{return JSON.parse(c)}catch{return}}function m(c,l){if(!c)throw new Error("Key cannot be empty");if(l===void 0)throw new Error("Values cannot be undefined")}function E(c,l){const d=l.toString();return`${c}${d?`?${d}`:""}`}function O(c){const{pathname:l,searchParams:d,navigate:w}=c,b=()=>new URLSearchParams(d.toString()),h=r=>{const e=b();r(e),w(E(l,e))},i=(r,e)=>{const t=d.getAll(r);if(t.length===0)return;if(e!=null&&e.parse)try{const s=t.map(n=>y(n));return e!=null&&e.forceArray||t.length>1?s:s[0]}catch{return}const a=t.flatMap(s=>s.split(","));return e!=null&&e.forceArray||a.length>1?a:a[0]},A=(r,e,t)=>{m(r,e),h(a=>{a.delete(r),(t!=null&&t.serialize?u(e).map(n=>g(n)):u(e).map(String)).forEach(n=>a.append(r,n))})},P=(r,e,t)=>{m(r,e);const a=i(r)||[],s=[...new Set([...u(a),...u(t!=null&&t.serialize?u(e).map(g):e)])];h(n=>{n.delete(r),s.forEach(f=>n.append(r,String(f)))})},V=(r,e)=>{const t=u(i(r)),a=u(e),s=t.filter(n=>!a.includes(n));h(n=>{n.delete(r),s.forEach(f=>n.append(r,String(f)))})};return{get:i,set:A,add:P,remove:V,matches:(r,e,t)=>{const a=i(r,t);if(!a)return!1;if(t!=null&&t.parse){const s=JSON.stringify(e);return Array.isArray(a)?a.some(n=>JSON.stringify(n)===s):JSON.stringify(a)===s}return Array.isArray(a)?a.includes(e):a===e},getWithDefault:(r,e,t)=>{const a=i(r,t);return a===void 0?e:a},clear:r=>{h(e=>e.delete(r))},resetAllParams:()=>{w(l)},setMany:(r,e)=>{Object.entries(r).forEach(([t,a])=>{m(t,a)}),h(t=>{Object.entries(r).forEach(([a,s])=>{t.delete(a),(e!=null&&e.serialize?u(s).map(f=>g(f)):u(s).map(String)).forEach(f=>t.append(a,f))})})},toggle:(r,e,t)=>{const a=i(r,t);a?V(r,a):P(r,e||"true",t)},update:(r,e,t)=>{const s=u(i(r)).map(n=>n===e?t:n);A(r,s)},getAll:()=>{const r={};return d.forEach((e,t)=>{const a=r[t];r[t]=a?[...u(a),e]:e}),r},params:d}}function S(){const c=new URLSearchParams(window.location.search);return O({pathname:window.location.pathname,searchParams:c,navigate:l=>{window.history.pushState({},"",l)}})}return typeof window<"u"&&(window.UseSearchParams={createSearchParams:S}),o.createSearchParams=S,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),o}({});