use-navigation-api 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,15 @@
1
1
  export type ParamsMapper<T> = (params: URLSearchParams) => T;
2
- export declare function mapQueryParams(params: URLSearchParams, keys?: string[]): Record<string, string | string[]>;
3
- export declare function useQueryParams(): Record<string, string | string[]>;
4
- export declare function useQueryParams<K extends string>(keys: K[]): Record<K, string | string[]>;
2
+ export declare function mapQueryParams(params: URLSearchParams, keys?: string[], arrayKeys?: string[]): Record<string, string | string[] | null>;
3
+ /**
4
+ * Returns the first value of each query parameter found in the url.
5
+ */
6
+ export declare function useQueryParams(): Record<string, string>;
7
+ /**
8
+ * Returns the first value of each query parameter found in keys, and all values of each parameter found in arrayKeys.
9
+ * Note that typescript types of K and M should not overlap - manual typing or casting variables to `as const` may be required.
10
+ */
11
+ export declare function useQueryParams<K extends string, M extends string>(keys: K[], arrayKeys?: M[]): Record<K, string | null> & Record<M, string[]>;
12
+ /**
13
+ * Maps SearchParams to a custom type using the provided mapper function.
14
+ */
5
15
  export declare function useQueryParams<T>(mapper: ParamsMapper<T>): T;
@@ -620,18 +620,24 @@ function useQueryParam(e, t = !1) {
620
620
  e
621
621
  ]);
622
622
  }
623
- function mapQueryParams(e, t) {
624
- let n = {};
625
- return e.forEach((e, r) => {
626
- t && !t.includes(r) || (n[r] ? Array.isArray(n[r]) ? n[r].push(e) : n[r] = [n[r], e] : n[r] = e);
627
- }), n;
623
+ function mapQueryParams(e, t, n) {
624
+ let r = Object.fromEntries((t || []).map((e) => [e, null]).concat((n || []).map((e) => [e, []])));
625
+ return e.forEach((e, i) => {
626
+ if (!(t && !(t.includes(i) || n?.includes(i)))) if (!r[i]) r[i] = e;
627
+ else if (t?.includes(i)) return;
628
+ else Array.isArray(r[i]) ? r[i].push(e) : r[i] = [r[i], e];
629
+ }), r;
628
630
  }
629
- function useQueryParams(e) {
630
- let t = useLocation();
631
+ function useQueryParams(e, t) {
632
+ let n = useLocation();
631
633
  return useMemo(() => {
632
- let n = parseSearchParams(t);
633
- return Array.isArray(e) ? mapQueryParams(n, e) : (e || mapQueryParams)(n);
634
- }, [t, e]);
634
+ let r = parseSearchParams(n);
635
+ return Array.isArray(e) ? mapQueryParams(r, e, t) : (e || mapQueryParams)(r);
636
+ }, [
637
+ n,
638
+ e,
639
+ t
640
+ ]);
635
641
  }
