use-navigation-api 0.2.0 → 0.3.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.
@@ -0,0 +1,6 @@
1
+ export * from './navigationProvider';
2
+ export * from './useNavigate';
3
+ export * from './location/useQueryParam';
4
+ export * from './location/useQueryParams';
5
+ export * from './location/useLocation';
6
+ export * from './location/useLocationWithParam';
@@ -0,0 +1,15 @@
1
+ export type Location = string;
2
+ export declare function resolveLocation(location: string, base: string): string;
3
+ /**
4
+ * Returns the current location for the navigation context.
5
+ */
6
+ export declare function useLocation(): Location;
7
+ /**
8
+ * Resolves a URL string relative to the current location and returns its parts.
9
+ */
10
+ export declare function useLocation(url: string, base?: string): Location;
11
+ /**
12
+ * Returns a location based on the returned url if present, or the modified input argument.
13
+ * For instance, `useLocation(url => url.searchParams.set("parameter", "value"))` returns the current location with only a single parameter updated.
14
+ */
15
+ export declare function useLocation(url: (current: URL) => URL | void, base?: string): Location;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * returns The current location with the specified parameter set to the provided value or removed if the value === null.
3
+ * @param param name of the query parameter to set
4
+ * @param value value to set the parameter to, or `null` to remove any existing value of that parameter
5
+ * @param base If provided, uses this value instead of the current location.
6
+ */
7
+ export declare function useLocationWithParam(param: string, value: string | null, base?: string): string;
8
+ /**
9
+ * returns The current location with the specified parameter set to the provided value or removed if the value === null.
10
+ * @param params map of parameters to update. null or empty entries will be removed.
11
+ * @param base If provided, uses this value instead of the current location.
12
+ */
13
+ export declare function useLocationWithParams(params: Record<string, string | string[] | null>, base?: string): string;
@@ -0,0 +1,9 @@
1
+ export declare function parseSearchParams(location?: string): URLSearchParams;
2
+ /**
3
+ * Returns the first value for a query parameter, or null if it is missing.
4
+ */
5
+ export declare function useQueryParam(param: string, all?: false): string | null;
6
+ /**
7
+ * Returns all values for a query parameter when it appears multiple times.
8
+ */
9
+ export declare function useQueryParam(param: string, all: true): string[];
@@ -0,0 +1,5 @@
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[]>;
5
+ export declare function useQueryParams<T>(mapper: ParamsMapper<T>): T;
@@ -0,0 +1,18 @@
1
+ import { Dispatch, FC, ReactNode, SetStateAction } from 'react';
2
+ export type NavigationContextState = {
3
+ url: string;
4
+ store: "url" | "hash" | "memory";
5
+ };
6
+ type NavigationContextValue = NavigationContextState & {
7
+ setState?: Dispatch<SetStateAction<NavigationContextState>>;
8
+ };
9
+ export declare const NavigationContext: import('react').Context<NavigationContextValue>;
10
+ declare function defaultShouldHandle(event: NavigateEvent): boolean;
11
+ type ShouldHandle = typeof defaultShouldHandle;
12
+ export declare const NavigationProvider: FC<{
13
+ children: ReactNode;
14
+ store?: "url" | "hash" | "memory";
15
+ scoped?: boolean;
16
+ shouldHandle?: ShouldHandle;
17
+ }>;
18
+ export {};
@@ -0,0 +1,645 @@
1
+ import { createContext, createElement, useContext, useEffect, useMemo, useState } from "react";
2
+ var __create = Object.create, __defProp = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropNames = Object.getOwnPropertyNames, __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty, __commonJSMin = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), __copyProps = (e, t, n, r) => {
3
+ if (t && typeof t == "object" || typeof t == "function") for (var i = __getOwnPropNames(t), a = 0, o = i.length, u; a < o; a++) u = i[a], !__hasOwnProp.call(e, u) && u !== n && __defProp(e, u, {
4
+ get: ((e) => t[e]).bind(null, u),
5
+ enumerable: !(r = __getOwnPropDesc(t, u)) || r.enumerable
6
+ });
7
+ return e;
8
+ }, __toESM = (e, t, n) => (n = e == null ? {} : __create(__getProtoOf(e)), __copyProps(t || !e || !e.__esModule ? __defProp(n, "default", {
9
+ value: e,
10
+ enumerable: !0
11
+ }) : n, e)), require_uri_all = /* @__PURE__ */ __commonJSMin(((e, t) => {
12
+ /** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
13
+ (function(n, r) {
14
+ typeof e == "object" && t !== void 0 ? r(e) : typeof define == "function" && define.amd ? define(["exports"], r) : r(n.URI = n.URI || {});
15
+ })(e, (function(e) {
16
+ function t() {
17
+ var e = [...arguments];
18
+ if (e.length > 1) {
19
+ e[0] = e[0].slice(0, -1);
20
+ for (var t = e.length - 1, n = 1; n < t; ++n) e[n] = e[n].slice(1, -1);
21
+ return e[t] = e[t].slice(1), e.join("");
22
+ } else return e[0];
23
+ }
24
+ function n(e) {
25
+ return "(?:" + e + ")";
26
+ }
27
+ function r(e) {
28
+ return e === void 0 ? "undefined" : e === null ? "null" : Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase();
29
+ }
30
+ function i(e) {
31
+ return e.toUpperCase();
32
+ }
33
+ function a(e) {
34
+ return e == null ? [] : e instanceof Array ? e : typeof e.length != "number" || e.split || e.setInterval || e.call ? [e] : Array.prototype.slice.call(e);
35
+ }
36
+ function o(e, t) {
37
+ var n = e;
38
+ if (t) for (var r in t) n[r] = t[r];
39
+ return n;
40
+ }
41
+ function s(e) {
42
+ 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, "[\\:]")) + "*");
43
+ n(n("25[0-5]") + "|" + n("2[0-4]" + i) + "|" + n("1" + i + i) + "|" + n("[1-9]" + i) + "|" + i);
44
+ 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([
45
+ n(n(_ + "\\:") + "{6}" + v),
46
+ n("\\:\\:" + n(_ + "\\:") + "{5}" + v),
47
+ n(n(_) + "?\\:\\:" + n(_ + "\\:") + "{4}" + v),
48
+ n(n(n(_ + "\\:") + "{0,1}" + _) + "?\\:\\:" + n(_ + "\\:") + "{3}" + v),
49
+ n(n(n(_ + "\\:") + "{0,2}" + _) + "?\\:\\:" + n(_ + "\\:") + "{2}" + v),
50
+ n(n(n(_ + "\\:") + "{0,3}" + _) + "?\\:\\:" + _ + "\\:" + v),
51
+ n(n(n(_ + "\\:") + "{0,4}" + _) + "?\\:\\:" + v),
52
+ n(n(n(_ + "\\:") + "{0,5}" + _) + "?\\:\\:" + _),
53
+ n(n(n(_ + "\\:") + "{0,6}" + _) + "?\\:\\:")
54
+ ].join("|")), b = n(n(f + "|" + o) + "+");
55
+ n(y + "\\%25" + b);
56
+ 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 + "+"), ee = n(n(o + "|" + t(f, c, "[\\@]")) + "+"), j = n(n("\\/" + k) + "*"), M = n("\\/" + n(A + j) + "?"), N = n(ee + j), P = n(A + j), F = "(?!" + O + ")";
57
+ n(j + "|" + M + "|" + N + "|" + P + "|" + F);
58
+ var I = n(n(O + "|" + t("[\\/\\?]", d)) + "*"), L = n(n(O + "|[\\/\\?]") + "*"), R = n(n("\\/\\/" + D + j) + "|" + M + "|" + P + "|" + F), z = n(p + "\\:" + R + n("\\?" + I) + "?" + n("\\#" + L) + "?"), B = n(n(n("\\/\\/" + D + j) + "|" + M + "|" + N + "|" + F) + n("\\?" + I) + "?" + n("\\#" + L) + "?");
59
+ return n(z + "|" + B), n(p + "\\:" + R + n("\\?" + I) + "?"), "" + p + n(n("\\/\\/(" + n("(" + m + ")@") + "?(" + T + ")" + n("\\:(" + E + ")") + "?)") + "?(" + j + "|" + M + "|" + P + "|" + F + ")") + n("\\?(" + I + ")") + n("\\#(" + L + ")"), "" + n(n("\\/\\/(" + n("(" + m + ")@") + "?(" + T + ")" + n("\\:(" + E + ")") + "?)") + "?(" + j + "|" + M + "|" + N + "|" + F + ")") + n("\\?(" + I + ")") + n("\\#(" + L + ")"), "" + p + n(n("\\/\\/(" + n("(" + m + ")@") + "?(" + T + ")" + n("\\:(" + E + ")") + "?)") + "?(" + j + "|" + M + "|" + P + "|" + F + ")") + n("\\?(" + I + ")"), "" + n("\\#(" + L + ")"), "" + n("(" + m + ")@") + T + n("\\:(" + E + ")"), {
60
+ NOT_SCHEME: new RegExp(t("[^]", r, i, "[\\+\\-\\.]"), "g"),
61
+ NOT_USERINFO: new RegExp(t("[^\\%\\:]", f, c), "g"),
62
+ NOT_HOST: new RegExp(t("[^\\%\\[\\]\\:]", f, c), "g"),
63
+ NOT_PATH: new RegExp(t("[^\\%\\/\\:\\@]", f, c), "g"),
64
+ NOT_PATH_NOSCHEME: new RegExp(t("[^\\%\\/\\@]", f, c), "g"),
65
+ NOT_QUERY: new RegExp(t("[^\\%]", f, c, "[\\:\\@\\/\\?]", d), "g"),
66
+ NOT_FRAGMENT: new RegExp(t("[^\\%]", f, c, "[\\:\\@\\/\\?]"), "g"),
67
+ ESCAPE: new RegExp(t("[^]", f, c), "g"),
68
+ UNRESERVED: new RegExp(f, "g"),
69
+ OTHER_CHARS: new RegExp(t("[^\\%]", f, l), "g"),
70
+ PCT_ENCODED: new RegExp(o, "g"),
71
+ IPV4ADDRESS: /* @__PURE__ */ RegExp("^(" + g + ")$"),
72
+ IPV6ADDRESS: /* @__PURE__ */ RegExp("^\\[?(" + y + ")" + n(n("\\%25|\\%(?!" + a + "{2})") + "(" + b + ")") + "?\\]?$")
73
+ };
74
+ }
75
+ var c = s(!1), l = s(!0), u = function() {
76
+ function e(e, t) {
77
+ var n = [], r = !0, i = !1, a = void 0;
78
+ try {
79
+ for (var o = e[Symbol.iterator](), s; !(r = (s = o.next()).done) && (n.push(s.value), !(t && n.length === t)); r = !0);
80
+ } catch (e) {
81
+ i = !0, a = e;
82
+ } finally {
83
+ try {
84
+ !r && o.return && o.return();
85
+ } finally {
86
+ if (i) throw a;
87
+ }
88
+ }
89
+ return n;
90
+ }
91
+ return function(t, n) {
92
+ if (Array.isArray(t)) return t;
93
+ if (Symbol.iterator in Object(t)) return e(t, n);
94
+ throw TypeError("Invalid attempt to destructure non-iterable instance");
95
+ };
96
+ }(), d = function(e) {
97
+ if (Array.isArray(e)) {
98
+ for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t];
99
+ return n;
100
+ } else return Array.from(e);
101
+ }, 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 = {
102
+ overflow: "Overflow: input needs wider integers to process",
103
+ "not-basic": "Illegal input >= 0x80 (not a basic code point)",
104
+ "invalid-input": "Invalid input"
105
+ }, T = p - m, E = Math.floor, D = String.fromCharCode;
106
+ function O(e) {
107
+ throw RangeError(w[e]);
108
+ }
109
+ function k(e, t) {
110
+ for (var n = [], r = e.length; r--;) n[r] = t(e[r]);
111
+ return n;
112
+ }
113
+ function A(e, t) {
114
+ var n = e.split("@"), r = "";
115
+ n.length > 1 && (r = n[0] + "@", e = n[1]), e = e.replace(C, ".");
116
+ var i = k(e.split("."), t).join(".");
117
+ return r + i;
118
+ }
119
+ function ee(e) {
120
+ for (var t = [], n = 0, r = e.length; n < r;) {
121
+ var i = e.charCodeAt(n++);
122
+ if (i >= 55296 && i <= 56319 && n < r) {
123
+ var a = e.charCodeAt(n++);
124
+ (a & 64512) == 56320 ? t.push(((i & 1023) << 10) + (a & 1023) + 65536) : (t.push(i), n--);
125
+ } else t.push(i);
126
+ }
127
+ return t;
128
+ }
129
+ var j = function(e) {
130
+ return String.fromCodePoint.apply(String, d(e));
131
+ }, M = function(e) {
132
+ return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : p;
133
+ }, N = function(e, t) {
134
+ return e + 22 + 75 * (e < 26) - ((t != 0) << 5);
135
+ }, P = function(e, t, n) {
136
+ var r = 0;
137
+ for (e = n ? E(e / _) : e >> 1, e += E(e / t); e > T * h >> 1; r += p) e = E(e / T);
138
+ return E(r + (T + 1) * e / (e + g));
139
+ }, F = function(e) {
140
+ var t = [], n = e.length, r = 0, i = y, a = v, o = e.lastIndexOf(b);
141
+ o < 0 && (o = 0);
142
+ for (var s = 0; s < o; ++s) e.charCodeAt(s) >= 128 && O("not-basic"), t.push(e.charCodeAt(s));
143
+ for (var c = o > 0 ? o + 1 : 0; c < n;) {
144
+ for (var l = r, u = 1, d = p;; d += p) {
145
+ c >= n && O("invalid-input");
146
+ var g = M(e.charCodeAt(c++));
147
+ (g >= p || g > E((f - r) / u)) && O("overflow"), r += g * u;
148
+ var _ = d <= a ? m : d >= a + h ? h : d - a;
149
+ if (g < _) break;
150
+ var x = p - _;
151
+ u > E(f / x) && O("overflow"), u *= x;
152
+ }
153
+ var S = t.length + 1;
154
+ a = P(r - l, S, l == 0), E(r / S) > f - i && O("overflow"), i += E(r / S), r %= S, t.splice(r++, 0, i);
155
+ }
156
+ return String.fromCodePoint.apply(String, t);
157
+ }, I = function(e) {
158
+ var t = [];
159
+ e = ee(e);
160
+ var n = e.length, r = y, i = 0, a = v, o = !0, s = !1, c = void 0;
161
+ try {
162
+ for (var l = e[Symbol.iterator](), u; !(o = (u = l.next()).done); o = !0) {
163
+ var d = u.value;
164
+ d < 128 && t.push(D(d));
165
+ }
166
+ } catch (e) {
167
+ s = !0, c = e;
168
+ } finally {
169
+ try {
170
+ !o && l.return && l.return();
171
+ } finally {
172
+ if (s) throw c;
173
+ }
174
+ }
175
+ var g = t.length, _ = g;
176
+ for (g && t.push(b); _ < n;) {
177
+ var x = f, S = !0, C = !1, w = void 0;
178
+ try {
179
+ for (var T = e[Symbol.iterator](), k; !(S = (k = T.next()).done); S = !0) {
180
+ var A = k.value;
181
+ A >= r && A < x && (x = A);
182
+ }
183
+ } catch (e) {
184
+ C = !0, w = e;
185
+ } finally {
186
+ try {
187
+ !S && T.return && T.return();
188
+ } finally {
189
+ if (C) throw w;
190
+ }
191
+ }
192
+ var j = _ + 1;
193
+ x - r > E((f - i) / j) && O("overflow"), i += (x - r) * j, r = x;
194
+ var M = !0, F = !1, I = void 0;
195
+ try {
196
+ for (var L = e[Symbol.iterator](), R; !(M = (R = L.next()).done); M = !0) {
197
+ var z = R.value;
198
+ if (z < r && ++i > f && O("overflow"), z == r) {
199
+ for (var B = i, V = p;; V += p) {
200
+ var H = V <= a ? m : V >= a + h ? h : V - a;
201
+ if (B < H) break;
202
+ var U = B - H, W = p - H;
203
+ t.push(D(N(H + U % W, 0))), B = E(U / W);
204
+ }
205
+ t.push(D(N(B, 0))), a = P(i, j, _ == g), i = 0, ++_;
206
+ }
207
+ }
208
+ } catch (e) {
209
+ F = !0, I = e;
210
+ } finally {
211
+ try {
212
+ !M && L.return && L.return();
213
+ } finally {
214
+ if (F) throw I;
215
+ }
216
+ }
217
+ ++i, ++r;
218
+ }
219
+ return t.join("");
220
+ }, L = {
221
+ version: "2.1.0",
222
+ ucs2: {
223
+ decode: ee,
224
+ encode: j
225
+ },
226
+ decode: F,
227
+ encode: I,
228
+ toASCII: function(e) {
229
+ return A(e, function(e) {
230
+ return S.test(e) ? "xn--" + I(e) : e;
231
+ });
232
+ },
233
+ toUnicode: function(e) {
234
+ return A(e, function(e) {
235
+ return x.test(e) ? F(e.slice(4).toLowerCase()) : e;
236
+ });
237
+ }
238
+ }, R = {};
239
+ function z(e) {
240
+ var t = e.charCodeAt(0), n = void 0;
241
+ 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;
242
+ }
243
+ function B(e) {
244
+ for (var t = "", n = 0, r = e.length; n < r;) {
245
+ var i = parseInt(e.substr(n + 1, 2), 16);
246
+ if (i < 128) t += String.fromCharCode(i), n += 3;
247
+ else if (i >= 194 && i < 224) {
248
+ if (r - n >= 6) {
249
+ var a = parseInt(e.substr(n + 4, 2), 16);
250
+ t += String.fromCharCode((i & 31) << 6 | a & 63);
251
+ } else t += e.substr(n, 6);
252
+ n += 6;
253
+ } else if (i >= 224) {
254
+ if (r - n >= 9) {
255
+ var o = parseInt(e.substr(n + 4, 2), 16), s = parseInt(e.substr(n + 7, 2), 16);
256
+ t += String.fromCharCode((i & 15) << 12 | (o & 63) << 6 | s & 63);
257
+ } else t += e.substr(n, 9);
258
+ n += 9;
259
+ } else t += e.substr(n, 3), n += 3;
260
+ }
261
+ return t;
262
+ }
263
+ function V(e, t) {
264
+ function n(e) {
265
+ var n = B(e);
266
+ return n.match(t.UNRESERVED) ? n : e;
267
+ }
268
+ 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, z).replace(t.PCT_ENCODED, i)), e.host !== void 0 && (e.host = String(e.host).replace(t.PCT_ENCODED, n).toLowerCase().replace(t.NOT_HOST, z).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, z).replace(t.PCT_ENCODED, i)), e.query !== void 0 && (e.query = String(e.query).replace(t.PCT_ENCODED, n).replace(t.NOT_QUERY, z).replace(t.PCT_ENCODED, i)), e.fragment !== void 0 && (e.fragment = String(e.fragment).replace(t.PCT_ENCODED, n).replace(t.NOT_FRAGMENT, z).replace(t.PCT_ENCODED, i)), e;
269
+ }
270
+ function H(e) {
271
+ return e.replace(/^0*(.*)/, "$1") || "0";
272
+ }
273
+ function U(e, t) {
274
+ var n = u(e.match(t.IPV4ADDRESS) || [], 2)[1];
275
+ return n ? n.split(".").map(H).join(".") : e;
276
+ }
277
+ function W(e, t) {
278
+ var n = u(e.match(t.IPV6ADDRESS) || [], 3), r = n[1], i = n[2];
279
+ if (r) {
280
+ for (var a = u(r.toLowerCase().split("::").reverse(), 2), o = a[0], s = a[1], c = s ? s.split(":").map(H) : [], l = o.split(":").map(H), 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] || "";
281
+ d && (m[f - 1] = U(m[f - 1], t));
282
+ var g = m.reduce(function(e, t, n) {
283
+ if (!t || t === "0") {
284
+ var r = e[e.length - 1];
285
+ r && r.index + r.length === n ? r.length++ : e.push({
286
+ index: n,
287
+ length: 1
288
+ });
289
+ }
290
+ return e;
291
+ }, []).sort(function(e, t) {
292
+ return t.length - e.length;
293
+ })[0], _ = void 0;
294
+ if (g && g.length > 1) {
295
+ var v = m.slice(0, g.index), y = m.slice(g.index + g.length);
296
+ _ = v.join(":") + "::" + y.join(":");
297
+ } else _ = m.join(":");
298
+ return i && (_ += "%" + i), _;
299
+ } else return e;
300
+ }
301
+ var te = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i, ne = "".match(/(){0}/)[1] === void 0;
302
+ function G(e) {
303
+ var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = {}, r = t.iri === !1 ? c : l;
304
+ t.reference === "suffix" && (e = (t.scheme ? t.scheme + ":" : "") + "//" + e);
305
+ var i = e.match(te);
306
+ if (i) {
307
+ ne ? (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 &&= W(U(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.");
308
+ var a = R[(t.scheme || n.scheme || "").toLowerCase()];
309
+ if (!t.unicodeSupport && (!a || !a.unicodeSupport)) {
310
+ if (n.host && (t.domainHost || a && a.domainHost)) try {
311
+ n.host = L.toASCII(n.host.replace(r.PCT_ENCODED, B).toLowerCase());
312
+ } catch (e) {
313
+ n.error = n.error || "Host's domain name can not be converted to ASCII via punycode: " + e;
314
+ }
315
+ V(n, c);
316
+ } else V(n, r);
317
+ a && a.parse && a.parse(n, t);
318
+ } else n.error = n.error || "URI can not be parsed.";
319
+ return n;
320
+ }
321
+ function re(e, t) {
322
+ var n = t.iri === !1 ? c : l, r = [];
323
+ return e.userinfo !== void 0 && (r.push(e.userinfo), r.push("@")), e.host !== void 0 && r.push(W(U(String(e.host), n), n).replace(n.IPV6ADDRESS, function(e, t, n) {
324
+ return "[" + t + (n ? "%25" + n : "") + "]";
325
+ })), (typeof e.port == "number" || typeof e.port == "string") && (r.push(":"), r.push(String(e.port))), r.length ? r.join("") : void 0;
326
+ }
327
+ var ie = /^\.\.?\//, ae = /^\/\.(\/|$)/, oe = /^\/\.\.(\/|$)/, se = /^\/?(?:.|\n)*?(?=\/|$)/;
328
+ function K(e) {
329
+ for (var t = []; e.length;) if (e.match(ie)) e = e.replace(ie, "");
330
+ else if (e.match(ae)) e = e.replace(ae, "/");
331
+ else if (e.match(oe)) e = e.replace(oe, "/"), t.pop();
332
+ else if (e === "." || e === "..") e = "";
333
+ else {
334
+ var n = e.match(se);
335
+ if (n) {
336
+ var r = n[0];
337
+ e = e.slice(r.length), t.push(r);
338
+ } else throw Error("Unexpected dot segment condition");
339
+ }
340
+ return t.join("");
341
+ }
342
+ function q(e) {
343
+ var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = t.iri ? l : c, r = [], i = R[(t.scheme || e.scheme || "").toLowerCase()];
344
+ if (i && i.serialize && i.serialize(e, t), e.host && !n.IPV6ADDRESS.test(e.host) && (t.domainHost || i && i.domainHost)) try {
345
+ e.host = t.iri ? L.toUnicode(e.host) : L.toASCII(e.host.replace(n.PCT_ENCODED, B).toLowerCase());
346
+ } catch (n) {
347
+ e.error = e.error || "Host's domain name can not be converted to " + (t.iri ? "Unicode" : "ASCII") + " via punycode: " + n;
348
+ }
349
+ V(e, n), t.reference !== "suffix" && e.scheme && (r.push(e.scheme), r.push(":"));
350
+ var a = re(e, t);
351
+ if (a !== void 0 && (t.reference !== "suffix" && r.push("//"), r.push(a), e.path && e.path.charAt(0) !== "/" && r.push("/")), e.path !== void 0) {
352
+ var o = e.path;
353
+ !t.absolutePath && (!i || !i.absolutePath) && (o = K(o)), a === void 0 && (o = o.replace(/^\/\//, "/%2F")), r.push(o);
354
+ }
355
+ return e.query !== void 0 && (r.push("?"), r.push(e.query)), e.fragment !== void 0 && (r.push("#"), r.push(e.fragment)), r.join("");
356
+ }
357
+ function ce(e, t) {
358
+ var n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}, r = arguments[3], i = {};
359
+ return r || (e = G(q(e, n), n), t = G(q(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 = K(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 = K(t.path || ""), i.query = t.query) : (t.path ? (t.path.charAt(0) === "/" ? i.path = K(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 = K(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;
360
+ }
361
+ function le(e, t, n) {
362
+ var r = o({ scheme: "null" }, n);
363
+ return q(ce(G(e, r), G(t, r), r, !0), r);
364
+ }
365
+ function ue(e, t) {
366
+ return typeof e == "string" ? e = q(G(e, t), t) : r(e) === "object" && (e = G(q(e, t), t)), e;
367
+ }
368
+ function de(e, t, n) {
369
+ return typeof e == "string" ? e = q(G(e, n), n) : r(e) === "object" && (e = q(e, n)), typeof t == "string" ? t = q(G(t, n), n) : r(t) === "object" && (t = q(t, n)), e === t;
370
+ }
371
+ function fe(e, t) {
372
+ return e && e.toString().replace(!t || !t.iri ? c.ESCAPE : l.ESCAPE, z);
373
+ }
374
+ function J(e, t) {
375
+ return e && e.toString().replace(!t || !t.iri ? c.PCT_ENCODED : l.PCT_ENCODED, B);
376
+ }
377
+ var Y = {
378
+ scheme: "http",
379
+ domainHost: !0,
380
+ parse: function(e, t) {
381
+ return e.host || (e.error = e.error || "HTTP URIs must have a host."), e;
382
+ },
383
+ serialize: function(e, t) {
384
+ var n = String(e.scheme).toLowerCase() === "https";
385
+ return (e.port === (n ? 443 : 80) || e.port === "") && (e.port = void 0), e.path ||= "/", e;
386
+ }
387
+ }, pe = {
388
+ scheme: "https",
389
+ domainHost: Y.domainHost,
390
+ parse: Y.parse,
391
+ serialize: Y.serialize
392
+ };
393
+ function me(e) {
394
+ return typeof e.secure == "boolean" ? e.secure : String(e.scheme).toLowerCase() === "wss";
395
+ }
396
+ var X = {
397
+ scheme: "ws",
398
+ domainHost: !0,
399
+ parse: function(e, t) {
400
+ var n = e;
401
+ return n.secure = me(n), n.resourceName = (n.path || "/") + (n.query ? "?" + n.query : ""), n.path = void 0, n.query = void 0, n;
402
+ },
403
+ serialize: function(e, t) {
404
+ if ((e.port === (me(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) {
405
+ var n = u(e.resourceName.split("?"), 2), r = n[0], i = n[1];
406
+ e.path = r && r !== "/" ? r : void 0, e.query = i, e.resourceName = void 0;
407
+ }
408
+ return e.fragment = void 0, e;
409
+ }
410
+ }, he = {
411
+ scheme: "wss",
412
+ domainHost: X.domainHost,
413
+ parse: X.parse,
414
+ serialize: X.serialize
415
+ }, ge = {}, _e = "[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]", Z = "[0-9A-Fa-f]", ve = n(n("%[EFef]" + Z + "%" + Z + Z + "%" + Z + Z) + "|" + n("%[89A-Fa-f]" + Z + "%" + Z + Z) + "|" + n("%" + Z + Z)), ye = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]", be = t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]", "[\\\"\\\\]"), xe = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]", Se = new RegExp(_e, "g"), Q = new RegExp(ve, "g"), Ce = new RegExp(t("[^]", ye, "[\\.]", "[\\\"]", be), "g"), we = new RegExp(t("[^]", _e, xe), "g"), Te = we;
416
+ function $(e) {
417
+ var t = B(e);
418
+ return t.match(Se) ? t : e;
419
+ }
420
+ var Ee = {
421
+ scheme: "mailto",
422
+ parse: function(e, t) {
423
+ var n = e, r = n.to = n.path ? n.path.split(",") : [];
424
+ if (n.path = void 0, n.query) {
425
+ for (var i = !1, a = {}, o = n.query.split("&"), s = 0, c = o.length; s < c; ++s) {
426
+ var l = o[s].split("=");
427
+ switch (l[0]) {
428
+ case "to":
429
+ for (var u = l[1].split(","), d = 0, f = u.length; d < f; ++d) r.push(u[d]);
430
+ break;
431
+ case "subject":
432
+ n.subject = J(l[1], t);
433
+ break;
434
+ case "body":
435
+ n.body = J(l[1], t);
436
+ break;
437
+ default:
438
+ i = !0, a[J(l[0], t)] = J(l[1], t);
439
+ break;
440
+ }
441
+ }
442
+ i && (n.headers = a);
443
+ }
444
+ n.query = void 0;
445
+ for (var p = 0, m = r.length; p < m; ++p) {
446
+ var h = r[p].split("@");
447
+ if (h[0] = J(h[0]), t.unicodeSupport) h[1] = J(h[1], t).toLowerCase();
448
+ else try {
449
+ h[1] = L.toASCII(J(h[1], t).toLowerCase());
450
+ } catch (e) {
451
+ n.error = n.error || "Email address's domain name can not be converted to ASCII via punycode: " + e;
452
+ }
453
+ r[p] = h.join("@");
454
+ }
455
+ return n;
456
+ },
457
+ serialize: function(e, t) {
458
+ var n = e, r = a(e.to);
459
+ if (r) {
460
+ for (var o = 0, s = r.length; o < s; ++o) {
461
+ var c = String(r[o]), l = c.lastIndexOf("@"), u = c.slice(0, l).replace(Q, $).replace(Q, i).replace(Ce, z), d = c.slice(l + 1);
462
+ try {
463
+ d = t.iri ? L.toUnicode(d) : L.toASCII(J(d, t).toLowerCase());
464
+ } catch (e) {
465
+ n.error = n.error || "Email address's domain name can not be converted to " + (t.iri ? "Unicode" : "ASCII") + " via punycode: " + e;
466
+ }
467
+ r[o] = u + "@" + d;
468
+ }
469
+ n.path = r.join(",");
470
+ }
471
+ var f = e.headers = e.headers || {};
472
+ e.subject && (f.subject = e.subject), e.body && (f.body = e.body);
473
+ var p = [];
474
+ for (var m in f) f[m] !== ge[m] && p.push(m.replace(Q, $).replace(Q, i).replace(we, z) + "=" + f[m].replace(Q, $).replace(Q, i).replace(Te, z));
475
+ return p.length && (n.query = p.join("&")), n;
476
+ }
477
+ }, De = /^([^\:]+)\:(.*)/, Oe = {
478
+ scheme: "urn",
479
+ parse: function(e, t) {
480
+ var n = e.path && e.path.match(De), r = e;
481
+ if (n) {
482
+ var i = t.scheme || r.scheme || "urn", a = n[1].toLowerCase(), o = n[2], s = R[i + ":" + (t.nid || a)];
483
+ r.nid = a, r.nss = o, r.path = void 0, s && (r = s.parse(r, t));
484
+ } else r.error = r.error || "URN can not be parsed.";
485
+ return r;
486
+ },
487
+ serialize: function(e, t) {
488
+ var n = t.scheme || e.scheme || "urn", r = e.nid, i = R[n + ":" + (t.nid || r)];
489
+ i && (e = i.serialize(e, t));
490
+ var a = e, o = e.nss;
491
+ return a.path = (r || t.nid) + ":" + o, a;
492
+ }
493
+ }, ke = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/, Ae = {
494
+ scheme: "urn:uuid",
495
+ parse: function(e, t) {
496
+ var n = e;
497
+ 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;
498
+ },
499
+ serialize: function(e, t) {
500
+ var n = e;
501
+ return n.nss = (e.uuid || "").toLowerCase(), n;
502
+ }
503
+ };
504
+ R[Y.scheme] = Y, R[pe.scheme] = pe, R[X.scheme] = X, R[he.scheme] = he, R[Ee.scheme] = Ee, R[Oe.scheme] = Oe, R[Ae.scheme] = Ae, e.SCHEMES = R, e.pctEncChar = z, e.pctDecChars = B, e.parse = G, e.removeDotSegments = K, e.serialize = q, e.resolveComponents = ce, e.resolve = le, e.normalize = ue, e.equal = de, e.escapeComponent = fe, e.unescapeComponent = J, Object.defineProperty(e, "__esModule", { value: !0 });
505
+ }));
506
+ })), import_uri_all$3 = /* @__PURE__ */ __toESM(require_uri_all(), 1);
507
+ const NavigationContext = createContext({
508
+ url: "/",
509
+ store: "url"
510
+ });
511
+ function defaultShouldHandle(e) {
512
+ return e.canIntercept && !e.downloadRequest;
513
+ }
514
+ const NavigationProvider = ({ children: e, store: n = "url", scoped: o, shouldHandle: s = defaultShouldHandle }) => {
515
+ let [c, l] = useState(null), [u, d] = useState(() => ({
516
+ store: n,
517
+ url: window.location.href
518
+ })), f = useMemo(() => (e) => {
519
+ let t = e.sourceElement;
520
+ return c && t && !c.contains(t) ? !0 : !s(e);
521
+ }, [s, c]);
522
+ useEffect(() => {
523
+ let e = (e) => {
524
+ if (f(e)) return;
525
+ let t = e.destination.url;
526
+ n === "memory" ? (e.preventDefault(), d((r) => {
527
+ if (e.sourceElement instanceof HTMLAnchorElement && e.navigationType === "push") {
528
+ let n = e.sourceElement.getAttribute("href");
529
+ n && !n.startsWith("/") && !/^[a-z]+:\/\//i.test(n) && (t = import_uri_all$3.default.resolve(r.url, n));
530
+ }
531
+ return {
532
+ ...r,
533
+ url: t,
534
+ store: n
535
+ };
536
+ })) : e.intercept({ async handler() {
537
+ d({
538
+ url: t,
539
+ store: n
540
+ });
541
+ } });
542
+ };
543
+ return navigation?.addEventListener("navigate", e), () => navigation?.removeEventListener("navigate", e);
544
+ }, [
545
+ f,
546
+ o,
547
+ n
548
+ ]);
549
+ let p = useMemo(() => ({
550
+ ...u,
551
+ setState: d
552
+ }), [u]);
553
+ return createElement(NavigationContext.Provider, { value: p }, o ? createElement("div", { ref: l }, e) : e);
554
+ };
555
+ function future(e) {
556
+ let t = {}, n = new Promise((e, n) => {
557
+ t.resolve = e, t.reject = n;
558
+ });
559
+ return n.resolve = t.resolve, n.reject = t.reject, e && n.catch(() => {}), n;
560
+ }
561
+ var import_uri_all$2 = /* @__PURE__ */ __toESM(require_uri_all(), 1);
562
+ function useNavigate() {
563
+ let { setState: e } = useContext(NavigationContext);
564
+ return useMemo(() => {
565
+ if (!e || !navigation) return navigation;
566
+ let t = (t, n) => {
567
+ let r = {
568
+ committed: future(!0),
569
+ finished: future(!0)
570
+ }, i = ({ committed: e, finished: t }) => {
571
+ e.then(r.committed.resolve, r.committed.reject), t.then(r.finished.resolve, r.finished.reject);
572
+ };
573
+ return e((e) => (Promise.resolve().then(() => {
574
+ try {
575
+ i(navigation.navigate(import_uri_all$2.default.resolve(e.url, t), n));
576
+ } catch {
577
+ i(navigation.navigate(t, n));
578
+ }
579
+ }), e)), r;
580
+ };
581
+ return new Proxy(navigation, { get(e, n, r) {
582
+ if (n === "navigate") return t;
583
+ let i = Reflect.get(e, n, r);
584
+ return typeof i == "function" ? i.bind(e) : i;
585
+ } });
586
+ }, [e]);
587
+ }
588
+ var import_uri_all$1 = /* @__PURE__ */ __toESM(require_uri_all(), 1), DUMMY_BASE = "fakeprotodonotuse://";
589
+ function resolveLocation(e, t) {
590
+ let n = import_uri_all$1.default.parse(import_uri_all$1.default.resolve(t, e));
591
+ return n.scheme = void 0, n.host = void 0, n.port = void 0, import_uri_all$1.default.serialize(n);
592
+ }
593
+ function useLocation(e, t) {
594
+ let r = useContext(NavigationContext), a = t ?? r.url;
595
+ return useMemo(() => {
596
+ if (typeof e == "string") return resolveLocation(e, a);
597
+ if (typeof e == "function") {
598
+ let t = new URL(a, DUMMY_BASE);
599
+ return resolveLocation((e(t) || t).href, a);
600
+ }
601
+ return resolveLocation("", a);
602
+ }, [e, a]);
603
+ }
604
+ var import_uri_all = /* @__PURE__ */ __toESM(require_uri_all(), 1);
605
+ function parseSearchParams(e) {
606
+ return new URLSearchParams(import_uri_all.default.parse(e || "").query);
607
+ }
608
+ function useQueryParam(e, t = !1) {
609
+ let n = useLocation();
610
+ return useMemo(() => {
611
+ try {
612
+ let r = parseSearchParams(n);
613
+ return t ? r.getAll(e) || [] : r.get(e);
614
+ } catch {
615
+ return null;
616
+ }
617
+ }, [
618
+ n,
619
+ t,
620
+ e
621
+ ]);
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;
628
+ }
629
+ function useQueryParams(e) {
630
+ let t = useLocation();
631
+ return useMemo(() => {
632
+ let n = parseSearchParams(t);
633
+ return Array.isArray(e) ? mapQueryParams(n, e) : (e || mapQueryParams)(n);
634
+ }, [t, e]);
635
+ }
636
+ function useLocationWithParam(e, t, n) {
637
+ return useLocation((n) => t === null ? n.searchParams.delete(e) : n.searchParams.set(e, t), n);
638
+ }
639
+ function useLocationWithParams(e, t) {
640
+ return useLocation((t) => {
641
+ 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);
642
+ return t;
643
+ }, t);
644
+ }
645
+ export { NavigationContext, NavigationProvider, mapQueryParams, parseSearchParams, resolveLocation, useLocation, useLocationWithParam, useLocationWithParams, useNavigate, useQueryParam, useQueryParams };
@@ -0,0 +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});
@@ -0,0 +1 @@
1
+ export declare function useNavigate(): Navigation | undefined;
@@ -0,0 +1,11 @@
1
+ type Resolution<T> = {
2
+ resolve: (value: T) => void;
3
+ reject: (reason?: unknown) => void;
4
+ };
5
+ type Future<T> = Promise<T> & Resolution<T>;
6
+ /**
7
+ * Returns a Promise that can be resolved or rejected from outside.
8
+ * @param suppressUncaught If true, adds a dummy catch handler to bypass browsers' uncaught error logging.
9
+ */
10
+ export declare function future<T>(suppressUncaught?: boolean): Future<T>;
11
+ export {};
package/package.json CHANGED
@@ -19,9 +19,16 @@
19
19
  "types": "./dist/index.d.ts",
20
20
  "import": "./dist/use-navigation-api.es.js",
21
21
  "require": "./dist/use-navigation-api.umd.js"
22
- }
22
+ },
23
+ "./src": "./src/index.ts",
24
+ "./src/*": "./src/*"
23
25
  },
