Welcome to mirror list, hosted at ThFree Co, Russian Federation.

module.cjs.js « dist « dist « history « packages « alpinejs - github.com/gohugoio/hugo-mod-jslibs-dist.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 27b86d4cdd8b1b71d426b6e4b5420b5532f17b11 (plain)
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;