pagy 5.6.9 → 5.7.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a0769124a79924740926d3ad51cd5ef72e6f935a5b065045ce4f10e8e84ab67
4
- data.tar.gz: a855520088ddd6b81fbeb76384c390bb5c886bd1d81cb3d23ff6b0dd8ac77153
3
+ metadata.gz: 38c707df42d0be0b796b5f5127521dc98876c36ddd2f59f4b15b58cdcbb39365
4
+ data.tar.gz: 67297b4ade3bb8c07e56c2a9640fd9fbec48b7f3bb3c59c690bc4c78051a396b
5
5
  SHA512:
6
- metadata.gz: 8d2f70d1148feeaafa49c1e3ceb39b5e8891007215fc6197a0ea6dbf48f8a888edb6e2edc70a2c5fad9db36ca3b01a7527ff2c0941f53b6b9900156d40976a3b
7
- data.tar.gz: 69fcd04e4eca0665a949f2cb8db57b2ad26d749c00e58ccfe75d18ab750b56acb84a18d7b5e95448390d1fdb11e16d9360971d6d93cab832adeea03e3b1e5f6e
6
+ metadata.gz: f5e068d8a5e139859dabf10e281bf83eb2245f439b145559d0ee50e63632d4c8de6edf16c7aa9140aa8c0a39453e596f6e84c5e65714866d08ea1887cf9106db
7
+ data.tar.gz: 0cfa89dcde19e35efa752aaf8374fe2335576c6a7ac25b5453a7b513e07e50f7057f169cac1835298ddf2774d6a5db0e7c4684803983d16130720b77a692da7a
data/lib/config/pagy.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Pagy initializer file (5.6.9)
3
+ # Pagy initializer file (5.7.2)
4
4
  # Customize only what you really need and notice that the core Pagy works also without any of the following lines.
5
5
  # Should you just cherry pick part of this file, please maintain the require-order of the extras