24
- "version": "0.2.0",
26
+ "files": [
27
+ "dist",
28
+ "src",
29
+ "README.md"
30
+ ],
31
+ "version": "0.3.0",
25
32
  "type": "module",
26
33
  "scripts": {
27
34
  "build": "tsc -b && vite build",
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./navigationProvider";
2
2
  export * from "./useNavigate";
3
- export * from "./location/useLocation";
4
3
  export * from "./location/useQueryParam";
4
+ export * from "./location/useQueryParams";
5
+ export * from "./location/useLocation";
5
6
  export * from "./location/useLocationWithParam";
@@ -0,0 +1,31 @@
1
+ import { useLocation } from "src/location/useLocation.ts";
2
+ import { useMemo } from "react";
3
+ import { parseSearchParams } from "src/location/useQueryParam.ts";
4
+
5
+ export type ParamsMapper<T> = (params: URLSearchParams) => T;
6
+
7
+ export function mapQueryParams(params: URLSearchParams, keys?: string[]) {
8
+ const result: Record<string, string | string[]> = {};
9
+ params.forEach((value, key) => {
10
+ if (keys && !keys.includes(key)) return;
11
+ if (!result[key]) result[key] = value;
12
+ else if (Array.isArray(result[key])) result[key].push(value);
13
+ else result[key] = [result[key] as string, value];
14
+ });
15
+ return result;
16
+ }
17
+
18
+ export function useQueryParams(): Record<string, string | string[]>;
19
+ export function useQueryParams<K extends string>(
20
+ keys: K[],
21
+ ): Record<K, string | string[]>;
22
+ export function useQueryParams<T>(mapper: ParamsMapper<T>): T;
23
+ export function useQueryParams(mapping?: string[] | ParamsMapper<unknown>) {
24
+ const location = useLocation();
25
+ return useMemo(() => {
26
+ const params = parseSearchParams(location);
27
+ return Array.isArray(mapping)
28
+ ? mapQueryParams(params, mapping)
29
+ : (mapping || mapQueryParams)(params);
30
+ }, [location, mapping]);
31
+ }
package/eslint.config.js DELETED
@@ -1,22 +0,0 @@
1
- import js from "@eslint/js";
2
- import globals from "globals";
3
- import reactHooks from "eslint-plugin-react-hooks";
4
- import reactRefresh from "eslint-plugin-react-refresh";
5
- import tseslint from "typescript-eslint";
6
- import { defineConfig, globalIgnores } from "eslint/config";
7
-
8
- export default defineConfig([
9
- globalIgnores(["dist"]),
10
- {
11
- files: ["**/*.{ts,tsx}"],
12
- extends: [
13
- js.configs.recommended,
14
- tseslint.configs.recommended,
15
- reactHooks.configs.flat.recommended,
16
- ],
17
- languageOptions: {
18
- ecmaVersion: 2020,
19
- globals: globals.browser,
20
- },
21
- },
22
- ]);
package/tsconfig.app.json DELETED
@@ -1,30 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4
- "target": "ES2022",
5
- "useDefineForClassFields": true,
6
- "lib": ["ES2022", "DOM", "DOM.Iterable"],
7
- "module": "ESNext",
8
- "types": ["vite/client"],
9
- "skipLibCheck": true,
10
-
11
- /* Bundler mode */
12
- "moduleResolution": "bundler",
13
- "allowImportingTsExtensions": true,
14
- "verbatimModuleSyntax": true,
15
- "moduleDetection": "force",
16
- "noEmit": true,
17
- "jsx": "react-jsx",
18
-
19
- /* Linting */
20
- "strict": true,
21
- "noUnusedLocals": true,
22
- "noUnusedParameters": true,
23
- "erasableSyntaxOnly": true,
24
- "noFallthroughCasesInSwitch": true,
25
- "noUncheckedSideEffectImports": true,
26
-
27
- "baseUrl": "."
28
- },
29
- "include": ["src"]
30
- }
package/tsconfig.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "files": [],
3
- "references": [
4
- { "path": "./tsconfig.app.json" },
5
- { "path": "./tsconfig.node.json" }
6
- ]
7
- }
@@ -1,26 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
4
- "target": "ES2023",
5
- "lib": ["ES2023"],
6
- "module": "ESNext",
7
- "types": ["node"],
8
- "skipLibCheck": true,
9
-
10
- /* Bundler mode */
11
- "moduleResolution": "bundler",
12
- "allowImportingTsExtensions": true,
13
- "verbatimModuleSyntax": true,
14
- "moduleDetection": "force",
15
- "noEmit": true,
16
-
17
- /* Linting */
18
- "strict": true,
19
- "noUnusedLocals": true,
20
- "noUnusedParameters": true,
21
- "erasableSyntaxOnly": true,
22
- "noFallthroughCasesInSwitch": true,
23
- "noUncheckedSideEffectImports": true
24
- },
25
- "include": ["vite.config.ts"]
26
- }
package/vite.config.ts DELETED
@@ -1,28 +0,0 @@
1
- import { defineConfig } from "vite";
2
- import { resolve } from "path";
3
- import dts from "unplugin-dts/vite";
4
- import react from "@vitejs/plugin-react";
5
- import tsconfigPaths from "vite-tsconfig-paths";
6
-
7
- export default defineConfig({
8
- build: {
9
- lib: {
10
- entry: resolve(__dirname, "src/index.ts"),
11
- name: "useNavigationAPI",
12
- fileName: (format) => `use-navigation-api.${format}.js`,
13
- },
14
- rollupOptions: {
15
- external: ["react", "react-dom", "react/jsx-runtime"],
16
- output: {
17
- globals: {
18
- react: "React",
19
- },
20
- },
21
- },
22
- },
23
- plugins: [
24
- react(),
25
- dts({ tsconfigPath: "./tsconfig.app.json" }),
26
- tsconfigPaths(),
27
- ],
28
- });