1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
var __defProp = Object.defineProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, {get: all[name], enumerable: true});
};
// packages/history/builds/module.js
__markAsModule(exports);
__export(exports, {
default: () => module_default
});
// packages/history/src/index.js
function history(Alpine) {
Alpine.magic("queryString", (el, {interceptor}) => {
let alias;
return interceptor((initialValue, getter, setter, path, key) => {
let pause = false;
let queryKey = alias || path;
let value = initialValue;
let url = new URL(window.location.href);
if (url.searchParams.has(queryKey)) {
value = url.searchParams.get(queryKey);
}
setter(value);
let object = {value};
url.searchParams.set(queryKey, value);
replace(url.toString(), path, object);
window.addEventListener("popstate", (e) => {
if (!e.state)
return;
if (!e.state.alpine)
return;
Object.entries(e.state.alpine).forEach(([newKey, {value: value2}]) => {
if (newKey !== key)
return;
pause = true;
Alpine.disableEffectScheduling(() => {
setter(value2);
});
pause = false;
});
});
Alpine.effect(() => {
let value2 = getter();
if (pause)
return;
let object2 = {value: value2};
let url2 = new URL(window.location.href);
url2.searchParams.set(queryKey, value2);
push(url2.toString(), path, object2);
});
return value;
}, (func) => {
func.as = (key) => {
alias = key;
return func;
};
});
});
}
function replace(url, key, object) {
let state = window.history.state || {};
if (!state.alpine)
state.alpine = {};
state.alpine[key] = object;
window.history.replaceState(state, "", url);
}
function push(url, key, object) {
let state = {alpine: {...window.history.state.alpine, ...{[key]: object}}};
window.history.pushState(state, "", url);
}
// packages/history/builds/module.js
var module_default = history;
|