636
642
  function useLocationWithParam(e, t, n) {
637
643
  return useLocation((n) => t === null ? n.searchParams.delete(e) : n.searchParams.set(e, t), n);
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`)):typeof define==`function`&&define.amd?define([`exports`,`react`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.useNavigationAPI={},e.React))})(this,function(e,t){var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),l=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e},u=(e,t,i)=>(i=e==null?{}:n(o(e)),l(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)),d=c(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?r(e):typeof define==`function`&&define.amd?define([`exports`],r):r(n.URI=n.URI||{})})(e,(function(e){function t(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(t.length>1){t[0]=t[0].slice(0,-1);for(var r=t.length-1,i=1;i<r;++i)t[i]=t[i].slice(1,-1);return t[r]=t[r].slice(1),t.join(``)}else return t[0]}function n(e){return`(?:`+e+`)`}function r(e){return e===void 0?`undefined`:e===null?`null`:Object.prototype.toString.call(e).split(` `).pop().split(`]`).shift().toLowerCase()}function i(e){return e.toUpperCase()}function a(e){return e==null?[]:e instanceof Array?e:typeof e.length!=`number`||e.split||e.setInterval||e.call?[e]:Array.prototype.slice.call(e)}function o(e,t){var n=e;if(t)for(var r in t)n[r]=t[r];return n}function s(e){var r=`[A-Za-z]`,i=`[0-9]`,a=t(i,`[A-Fa-f]`),o=n(n(`%[EFef]`+a+`%`+a+a+`%`+a+a)+`|`+n(`%[89A-Fa-f]`+a+`%`+a+a)+`|`+n(`%`+a+a)),s=`[\\:\\/\\?\\#\\[\\]\\@]`,c=`[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]`,l=t(s,c),u=e?`[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]`:`[]`,d=e?`[\\uE000-\\uF8FF]`:`[]`,f=t(r,i,`[\\-\\.\\_\\~]`,u),p=n(r+t(r,i,`[\\+\\-\\.]`)+`*`),m=n(n(o+`|`+t(f,c,`[\\:]`))+`*`);n(n(`25[0-5]`)+`|`+n(`2[0-4]`+i)+`|`+n(`1`+i+i)+`|`+n(`[1-9]`+i)+`|`+i);var h=n(n(`25[0-5]`)+`|`+n(`2[0-4]`+i)+`|`+n(`1`+i+i)+`|`+n(`0?[1-9]`+i)+`|0?0?`+i),g=n(h+`\\.`+h+`\\.`+h+`\\.`+h),_=n(a+`{1,4}`),v=n(n(_+`\\:`+_)+`|`+g),y=n([n(n(_+`\\:`)+`{6}`+v),n(`\\:\\:`+n(_+`\\:`)+`{5}`+v),n(n(_)+`?\\:\\:`+n(_+`\\:`)+`{4}`+v),n(n(n(_+`\\:`)+`{0,1}`+_)+`?\\:\\:`+n(_+`\\:`)+`{3}`+v),n(n(n(_+`\\:`)+`{0,2}`+_)+`?\\:\\:`+n(_+`\\:`)+`{2}`+v),n(n(n(_+`\\:`)+`{0,3}`+_)+`?\\:\\:`+_+`\\:`+v),n(n(n(_+`\\:`)+`{0,4}`+_)+`?\\:\\:`+v),n(n(n(_+`\\:`)+`{0,5}`+_)+`?\\:\\:`+_),n(n(n(_+`\\:`)+`{0,6}`+_)+`?\\:\\:`)].join(`|`)),b=n(n(f+`|`+o)+`+`);n(y+`\\%25`+b);var x=n(y+n(`\\%25|\\%(?!`+a+`{2})`)+b),S=n(`[vV]`+a+`+\\.`+t(f,c,`[\\:]`)+`+`),C=n(`\\[`+n(x+`|`+y+`|`+S)+`\\]`),w=n(n(o+`|`+t(f,c))+`*`),T=n(C+`|`+g+`(?!`+w+`)|`+w),E=n(i+`*`),D=n(n(m+`@`)+`?`+T+n(`\\:`+E)+`?`),O=n(o+`|`+t(f,c,`[\\:\\@]`)),k=n(O+`*`),A=n(O+`+`),j=n(n(o+`|`+t(f,c,`[\\@]`))+`+`),M=n(n(`\\/`+k)+`*`),N=n(`\\/`+n(A+M)+`?`),P=n(j+M),F=n(A+M),I=`(?!`+O+`)`;n(M+`|`+N+`|`+P+`|`+F+`|`+I);var L=n(n(O+`|`+t(`[\\/\\?]`,d))+`*`),R=n(n(O+`|[\\/\\?]`)+`*`),z=n(n(`\\/\\/`+D+M)+`|`+N+`|`+F+`|`+I),B=n(p+`\\:`+z+n(`\\?`+L)+`?`+n(`\\#`+R)+`?`),V=n(n(n(`\\/\\/`+D+M)+`|`+N+`|`+P+`|`+I)+n(`\\?`+L)+`?`+n(`\\#`+R)+`?`);return n(B+`|`+V),n(p+`\\:`+z+n(`\\?`+L)+`?`),``+p+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+F+`|`+I+`)`)+n(`\\?(`+L+`)`)+n(`\\#(`+R+`)`),``+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+P+`|`+I+`)`)+n(`\\?(`+L+`)`)+n(`\\#(`+R+`)`),``+p+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+F+`|`+I+`)`)+n(`\\?(`+L+`)`),``+n(`\\#(`+R+`)`),``+n(`(`+m+`)@`)+T+n(`\\:(`+E+`)`),{NOT_SCHEME:new RegExp(t(`[^]`,r,i,`[\\+\\-\\.]`),`g`),NOT_USERINFO:new RegExp(t(`[^\\%\\:]`,f,c),`g`),NOT_HOST:new RegExp(t(`[^\\%\\[\\]\\:]`,f,c),`g`),NOT_PATH:new RegExp(t(`[^\\%\\/\\:\\@]`,f,c),`g`),NOT_PATH_NOSCHEME:new RegExp(t(`[^\\%\\/\\@]`,f,c),`g`),NOT_QUERY:new RegExp(t(`[^\\%]`,f,c,`[\\:\\@\\/\\?]`,d),`g`),NOT_FRAGMENT:new RegExp(t(`[^\\%]`,f,c,`[\\:\\@\\/\\?]`),`g`),ESCAPE:new RegExp(t(`[^]`,f,c),`g`),UNRESERVED:new RegExp(f,`g`),OTHER_CHARS:new RegExp(t(`[^\\%]`,f,l),`g`),PCT_ENCODED:new RegExp(o,`g`),IPV4ADDRESS:RegExp(`^(`+g+`)$`),IPV6ADDRESS:RegExp(`^\\[?(`+y+`)`+n(n(`\\%25|\\%(?!`+a+`{2})`)+`(`+b+`)`)+`?\\]?$`)}}var c=s(!1),l=s(!0),u=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw TypeError(`Invalid attempt to destructure non-iterable instance`)}}(),d=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}else return Array.from(e)},f=2147483647,p=36,m=1,h=26,g=38,_=700,v=72,y=128,b=`-`,x=/^xn--/,S=/[^\0-\x7E]/,C=/[\x2E\u3002\uFF0E\uFF61]/g,w={overflow:`Overflow: input needs wider integers to process`,"not-basic":`Illegal input >= 0x80 (not a basic code point)`,"invalid-input":`Invalid input`},T=p-m,E=Math.floor,D=String.fromCharCode;function O(e){throw RangeError(w[e])}function k(e,t){for(var n=[],r=e.length;r--;)n[r]=t(e[r]);return n}function A(e,t){var n=e.split(`@`),r=``;n.length>1&&(r=n[0]+`@`,e=n[1]),e=e.replace(C,`.`);var i=k(e.split(`.`),t).join(`.`);return r+i}function j(e){for(var t=[],n=0,r=e.length;n<r;){var i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var a=e.charCodeAt(n++);(a&64512)==56320?t.push(((i&1023)<<10)+(a&1023)+65536):(t.push(i),n--)}else t.push(i)}return t}var M=function(e){return String.fromCodePoint.apply(String,d(e))},N=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:p},P=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},F=function(e,t,n){var r=0;for(e=n?E(e/_):e>>1,e+=E(e/t);e>T*h>>1;r+=p)e=E(e/T);return E(r+(T+1)*e/(e+g))},I=function(e){var t=[],n=e.length,r=0,i=y,a=v,o=e.lastIndexOf(b);o<0&&(o=0);for(var s=0;s<o;++s)e.charCodeAt(s)>=128&&O(`not-basic`),t.push(e.charCodeAt(s));for(var c=o>0?o+1:0;c<n;){for(var l=r,u=1,d=p;;d+=p){c>=n&&O(`invalid-input`);var g=N(e.charCodeAt(c++));(g>=p||g>E((f-r)/u))&&O(`overflow`),r+=g*u;var _=d<=a?m:d>=a+h?h:d-a;if(g<_)break;var x=p-_;u>E(f/x)&&O(`overflow`),u*=x}var S=t.length+1;a=F(r-l,S,l==0),E(r/S)>f-i&&O(`overflow`),i+=E(r/S),r%=S,t.splice(r++,0,i)}return String.fromCodePoint.apply(String,t)},L=function(e){var t=[];e=j(e);var n=e.length,r=y,i=0,a=v,o=!0,s=!1,c=void 0;try{for(var l=e[Symbol.iterator](),u;!(o=(u=l.next()).done);o=!0){var d=u.value;d<128&&t.push(D(d))}}catch(e){s=!0,c=e}finally{try{!o&&l.return&&l.return()}finally{if(s)throw c}}var g=t.length,_=g;for(g&&t.push(b);_<n;){var x=f,S=!0,C=!1,w=void 0;try{for(var T=e[Symbol.iterator](),k;!(S=(k=T.next()).done);S=!0){var A=k.value;A>=r&&A<x&&(x=A)}}catch(e){C=!0,w=e}finally{try{!S&&T.return&&T.return()}finally{if(C)throw w}}var M=_+1;x-r>E((f-i)/M)&&O(`overflow`),i+=(x-r)*M,r=x;var N=!0,I=!1,L=void 0;try{for(var R=e[Symbol.iterator](),z;!(N=(z=R.next()).done);N=!0){var B=z.value;if(B<r&&++i>f&&O(`overflow`),B==r){for(var V=i,H=p;;H+=p){var U=H<=a?m:H>=a+h?h:H-a;if(V<U)break;var W=V-U,G=p-U;t.push(D(P(U+W%G,0))),V=E(W/G)}t.push(D(P(V,0))),a=F(i,M,_==g),i=0,++_}}}catch(e){I=!0,L=e}finally{try{!N&&R.return&&R.return()}finally{if(I)throw L}}++i,++r}return t.join(``)},R={version:`2.1.0`,ucs2:{decode:j,encode:M},decode:I,encode:L,toASCII:function(e){return A(e,function(e){return S.test(e)?`xn--`+L(e):e})},toUnicode:function(e){return A(e,function(e){return x.test(e)?I(e.slice(4).toLowerCase()):e})}},z={};function B(e){var t=e.charCodeAt(0),n=void 0;return n=t<16?`%0`+t.toString(16).toUpperCase():t<128?`%`+t.toString(16).toUpperCase():t<2048?`%`+(t>>6|192).toString(16).toUpperCase()+`%`+(t&63|128).toString(16).toUpperCase():`%`+(t>>12|224).toString(16).toUpperCase()+`%`+(t>>6&63|128).toString(16).toUpperCase()+`%`+(t&63|128).toString(16).toUpperCase(),n}function V(e){for(var t=``,n=0,r=e.length;n<r;){var i=parseInt(e.substr(n+1,2),16);if(i<128)t+=String.fromCharCode(i),n+=3;else if(i>=194&&i<224){if(r-n>=6){var a=parseInt(e.substr(n+4,2),16);t+=String.fromCharCode((i&31)<<6|a&63)}else t+=e.substr(n,6);n+=6}else if(i>=224){if(r-n>=9){var o=parseInt(e.substr(n+4,2),16),s=parseInt(e.substr(n+7,2),16);t+=String.fromCharCode((i&15)<<12|(o&63)<<6|s&63)}else t+=e.substr(n,9);n+=9}else t+=e.substr(n,3),n+=3}return t}function H(e,t){function n(e){var n=V(e);return n.match(t.UNRESERVED)?n:e}return e.scheme&&=String(e.scheme).replace(t.PCT_ENCODED,n).toLowerCase().replace(t.NOT_SCHEME,``),e.userinfo!==void 0&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,n).replace(t.NOT_USERINFO,B).replace(t.PCT_ENCODED,i)),e.host!==void 0&&(e.host=String(e.host).replace(t.PCT_ENCODED,n).toLowerCase().replace(t.NOT_HOST,B).replace(t.PCT_ENCODED,i)),e.path!==void 0&&(e.path=String(e.path).replace(t.PCT_ENCODED,n).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,B).replace(t.PCT_ENCODED,i)),e.query!==void 0&&(e.query=String(e.query).replace(t.PCT_ENCODED,n).replace(t.NOT_QUERY,B).replace(t.PCT_ENCODED,i)),e.fragment!==void 0&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,n).replace(t.NOT_FRAGMENT,B).replace(t.PCT_ENCODED,i)),e}function U(e){return e.replace(/^0*(.*)/,`$1`)||`0`}function W(e,t){var n=u(e.match(t.IPV4ADDRESS)||[],2)[1];return n?n.split(`.`).map(U).join(`.`):e}function G(e,t){var n=u(e.match(t.IPV6ADDRESS)||[],3),r=n[1],i=n[2];if(r){for(var a=u(r.toLowerCase().split(`::`).reverse(),2),o=a[0],s=a[1],c=s?s.split(`:`).map(U):[],l=o.split(`:`).map(U),d=t.IPV4ADDRESS.test(l[l.length-1]),f=d?7:8,p=l.length-f,m=Array(f),h=0;h<f;++h)m[h]=c[h]||l[p+h]||``;d&&(m[f-1]=W(m[f-1],t));var g=m.reduce(function(e,t,n){if(!t||t===`0`){var r=e[e.length-1];r&&r.index+r.length===n?r.length++:e.push({index:n,length:1})}return e},[]).sort(function(e,t){return t.length-e.length})[0],_=void 0;if(g&&g.length>1){var v=m.slice(0,g.index),y=m.slice(g.index+g.length);_=v.join(`:`)+`::`+y.join(`:`)}else _=m.join(`:`);return i&&(_+=`%`+i),_}else return e}var ee=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,te=``.match(/(){0}/)[1]===void 0;function K(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={},r=t.iri===!1?c:l;t.reference===`suffix`&&(e=(t.scheme?t.scheme+`:`:``)+`//`+e);var i=e.match(ee);if(i){te?(n.scheme=i[1],n.userinfo=i[3],n.host=i[4],n.port=parseInt(i[5],10),n.path=i[6]||``,n.query=i[7],n.fragment=i[8],isNaN(n.port)&&(n.port=i[5])):(n.scheme=i[1]||void 0,n.userinfo=e.indexOf(`@`)===-1?void 0:i[3],n.host=e.indexOf(`//`)===-1?void 0:i[4],n.port=parseInt(i[5],10),n.path=i[6]||``,n.query=e.indexOf(`?`)===-1?void 0:i[7],n.fragment=e.indexOf(`#`)===-1?void 0:i[8],isNaN(n.port)&&(n.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?i[4]:void 0)),n.host&&=G(W(n.host,r),r),n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&!n.path&&n.query===void 0?n.reference=`same-document`:n.scheme===void 0?n.reference=`relative`:n.fragment===void 0?n.reference=`absolute`:n.reference=`uri`,t.reference&&t.reference!==`suffix`&&t.reference!==n.reference&&(n.error=n.error||`URI is not a `+t.reference+` reference.`);var a=z[(t.scheme||n.scheme||``).toLowerCase()];if(!t.unicodeSupport&&(!a||!a.unicodeSupport)){if(n.host&&(t.domainHost||a&&a.domainHost))try{n.host=R.toASCII(n.host.replace(r.PCT_ENCODED,V).toLowerCase())}catch(e){n.error=n.error||`Host's domain name can not be converted to ASCII via punycode: `+e}H(n,c)}else H(n,r);a&&a.parse&&a.parse(n,t)}else n.error=n.error||`URI can not be parsed.`;return n}function ne(e,t){var n=t.iri===!1?c:l,r=[];return e.userinfo!==void 0&&(r.push(e.userinfo),r.push(`@`)),e.host!==void 0&&r.push(G(W(String(e.host),n),n).replace(n.IPV6ADDRESS,function(e,t,n){return`[`+t+(n?`%25`+n:``)+`]`})),(typeof e.port==`number`||typeof e.port==`string`)&&(r.push(`:`),r.push(String(e.port))),r.length?r.join(``):void 0}var re=/^\.\.?\//,ie=/^\/\.(\/|$)/,ae=/^\/\.\.(\/|$)/,oe=/^\/?(?:.|\n)*?(?=\/|$)/;function q(e){for(var t=[];e.length;)if(e.match(re))e=e.replace(re,``);else if(e.match(ie))e=e.replace(ie,`/`);else if(e.match(ae))e=e.replace(ae,`/`),t.pop();else if(e===`.`||e===`..`)e=``;else{var n=e.match(oe);if(n){var r=n[0];e=e.slice(r.length),t.push(r)}else throw Error(`Unexpected dot segment condition`)}return t.join(``)}function J(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.iri?l:c,r=[],i=z[(t.scheme||e.scheme||``).toLowerCase()];if(i&&i.serialize&&i.serialize(e,t),e.host&&!n.IPV6ADDRESS.test(e.host)&&(t.domainHost||i&&i.domainHost))try{e.host=t.iri?R.toUnicode(e.host):R.toASCII(e.host.replace(n.PCT_ENCODED,V).toLowerCase())}catch(n){e.error=e.error||`Host's domain name can not be converted to `+(t.iri?`Unicode`:`ASCII`)+` via punycode: `+n}H(e,n),t.reference!==`suffix`&&e.scheme&&(r.push(e.scheme),r.push(`:`));var a=ne(e,t);if(a!==void 0&&(t.reference!==`suffix`&&r.push(`//`),r.push(a),e.path&&e.path.charAt(0)!==`/`&&r.push(`/`)),e.path!==void 0){var o=e.path;!t.absolutePath&&(!i||!i.absolutePath)&&(o=q(o)),a===void 0&&(o=o.replace(/^\/\//,`/%2F`)),r.push(o)}return e.query!==void 0&&(r.push(`?`),r.push(e.query)),e.fragment!==void 0&&(r.push(`#`),r.push(e.fragment)),r.join(``)}function se(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments[3],i={};return r||(e=K(J(e,n),n),t=K(J(t,n),n)),n||={},!n.tolerant&&t.scheme?(i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=q(t.path||``),i.query=t.query):(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0?(i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=q(t.path||``),i.query=t.query):(t.path?(t.path.charAt(0)===`/`?i.path=q(t.path):((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path?i.path=`/`+t.path:e.path?i.path=e.path.slice(0,e.path.lastIndexOf(`/`)+1)+t.path:i.path=t.path,i.path=q(i.path)),i.query=t.query):(i.path=e.path,t.query===void 0?i.query=e.query:i.query=t.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=t.fragment,i}function ce(e,t,n){var r=o({scheme:`null`},n);return J(se(K(e,r),K(t,r),r,!0),r)}function le(e,t){return typeof e==`string`?e=J(K(e,t),t):r(e)===`object`&&(e=K(J(e,t),t)),e}function ue(e,t,n){return typeof e==`string`?e=J(K(e,n),n):r(e)===`object`&&(e=J(e,n)),typeof t==`string`?t=J(K(t,n),n):r(t)===`object`&&(t=J(t,n)),e===t}function de(e,t){return e&&e.toString().replace(!t||!t.iri?c.ESCAPE:l.ESCAPE,B)}function Y(e,t){return e&&e.toString().replace(!t||!t.iri?c.PCT_ENCODED:l.PCT_ENCODED,V)}var X={scheme:`http`,domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||`HTTP URIs must have a host.`),e},serialize:function(e,t){var n=String(e.scheme).toLowerCase()===`https`;return(e.port===(n?443:80)||e.port===``)&&(e.port=void 0),e.path||=`/`,e}},fe={scheme:`https`,domainHost:X.domainHost,parse:X.parse,serialize:X.serialize};function pe(e){return typeof e.secure==`boolean`?e.secure:String(e.scheme).toLowerCase()===`wss`}var Z={scheme:`ws`,domainHost:!0,parse:function(e,t){var n=e;return n.secure=pe(n),n.resourceName=(n.path||`/`)+(n.query?`?`+n.query:``),n.path=void 0,n.query=void 0,n},serialize:function(e,t){if((e.port===(pe(e)?443:80)||e.port===``)&&(e.port=void 0),typeof e.secure==`boolean`&&(e.scheme=e.secure?`wss`:`ws`,e.secure=void 0),e.resourceName){var n=u(e.resourceName.split(`?`),2),r=n[0],i=n[1];e.path=r&&r!==`/`?r:void 0,e.query=i,e.resourceName=void 0}return e.fragment=void 0,e}},me={scheme:`wss`,domainHost:Z.domainHost,parse:Z.parse,serialize:Z.serialize},he={},ge=`[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]`,Q=`[0-9A-Fa-f]`,_e=n(n(`%[EFef]`+Q+`%`+Q+Q+`%`+Q+Q)+`|`+n(`%[89A-Fa-f]`+Q+`%`+Q+Q)+`|`+n(`%`+Q+Q)),ve="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",ye=t(`[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]`,`[\\"\\\\]`),be=`[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]`,xe=new RegExp(ge,`g`),$=new RegExp(_e,`g`),Se=new RegExp(t(`[^]`,ve,`[\\.]`,`[\\"]`,ye),`g`),Ce=new RegExp(t(`[^]`,ge,be),`g`),we=Ce;function Te(e){var t=V(e);return t.match(xe)?t:e}var Ee={scheme:`mailto`,parse:function(e,t){var n=e,r=n.to=n.path?n.path.split(`,`):[];if(n.path=void 0,n.query){for(var i=!1,a={},o=n.query.split(`&`),s=0,c=o.length;s<c;++s){var l=o[s].split(`=`);switch(l[0]){case`to`:for(var u=l[1].split(`,`),d=0,f=u.length;d<f;++d)r.push(u[d]);break;case`subject`:n.subject=Y(l[1],t);break;case`body`:n.body=Y(l[1],t);break;default:i=!0,a[Y(l[0],t)]=Y(l[1],t);break}}i&&(n.headers=a)}n.query=void 0;for(var p=0,m=r.length;p<m;++p){var h=r[p].split(`@`);if(h[0]=Y(h[0]),t.unicodeSupport)h[1]=Y(h[1],t).toLowerCase();else try{h[1]=R.toASCII(Y(h[1],t).toLowerCase())}catch(e){n.error=n.error||`Email address's domain name can not be converted to ASCII via punycode: `+e}r[p]=h.join(`@`)}return n},serialize:function(e,t){var n=e,r=a(e.to);if(r){for(var o=0,s=r.length;o<s;++o){var c=String(r[o]),l=c.lastIndexOf(`@`),u=c.slice(0,l).replace($,Te).replace($,i).replace(Se,B),d=c.slice(l+1);try{d=t.iri?R.toUnicode(d):R.toASCII(Y(d,t).toLowerCase())}catch(e){n.error=n.error||`Email address's domain name can not be converted to `+(t.iri?`Unicode`:`ASCII`)+` via punycode: `+e}r[o]=u+`@`+d}n.path=r.join(`,`)}var f=e.headers=e.headers||{};e.subject&&(f.subject=e.subject),e.body&&(f.body=e.body);var p=[];for(var m in f)f[m]!==he[m]&&p.push(m.replace($,Te).replace($,i).replace(Ce,B)+`=`+f[m].replace($,Te).replace($,i).replace(we,B));return p.length&&(n.query=p.join(`&`)),n}},De=/^([^\:]+)\:(.*)/,Oe={scheme:`urn`,parse:function(e,t){var n=e.path&&e.path.match(De),r=e;if(n){var i=t.scheme||r.scheme||`urn`,a=n[1].toLowerCase(),o=n[2],s=z[i+`:`+(t.nid||a)];r.nid=a,r.nss=o,r.path=void 0,s&&(r=s.parse(r,t))}else r.error=r.error||`URN can not be parsed.`;return r},serialize:function(e,t){var n=t.scheme||e.scheme||`urn`,r=e.nid,i=z[n+`:`+(t.nid||r)];i&&(e=i.serialize(e,t));var a=e,o=e.nss;return a.path=(r||t.nid)+`:`+o,a}},ke=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,Ae={scheme:`urn:uuid`,parse:function(e,t){var n=e;return n.uuid=n.nss,n.nss=void 0,!t.tolerant&&(!n.uuid||!n.uuid.match(ke))&&(n.error=n.error||`UUID is not valid.`),n},serialize:function(e,t){var n=e;return n.nss=(e.uuid||``).toLowerCase(),n}};z[X.scheme]=X,z[fe.scheme]=fe,z[Z.scheme]=Z,z[me.scheme]=me,z[Ee.scheme]=Ee,z[Oe.scheme]=Oe,z[Ae.scheme]=Ae,e.SCHEMES=z,e.pctEncChar=B,e.pctDecChars=V,e.parse=K,e.removeDotSegments=q,e.serialize=J,e.resolveComponents=se,e.resolve=ce,e.normalize=le,e.equal=ue,e.escapeComponent=de,e.unescapeComponent=Y,Object.defineProperty(e,`__esModule`,{value:!0})}))})),f=u(d(),1);let p=(0,t.createContext)({url:`/`,store:`url`});function m(e){return e.canIntercept&&!e.downloadRequest}let h=({children:e,store:n=`url`,scoped:r,shouldHandle:i=m})=>{let[a,o]=(0,t.useState)(null),[s,c]=(0,t.useState)(()=>({store:n,url:window.location.href})),l=(0,t.useMemo)(()=>e=>{let t=e.sourceElement;return a&&t&&!a.contains(t)?!0:!i(e)},[i,a]);(0,t.useEffect)(()=>{let e=e=>{if(l(e))return;let t=e.destination.url;n===`memory`?(e.preventDefault(),c(r=>{if(e.sourceElement instanceof HTMLAnchorElement&&e.navigationType===`push`){let n=e.sourceElement.getAttribute(`href`);n&&!n.startsWith(`/`)&&!/^[a-z]+:\/\//i.test(n)&&(t=f.default.resolve(r.url,n))}return{...r,url:t,store:n}})):e.intercept({async handler(){c({url:t,store:n})}})};return navigation?.addEventListener(`navigate`,e),()=>navigation?.removeEventListener(`navigate`,e)},[l,r,n]);let u=(0,t.useMemo)(()=>({...s,setState:c}),[s]);return(0,t.createElement)(p.Provider,{value:u},r?(0,t.createElement)(`div`,{ref:o},e):e)};function g(e){let t={},n=new Promise((e,n)=>{t.resolve=e,t.reject=n});return n.resolve=t.resolve,n.reject=t.reject,e&&n.catch(()=>{}),n}var _=u(d(),1);function v(){let{setState:e}=(0,t.useContext)(p);return(0,t.useMemo)(()=>{if(!e||!navigation)return navigation;let t=(t,n)=>{let r={committed:g(!0),finished:g(!0)},i=({committed:e,finished:t})=>{e.then(r.committed.resolve,r.committed.reject),t.then(r.finished.resolve,r.finished.reject)};return e(e=>(Promise.resolve().then(()=>{try{i(navigation.navigate(_.default.resolve(e.url,t),n))}catch{i(navigation.navigate(t,n))}}),e)),r};return new Proxy(navigation,{get(e,n,r){if(n===`navigate`)return t;let i=Reflect.get(e,n,r);return typeof i==`function`?i.bind(e):i}})},[e])}var y=u(d(),1),b=`fakeprotodonotuse://`;function x(e,t){let n=y.default.parse(y.default.resolve(t,e));return n.scheme=void 0,n.host=void 0,n.port=void 0,y.default.serialize(n)}function S(e,n){let r=(0,t.useContext)(p),i=n??r.url;return(0,t.useMemo)(()=>{if(typeof e==`string`)return x(e,i);if(typeof e==`function`){let t=new URL(i,b);return x((e(t)||t).href,i)}return x(``,i)},[e,i])}var C=u(d(),1);function w(e){return new URLSearchParams(C.default.parse(e||``).query)}function T(e,n=!1){let r=S();return(0,t.useMemo)(()=>{try{let t=w(r);return n?t.getAll(e)||[]:t.get(e)}catch{return null}},[r,n,e])}function E(e,t){let n={};return e.forEach((e,r)=>{t&&!t.includes(r)||(n[r]?Array.isArray(n[r])?n[r].push(e):n[r]=[n[r],e]:n[r]=e)}),n}function D(e){let n=S();return(0,t.useMemo)(()=>{let t=w(n);return Array.isArray(e)?E(t,e):(e||E)(t)},[n,e])}function O(e,t,n){return S(n=>t===null?n.searchParams.delete(e):n.searchParams.set(e,t),n)}function k(e,t){return S(t=>{for(let[n,r]of Object.entries(e))r===null?t.searchParams.delete(n):Array.isArray(r)?(t.searchParams.delete(n),r.forEach(e=>t.searchParams.append(n,e))):t.searchParams.set(n,r);return t},t)}e.NavigationContext=p,e.NavigationProvider=h,e.mapQueryParams=E,e.parseSearchParams=w,e.resolveLocation=x,e.useLocation=S,e.useLocationWithParam=O,e.useLocationWithParams=k,e.useNavigate=v,e.useQueryParam=T,e.useQueryParams=D});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`)):typeof define==`function`&&define.amd?define([`exports`,`react`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.useNavigationAPI={},e.React))})(this,function(e,t){var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),l=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e},u=(e,t,i)=>(i=e==null?{}:n(o(e)),l(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)),d=c(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?r(e):typeof define==`function`&&define.amd?define([`exports`],r):r(n.URI=n.URI||{})})(e,(function(e){function t(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(t.length>1){t[0]=t[0].slice(0,-1);for(var r=t.length-1,i=1;i<r;++i)t[i]=t[i].slice(1,-1);return t[r]=t[r].slice(1),t.join(``)}else return t[0]}function n(e){return`(?:`+e+`)`}function r(e){return e===void 0?`undefined`:e===null?`null`:Object.prototype.toString.call(e).split(` `).pop().split(`]`).shift().toLowerCase()}function i(e){return e.toUpperCase()}function a(e){return e==null?[]:e instanceof Array?e:typeof e.length!=`number`||e.split||e.setInterval||e.call?[e]:Array.prototype.slice.call(e)}function o(e,t){var n=e;if(t)for(var r in t)n[r]=t[r];return n}function s(e){var r=`[A-Za-z]`,i=`[0-9]`,a=t(i,`[A-Fa-f]`),o=n(n(`%[EFef]`+a+`%`+a+a+`%`+a+a)+`|`+n(`%[89A-Fa-f]`+a+`%`+a+a)+`|`+n(`%`+a+a)),s=`[\\:\\/\\?\\#\\[\\]\\@]`,c=`[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]`,l=t(s,c),u=e?`[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]`:`[]`,d=e?`[\\uE000-\\uF8FF]`:`[]`,f=t(r,i,`[\\-\\.\\_\\~]`,u),p=n(r+t(r,i,`[\\+\\-\\.]`)+`*`),m=n(n(o+`|`+t(f,c,`[\\:]`))+`*`);n(n(`25[0-5]`)+`|`+n(`2[0-4]`+i)+`|`+n(`1`+i+i)+`|`+n(`[1-9]`+i)+`|`+i);var h=n(n(`25[0-5]`)+`|`+n(`2[0-4]`+i)+`|`+n(`1`+i+i)+`|`+n(`0?[1-9]`+i)+`|0?0?`+i),g=n(h+`\\.`+h+`\\.`+h+`\\.`+h),_=n(a+`{1,4}`),v=n(n(_+`\\:`+_)+`|`+g),y=n([n(n(_+`\\:`)+`{6}`+v),n(`\\:\\:`+n(_+`\\:`)+`{5}`+v),n(n(_)+`?\\:\\:`+n(_+`\\:`)+`{4}`+v),n(n(n(_+`\\:`)+`{0,1}`+_)+`?\\:\\:`+n(_+`\\:`)+`{3}`+v),n(n(n(_+`\\:`)+`{0,2}`+_)+`?\\:\\:`+n(_+`\\:`)+`{2}`+v),n(n(n(_+`\\:`)+`{0,3}`+_)+`?\\:\\:`+_+`\\:`+v),n(n(n(_+`\\:`)+`{0,4}`+_)+`?\\:\\:`+v),n(n(n(_+`\\:`)+`{0,5}`+_)+`?\\:\\:`+_),n(n(n(_+`\\:`)+`{0,6}`+_)+`?\\:\\:`)].join(`|`)),b=n(n(f+`|`+o)+`+`);n(y+`\\%25`+b);var x=n(y+n(`\\%25|\\%(?!`+a+`{2})`)+b),S=n(`[vV]`+a+`+\\.`+t(f,c,`[\\:]`)+`+`),C=n(`\\[`+n(x+`|`+y+`|`+S)+`\\]`),w=n(n(o+`|`+t(f,c))+`*`),T=n(C+`|`+g+`(?!`+w+`)|`+w),E=n(i+`*`),D=n(n(m+`@`)+`?`+T+n(`\\:`+E)+`?`),O=n(o+`|`+t(f,c,`[\\:\\@]`)),k=n(O+`*`),A=n(O+`+`),j=n(n(o+`|`+t(f,c,`[\\@]`))+`+`),M=n(n(`\\/`+k)+`*`),N=n(`\\/`+n(A+M)+`?`),P=n(j+M),F=n(A+M),I=`(?!`+O+`)`;n(M+`|`+N+`|`+P+`|`+F+`|`+I);var L=n(n(O+`|`+t(`[\\/\\?]`,d))+`*`),R=n(n(O+`|[\\/\\?]`)+`*`),z=n(n(`\\/\\/`+D+M)+`|`+N+`|`+F+`|`+I),B=n(p+`\\:`+z+n(`\\?`+L)+`?`+n(`\\#`+R)+`?`),V=n(n(n(`\\/\\/`+D+M)+`|`+N+`|`+P+`|`+I)+n(`\\?`+L)+`?`+n(`\\#`+R)+`?`);return n(B+`|`+V),n(p+`\\:`+z+n(`\\?`+L)+`?`),``+p+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+F+`|`+I+`)`)+n(`\\?(`+L+`)`)+n(`\\#(`+R+`)`),``+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+P+`|`+I+`)`)+n(`\\?(`+L+`)`)+n(`\\#(`+R+`)`),``+p+n(n(`\\/\\/(`+n(`(`+m+`)@`)+`?(`+T+`)`+n(`\\:(`+E+`)`)+`?)`)+`?(`+M+`|`+N+`|`+F+`|`+I+`)`)+n(`\\?(`+L+`)`),``+n(`\\#(`+R+`)`),``+n(`(`+m+`)@`)+T+n(`\\:(`+E+`)`),{NOT_SCHEME:new RegExp(t(`[^]`,r,i,`[\\+\\-\\.]`),`g`),NOT_USERINFO:new RegExp(t(`[^\\%\\:]`,f,c),`g`),NOT_HOST:new RegExp(t(`[^\\%\\[\\]\\:]`,f,c),`g`),NOT_PATH:new RegExp(t(`[^\\%\\/\\:\\@]`,f,c),`g`),NOT_PATH_NOSCHEME:new RegExp(t(`[^\\%\\/\\@]`,f,c),`g`),NOT_QUERY:new RegExp(t(`[^\\%]`,f,c,`[\\:\\@\\/\\?]`,d),`g`),NOT_FRAGMENT:new RegExp(t(`[^\\%]`,f,c,`[\\:\\@\\/\\?]`),`g`),ESCAPE:new RegExp(t(`[^]`,f,c),`g`),UNRESERVED:new RegExp(f,`g`),OTHER_CHARS:new RegExp(t(`[^\\%]`,f,l),`g`),PCT_ENCODED:new RegExp(o,`g`),IPV4ADDRESS:RegExp(`^(`+g+`)$`),IPV6ADDRESS:RegExp(`^\\[?(`+y+`)`+n(n(`\\%25|\\%(?!`+a+`{2})`)+`(`+b+`)`)+`?\\]?$`)}}var c=s(!1),l=s(!0),u=function(){function e(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return&&o.return()}finally{if(i)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw TypeError(`Invalid attempt to destructure non-iterable instance`)}}(),d=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}else return Array.from(e)},f=2147483647,p=36,m=1,h=26,g=38,_=700,v=72,y=128,b=`-`,x=/^xn--/,S=/[^\0-\x7E]/,C=/[\x2E\u3002\uFF0E\uFF61]/g,w={overflow:`Overflow: input needs wider integers to process`,"not-basic":`Illegal input >= 0x80 (not a basic code point)`,"invalid-input":`Invalid input`},T=p-m,E=Math.floor,D=String.fromCharCode;function O(e){throw RangeError(w[e])}function k(e,t){for(var n=[],r=e.length;r--;)n[r]=t(e[r]);return n}function A(e,t){var n=e.split(`@`),r=``;n.length>1&&(r=n[0]+`@`,e=n[1]),e=e.replace(C,`.`);var i=k(e.split(`.`),t).join(`.`);return r+i}function j(e){for(var t=[],n=0,r=e.length;n<r;){var i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){var a=e.charCodeAt(n++);(a&64512)==56320?t.push(((i&1023)<<10)+(a&1023)+65536):(t.push(i),n--)}else t.push(i)}return t}var M=function(e){return String.fromCodePoint.apply(String,d(e))},N=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:p},P=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},F=function(e,t,n){var r=0;for(e=n?E(e/_):e>>1,e+=E(e/t);e>T*h>>1;r+=p)e=E(e/T);return E(r+(T+1)*e/(e+g))},I=function(e){var t=[],n=e.length,r=0,i=y,a=v,o=e.lastIndexOf(b);o<0&&(o=0);for(var s=0;s<o;++s)e.charCodeAt(s)>=128&&O(`not-basic`),t.push(e.charCodeAt(s));for(var c=o>0?o+1:0;c<n;){for(var l=r,u=1,d=p;;d+=p){c>=n&&O(`invalid-input`);var g=N(e.charCodeAt(c++));(g>=p||g>E((f-r)/u))&&O(`overflow`),r+=g*u;var _=d<=a?m:d>=a+h?h:d-a;if(g<_)break;var x=p-_;u>E(f/x)&&O(`overflow`),u*=x}var S=t.length+1;a=F(r-l,S,l==0),E(r/S)>f-i&&O(`overflow`),i+=E(r/S),r%=S,t.splice(r++,0,i)}return String.fromCodePoint.apply(String,t)},L=function(e){var t=[];e=j(e);var n=e.length,r=y,i=0,a=v,o=!0,s=!1,c=void 0;try{for(var l=e[Symbol.iterator](),u;!(o=(u=l.next()).done);o=!0){var d=u.value;d<128&&t.push(D(d))}}catch(e){s=!0,c=e}finally{try{!o&&l.return&&l.return()}finally{if(s)throw c}}var g=t.length,_=g;for(g&&t.push(b);_<n;){var x=f,S=!0,C=!1,w=void 0;try{for(var T=e[Symbol.iterator](),k;!(S=(k=T.next()).done);S=!0){var A=k.value;A>=r&&A<x&&(x=A)}}catch(e){C=!0,w=e}finally{try{!S&&T.return&&T.return()}finally{if(C)throw w}}var M=_+1;x-r>E((f-i)/M)&&O(`overflow`),i+=(x-r)*M,r=x;var N=!0,I=!1,L=void 0;try{for(var R=e[Symbol.iterator](),z;!(N=(z=R.next()).done);N=!0){var B=z.value;if(B<r&&++i>f&&O(`overflow`),B==r){for(var V=i,H=p;;H+=p){var U=H<=a?m:H>=a+h?h:H-a;if(V<U)break;var W=V-U,G=p-U;t.push(D(P(U+W%G,0))),V=E(W/G)}t.push(D(P(V,0))),a=F(i,M,_==g),i=0,++_}}}catch(e){I=!0,L=e}finally{try{!N&&R.return&&R.return()}finally{if(I)throw L}}++i,++r}return t.join(``)},R={version:`2.1.0`,ucs2:{decode:j,encode:M},decode:I,encode:L,toASCII:function(e){return A(e,function(e){return S.test(e)?`xn--`+L(e):e})},toUnicode:function(e){return A(e,function(e){return x.test(e)?I(e.slice(4).toLowerCase()):e})}},z={};function B(e){var t=e.charCodeAt(0),n=void 0;return n=t<16?`%0`+t.toString(16).toUpperCase():t<128?`%`+t.toString(16).toUpperCase():t<2048?`%`+(t>>6|192).toString(16).toUpperCase()+`%`+(t&63|128).toString(16).toUpperCase():`%`+(t>>12|224).toString(16).toUpperCase()+`%`+(t>>6&63|128).toString(16).toUpperCase()+`%`+(t&63|128).toString(16).toUpperCase(),n}function V(e){for(var t=``,n=0,r=e.length;n<r;){var i=parseInt(e.substr(n+1,2),16);if(i<128)t+=String.fromCharCode(i),n+=3;else if(i>=194&&i<224){if(r-n>=6){var a=parseInt(e.substr(n+4,2),16);t+=String.fromCharCode((i&31)<<6|a&63)}else t+=e.substr(n,6);n+=6}else if(i>=224){if(r-n>=9){var o=parseInt(e.substr(n+4,2),16),s=parseInt(e.substr(n+7,2),16);t+=String.fromCharCode((i&15)<<12|(o&63)<<6|s&63)}else t+=e.substr(n,9);n+=9}else t+=e.substr(n,3),n+=3}return t}function H(e,t){function n(e){var n=V(e);return n.match(t.UNRESERVED)?n:e}return e.scheme&&=String(e.scheme).replace(t.PCT_ENCODED,n).toLowerCase().replace(t.NOT_SCHEME,``),e.userinfo!==void 0&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,n).replace(t.NOT_USERINFO,B).replace(t.PCT_ENCODED,i)),e.host!==void 0&&(e.host=String(e.host).replace(t.PCT_ENCODED,n).toLowerCase().replace(t.NOT_HOST,B).replace(t.PCT_ENCODED,i)),e.path!==void 0&&(e.path=String(e.path).replace(t.PCT_ENCODED,n).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,B).replace(t.PCT_ENCODED,i)),e.query!==void 0&&(e.query=String(e.query).replace(t.PCT_ENCODED,n).replace(t.NOT_QUERY,B).replace(t.PCT_ENCODED,i)),e.fragment!==void 0&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,n).replace(t.NOT_FRAGMENT,B).replace(t.PCT_ENCODED,i)),e}function U(e){return e.replace(/^0*(.*)/,`$1`)||`0`}function W(e,t){var n=u(e.match(t.IPV4ADDRESS)||[],2)[1];return n?n.split(`.`).map(U).join(`.`):e}function G(e,t){var n=u(e.match(t.IPV6ADDRESS)||[],3),r=n[1],i=n[2];if(r){for(var a=u(r.toLowerCase().split(`::`).reverse(),2),o=a[0],s=a[1],c=s?s.split(`:`).map(U):[],l=o.split(`:`).map(U),d=t.IPV4ADDRESS.test(l[l.length-1]),f=d?7:8,p=l.length-f,m=Array(f),h=0;h<f;++h)m[h]=c[h]||l[p+h]||``;d&&(m[f-1]=W(m[f-1],t));var g=m.reduce(function(e,t,n){if(!t||t===`0`){var r=e[e.length-1];r&&r.index+r.length===n?r.length++:e.push({index:n,length:1})}return e},[]).sort(function(e,t){return t.length-e.length})[0],_=void 0;if(g&&g.length>1){var v=m.slice(0,g.index),y=m.slice(g.index+g.length);_=v.join(`:`)+`::`+y.join(`:`)}else _=m.join(`:`);return i&&(_+=`%`+i),_}else return e}var ee=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,te=``.match(/(){0}/)[1]===void 0;function K(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={},r=t.iri===!1?c:l;t.reference===`suffix`&&(e=(t.scheme?t.scheme+`:`:``)+`//`+e);var i=e.match(ee);if(i){te?(n.scheme=i[1],n.userinfo=i[3],n.host=i[4],n.port=parseInt(i[5],10),n.path=i[6]||``,n.query=i[7],n.fragment=i[8],isNaN(n.port)&&(n.port=i[5])):(n.scheme=i[1]||void 0,n.userinfo=e.indexOf(`@`)===-1?void 0:i[3],n.host=e.indexOf(`//`)===-1?void 0:i[4],n.port=parseInt(i[5],10),n.path=i[6]||``,n.query=e.indexOf(`?`)===-1?void 0:i[7],n.fragment=e.indexOf(`#`)===-1?void 0:i[8],isNaN(n.port)&&(n.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?i[4]:void 0)),n.host&&=G(W(n.host,r),r),n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&!n.path&&n.query===void 0?n.reference=`same-document`:n.scheme===void 0?n.reference=`relative`:n.fragment===void 0?n.reference=`absolute`:n.reference=`uri`,t.reference&&t.reference!==`suffix`&&t.reference!==n.reference&&(n.error=n.error||`URI is not a `+t.reference+` reference.`);var a=z[(t.scheme||n.scheme||``).toLowerCase()];if(!t.unicodeSupport&&(!a||!a.unicodeSupport)){if(n.host&&(t.domainHost||a&&a.domainHost))try{n.host=R.toASCII(n.host.replace(r.PCT_ENCODED,V).toLowerCase())}catch(e){n.error=n.error||`Host's domain name can not be converted to ASCII via punycode: `+e}H(n,c)}else H(n,r);a&&a.parse&&a.parse(n,t)}else n.error=n.error||`URI can not be parsed.`;return n}function ne(e,t){var n=t.iri===!1?c:l,r=[];return e.userinfo!==void 0&&(r.push(e.userinfo),r.push(`@`)),e.host!==void 0&&r.push(G(W(String(e.host),n),n).replace(n.IPV6ADDRESS,function(e,t,n){return`[`+t+(n?`%25`+n:``)+`]`})),(typeof e.port==`number`||typeof e.port==`string`)&&(r.push(`:`),r.push(String(e.port))),r.length?r.join(``):void 0}var re=/^\.\.?\//,ie=/^\/\.(\/|$)/,ae=/^\/\.\.(\/|$)/,oe=/^\/?(?:.|\n)*?(?=\/|$)/;function q(e){for(var t=[];e.length;)if(e.match(re))e=e.replace(re,``);else if(e.match(ie))e=e.replace(ie,`/`);else if(e.match(ae))e=e.replace(ae,`/`),t.pop();else if(e===`.`||e===`..`)e=``;else{var n=e.match(oe);if(n){var r=n[0];e=e.slice(r.length),t.push(r)}else throw Error(`Unexpected dot segment condition`)}return t.join(``)}function J(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=t.iri?l:c,r=[],i=z[(t.scheme||e.scheme||``).toLowerCase()];if(i&&i.serialize&&i.serialize(e,t),e.host&&!n.IPV6ADDRESS.test(e.host)&&(t.domainHost||i&&i.domainHost))try{e.host=t.iri?R.toUnicode(e.host):R.toASCII(e.host.replace(n.PCT_ENCODED,V).toLowerCase())}catch(n){e.error=e.error||`Host's domain name can not be converted to `+(t.iri?`Unicode`:`ASCII`)+` via punycode: `+n}H(e,n),t.reference!==`suffix`&&e.scheme&&(r.push(e.scheme),r.push(`:`));var a=ne(e,t);if(a!==void 0&&(t.reference!==`suffix`&&r.push(`//`),r.push(a),e.path&&e.path.charAt(0)!==`/`&&r.push(`/`)),e.path!==void 0){var o=e.path;!t.absolutePath&&(!i||!i.absolutePath)&&(o=q(o)),a===void 0&&(o=o.replace(/^\/\//,`/%2F`)),r.push(o)}return e.query!==void 0&&(r.push(`?`),r.push(e.query)),e.fragment!==void 0&&(r.push(`#`),r.push(e.fragment)),r.join(``)}function se(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments[3],i={};return r||(e=K(J(e,n),n),t=K(J(t,n),n)),n||={},!n.tolerant&&t.scheme?(i.scheme=t.scheme,i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=q(t.path||``),i.query=t.query):(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0?(i.userinfo=t.userinfo,i.host=t.host,i.port=t.port,i.path=q(t.path||``),i.query=t.query):(t.path?(t.path.charAt(0)===`/`?i.path=q(t.path):((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path?i.path=`/`+t.path:e.path?i.path=e.path.slice(0,e.path.lastIndexOf(`/`)+1)+t.path:i.path=t.path,i.path=q(i.path)),i.query=t.query):(i.path=e.path,t.query===void 0?i.query=e.query:i.query=t.query),i.userinfo=e.userinfo,i.host=e.host,i.port=e.port),i.scheme=e.scheme),i.fragment=t.fragment,i}function ce(e,t,n){var r=o({scheme:`null`},n);return J(se(K(e,r),K(t,r),r,!0),r)}function le(e,t){return typeof e==`string`?e=J(K(e,t),t):r(e)===`object`&&(e=K(J(e,t),t)),e}function ue(e,t,n){return typeof e==`string`?e=J(K(e,n),n):r(e)===`object`&&(e=J(e,n)),typeof t==`string`?t=J(K(t,n),n):r(t)===`object`&&(t=J(t,n)),e===t}function de(e,t){return e&&e.toString().replace(!t||!t.iri?c.ESCAPE:l.ESCAPE,B)}function Y(e,t){return e&&e.toString().replace(!t||!t.iri?c.PCT_ENCODED:l.PCT_ENCODED,V)}var X={scheme:`http`,domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||`HTTP URIs must have a host.`),e},serialize:function(e,t){var n=String(e.scheme).toLowerCase()===`https`;return(e.port===(n?443:80)||e.port===``)&&(e.port=void 0),e.path||=`/`,e}},fe={scheme:`https`,domainHost:X.domainHost,parse:X.parse,serialize:X.serialize};function pe(e){return typeof e.secure==`boolean`?e.secure:String(e.scheme).toLowerCase()===`wss`}var Z={scheme:`ws`,domainHost:!0,parse:function(e,t){var n=e;return n.secure=pe(n),n.resourceName=(n.path||`/`)+(n.query?`?`+n.query:``),n.path=void 0,n.query=void 0,n},serialize:function(e,t){if((e.port===(pe(e)?443:80)||e.port===``)&&(e.port=void 0),typeof e.secure==`boolean`&&(e.scheme=e.secure?`wss`:`ws`,e.secure=void 0),e.resourceName){var n=u(e.resourceName.split(`?`),2),r=n[0],i=n[1];e.path=r&&r!==`/`?r:void 0,e.query=i,e.resourceName=void 0}return e.fragment=void 0,e}},me={scheme:`wss`,domainHost:Z.domainHost,parse:Z.parse,serialize:Z.serialize},he={},ge=`[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]`,Q=`[0-9A-Fa-f]`,_e=n(n(`%[EFef]`+Q+`%`+Q+Q+`%`+Q+Q)+`|`+n(`%[89A-Fa-f]`+Q+`%`+Q+Q)+`|`+n(`%`+Q+Q)),ve="[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]",ye=t(`[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]`,`[\\"\\\\]`),be=`[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]`,xe=new RegExp(ge,`g`),$=new RegExp(_e,`g`),Se=new RegExp(t(`[^]`,ve,`[\\.]`,`[\\"]`,ye),`g`),Ce=new RegExp(t(`[^]`,ge,be),`g`),we=Ce;function Te(e){var t=V(e);return t.match(xe)?t:e}var Ee={scheme:`mailto`,parse:function(e,t){var n=e,r=n.to=n.path?n.path.split(`,`):[];if(n.path=void 0,n.query){for(var i=!1,a={},o=n.query.split(`&`),s=0,c=o.length;s<c;++s){var l=o[s].split(`=`);switch(l[0]){case`to`:for(var u=l[1].split(`,`),d=0,f=u.length;d<f;++d)r.push(u[d]);break;case`subject`:n.subject=Y(l[1],t);break;case`body`:n.body=Y(l[1],t);break;default:i=!0,a[Y(l[0],t)]=Y(l[1],t);break}}i&&(n.headers=a)}n.query=void 0;for(var p=0,m=r.length;p<m;++p){var h=r[p].split(`@`);if(h[0]=Y(h[0]),t.unicodeSupport)h[1]=Y(h[1],t).toLowerCase();else try{h[1]=R.toASCII(Y(h[1],t).toLowerCase())}catch(e){n.error=n.error||`Email address's domain name can not be converted to ASCII via punycode: `+e}r[p]=h.join(`@`)}return n},serialize:function(e,t){var n=e,r=a(e.to);if(r){for(var o=0,s=r.length;o<s;++o){var c=String(r[o]),l=c.lastIndexOf(`@`),u=c.slice(0,l).replace($,Te).replace($,i).replace(Se,B),d=c.slice(l+1);try{d=t.iri?R.toUnicode(d):R.toASCII(Y(d,t).toLowerCase())}catch(e){n.error=n.error||`Email address's domain name can not be converted to `+(t.iri?`Unicode`:`ASCII`)+` via punycode: `+e}r[o]=u+`@`+d}n.path=r.join(`,`)}var f=e.headers=e.headers||{};e.subject&&(f.subject=e.subject),e.body&&(f.body=e.body);var p=[];for(var m in f)f[m]!==he[m]&&p.push(m.replace($,Te).replace($,i).replace(Ce,B)+`=`+f[m].replace($,Te).replace($,i).replace(we,B));return p.length&&(n.query=p.join(`&`)),n}},De=/^([^\:]+)\:(.*)/,Oe={scheme:`urn`,parse:function(e,t){var n=e.path&&e.path.match(De),r=e;if(n){var i=t.scheme||r.scheme||`urn`,a=n[1].toLowerCase(),o=n[2],s=z[i+`:`+(t.nid||a)];r.nid=a,r.nss=o,r.path=void 0,s&&(r=s.parse(r,t))}else r.error=r.error||`URN can not be parsed.`;return r},serialize:function(e,t){var n=t.scheme||e.scheme||`urn`,r=e.nid,i=z[n+`:`+(t.nid||r)];i&&(e=i.serialize(e,t));var a=e,o=e.nss;return a.path=(r||t.nid)+`:`+o,a}},ke=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,Ae={scheme:`urn:uuid`,parse:function(e,t){var n=e;return n.uuid=n.nss,n.nss=void 0,!t.tolerant&&(!n.uuid||!n.uuid.match(ke))&&(n.error=n.error||`UUID is not valid.`),n},serialize:function(e,t){var n=e;return n.nss=(e.uuid||``).toLowerCase(),n}};z[X.scheme]=X,z[fe.scheme]=fe,z[Z.scheme]=Z,z[me.scheme]=me,z[Ee.scheme]=Ee,z[Oe.scheme]=Oe,z[Ae.scheme]=Ae,e.SCHEMES=z,e.pctEncChar=B,e.pctDecChars=V,e.parse=K,e.removeDotSegments=q,e.serialize=J,e.resolveComponents=se,e.resolve=ce,e.normalize=le,e.equal=ue,e.escapeComponent=de,e.unescapeComponent=Y,Object.defineProperty(e,`__esModule`,{value:!0})}))})),f=u(d(),1);let p=(0,t.createContext)({url:`/`,store:`url`});function m(e){return e.canIntercept&&!e.downloadRequest}let h=({children:e,store:n=`url`,scoped:r,shouldHandle:i=m})=>{let[a,o]=(0,t.useState)(null),[s,c]=(0,t.useState)(()=>({store:n,url:window.location.href})),l=(0,t.useMemo)(()=>e=>{let t=e.sourceElement;return a&&t&&!a.contains(t)?!0:!i(e)},[i,a]);(0,t.useEffect)(()=>{let e=e=>{if(l(e))return;let t=e.destination.url;n===`memory`?(e.preventDefault(),c(r=>{if(e.sourceElement instanceof HTMLAnchorElement&&e.navigationType===`push`){let n=e.sourceElement.getAttribute(`href`);n&&!n.startsWith(`/`)&&!/^[a-z]+:\/\//i.test(n)&&(t=f.default.resolve(r.url,n))}return{...r,url:t,store:n}})):e.intercept({async handler(){c({url:t,store:n})}})};return navigation?.addEventListener(`navigate`,e),()=>navigation?.removeEventListener(`navigate`,e)},[l,r,n]);let u=(0,t.useMemo)(()=>({...s,setState:c}),[s]);return(0,t.createElement)(p.Provider,{value:u},r?(0,t.createElement)(`div`,{ref:o},e):e)};function g(e){let t={},n=new Promise((e,n)=>{t.resolve=e,t.reject=n});return n.resolve=t.resolve,n.reject=t.reject,e&&n.catch(()=>{}),n}var _=u(d(),1);function v(){let{setState:e}=(0,t.useContext)(p);return(0,t.useMemo)(()=>{if(!e||!navigation)return navigation;let t=(t,n)=>{let r={committed:g(!0),finished:g(!0)},i=({committed:e,finished:t})=>{e.then(r.committed.resolve,r.committed.reject),t.then(r.finished.resolve,r.finished.reject)};return e(e=>(Promise.resolve().then(()=>{try{i(navigation.navigate(_.default.resolve(e.url,t),n))}catch{i(navigation.navigate(t,n))}}),e)),r};return new Proxy(navigation,{get(e,n,r){if(n===`navigate`)return t;let i=Reflect.get(e,n,r);return typeof i==`function`?i.bind(e):i}})},[e])}var y=u(d(),1),b=`fakeprotodonotuse://`;function x(e,t){let n=y.default.parse(y.default.resolve(t,e));return n.scheme=void 0,n.host=void 0,n.port=void 0,y.default.serialize(n)}function S(e,n){let r=(0,t.useContext)(p),i=n??r.url;return(0,t.useMemo)(()=>{if(typeof e==`string`)return x(e,i);if(typeof e==`function`){let t=new URL(i,b);return x((e(t)||t).href,i)}return x(``,i)},[e,i])}var C=u(d(),1);function w(e){return new URLSearchParams(C.default.parse(e||``).query)}function T(e,n=!1){let r=S();return(0,t.useMemo)(()=>{try{let t=w(r);return n?t.getAll(e)||[]:t.get(e)}catch{return null}},[r,n,e])}function E(e,t,n){let r=Object.fromEntries((t||[]).map(e=>[e,null]).concat((n||[]).map(e=>[e,[]])));return e.forEach((e,i)=>{if(!(t&&!(t.includes(i)||n?.includes(i))))if(!r[i])r[i]=e;else if(t?.includes(i))return;else Array.isArray(r[i])?r[i].push(e):r[i]=[r[i],e]}),r}function D(e,n){let r=S();return(0,t.useMemo)(()=>{let t=w(r);return Array.isArray(e)?E(t,e,n):(e||E)(t)},[r,e,n])}function O(e,t,n){return S(n=>t===null?n.searchParams.delete(e):n.searchParams.set(e,t),n)}function k(e,t){return S(t=>{for(let[n,r]of Object.entries(e))r===null?t.searchParams.delete(n):Array.isArray(r)?(t.searchParams.delete(n),r.forEach(e=>t.searchParams.append(n,e))):t.searchParams.set(n,r);return t},t)}e.NavigationContext=p,e.NavigationProvider=h,e.mapQueryParams=E,e.parseSearchParams=w,e.resolveLocation=x,e.useLocation=S,e.useLocationWithParam=O,e.useLocationWithParams=k,e.useNavigate=v,e.useQueryParam=T,e.useQueryParams=D});
package/package.json CHANGED
@@ -28,7 +28,7 @@
28
28
  "src",
29
29
  "README.md"
30
30
  ],
