@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
JavaScript
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