UNPKG

@metapages/hash-query

Version:

Get/set URL parameters (state) in the hash string instead of the query string.

262 lines (261 loc) 8.92 kB
function V(t) { return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t; } var F = function(t, n) { n || (n = {}), typeof n == "function" && (n = { cmp: n }); var r = typeof n.cycles == "boolean" ? n.cycles : !1, e = n.cmp && /* @__PURE__ */ function(o) { return function(a) { return function(c, l) { var h = { key: c, value: a[c] }, i = { key: l, value: a[l] }; return o(h, i); }; }; }(n.cmp), s = []; return function o(a) { if (a && a.toJSON && typeof a.toJSON == "function" && (a = a.toJSON()), a !== void 0) { if (typeof a == "number") return isFinite(a) ? "" + a : "null"; if (typeof a != "object") return JSON.stringify(a); var c, l; if (Array.isArray(a)) { for (l = "[", c = 0; c < a.length; c++) c && (l += ","), l += o(a[c]) || "null"; return l + "]"; } if (a === null) return "null"; if (s.indexOf(a) !== -1) { if (r) return JSON.stringify("__cycle__"); throw new TypeError("Converting circular structure to JSON"); } var h = s.push(a) - 1, i = Object.keys(a).sort(e && e(a)); for (l = "", c = 0; c < i.length; c++) { var d = i[c], b = o(a[d]); b && (l && (l += ","), l += JSON.stringify(d) + ":" + b); } return s.splice(h, 1), "{" + l + "}"; } }(t); }; const O = /* @__PURE__ */ V(F), U = (t) => P(O(t)), I = (t) => { if (t && t.length > 0) try { return JSON.parse(p(t)); } catch { return JSON.parse(decodeURIComponent(atob(decodeURIComponent(t)))); } }, P = (t) => btoa(encodeURIComponent(t)), p = (t) => { try { return decodeURIComponent(atob(t)); } catch { return decodeURIComponent(atob(decodeURIComponent(t))); } }, w = (t) => { const n = t instanceof URL ? t : new URL(t); return v(n.hash); }, v = (t) => { let n = t; for (; n.startsWith("#"); ) n = n.substring(1); const r = n.indexOf("?"); if (r === -1) return [n, {}]; const e = n.substring(0, r); n = n.substring(r + 1); const s = {}; return n.split("&").filter((o) => o.length > 0).map((o) => { const a = o.indexOf("="); if (a === -1) return [o, ""]; const c = o.substring(0, a), l = o.substring(a + 1); return [c, l]; }).forEach(([o, a]) => { s[o] = a; }), Object.keys(s).forEach((o) => { s[o] = s[o]; }), [e, s]; }, f = (t, n) => { const [r, e] = w(t); return e[n]; }, u = () => typeof window < "u" && typeof globalThis.location < "u", q = (t) => { if (u()) return T()[1][t]; }, T = () => u() ? w(globalThis.location.href) : ["", {}], g = (t, n, r) => { if (!u()) return; const e = globalThis.location.hash.startsWith("#") ? globalThis.location.hash.substring(1) : globalThis.location.hash, s = S(e, t, n); s !== e && (r != null && r.modifyHistory ? globalThis.location.hash = s : (globalThis.history.replaceState(null, typeof document < "u" ? document.title : "", `${globalThis.location.pathname}${globalThis.location.search}${s.startsWith("#") ? "" : "#"}${s}`), globalThis.dispatchEvent(new HashChangeEvent("hashchange")))); }, S = (t, n, r) => { const [e, s] = v(t); let o = !1; if (s.hasOwnProperty(n) && r === null || r === void 0 ? (delete s[n], o = !0) : s[n] !== r && (s[n] = r, o = !0), !o) return t; const a = Object.keys(s); a.sort(); const c = a.map((l, h) => { const i = s[l]; return /^[A-Za-z0-9+/]+={0,2}$/.test(i) && i.length % 4, `${l}=${i}`; }).join("&"); return !e && !c ? "" : `${e || ""}${c ? "?" + c : ""}`; }, E = (t, n) => { let r = t; for (; r.startsWith("#"); ) r = r.substring(1); const e = r.indexOf("?"), s = e === -1 ? r : r.substring(0, e), o = {}; if (e !== -1) { const h = r.substring(e + 1); h.length > 0 && h.split("&").forEach((i) => { if (i.length > 0) { const d = i.indexOf("="); if (d === -1) o[i] = ""; else { const b = i.substring(0, d), y = i.substring(d + 1); o[b] = y; } } }); } let a = !1; for (const [h, i] of Object.entries(n)) i == null ? o.hasOwnProperty(h) && (delete o[h], a = !0) : o[h] !== i && (o[h] = i, a = !0); if (!a) return t; const c = Object.keys(o); c.sort(); const l = c.map((h) => { const i = o[h]; return /^[A-Za-z0-9+/]+={0,2}$/.test(i) && i.length % 4, `${h}=${i}`; }).join("&"); return !s && !l ? "" : `${s || ""}${l ? "?" + l : ""}`; }, m = (t, n, r) => { const e = t instanceof URL ? t : new URL(t), s = S(e.hash, n, r); return e.hash = s, e; }, z = (t, n) => { const r = t instanceof URL ? t : new URL(t); let e = E(r.hash, n); return r.hash = e, r; }, Z = (t, n, r) => { const e = t instanceof URL ? t : new URL(t); return e.hash = J(e.hash, n, r), e; }, W = (t, n) => { const r = f(t, n); if (r && r !== "") return I(r); }, M = (t, n) => { const [r, e] = v(t), s = e[n]; if (s && s !== "") return I(s); }, G = (t, n, r) => { const e = n ? U(n) : void 0; g(t, e, r); }, B = (t) => { if (u()) return W(globalThis.location.href, t); }, J = (t, n, r) => { const e = r ? U(r) : void 0; return S(t, n, e); }, K = (t, n, r) => m(t, n, r ? r.toString() : void 0), L = (t, n) => { const r = f(t, n); return r ? parseFloat(r) : void 0; }, R = (t, n, r) => { g(t, n != null ? n.toString() : void 0, r); }, j = (t) => { if (u()) return L(globalThis.location.href, t); }, Q = (t, n, r) => m(t, n, r != null ? r.toString() : void 0), $ = (t, n) => { const r = f(t, n); return r ? parseInt(r) : void 0; }, X = (t, n, r) => { R(t, n, r); }, C = (t) => { if (u()) return $(globalThis.location.href, t); }, Y = (t, n, r) => m(t, n, r ? "true" : void 0), N = (t, n) => f(t, n) === "true", tt = (t, n, r) => { g(t, n ? "true" : void 0, r); }, _ = (t) => { if (u()) return N(globalThis.location.href, t); }, nt = (t, n, r) => m(t, n, r == null ? void 0 : P(r)), x = (t, n) => { const r = f(t, n); return r && r !== "" ? p(r) : void 0; }, rt = (t, n, r) => { const e = n == null ? void 0 : P(n); g(t, e, r); }, D = (t) => { if (u()) return x(globalThis.location.href, t); }, et = (t, n, r) => m(t, n, r == null ? void 0 : encodeURIComponent(r)), k = (t, n) => { const r = f(t, n); return r && r !== "" ? decodeURIComponent(r) : void 0; }, at = (t, n, r) => { const e = n == null ? void 0 : encodeURIComponent(n); g(t, e, r); }, A = (t) => { if (u()) return k(globalThis.location.href, t); }, H = (t, n, r) => { if (!u()) return () => { }; let e = !1; const s = (o) => { e || r(n(t)); }; return globalThis.addEventListener("hashchange", s), setTimeout(() => { e || r(n(t)); }, 0), () => { e || (e = !0, globalThis.removeEventListener("hashchange", s)); }; }, st = (t, n) => H(t, D, n), ot = (t, n) => H(t, _, n), it = (t, n) => H(t, j, n), ct = (t, n) => H(t, C, n), lt = (t, n) => H(t, B, n), ht = (t, n) => H(t, A, n), ut = (t, n) => { g(t, void 0, n); }, dt = (t, n) => m(t, n, void 0); export { st as addEventListenerHashParamBase64, ot as addEventListenerHashParamBoolean, it as addEventListenerHashParamFloat, ct as addEventListenerHashParamInt, lt as addEventListenerHashParamJson, ht as addEventListenerHashParamUriEncoded, I as blobFromBase64String, U as blobToBase64String, E as createHashParamValuesInHashString, dt as deleteHashParamFromUrl, ut as deleteHashParamFromWindow, q as getHashParamFromWindow, f as getHashParamValue, x as getHashParamValueBase64DecodedFromUrl, D as getHashParamValueBase64DecodedFromWindow, N as getHashParamValueBooleanFromUrl, _ as getHashParamValueBooleanFromWindow, L as getHashParamValueFloatFromUrl, j as getHashParamValueFloatFromWindow, $ as getHashParamValueIntFromUrl, C as getHashParamValueIntFromWindow, M as getHashParamValueJsonFromHashString, W as getHashParamValueJsonFromUrl, B as getHashParamValueJsonFromWindow, k as getHashParamValueUriDecodedFromUrl, A as getHashParamValueUriDecodedFromWindow, T as getHashParamsFromWindow, w as getUrlHashParams, v as getUrlHashParamsFromHashString, g as setHashParamInWindow, nt as setHashParamValueBase64EncodedInUrl, rt as setHashParamValueBase64EncodedInWindow, Y as setHashParamValueBooleanInUrl, tt as setHashParamValueBooleanInWindow, K as setHashParamValueFloatInUrl, R as setHashParamValueFloatInWindow, S as setHashParamValueInHashString, m as setHashParamValueInUrl, Q as setHashParamValueIntInUrl, X as setHashParamValueIntInWindow, J as setHashParamValueJsonInHashString, Z as setHashParamValueJsonInUrl, G as setHashParamValueJsonInWindow, et as setHashParamValueUriEncodedInUrl, at as setHashParamValueUriEncodedInWindow, z as setHashParamsInUrl, p as stringFromBase64String, P as stringToBase64String }; //# sourceMappingURL=index.js.map