31
- "version": "0.3.0",
31
+ "version": "0.4.0",
32
32
  "type": "module",
33
33
  "scripts": {
34
34
  "build": "tsc -b && vite build",
@@ -4,28 +4,51 @@ import { parseSearchParams } from "src/location/useQueryParam.ts";
4
4
 
5
5
  export type ParamsMapper<T> = (params: URLSearchParams) => T;
6
6
 
7
- export function mapQueryParams(params: URLSearchParams, keys?: string[]) {
8
- const result: Record<string, string | string[]> = {};
7
+ export function mapQueryParams(
8
+ params: URLSearchParams,
9
+ keys?: string[],
10
+ arrayKeys?: string[],
11
+ ) {
12
+ const result: Record<string, string | string[] | null> = Object.fromEntries(
13
+ (keys || [])
14
+ .map((key) => [key, null as string | string[] | null])
15
+ .concat((arrayKeys || []).map((key) => [key, []])),
16
+ );
9
17
  params.forEach((value, key) => {
10
- if (keys && !keys.includes(key)) return;
18
+ if (keys && !(keys.includes(key) || arrayKeys?.includes(key))) return;
11
19
  if (!result[key]) result[key] = value;
20
+ else if (keys?.includes(key)) return;
12
21
  else if (Array.isArray(result[key])) result[key].push(value);
13
22
  else result[key] = [result[key] as string, value];
14
23
  });
15
24
  return result;
16
25
  }
17
26
 
18
- export function useQueryParams(): Record<string, string | string[]>;
19
- export function useQueryParams<K extends string>(
27
+ /**
28
+ * Returns the first value of each query parameter found in the url.
29
+ */
30
+ export function useQueryParams(): Record<string, string>;
31
+ /**
32
+ * Returns the first value of each query parameter found in keys, and all values of each parameter found in arrayKeys.
33
+ * Note that typescript types of K and M should not overlap - manual typing or casting variables to `as const` may be required.
34
+ */
35
+ export function useQueryParams<K extends string, M extends string>(
20
36
  keys: K[],
21
- ): Record<K, string | string[]>;
37
+ arrayKeys?: M[],
38
+ ): Record<K, string | null> & Record<M, string[]>;
39
+ /**
40
+ * Maps SearchParams to a custom type using the provided mapper function.
41
+ */
22
42
  export function useQueryParams<T>(mapper: ParamsMapper<T>): T;
23
- export function useQueryParams(mapping?: string[] | ParamsMapper<unknown>) {
43
+ export function useQueryParams(
44
+ mapping?: string[] | ParamsMapper<unknown>,
45
+ arrayKeys?: string[],
46
+ ) {
24
47
  const location = useLocation();
25
48
  return useMemo(() => {
26
49
  const params = parseSearchParams(location);
27
50
  return Array.isArray(mapping)
28
- ? mapQueryParams(params, mapping)
51
+ ? mapQueryParams(params, mapping, arrayKeys)
29
52
  : (mapping || mapQueryParams)(params);
30
- }, [location, mapping]);
53
+ }, [location, mapping, arrayKeys]);
31
54
  }