6
6
 
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ // The Pagy object
3
+ const Pagy = {
4
+ version: "5.7.2",
5
+ // Scan for "data-pagy-json" elements, parse their JSON content and call their init functions
6
+ init(arg) {
7
+ const target = arg instanceof Element ? arg : document;
8
+ const elements = target.querySelectorAll("[data-pagy-json]");
9
+ const warn = (el, err) => console.warn("Pagy.init() skipped element: %o\n%s", el, err);
10
+ for (const element of elements) {
11
+ const json = element.getAttribute("data-pagy-json");
12
+ try {
13
+ const [keyword, ...args] = JSON.parse(json);
14
+ if (keyword === "nav") {
15
+ Pagy.initNav(element, args);
16
+ }
17
+ else if (keyword === "combo") {
18
+ Pagy.initCombo(element, args);
19
+ }
20
+ else if (keyword === "selector") {
21
+ Pagy.initSelector(element, args);
22
+ }
23
+ else {
24
+ warn(element, `Illegal PagyJSON keyword: expected "nav"|"combo"|"selector", got "${keyword}"`);
25
+ }
26
+ }
27
+ catch (err) {
28
+ warn(element, err);
29
+ }
30
+ }
31
+ },
32
+ // Init the *_nav_js helpers
33
+ initNav(el, [tags, sequels, labelSequels, trimParam]) {
34
+ const container = el.parentElement ?? el;
35
+ const widths = Object.getOwnPropertyNames(sequels).map(w => parseInt(w)).sort((a, b) => b - a);
36
+ let lastWidth = -1;
37
+ const fillIn = (link, page, label) => link.replace(/__pagy_page__/g, page).replace(/__pagy_label__/g, label);
38
+ (el.pagyRender = function () {
39
+ const width = widths.find(w => w < container.clientWidth) || 0;
40
+ if (width === lastWidth) {
41
+ return;
42
+ } // no change: abort
43
+ let html = tags.before;
44
+ const series = sequels[width.toString()];
45
+ const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());
46
+ for (const i in series) {
47
+ const item = series[i];
48
+ const label = labels[i];
49
+ if (typeof trimParam === "string" && item === 1) {
50
+ html += Pagy.trim(fillIn(tags.link, item.toString(), label), trimParam);
51
+ }
52
+ else if (typeof item === "number") {
53
+ html += fillIn(tags.link, item.toString(), label);
54
+ }
55
+ else if (item === "gap") {
56
+ html += tags.gap;
57
+ }
58
+ else { // active page
59
+ html += fillIn(tags.active, item, label);
60
+ }
61
+ }
62
+ html += tags.after; // eslint-disable-line align-assignments/align-assignments
63
+ el.innerHTML = "";
64
+ el.insertAdjacentHTML("afterbegin", html);
65
+ lastWidth = width;
66
+ })();
67
+ if (el.classList.contains("pagy-rjs")) {
68
+ Pagy.rjsObserver.observe(container);
69
+ }
70
+ },
71
+ // The observer instance for responsive navs
72
+ rjsObserver: new ResizeObserver(entries => {
73
+ entries.filter(e => e.contentBoxSize)
74
+ .forEach(e => e.target.querySelectorAll(".pagy-rjs")
75
+ .forEach(rjs => rjs.pagyRender()));
76
+ }),
77
+ // Init the *_combo_nav_js helpers
78
+ initCombo(el, [link, trimParam]) {
79
+ Pagy.initInput(el, inputValue => [inputValue, link.replace(/__pagy_page__/, inputValue)], trimParam);
80
+ },
81
+ // Init the items_selector_js helper
82
+ initSelector(el, [from, link, trimParam]) {
83
+ Pagy.initInput(el, inputValue => {
84
+ const page = Math.max(Math.ceil(from / parseInt(inputValue)), 1).toString();
85
+ const html = link.replace(/__pagy_page__/, page).replace(/__pagy_items__/, inputValue);
86
+ return [page, html];
87
+ }, trimParam);
88
+ },
89
+ // Init the input element
90
+ initInput(el, getVars, trimParam) {
91
+ const input = el.querySelector("input");
92
+ const initial = input.value;
93
+ const action = function () {
94
+ if (input.value === initial) {
95
+ return;
96
+ } // not changed
97
+ const [min, val, max] = [input.min, input.value, input.max].map(n => parseInt(n) || 0);
98
+ if (val < min || val > max) { // reset invalid/out-of-range
99
+ input.value = initial;
100
+ input.select();
101
+ return;
102
+ }
103
+ let [page, html] = getVars(input.value); // eslint-disable-line prefer-const
104
+ if (typeof trimParam === "string" && page === "1") {
105
+ html = Pagy.trim(html, trimParam);
106
+ }
107
+ el.insertAdjacentHTML("afterbegin", html);
108
+ el.querySelector("a").click();
109
+ };
110
+ ["change", "focus"].forEach(e => input.addEventListener(e, input.select)); // auto-select
111
+ input.addEventListener("focusout", action); // trigger action
112
+ input.addEventListener("keypress", e => { if (e.key === "Enter") {
113
+ action();
114
+ } }); // trigger action
115
+ },
116
+ // Trim the ${page-param}=1 params in links
117
+ trim: (link, param) => link.replace(new RegExp(`[?&]${param}=1\\b(?!&)|\\b${param}=1&`), "")
118
+ };
119
+ // Toplevel var (needed for generating the production file)
120
+ window.Pagy = Pagy;
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFneS1kZXYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFneS1kZXYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQWlCQSxrQkFBa0I7QUFDbEIsTUFBTSxJQUFJLEdBQUc7SUFDVCxPQUFPLEVBQUUsT0FBTztJQUVoQiw2RkFBNkY7SUFDN0YsSUFBSSxDQUFDLEdBQWtCO1FBQ25CLE1BQU0sTUFBTSxHQUFLLEdBQUcsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0sSUFBSSxHQUFPLENBQUMsRUFBVSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0csS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBVyxDQUFDO1lBQzlELElBQUk7Z0JBQ0EsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFhLENBQUM7Z0JBQ3hELElBQUksT0FBTyxLQUFLLEtBQUssRUFBRTtvQkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFxQixFQUFFLElBQWUsQ0FBQyxDQUFDO2lCQUN4RDtxQkFBTSxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQWlCLENBQUMsQ0FBQztpQkFDOUM7cUJBQU0sSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFO29CQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFvQixDQUFD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dGVyZmFjZXMgZnJvbSBkYXRhLXBhZ3ktanNvblxudHlwZSBQYWd5SlNPTiAgICAgPSByZWFkb25seSBbXCJuYXZcIiwgLi4uTmF2QXJnc10gfCBbXCJjb21ib1wiLCAuLi5Db21ib0FyZ3NdIHwgW1wic2VsZWN0b3JcIiwgLi4uU2VsZWN0b3JBcmdzXVxudHlwZSBOYXZBcmdzICAgICAgPSByZWFkb25seSBbVGFncywgU2VxdWVscywgbnVsbHxMYWJlbFNlcXVlbHMsIHN0cmluZz9dXG50eXBlIENvbWJvQXJncyAgICA9IHJlYWRvbmx5IFtzdHJpbmcsIHN0cmluZz9dXG50eXBlIFNlbGVjdG9yQXJncyA9IHJlYWRvbmx5IFtudW1iZXIsIHN0cmluZywgc3RyaW5nP11cbmludGVyZmFjZSBUYWdzIHtcbiAgICByZWFkb25seSBiZWZvcmU6IHN0cmluZ1xuICAgIHJlYWRvbmx5IGxpbms6ICAgc3RyaW5nXG4gICAgcmVhZG9ubHkgYWN0aXZlOiBzdHJpbmdcbiAgICByZWFkb25seSBnYXA6ICAgIHN0cmluZ1xuICAgIHJlYWRvbmx5IGFmdGVyOiAgc3RyaW5nXG59XG5pbnRlcmZhY2UgU2VxdWVscyAgICAgIHsgcmVhZG9ubHkgW3dpZHRoOnN0cmluZ106IChzdHJpbmd8bnVtYmVyfFwiZ2FwXCIpW10gfVxuaW50ZXJmYWNlIExhYmVsU2VxdWVscyB7IHJlYWRvbmx5IFt3aWR0aDpzdHJpbmddOiBzdHJpbmdbXSB9XG5pbnRlcmZhY2UgV2luZG93ICAgICAgIHsgUGFneTogdHlwZW9mIFBhZ3kgfSAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbnRlcmZhY2UgTmF2RWxlbWVudCBleHRlbmRzIEVsZW1lbnQgeyBwYWd5UmVuZGVyKCk6IHZvaWQgfVxuXG4vLyBUaGUgUGFneSBvYmplY3RcbmNvbnN0IFBhZ3kgPSB7XG4gICAgdmVyc2lvbjogXCI1LjcuMlwiLFxuXG4gICAgLy8gU2NhbiBmb3IgXCJkYXRhLXBhZ3ktanNvblwiIGVsZW1lbnRzLCBwYXJzZSB0aGVpciBKU09OIGNvbnRlbnQgYW5kIGNhbGwgdGhlaXIgaW5pdCBmdW5jdGlvbnNcbiAgICBpbml0KGFyZz86RWxlbWVudHxuZXZlcikge1xuICAgICAgICBjb25zdCB0YXJnZXQgICA9IGFyZyBpbnN0YW5jZW9mIEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudDtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0YXJnZXQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLXBhZ3ktanNvbl1cIik7XG4gICAgICAgIGNvbnN0IHdhcm4gICAgID0gKGVsOkVsZW1lbnQsIGVycjp1bmtub3duKSA9PiBjb25zb2xlLndhcm4oXCJQYWd5LmluaXQoKSBza2lwcGVkIGVsZW1lbnQ6ICVvXFxuJXNcIiwgZWwsIGVycik7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5LWpzb25cIikgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBba2V5d29yZCwgLi4uYXJnc10gPSBKU09OLnBhcnNlKGpzb24pIGFzIFBhZ3lKU09OO1xuICAgICAgICAgICAgICAgIGlmIChrZXl3b3JkID09PSBcIm5hdlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIFBhZ3kuaW5pdE5hdihlbGVtZW50IGFzIE5hdkVsZW1lbnQsIGFyZ3MgYXMgTmF2QXJncyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXl3b3JkID09PSBcImNvbWJvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgUGFneS5pbml0Q29tYm8oZWxlbWVudCwgYXJncyBhcyBDb21ib0FyZ3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5d29yZCA9PT0gXCJzZWxlY3RvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIFBhZ3kuaW5pdFNlbGVjdG9yKGVsZW1lbnQsIGFyZ3MgYXMgU2VsZWN0b3JBcmdzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3YXJuKGVsZW1lbnQsIGBJbGxlZ2FsIFBhZ3lKU09OIGtleXdvcmQ6IGV4cGVjdGVkIFwibmF2XCJ8XCJjb21ib1wifFwic2VsZWN0b3JcIiwgZ290IFwiJHtrZXl3b3JkfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7IHdhcm4oZWxlbWVudCwgZXJyKSB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gSW5pdCB0aGUgKl9uYXZfanMgaGVscGVyc1xuICAgIGluaXROYXYoZWw6TmF2RWxlbWVudCwgW3RhZ3MsIHNlcXVlbHMsIGxhYmVsU2VxdWVscywgdHJpbVBhcmFtXTpOYXZBcmdzKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGVsLnBhcmVudEVsZW1lbnQgPz8gZWw7XG4gICAgICAgIGNvbnN0IHdpZHRocyAgICA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNlcXVlbHMpLm1hcCh3ID0+IHBhcnNlSW50KHcpKS5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgICAgIGxldCBsYXN0V2lkdGggICA9IC0xO1xuICAgICAgICBjb25zdCBmaWxsSW4gICAgPSAobGluazpzdHJpbmcsIHBhZ2U6c3RyaW5nLCBsYWJlbDpzdHJpbmcpOnN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fL2csIHBhZ2UpLnJlcGxhY2UoL19fcGFneV9sYWJlbF9fL2csIGxhYmVsKTtcbiAgICAgICAgKGVsLnBhZ3lSZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gd2lkdGhzLmZpbmQodyA9PiB3IDwgY29udGFpbmVyLmNsaWVudFdpZHRoKSB8fCAwO1xuICAgICAgICAgICAgaWYgKHdpZHRoID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH0gLy8gbm8gY2hhbmdlOiBhYm9ydFxuICAgICAgICAgICAgbGV0IGh0bWwgICAgID0gdGFncy5iZWZvcmU7XG4gICAgICAgICAgICBjb25zdCBzZXJpZXMgPSBzZXF1ZWxzW3dpZHRoLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gbGFiZWxTZXF1ZWxzPy5bd2lkdGgudG9TdHJpbmcoKV0gPz8gc2VyaWVzLm1hcChsID0+IGwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gc2VyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSAgPSBzZXJpZXNbaV07XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBsYWJlbHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0cmltUGFyYW0gPT09IFwic3RyaW5nXCIgJiYgaXRlbSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IFBhZ3kudHJpbShmaWxsSW4odGFncy5saW5rLCBpdGVtLnRvU3RyaW5nKCksIGxhYmVsKSwgdHJpbVBhcmFtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gZmlsbEluKHRhZ3MubGluaywgaXRlbS50b1N0cmluZygpLCBsYWJlbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSBcImdhcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gdGFncy5nYXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYWN0aXZlIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBmaWxsSW4odGFncy5hY3RpdmUsIGl0ZW0sIGxhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBodG1sICs9IHRhZ3MuYWZ0ZXI7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgICAgIGVsLmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgaHRtbCk7XG4gICAgICAgICAgICBsYXN0V2lkdGggPSB3aWR0aDtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucyhcInBhZ3ktcmpzXCIpKSB7IFBhZ3kucmpzT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIpIH1cbiAgICB9LFxuXG4gICAgLy8gVGhlIG9ic2VydmVyIGluc3RhbmNlIGZvciByZXNwb25zaXZlIG5hdnNcbiAgICByanNPYnNlcnZlcjogbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICBlbnRyaWVzLmZpbHRlcihlID0+IGUuY29udGVudEJveFNpemUpXG4gICAgICAgICAgICAgICAuZm9yRWFjaChlID0+IGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2RWxlbWVudD4oXCIucGFneS1yanNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChyanMgPT4gcmpzLnBhZ3lSZW5kZXIoKSkpO1xuICAgIH0pLFxuXG4gICAgLy8gSW5pdCB0aGUgKl9jb21ib19uYXZfanMgaGVscGVyc1xuICAgIGluaXRDb21ibyhlbDpFbGVtZW50LCBbbGluaywgdHJpbVBhcmFtXTpDb21ib0FyZ3MpIHtcbiAgICAgICAgUGFneS5pbml0SW5wdXQoZWwsIGlucHV0VmFsdWUgPT4gW2lucHV0VmFsdWUsIGxpbmsucmVwbGFjZSgvX19wYWd5X3BhZ2VfXy8sIGlucHV0VmFsdWUpXSwgdHJpbVBhcmFtKTtcbiAgICB9LFxuXG4gICAgLy8gSW5pdCB0aGUgaXRlbXNfc2VsZWN0b3JfanMgaGVscGVyXG4gICAgaW5pdFNlbGVjdG9yKGVsOkVsZW1lbnQsIFtmcm9tLCBsaW5rLCB0cmltUGFyYW1dOlNlbGVjdG9yQXJncykge1xuICAgICAgICBQYWd5LmluaXRJbnB1dChlbCwgaW5wdXRWYWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYWdlID0gTWF0aC5tYXgoTWF0aC5jZWlsKGZyb20gLyBwYXJzZUludChpbnB1dFZhbHVlKSksIDEpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gbGluay5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fLywgcGFnZSkucmVwbGFjZSgvX19wYWd5X2l0ZW1zX18vLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBbcGFnZSwgaHRtbF07XG4gICAgICAgIH0sIHRyaW1QYXJhbSk7XG4gICAgfSxcblxuICAgIC8vIEluaXQgdGhlIGlucHV0IGVsZW1lbnRcbiAgICBpbml0SW5wdXQoZWw6RWxlbWVudCwgZ2V0VmFyczoodjpzdHJpbmcpPT5bc3RyaW5nLCBzdHJpbmddLCB0cmltUGFyYW0/OnN0cmluZykge1xuICAgICAgICBjb25zdCBpbnB1dCAgID0gZWwucXVlcnlTZWxlY3RvcihcImlucHV0XCIpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgY29uc3QgYWN0aW9uICA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSBpbml0aWFsKSB7IHJldHVybiB9ICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgICAgY29uc3QgW21pbiwgdmFsLCBtYXhdID0gW2lucHV0Lm1pbiwgaW5wdXQudmFsdWUsIGlucHV0Lm1heF0ubWFwKG4gPT4gcGFyc2VJbnQobikgfHwgMCk7XG4gICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IFtwYWdlLCBodG1sXSA9IGdldFZhcnMoaW5wdXQudmFsdWUpOyAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRyaW1QYXJhbSA9PT0gXCJzdHJpbmdcIiAmJiBwYWdlID09PSBcIjFcIikgeyBodG1sID0gUGFneS50cmltKGh0bWwsIHRyaW1QYXJhbSkgfVxuICAgICAgICAgICAgZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgICAgICAgIChlbC5xdWVyeVNlbGVjdG9yKFwiYVwiKSBhcyBIVE1MQW5jaG9yRWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgfTtcbiAgICAgICAgW1wiY2hhbmdlXCIsIFwiZm9jdXNcIl0uZm9yRWFjaChlID0+IGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoZSwgaW5wdXQuc2VsZWN0KSk7ICAgICAgICAvLyBhdXRvLXNlbGVjdFxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGFjdGlvblxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7IGFjdGlvbigpIH0gfSk7IC8vIHRyaWdnZXIgYWN0aW9uXG4gICAgfSxcblxuICAgIC8vIFRyaW0gdGhlICR7cGFnZS1wYXJhbX09MSBwYXJhbXMgaW4gbGlua3NcbiAgICB0cmltOiAobGluazpzdHJpbmcsIHBhcmFtOnN0cmluZykgPT4gbGluay5yZXBsYWNlKG5ldyBSZWdFeHAoYFs/Jl0ke3BhcmFtfT0xXFxcXGIoPyEmKXxcXFxcYiR7cGFyYW19PTEmYCksIFwiXCIpXG59O1xuXG4vLyBUb3BsZXZlbCB2YXIgKG5lZWRlZCBmb3IgZ2VuZXJhdGluZyB0aGUgcHJvZHVjdGlvbiBmaWxlKVxud2luZG93LlBhZ3kgPSBQYWd5O1xuIl19
@@ -1,3 +1 @@
1
- "use strict";function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}var Pagy={version:"5.6.9",init:function init(a){var b,c=a instanceof HTMLElement?a:document,d=c.querySelectorAll("[data-pagy-json]"),e=_createForOfIteratorHelper(d);try{for(e.s();!(b=e.n()).done;){var f=b.value,g=f.getAttribute("data-pagy-json");if(null!==g){var h=JSON.parse(g),i=h.shift();"nav"===i?Pagy.nav.apply(Pagy,[f].concat(_toConsumableArray(h))):"combo_nav"===i?Pagy.combo_nav.apply(Pagy,[f].concat(_toConsumableArray(h))):"items_selector"===i&&Pagy.items_selector.apply(Pagy,[f].concat(_toConsumableArray(h)))}}}catch(a){e.e(a)}finally{e.f()}},nav:function nav(a,b,c,d,e){var f={};if(null===d)for(var k in c)f[k]=c[k].map(function(a){return a.toString()});else f=d;var g,h=Object.getOwnPropertyNames(c).map(function(a){return parseInt(a)}).sort(function(c,a){return a-c}),j=function(a,b,c){return a.replace(/__pagy_page__/g,b).replace(/__pagy_label__/g,c)};a.pagyRender=function(){var d=h.find(function(b){return null!==a.parentElement&&a.parentElement.clientWidth>b})||0;if(d!==g){var k=b.before,l=c[d.toString()],m=f[d.toString()];for(var p in l){var n=l[p],o=m[p];if("string"==typeof e&&1===n){var i=j(b.link,n.toString(),o);k+=Pagy.trim(i,e)}else k+="number"==typeof n?j(b.link,n.toString(),o):"gap"===n?b.gap:j(b.active,n,o)}k+=b.after,a.innerHTML="",a.insertAdjacentHTML("afterbegin",k),g=d}},a.pagyRender(),"undefined"!=typeof window&&window.addEventListener("resize",Pagy.throttleRenderNavs,!0)},throttleRenderNavsTID:0,throttleRenderNavsDelay:100,throttleRenderNavs:function throttleRenderNavs(){clearTimeout(Pagy.throttleRenderNavsTID),Pagy.throttleRenderNavsTID=window.setTimeout(Pagy.renderNavs,Pagy.throttleRenderNavsDelay)},renderNavs:function renderNavs(){var a=document.getElementsByClassName("pagy-njs");Array.from(a).forEach(function(a){return a.pagyRender()})},combo_nav:function combo_nav(a,b,c,d){var e=a.getElementsByTagName("input")[0];Pagy.addInputBehavior(e,function goToPage(){if(b!==e.value){var f=c.replace(/__pagy_page__/,e.value);"string"==typeof d&&"1"===e.value&&(f=Pagy.trim(f,d)),a.insertAdjacentHTML("afterbegin",f),a.getElementsByTagName("a")[0].click()}})},items_selector:function items_selector(a,b,c,d){var e=a.getElementsByTagName("input")[0],f=e.value;Pagy.addInputBehavior(e,function goToPage(){var g=Math.max,h=Math.ceil,i=e.value;if("0"!==i&&""!==i&&f!==i){var j=g(h(b/parseInt(i)),1).toString(),k=c.replace(/__pagy_page__/,j).replace(/__pagy_items__/,i);"string"==typeof d&&"1"===j&&(k=Pagy.trim(k,d)),a.insertAdjacentHTML("afterbegin",k),a.getElementsByTagName("a")[0].click()}})},addInputBehavior:function addInputBehavior(a,b){a.addEventListener("click",a.select),a.addEventListener("focusout",b),a.addEventListener("keypress",function(a){"Enter"===a.key&&b()})},trim:function trim(a,b){var c=new RegExp("[?&]".concat(b,"=1\\b(?!&)|\\b").concat(b,"=1&"));return a.replace(c,"")}};
2
-
3
- //# sourceMappingURL=pagy.js.map
1
+ !function(){function t(t){if(Array.isArray(t))return t}function n(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}function e(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function r(r,i){return t(r)||n(r)||e()}var i={version:"5.7.2",init:function(r){var a,o=(r instanceof Element?r:document).querySelectorAll("[data-pagy-json]"),c=function(t,n){return console.warn("Pagy.init() skipped element: %o\n%s",t,n)},u=!0,l=!1,f=void 0;try{for(var p,s=o[Symbol.iterator]();!(u=(p=s.next()).done);u=!0){var v=p.value,g=v.getAttribute("data-pagy-json");try{var y=t(a=JSON.parse(g))||n(a)||e(),d=y[0],m=y.slice(1);"nav"===d?i.initNav(v,m):"combo"===d?i.initCombo(v,m):"selector"===d?i.initSelector(v,m):c(v,'Illegal PagyJSON keyword: expected "nav"|"combo"|"selector", got "'.concat(d,'"'))}catch(t){c(v,t)}}}catch(t){l=!0,f=t}finally{try{u||null==s.return||s.return()}finally{if(l)throw f}}},initNav:function(t,n){var e,a=r(n),o=a[0],c=a[1],u=a[2],l=a[3],f=null!==(e=t.parentElement)&&void 0!==e?e:t,p=Object.getOwnPropertyNames(c).map((function(t){return parseInt(t)})).sort((function(t,n){return n-t})),s=-1,v=function(t,n,e){return t.replace(/__pagy_page__/g,n).replace(/__pagy_label__/g,e)};(t.pagyRender=function(){var n=p.find((function(t){return t<f.clientWidth}))||0;if(n!==s){var e,r=o.before,a=c[n.toString()],g=null!==(e=null==u?void 0:u[n.toString()])&&void 0!==e?e:a.map((function(t){return t.toString()}));for(var y in a){var d=a[y],m=g[y];r+="string"==typeof l&&1===d?i.trim(v(o.link,d.toString(),m),l):"number"==typeof d?v(o.link,d.toString(),m):"gap"===d?o.gap:v(o.active,d,m)}r+=o.after,t.innerHTML="",t.insertAdjacentHTML("afterbegin",r),s=n}})(),t.classList.contains("pagy-rjs")&&i.rjsObserver.observe(f)},rjsObserver:new ResizeObserver((function(t){t.filter((function(t){return t.contentBoxSize})).forEach((function(t){return t.target.querySelectorAll(".pagy-rjs").forEach((function(t){return t.pagyRender()}))}))})),initCombo:function(t,n){var e=r(n),a=e[0],o=e[1];i.initInput(t,(function(t){return[t,a.replace(/__pagy_page__/,t)]}),o)},initSelector:function(t,n){var e=r(n),a=e[0],o=e[1],c=e[2];i.initInput(t,(function(t){var n=Math.max(Math.ceil(a/parseInt(t)),1).toString();return[n,o.replace(/__pagy_page__/,n).replace(/__pagy_items__/,t)]}),c)},initInput:function(t,n,e){var a=t.querySelector("input"),o=a.value,c=function(){if(a.value!==o){var c=r([a.min,a.value,a.max].map((function(t){return parseInt(t)||0}))),u=c[0],l=c[1],f=c[2];if(l<u||l>f)return a.value=o,void a.select();var p=r(n(a.value)),s=p[0],v=p[1];"string"==typeof e&&"1"===s&&(v=i.trim(v,e)),t.insertAdjacentHTML("afterbegin",v),t.querySelector("a").click()}};["change","focus"].forEach((function(t){return a.addEventListener(t,a.select)})),a.addEventListener("focusout",c),a.addEventListener("keypress",(function(t){"Enter"===t.key&&c()}))},trim:function(t,n){return t.replace(new RegExp("[?&]".concat(n,"=1\\b(?!&)|\\b").concat(n,"=1&")),"")}};window.Pagy=i}();
@@ -29,8 +29,9 @@ class Pagy # :nodoc:
29
29
  html << %(</ul></nav>)
30
30
  end
31
31
 
32
- # Javascript pagination for bootstrap: it returns a nav and a JSON tag used by the Pagy.nav javascript
32
+ # Javascript pagination for bootstrap: it returns a nav and a JSON tag used by the pagy.js file
33
33
  def pagy_bootstrap_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
34
+ sequels = pagy.sequels(**vars)
34
35
  p_id = %( id="#{pagy_id}") if pagy_id
35
36
  link = pagy_link_proc(pagy, link_extra: %(class="page-link" #{link_extra}))
36
37
  tags = { 'before' => %(<ul class="pagination">#{pagy_bootstrap_prev_html pagy, link}),
@@ -39,11 +40,11 @@ class Pagy # :nodoc:
39
40
  'gap' => %(<li class="page-item gap disabled"><a href="#" class="page-link">#{pagy_t 'pagy.nav.gap'}</a></li>),
40
41
  'after' => %(#{pagy_bootstrap_next_html pagy, link}</ul>) }
41
42
 
42
- %(<nav#{p_id} class="pagy-njs pagy-bootstrap-nav-js" aria-label="pager" #{
43
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
43
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-bootstrap-nav-js" aria-label="pager" #{
44
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
44
45
  end
45
46
 
46
- # Javascript combo pagination for bootstrap: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
47
+ # Javascript combo pagination for bootstrap: it returns a nav and a JSON tag used by the pagy.js file
47
48
  def pagy_bootstrap_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
48
49
  p_id = %( id="#{pagy_id}") if pagy_id
49
50
  link = pagy_link_proc(pagy, link_extra: link_extra)
@@ -54,7 +55,7 @@ class Pagy # :nodoc:
54
55
  p_pages.to_s.length + 1}rem;">)
55
56
 
56
57
  %(<nav#{p_id} class="pagy-bootstrap-combo-nav-js pagination" aria-label="pager"><div class="btn-group" role="group" #{
57
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
58
+ pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
58
59
  if (p_prev = pagy.prev)
59
60
  link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous" class="prev btn btn-primary"'
60
61
  else
@@ -7,7 +7,7 @@ class Pagy # :nodoc:
7
7
  # Frontend modules are specially optimized for performance.
8
8
  # The resulting code may not look very elegant, but produces the best benchmarks
9
9
  module BulmaExtra
10
- # Pagination for Bulma: it returns the html with the series of links to the pages
10
+ # Pagination for bulma: it returns the html with the series of links to the pages
11
11
  def pagy_bulma_nav(pagy, pagy_id: nil, link_extra: '', **vars)
12
12
  p_id = %( id="#{pagy_id}") if pagy_id
13
13
  link = pagy_link_proc(pagy, link_extra: link_extra)
@@ -30,7 +30,9 @@ class Pagy # :nodoc:
30
30
  html << %(</ul></nav>)
31
31
  end
32
32
 
33
+ # Javascript pagination for bulma: it returns a nav and a JSON tag used by the Pagy.nav javascript
33
34
  def pagy_bulma_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
35
+ sequels = pagy.sequels(**vars)
34
36
  p_id = %( id="#{pagy_id}") if pagy_id
35
37
  link = pagy_link_proc(pagy, link_extra: link_extra)
36
38
  tags = { 'before' => %(#{pagy_bulma_prev_next_html(pagy, link)}<ul class="pagination-list">),
@@ -42,11 +44,11 @@ class Pagy # :nodoc:
42
44
  'gap' => %(<li><span class="pagination-ellipsis">#{pagy_t 'pagy.nav.gap'}</span></li>),
43
45
  'after' => '</ul>' }
44
46
 
45
- %(<nav#{p_id} class="pagy-njs pagy-bulma-nav-js pagination is-centered" aria-label="pagination" #{
46
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
47
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-bulma-nav-js pagination is-centered" aria-label="pagination" #{
48
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
47
49
  end
48
50
 
49
- # Javascript combo pagination for Bulma: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
51
+ # Javascript combo pagination for bulma: it returns a nav and a JSON tag used by the pagy.js file
50
52
  def pagy_bulma_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
51
53
  p_id = %( id="#{pagy_id}") if pagy_id
52
54
  link = pagy_link_proc(pagy, link_extra: link_extra)
@@ -57,7 +59,7 @@ class Pagy # :nodoc:
57
59
 
58
60
  html = %(<nav#{p_id} class="pagy-bulma-combo-nav-js" aria-label="pagination">)
59
61
  %(#{html}<div class="field is-grouped is-grouped-centered" role="group" #{
60
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
62
+ pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
61
63
  if (p_prev = pagy.prev)
62
64
  %(<p class="control">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'class="button" aria-label="previous page"'}</p>)
63
65
  else
@@ -26,8 +26,9 @@ class Pagy # :nodoc:
26
26
  html << %(</ul></nav>)
27
27
  end
28
28
 
29
- # Javascript pagination for foundation: it returns a nav and a JSON tag used by the Pagy.nav javascript
29
+ # Javascript pagination for foundation: it returns a nav and a JSON tag used by the pagy.js file
30
30
  def pagy_foundation_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
31
+ sequels = pagy.sequels(**vars)
31
32
  p_id = %( id="#{pagy_id}") if pagy_id
32
33
  link = pagy_link_proc(pagy, link_extra: link_extra)
33
34
  tags = { 'before' => %(<ul class="pagination">#{pagy_foundation_prev_html pagy, link}),
@@ -36,11 +37,11 @@ class Pagy # :nodoc:
36
37
  'gap' => %(<li class="ellipsis gap" aria-hidden="true"></li>),
37
38
  'after' => %(#{pagy_foundation_next_html pagy, link}</ul>) }
38
39
 
39
- %(<nav#{p_id} class="pagy-njs pagy-foundation-nav-js" aria-label="Pagination" #{
40
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
40
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-foundation-nav-js" aria-label="Pagination" #{
41
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
41
42
  end
42
43
 
43
- # Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
44
+ # Javascript combo pagination for Foundation: it returns a nav and a JSON tag used by the pagy.js file
44
45
  def pagy_foundation_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
45
46
  p_id = %( id="#{pagy_id}") if pagy_id
46
47
  link = pagy_link_proc(pagy, link_extra: link_extra)
@@ -51,7 +52,7 @@ class Pagy # :nodoc:
51
52
  p_pages.to_s.length + 1}rem; padding: 0 0.3rem; margin: 0 0.3rem;">)
52
53
 
53
54
  %(<nav#{p_id} class="pagy-foundation-combo-nav-js" aria-label="Pagination"><div class="input-group" #{
54
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
55
+ pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
55
56
  if (p_prev = pagy.prev)
56
57
  link.call p_prev, pagy_t('pagy.nav.prev'),
57
58
  'style="margin-bottom: 0" aria-label="previous" class="prev button primary"'
@@ -39,7 +39,7 @@ class Pagy # :nodoc:
39
39
  link = pagy_marked_link(pagy_link_proc(pagy, link_extra: link_extra))
40
40
  p_vars[:items] = p_items # restore the items
41
41
 
42
- html = +%(<span#{p_id} class="pagy-items-selector-js" #{pagy_json_attr pagy, :items_selector, pagy.from, link}>)
42
+ html = +%(<span#{p_id} class="pagy-items-selector-js" #{pagy_json_attr pagy, :selector, pagy.from, link}>)
43
43
  input = %(<input type="number" min="1" max="#{p_vars[:max_items]}" value="#{
44
44
  p_items}" style="padding: 0; text-align: center; width: #{p_items.to_s.length + 1}rem;">)
45
45
  html << pagy_t('pagy.items_selector_js', item_name: item_name || pagy_t(i18n_key || p_vars[:i18n_key], count: p_items),
@@ -26,8 +26,9 @@ class Pagy # :nodoc:
26
26
  html << %(</ul></div>)
27
27
  end
28
28
 
29
- # Javascript pagination for materialize: it returns a nav and a JSON tag used by the Pagy.nav javascript
29
+ # Javascript pagination for materialize: it returns a nav and a JSON tag used by the pagy.js file
30
30
  def pagy_materialize_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
31
+ sequels = pagy.sequels(**vars)
31
32
  p_id = %( id="#{pagy_id}") if pagy_id
32
33
  link = pagy_link_proc(pagy, link_extra: link_extra)
33
34
 
@@ -37,11 +38,11 @@ class Pagy # :nodoc:
37
38
  'gap' => %(<li class="gap disabled"><a href="#">#{pagy_t 'pagy.nav.gap'}</a></li>),
38
39
  'after' => %(#{pagy_materialize_next_html pagy, link}</ul>) }
39
40
 
40
- %(<div#{p_id} class="pagy-njs pagy-materialize-nav-js" role="navigation" aria-label="pager" #{
41
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></div>)
41
+ %(<div#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-materialize-nav-js" role="navigation" aria-label="pager" #{
42
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></div>)
42
43
  end
43
44
 
44
- # Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
45
+ # Javascript combo pagination for materialize: it returns a nav and a JSON tag used by the pagy.js file
45
46
  def pagy_materialize_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
46
47
  p_id = %( id="#{pagy_id}") if pagy_id
47
48
  link = pagy_link_proc(pagy, link_extra: link_extra)
@@ -53,7 +54,7 @@ class Pagy # :nodoc:
53
54
 
54
55
  html = %(<ul#{p_id} class="pagy-materialize-combo-nav-js pagination chip" role="navigation")
55
56
  %(#{html} aria-label="pager" style="padding-right: 0" #{
56
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
57
+ pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
57
58
  pagy_materialize_prev_html pagy, link, style}<li class="pagy-combo-input">#{
58
59
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages}</li>#{
59
60
  pagy_materialize_next_html pagy, link, style}</ul>)
@@ -7,8 +7,9 @@ class Pagy # :nodoc:
7
7
  # Frontend modules are specially optimized for performance.
8
8
  # The resulting code may not look very elegant, but produces the best benchmarks
9
9
  module NavsExtra
10
- # Javascript pagination: it returns a nav and a JSON tag used by the Pagy.nav javascript
10
+ # Javascript pagination: it returns a nav and a JSON tag used by the pagy.js file
11
11
  def pagy_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
12
+ sequels = pagy.sequels(**vars)
12
13
  p_id = %( id="#{pagy_id}") if pagy_id
13
14
  link = pagy_link_proc(pagy, link_extra: link_extra)
14
15
  tags = { 'before' => pagy_nav_prev_html(pagy, link),
@@ -17,11 +18,11 @@ class Pagy # :nodoc:
17
18
  'gap' => %(<span class="page gap">#{pagy_t 'pagy.nav.gap'}</span> ),
18
19
  'after' => pagy_nav_next_html(pagy, link) }
19
20
 
20
- %(<nav#{p_id} class="pagy-njs pagy-nav-js pagination" aria-label="pager" #{
21
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></nav>)
21
+ %(<nav#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-nav-js pagination" aria-label="pager" #{
22
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></nav>)
22
23
  end
23
24
 
24
- # Javascript combo pagination: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
25
+ # Javascript combo pagination: it returns a nav and a JSON tag used by the pagy.js file
25
26
  def pagy_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
26
27
  p_id = %( id="#{pagy_id}") if pagy_id
27
28
  link = pagy_link_proc(pagy, link_extra: link_extra)
@@ -31,7 +32,7 @@ class Pagy # :nodoc:
31
32
  p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length + 1}rem;">)
32
33
 
33
34
  %(<nav#{p_id} class="pagy-combo-nav-js pagination" aria-label="pager" #{
34
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
35
+ pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
35
36
  pagy_nav_prev_html pagy, link
36
37
  }<span class="pagy-combo-input" style="margin: 0 0.6rem;">#{
37
38
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
@@ -26,8 +26,9 @@ class Pagy # :nodoc:
26
26
  html << %(</div>)
27
27
  end
28
28
 
29
- # Javascript pagination for semantic: it returns a nav and a JSON tag used by the Pagy.nav javascript
29
+ # Javascript pagination for semantic: it returns a nav and a JSON tag used by the pagy.js file
30
30
  def pagy_semantic_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
31
+ sequels = pagy.sequels(**vars)
31
32
  p_id = %( id="#{pagy_id}") if pagy_id
32
33
  link = pagy_link_proc(pagy, link_extra: %(class="item" #{link_extra}))
33
34
  tags = { 'before' => pagy_semantic_prev_html(pagy, link),
@@ -36,11 +37,11 @@ class Pagy # :nodoc:
36
37
  'gap' => %(<div class="disabled item">#{pagy_t('pagy.nav.gap')}</div>),
37
38
  'after' => pagy_semantic_next_html(pagy, link) }
38
39
 
39
- %(<div#{p_id} class="pagy-njs pagy-semantic-nav-js ui pagination menu" role="navigation" #{
40
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></div>)
40
+ %(<div#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-semantic-nav-js ui pagination menu" role="navigation" #{
41
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></div>)
41
42
  end
42
43
 
43
- # Combo pagination for semantic: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
44
+ # Combo pagination for semantic: it returns a nav and a JSON tag used by the pagy.js file
44
45
  def pagy_semantic_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
45
46
  p_id = %( id="#{pagy_id}") if pagy_id
46
47
  link = pagy_link_proc(pagy, link_extra: %(class="item" #{link_extra}))
@@ -50,7 +51,7 @@ class Pagy # :nodoc:
50
51
  p_page}" style="padding: 0; text-align: center; width: #{p_pages.to_s.length + 1}rem; margin: 0 0.3rem">)
51
52
 
52
53
  %(<div#{p_id} class="pagy-semantic-combo-nav-js ui compact menu" role="navigation" #{
53
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)}>#{
54
+ pagy_json_attr pagy, :combo, pagy_marked_link(link)}>#{
54
55
  pagy_semantic_prev_html pagy, link
55
56
  }<div class="pagy-combo-input item">#{
56
57
  pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
@@ -25,8 +25,9 @@ class Pagy # :nodoc:
25
25
  html << %(</ul>)
26
26
  end
27
27
 
28
- # Javascript pagination for uikit: it returns a nav and a JSON tag used by the Pagy.nav javascript
28
+ # Javascript pagination for uikit: it returns a nav and a JSON tag used by the pagy.js file
29
29
  def pagy_uikit_nav_js(pagy, pagy_id: nil, link_extra: '', **vars)
30
+ sequels = pagy.sequels(**vars)
30
31
  p_id = %( id="#{pagy_id}") if pagy_id
31
32
  link = pagy_link_proc(pagy, link_extra: link_extra)
32
33
  tags = { 'before' => pagy_uikit_prev_html(pagy, link),
@@ -35,11 +36,11 @@ class Pagy # :nodoc:
35
36
  'gap' => %(<li class="uk-disabled"><span>#{pagy_t 'pagy.nav.gap'}</span></li>),
36
37
  'after' => pagy_uikit_next_html(pagy, link) }
37
38
 
38
- %(<ul#{p_id} class="pagy-njs pagy-uikit-nav-js uk-pagination uk-flex-center" #{
39
- pagy_json_attr(pagy, :nav, tags, (sequels = pagy.sequels(**vars)), pagy.label_sequels(sequels))}></ul>)
39
+ %(<ul#{p_id} class="#{'pagy-rjs ' if sequels.size > 1}pagy-uikit-nav-js uk-pagination uk-flex-center" #{
40
+ pagy_json_attr(pagy, :nav, tags, sequels, pagy.label_sequels(sequels))}></ul>)
40
41
  end
41
42
 
42
- # Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
43
+ # Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the pagy.js file
43
44
  def pagy_uikit_combo_nav_js(pagy, pagy_id: nil, link_extra: '')
44
45
  p_id = %( id="#{pagy_id}") if pagy_id
45
46
  link = pagy_link_proc(pagy, link_extra: link_extra)
@@ -49,7 +50,7 @@ class Pagy # :nodoc:
49
50
  p_page}" style="text-align: center; width: #{p_pages.to_s.length + 1}rem;">)
50
51
 
51
52
  %(<ul#{p_id} class="pagy-uikit-combo-nav-js uk-button-group uk-pagination uk-flex-center" #{
52
- pagy_json_attr pagy, :combo_nav, p_page, pagy_marked_link(link)
53
+ pagy_json_attr pagy, :combo, pagy_marked_link(link)
53
54
  }>#{
54
55
  pagy_uikit_prev_html pagy, link
55
56
  }<li>#{
data/lib/pagy.rb CHANGED
@@ -5,7 +5,7 @@ require 'pathname'
5
5
 
6
6
  # Core class
7
7
  class Pagy
8
- VERSION = '5.6.9'
8
+ VERSION = '5.7.2'
9
9
 
10
10
  # Root pathname to get the path of Pagy files like templates or dictionaries
11
11
  def self.root
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagy
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.6.9
4
+ version: 5.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-02 00:00:00.000000000 Z
11
+ date: 2022-01-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Agnostic pagination in plain ruby. It does it all. Better.
14
14
  email:
@@ -19,8 +19,8 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - LICENSE.txt
21
21
  - lib/config/pagy.rb
22
+ - lib/javascripts/pagy-dev.js
22
23
  - lib/javascripts/pagy.js
23
- - lib/javascripts/pagy.js.map
24
24
  - lib/locales/ar.yml
25
25
  - lib/locales/bg.yml
26
26
  - lib/locales/bs.yml
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/pagy.ts"],"names":[],"mappings":"mrDA6BA,GAAM,CAAA,IAAI,CAAG,CACT,OAAO,CAAE,OADA,CAIT,IAJS,eAIJ,CAJI,CAI6B,OAC5B,CAAM,CAAG,CAAG,WAAY,CAAA,WAAf,CAA6B,CAA7B,CAAmC,QADhB,CAE5B,CAAQ,CAAG,CAAM,CAAC,gBAAP,CAAwB,kBAAxB,CAFiB,8BAGZ,CAHY,MAGlC,2BAAgC,IAArB,CAAA,CAAqB,SACtB,CAAI,CAAG,CAAO,CAAC,YAAR,CAAqB,gBAArB,CADe,CAE5B,GAAa,IAAT,GAAA,CAAJ,KAGM,CAAA,CAAI,CAAG,IAAI,CAAC,KAAL,CAAW,CAAX,CAHb,CAIM,CAAK,CAAG,CAAI,CAAC,KAAL,EAJd,CAKc,KAAV,GAAA,CALJ,CAMI,IAAI,CAAC,GAAL,OAAA,IAAI,EAAK,CAAL,4BAAiB,CAAjB,GANR,CAOqB,WAAV,GAAA,CAPX,CAQI,IAAI,CAAC,SAAL,OAAA,IAAI,EAAW,CAAX,4BAAuB,CAAvB,GARR,CASqB,gBAAV,GAAA,CATX,EAUI,IAAI,CAAC,cAAL,OAAA,IAAI,EAAgB,CAAhB,4BAA4B,CAA5B,GAVR,CAYH,CAjBiC,+BAkBrC,CAtBQ,CAyBT,GAzBS,cAyBL,CAzBK,CAyBW,CAzBX,CAyByB,CAzBzB,CAyB6C,CAzB7C,CAyBqF,CAzBrF,CAyBwG,CAC7G,GAAI,CAAA,CAAa,CAAG,EAApB,CAEA,GAA0B,IAAtB,GAAA,CAAJ,CACI,IAAK,GAAM,CAAA,CAAX,GAAoB,CAAA,CAApB,CACI,CAAa,CAAC,CAAD,CAAb,CAAuB,CAAO,CAAC,CAAD,CAAP,CAAe,GAAf,CAAmB,SAAC,CAAD,QAAU,CAAA,CAAI,CAAC,QAAL,EAAV,CAAnB,CAAvB,CAFR,IAKI,CAAA,CAAa,CAAG,CALpB,CAH6G,GAczG,CAAA,CAdyG,CAWvG,CAAM,CAAG,MAAM,CAAC,mBAAP,CAA2B,CAA3B,EACO,GADP,CACW,SAAC,CAAD,QAAO,CAAA,QAAQ,CAAC,CAAD,CAAf,CADX,EAEO,IAFP,CAEY,SAAC,CAAD,CAAI,CAAJ,QAAU,CAAA,CAAC,CAAG,CAAd,CAFZ,CAX8F,CAevG,CAAM,CAAG,SAAC,CAAD,CAAgB,CAAhB,CAA6B,CAA7B,QACX,CAAA,CAAM,CAAC,OAAP,CAAe,gBAAf,CAAiC,CAAjC,EACO,OADP,CACe,iBADf,CACkC,CADlC,CADW,CAf8F,CAmB7G,CAAM,CAAC,UAAP,CAAoB,UAAM,CAEtB,GAAM,CAAA,CAAK,CAAG,CAAM,CAAC,IAAP,CAAY,SAAC,CAAD,QAAgC,KAAzB,GAAA,CAAM,CAAC,aAAP,EAAiC,CAAM,CAAC,aAAP,CAAqB,WAArB,CAAmC,CAA3E,CAAZ,GAA6F,CAA3G,CAEA,GAAI,CAAK,GAAK,CAAd,CAAyB,IACjB,CAAA,CAAI,CAAG,CAAI,CAAC,MADK,CAEf,CAAM,CAAG,CAAO,CAAC,CAAK,CAAC,QAAN,EAAD,CAFD,CAGf,CAAM,CAAG,CAAa,CAAC,CAAK,CAAC,QAAN,EAAD,CAHP,CAIrB,IAAK,GAAM,CAAA,CAAX,GAAgB,CAAA,CAAhB,CAAwB,IACd,CAAA,CAAI,CAAG,CAAM,CAAC,CAAD,CADC,CAEd,CAAK,CAAG,CAAM,CAAC,CAAD,CAFA,CAGpB,GAAyB,QAArB,QAAO,CAAA,CAAP,EAA0C,CAAT,GAAA,CAArC,CAAiD,CAC7C,GAAM,CAAA,CAAI,CAAG,CAAM,CAAC,CAAI,CAAC,IAAN,CAAY,CAAI,CAAC,QAAL,EAAZ,CAA6B,CAA7B,CAAnB,CACA,CAAI,EAAI,IAAI,CAAC,IAAL,CAAU,CAAV,CAAgB,CAAhB,CACX,CAHD,IAII,CAAA,CAJJ,EAG2B,QAAhB,QAAO,CAAA,CAHlB,CAIY,CAAM,CAAC,CAAI,CAAC,IAAN,CAAY,CAAI,CAAC,QAAL,EAAZ,CAA6B,CAA7B,CAJlB,CAKoB,KAAT,GAAA,CALX,CAMY,CAAI,CAAC,GANjB,CAQY,CAAM,CAAC,CAAI,CAAC,MAAN,CAAc,CAAd,CAAoB,CAApB,CAErB,CACD,CAAI,EAAI,CAAI,CAAC,KAlBQ,CAmBrB,CAAM,CAAC,SAAP,CAAmB,EAnBE,CAoBrB,CAAM,CAAC,kBAAP,CAA0B,YAA1B,CAAwC,CAAxC,CApBqB,CAqBrB,CAAS,CAAG,CACf,CACJ,CA9C4G,CA+C7G,CAAM,CAAC,UAAP,EA/C6G,CAiDvF,WAAlB,QAAO,CAAA,MAjDkG,EAkDzG,MAAM,CAAC,gBAAP,CAAwB,QAAxB,CAAkC,IAAI,CAAC,kBAAvC,IAEP,CA7EQ,CAgFT,qBAAqB,CAAI,CAhFhB,CAiFT,uBAAuB,CAAE,GAjFhB,CAoFT,kBApFS,8BAoFY,CACjB,YAAY,CAAC,IAAI,CAAC,qBAAN,CADK,CAEjB,IAAI,CAAC,qBAAL,CAA6B,MAAM,CAAC,UAAP,CAAkB,IAAI,CAAC,UAAvB,CAAmC,IAAI,CAAC,uBAAxC,CAChC,CAvFQ,CA0FT,UA1FS,sBA0FI,CACT,GAAM,CAAA,CAAI,CAAG,QAAQ,CAAC,sBAAT,CAAgC,UAAhC,CAAb,CACA,KAAK,CAAC,IAAN,CAAW,CAAX,EAAiB,OAAjB,CAAyB,SAAC,CAAD,QAAS,CAAA,CAAG,CAAC,UAAJ,EAAT,CAAzB,CACH,CA7FQ,CAgGT,SAhGS,oBAgGC,CAhGD,CAgGiB,CAhGjB,CAgG8B,CAhG9B,CAgG2C,CAhG3C,CAgG8D,IAC7D,CAAA,CAAK,CAAG,CAAM,CAAC,oBAAP,CAA4B,OAA5B,EAAqC,CAArC,CADqD,CAYnE,IAAI,CAAC,gBAAL,CAAsB,CAAtB,CAViB,QAAX,CAAA,QAAW,EAAM,CACnB,GAAI,CAAI,GAAK,CAAK,CAAC,KAAnB,CAA0B,CACtB,GAAI,CAAA,CAAI,CAAG,CAAI,CAAC,OAAL,CAAa,eAAb,CAA8B,CAAK,CAAC,KAApC,CAAX,CACyB,QAArB,QAAO,CAAA,CAAP,EAAiD,GAAhB,GAAA,CAAK,CAAC,KAFrB,GAGlB,CAAI,CAAG,IAAI,CAAC,IAAL,CAAU,CAAV,CAAgB,CAAhB,CAHW,EAKtB,CAAM,CAAC,kBAAP,CAA0B,YAA1B,CAAwC,CAAxC,CALsB,CAMtB,CAAM,CAAC,oBAAP,CAA4B,GAA5B,EAAiC,CAAjC,EAAoC,KAApC,EACH,CACJ,CACD,CACH,CA7GQ,CAgHT,cAhHS,yBAgHM,CAhHN,CAgHsB,CAhHtB,CAgHmC,CAhHnC,CAgHgD,CAhHhD,CAgHmE,IAClE,CAAA,CAAK,CAAG,CAAM,CAAC,oBAAP,CAA4B,OAA5B,EAAqC,CAArC,CAD0D,CAElE,CAAO,CAAG,CAAK,CAAC,KAFkD,CAmBxE,IAAI,CAAC,gBAAL,CAAsB,CAAtB,CAhBiB,QAAX,CAAA,QAAW,EAAM,OAMF,IAAI,CAAC,GANH,GAMO,IAAI,CAAC,IANZ,CACb,CAAK,CAAG,CAAK,CAAC,KADD,CAEnB,GAAc,GAAV,GAAA,CAAK,EAAsB,EAAV,GAAA,CAArB,EAGI,CAAO,GAAK,CAHhB,CAGuB,IACb,CAAA,CAAI,CAAG,EAAS,EAAU,CAAI,CAAG,QAAQ,CAAC,CAAD,CAAzB,CAAT,CAA4C,CAA5C,EAA+C,QAA/C,EADM,CAEf,CAAI,CAAG,CAAI,CAAC,OAAL,CAAa,eAAb,CAA8B,CAA9B,EACK,OADL,CACa,gBADb,CAC+B,CAD/B,CAFQ,CAIM,QAArB,QAAO,CAAA,CAAP,EAA0C,GAAT,GAAA,CAJlB,GAKf,CAAI,CAAG,IAAI,CAAC,IAAL,CAAU,CAAV,CAAgB,CAAhB,CALQ,EAOnB,CAAM,CAAC,kBAAP,CAA0B,YAA1B,CAAwC,CAAxC,CAPmB,CAQnB,CAAM,CAAC,oBAAP,CAA4B,GAA5B,EAAiC,CAAjC,EAAoC,KAApC,EACH,CACJ,CACD,CACH,CApIQ,CAuIT,gBAvIS,2BAuIQ,CAvIR,CAuIgC,CAvIhC,CAuIqD,CAE1D,CAAK,CAAC,gBAAN,CAAuB,OAAvB,CAAgC,CAAK,CAAC,MAAtC,CAF0D,CAI1D,CAAK,CAAC,gBAAN,CAAuB,UAAvB,CAAmC,CAAnC,CAJ0D,CAM1D,CAAK,CAAC,gBAAN,CAAuB,UAAvB,CAAmC,SAAC,CAAD,CAAqB,CACtC,OAAV,GAAA,CAAC,CAAC,GAD8C,EAEhD,CAAQ,EAEf,CAJD,CAKH,CAlJQ,CAqJT,IArJS,eAqJJ,CArJI,CAqJS,CArJT,CAqJ8B,CACnC,GAAM,CAAA,CAAE,CAAG,GAAI,CAAA,MAAJ,eAAkB,CAAlB,0BAAwC,CAAxC,QAAX,CACA,MAAO,CAAA,CAAI,CAAC,OAAL,CAAa,CAAb,CAAiB,EAAjB,CACV,CAxJQ,CAAb","file":"pagy.js","sourcesContent":["// This file is the source that generates pagy.js, polyfilled with the `@babel/preset-env` `\"useBuiltIns\": \"entry\"`.\n// You can generate a custom targeted javascript file for the browsers you need by changing that settings in package.json,\n// then compile it with `npm run compile -w src`.\n\n// Add pagyRender to Element\ninterface Element {\n pagyRender():void;\n}\n\n// Tags from the data-pagy-json of *nav_js helpers\ninterface NavTags {\n readonly before:string;\n readonly link:string;\n readonly active:string;\n readonly gap:string;\n readonly after:string;\n}\n\n// Tags from the data-pagy-json of *nav_js helpers\ninterface NavSequels {\n readonly [width:string]:(string|number|\"gap\")[];\n}\n\n// Tags from the data-pagy-json of *nav_js helpers\ninterface NavLabelSequels {\n [width:string]:(string|\"gap\")[];\n}\n\n// The Pagy object\nconst Pagy = {\n version: \"5.6.9\",\n\n // Scan for \"data-pagy-json\" elements, parse their JSON content and apply their functions\n init(arg?:HTMLElement|Document|Event) {\n const target = arg instanceof HTMLElement ? arg : document;\n const elements = target.querySelectorAll(\"[data-pagy-json]\");\n for (const element of elements) {\n const json = element.getAttribute(\"data-pagy-json\");\n if (json === null) {\n continue;\n }\n const args = JSON.parse(json);\n const fname = args.shift() as \"nav\"|\"combo_nav\"|\"items_selector\";\n if (fname === \"nav\") {\n Pagy.nav(element, ...args as [NavTags, NavSequels, null|NavLabelSequels, string]);\n } else if (fname === \"combo_nav\") {\n Pagy.combo_nav(element, ...args as [string, string, string]);\n } else if (fname === \"items_selector\") {\n Pagy.items_selector(element, ...args as [number, string, string]);\n }\n }\n },\n\n // Power the *_nav_js helpers\n nav(pagyEl:Element, tags:NavTags, sequels:NavSequels, opt_label_sequels:null|NavLabelSequels, trimParam?:string) {\n let label_sequels = {} as NavLabelSequels;\n // Handle null label_sequels\n if (opt_label_sequels === null) {\n for (const width in sequels) {\n label_sequels[width] = sequels[width].map((item) => item.toString());\n }\n } else {\n label_sequels = opt_label_sequels;\n }\n // Set and sort the widths as number[]\n const widths = Object.getOwnPropertyNames(sequels)\n .map((w) => parseInt(w))\n .sort((a, b) => b - a);\n let lastWidth:number;\n const fillIn = (string:string, item:string, label:string):string =>\n string.replace(/__pagy_page__/g, item)\n .replace(/__pagy_label__/g, label);\n\n pagyEl.pagyRender = () => {\n // Find the width that fits in parent\n const width = widths.find((w) => pagyEl.parentElement !== null && pagyEl.parentElement.clientWidth > w) || 0;\n // Only if the width changed\n if (width !== lastWidth) {\n let html = tags.before;\n const series = sequels[width.toString()];\n const labels = label_sequels[width.toString()];\n for (const i in series) {\n const item = series[i];\n const label = labels[i];\n if (typeof trimParam === \"string\" && item === 1) {\n const link = fillIn(tags.link, item.toString(), label);\n html += Pagy.trim(link, trimParam);\n } else if (typeof item === \"number\") {\n html += fillIn(tags.link, item.toString(), label);\n } else if (item === \"gap\") {\n html += tags.gap;\n } else { // active page\n html += fillIn(tags.active, item, label);\n }\n }\n html += tags.after;\n pagyEl.innerHTML = \"\";\n pagyEl.insertAdjacentHTML(\"afterbegin\", html);\n lastWidth = width;\n }\n };\n pagyEl.pagyRender();\n // If there is a window object then add a single \"resize\" event listener\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"resize\", Pagy.throttleRenderNavs, true);\n }\n },\n\n // throttleRenderNavs properties\n throttleRenderNavsTID: 0, // private\n throttleRenderNavsDelay: 100, // set a default delay\n\n // Avoid to fire the pagyRender multiple times\n throttleRenderNavs() {\n clearTimeout(Pagy.throttleRenderNavsTID);\n Pagy.throttleRenderNavsTID = window.setTimeout(Pagy.renderNavs, Pagy.throttleRenderNavsDelay);\n },\n\n // Render all *nav_js helpers (i.e. all the elements of class \"pagy-njs\")\n renderNavs() {\n const navs = document.getElementsByClassName(\"pagy-njs\");\n Array.from(navs).forEach((nav) => nav.pagyRender());\n },\n\n // Power the *_combo_nav_js helpers\n combo_nav(pagyEl:Element, page:string, link:string, trimParam?:string) {\n const input = pagyEl.getElementsByTagName(\"input\")[0];\n const goToPage = () => {\n if (page !== input.value) {\n let html = link.replace(/__pagy_page__/, input.value);\n if (typeof trimParam === \"string\" && input.value === \"1\") {\n html = Pagy.trim(html, trimParam);\n }\n pagyEl.insertAdjacentHTML(\"afterbegin\", html);\n pagyEl.getElementsByTagName(\"a\")[0].click();\n }\n };\n Pagy.addInputBehavior(input, goToPage);\n },\n\n // Power the pagy_items_selector_js helper\n items_selector(pagyEl:Element, from:number, link:string, trimParam?:string) {\n const input = pagyEl.getElementsByTagName(\"input\")[0];\n const current = input.value;\n const goToPage = () => {\n const items = input.value;\n if (items === \"0\" || items === \"\") {\n return;\n }\n if (current !== items) {\n const page = Math.max(Math.ceil(from / parseInt(items)), 1).toString();\n let html = link.replace(/__pagy_page__/, page)\n .replace(/__pagy_items__/, items);\n if (typeof trimParam === \"string\" && page === \"1\") {\n html = Pagy.trim(html, trimParam);\n }\n pagyEl.insertAdjacentHTML(\"afterbegin\", html);\n pagyEl.getElementsByTagName(\"a\")[0].click();\n }\n };\n Pagy.addInputBehavior(input, goToPage);\n },\n\n // Add behavior to input fields\n addInputBehavior(input:HTMLInputElement, goToPage:() => void) {\n // select the content on click: easier for direct typing\n input.addEventListener(\"click\", input.select);\n // goToPage when the input loses focus\n input.addEventListener(\"focusout\", goToPage);\n // goToPage when pressing enter while the input has focus\n input.addEventListener(\"keypress\", (e:KeyboardEvent) => {\n if (e.key === \"Enter\") {\n goToPage();\n }\n });\n },\n\n // Power the trim extra for js helpers\n trim(link:string, param:string):string {\n const re = new RegExp(`[?&]${param}=1\\\\b(?!&)|\\\\b${param}=1&`);\n return link.replace(re, \"\");\n }\n};\n"]}