pagy 5.7.5 → 8.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/apps/calendar.ru +745 -0
- data/apps/demo.ru +435 -0
- data/apps/rails.ru +213 -0
- data/apps/repro.ru +177 -0
- data/apps/tmp/calendar.sqlite3 +0 -0
- data/apps/tmp/calendar.sqlite3-shm +0 -0
- data/apps/tmp/calendar.sqlite3-wal +0 -0
- data/apps/tmp/local_secret.txt +1 -0
- data/bin/pagy +100 -0
- data/{lib/config → config}/pagy.rb +72 -96
- data/javascripts/pagy-module.js +100 -0
- data/javascripts/pagy.d.ts +5 -0
- data/javascripts/pagy.js +4 -0
- data/javascripts/pagy.min.js +4 -0
- data/javascripts/pagy.min.js.map +10 -0
- data/javascripts/pagy.mjs +100 -0
- data/lib/optimist.rb +1022 -0
- data/lib/pagy/backend.rb +16 -4
- data/lib/pagy/calendar/day.rb +22 -10
- data/lib/pagy/calendar/month.rb +35 -9
- data/lib/pagy/calendar/quarter.rb +36 -10
- data/lib/pagy/calendar/unit.rb +106 -0
- data/lib/pagy/calendar/week.rb +16 -16
- data/lib/pagy/calendar/year.rb +15 -9
- data/lib/pagy/calendar.rb +60 -68
- data/lib/pagy/console.rb +3 -3
- data/lib/pagy/countless.rb +17 -12
- data/lib/pagy/exceptions.rb +1 -1
- data/lib/pagy/extras/arel.rb +2 -2
- data/lib/pagy/extras/array.rb +2 -2
- data/lib/pagy/extras/bootstrap.rb +57 -53
- data/lib/pagy/extras/bulma.rb +53 -57
- data/lib/pagy/extras/calendar.rb +54 -37
- data/lib/pagy/extras/countless.rb +3 -3
- data/lib/pagy/extras/elasticsearch_rails.rb +12 -11
- data/lib/pagy/extras/foundation.rb +59 -54
- data/lib/pagy/extras/gearbox.rb +32 -19
- data/lib/pagy/extras/headers.rb +11 -11
- data/lib/pagy/extras/i18n.rb +5 -5
- data/lib/pagy/extras/items.rb +34 -24
- data/lib/pagy/extras/{frontend_helpers.rb → js_tools.rb} +24 -24
- data/lib/pagy/extras/jsonapi.rb +79 -0
- data/lib/pagy/extras/materialize.rb +63 -47
- data/lib/pagy/extras/meilisearch.rb +26 -22
- data/lib/pagy/extras/metadata.rb +13 -9
- data/lib/pagy/extras/overflow.rb +13 -10
- data/lib/pagy/extras/pagy.rb +82 -0
- data/lib/pagy/extras/searchkick.rb +12 -11
- data/lib/pagy/extras/semantic.rb +57 -45
- data/lib/pagy/extras/size.rb +40 -0
- data/lib/pagy/extras/standalone.rb +12 -16
- data/lib/pagy/extras/trim.rb +13 -13
- data/lib/pagy/extras/uikit.rb +60 -46
- data/lib/pagy/frontend.rb +62 -45
- data/lib/pagy/i18n.rb +4 -3
- data/lib/pagy/url_helpers.rb +13 -25
- data/lib/pagy.rb +61 -59
- data/locales/ar.yml +28 -0
- data/locales/be.yml +25 -0
- data/locales/bg.yml +21 -0
- data/locales/bs.yml +25 -0
- data/locales/ca.yml +21 -0
- data/locales/ckb.yml +18 -0
- data/locales/cs.yml +23 -0
- data/locales/da.yml +21 -0
- data/locales/de.yml +21 -0
- data/locales/en.yml +21 -0
- data/locales/es.yml +21 -0
- data/locales/fr.yml +21 -0
- data/locales/hr.yml +25 -0
- data/locales/id.yml +19 -0
- data/locales/it.yml +21 -0
- data/locales/ja.yml +19 -0
- data/locales/km.yml +19 -0
- data/locales/ko.yml +17 -0
- data/locales/nb.yml +21 -0
- data/locales/nl.yml +21 -0
- data/locales/nn.yml +21 -0
- data/locales/pl.yml +25 -0
- data/locales/pt-BR.yml +21 -0
- data/locales/pt.yml +21 -0
- data/locales/ru.yml +25 -0
- data/locales/sr.yml +25 -0
- data/locales/sv-SE.yml +21 -0
- data/locales/sv.yml +21 -0
- data/locales/sw.yml +23 -0
- data/locales/ta.yml +23 -0
- data/locales/tr.yml +19 -0
- data/locales/uk.yml +25 -0
- data/locales/vi.yml +17 -0
- data/locales/zh-CN.yml +19 -0
- data/locales/zh-HK.yml +19 -0
- data/locales/zh-TW.yml +19 -0
- data/stylesheets/pagy.css +46 -0
- data/stylesheets/pagy.scss +48 -0
- data/stylesheets/pagy.tailwind.css +21 -0
- metadata +79 -66
- data/lib/javascripts/pagy-dev.js +0 -118
- data/lib/javascripts/pagy-module.d.ts +0 -30
- data/lib/javascripts/pagy-module.js +0 -117
- data/lib/javascripts/pagy.js +0 -1
- data/lib/locales/ar.yml +0 -26
- data/lib/locales/bg.yml +0 -22
- data/lib/locales/bs.yml +0 -24
- data/lib/locales/ca.yml +0 -22
- data/lib/locales/cs.yml +0 -22
- data/lib/locales/da.yml +0 -22
- data/lib/locales/de.yml +0 -22
- data/lib/locales/en.yml +0 -22
- data/lib/locales/es.yml +0 -22
- data/lib/locales/fr.yml +0 -22
- data/lib/locales/hr.yml +0 -24
- data/lib/locales/id.yml +0 -20
- data/lib/locales/it.yml +0 -22
- data/lib/locales/ja.yml +0 -20
- data/lib/locales/km.yml +0 -19
- data/lib/locales/ko.yml +0 -20
- data/lib/locales/nb.yml +0 -22
- data/lib/locales/nl.yml +0 -22
- data/lib/locales/pl.yml +0 -24
- data/lib/locales/pt-BR.yml +0 -22
- data/lib/locales/pt.yml +0 -22
- data/lib/locales/ru.yml +0 -24
- data/lib/locales/sr.yml +0 -23
- data/lib/locales/sv-SE.yml +0 -23
- data/lib/locales/sv.yml +0 -23
- data/lib/locales/sw.yml +0 -22
- data/lib/locales/ta.yml +0 -22
- data/lib/locales/tr.yml +0 -20
- data/lib/locales/uk.yml +0 -24
- data/lib/locales/zh-CN.yml +0 -20
- data/lib/locales/zh-HK.yml +0 -20
- data/lib/locales/zh-TW.yml +0 -20
- data/lib/pagy/calendar/month_mixin.rb +0 -49
- data/lib/pagy/extras/navs.rb +0 -63
- data/lib/pagy/extras/support.rb +0 -54
- data/lib/templates/bootstrap_nav.html.erb +0 -24
- data/lib/templates/bootstrap_nav.html.haml +0 -34
- data/lib/templates/bootstrap_nav.html.slim +0 -34
- data/lib/templates/bulma_nav.html.erb +0 -24
- data/lib/templates/bulma_nav.html.haml +0 -32
- data/lib/templates/bulma_nav.html.slim +0 -32
- data/lib/templates/foundation_nav.html.erb +0 -24
- data/lib/templates/foundation_nav.html.haml +0 -34
- data/lib/templates/foundation_nav.html.slim +0 -34
- data/lib/templates/nav.html.erb +0 -22
- data/lib/templates/nav.html.haml +0 -30
- data/lib/templates/nav.html.slim +0 -29
- data/lib/templates/uikit_nav.html.erb +0 -15
- data/lib/templates/uikit_nav.html.haml +0 -28
- data/lib/templates/uikit_nav.html.slim +0 -28
metadata
CHANGED
@@ -1,67 +1,48 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pagy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 8.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Domizio Demichelis
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Agnostic pagination in plain ruby. It does it all. Better.
|
14
14
|
email:
|
15
15
|
- dd.nexus@gmail.com
|
16
|
-
executables:
|
16
|
+
executables:
|
17
|
+
- pagy
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
19
20
|
files:
|
20
21
|
- LICENSE.txt
|
21
|
-
-
|
22
|
-
-
|
23
|
-
-
|
24
|
-
-
|
25
|
-
-
|
26
|
-
-
|
27
|
-
-
|
28
|
-
-
|
29
|
-
-
|
30
|
-
-
|
31
|
-
-
|
32
|
-
-
|
33
|
-
-
|
34
|
-
-
|
35
|
-
-
|
36
|
-
-
|
37
|
-
- lib/
|
38
|
-
- lib/locales/it.yml
|
39
|
-
- lib/locales/ja.yml
|
40
|
-
- lib/locales/km.yml
|
41
|
-
- lib/locales/ko.yml
|
42
|
-
- lib/locales/nb.yml
|
43
|
-
- lib/locales/nl.yml
|
44
|
-
- lib/locales/pl.yml
|
45
|
-
- lib/locales/pt-BR.yml
|
46
|
-
- lib/locales/pt.yml
|
47
|
-
- lib/locales/ru.yml
|
48
|
-
- lib/locales/sr.yml
|
49
|
-
- lib/locales/sv-SE.yml
|
50
|
-
- lib/locales/sv.yml
|
51
|
-
- lib/locales/sw.yml
|
52
|
-
- lib/locales/ta.yml
|
53
|
-
- lib/locales/tr.yml
|
54
|
-
- lib/locales/uk.yml
|
55
|
-
- lib/locales/zh-CN.yml
|
56
|
-
- lib/locales/zh-HK.yml
|
57
|
-
- lib/locales/zh-TW.yml
|
22
|
+
- apps/calendar.ru
|
23
|
+
- apps/demo.ru
|
24
|
+
- apps/rails.ru
|
25
|
+
- apps/repro.ru
|
26
|
+
- apps/tmp/calendar.sqlite3
|
27
|
+
- apps/tmp/calendar.sqlite3-shm
|
28
|
+
- apps/tmp/calendar.sqlite3-wal
|
29
|
+
- apps/tmp/local_secret.txt
|
30
|
+
- bin/pagy
|
31
|
+
- config/pagy.rb
|
32
|
+
- javascripts/pagy-module.js
|
33
|
+
- javascripts/pagy.d.ts
|
34
|
+
- javascripts/pagy.js
|
35
|
+
- javascripts/pagy.min.js
|
36
|
+
- javascripts/pagy.min.js.map
|
37
|
+
- javascripts/pagy.mjs
|
38
|
+
- lib/optimist.rb
|
58
39
|
- lib/pagy.rb
|
59
40
|
- lib/pagy/backend.rb
|
60
41
|
- lib/pagy/calendar.rb
|
61
42
|
- lib/pagy/calendar/day.rb
|
62
43
|
- lib/pagy/calendar/month.rb
|
63
|
-
- lib/pagy/calendar/month_mixin.rb
|
64
44
|
- lib/pagy/calendar/quarter.rb
|
45
|
+
- lib/pagy/calendar/unit.rb
|
65
46
|
- lib/pagy/calendar/week.rb
|
66
47
|
- lib/pagy/calendar/year.rb
|
67
48
|
- lib/pagy/console.rb
|
@@ -75,40 +56,65 @@ files:
|
|
75
56
|
- lib/pagy/extras/countless.rb
|
76
57
|
- lib/pagy/extras/elasticsearch_rails.rb
|
77
58
|
- lib/pagy/extras/foundation.rb
|
78
|
-
- lib/pagy/extras/frontend_helpers.rb
|
79
59
|
- lib/pagy/extras/gearbox.rb
|
80
60
|
- lib/pagy/extras/headers.rb
|
81
61
|
- lib/pagy/extras/i18n.rb
|
82
62
|
- lib/pagy/extras/items.rb
|
63
|
+
- lib/pagy/extras/js_tools.rb
|
64
|
+
- lib/pagy/extras/jsonapi.rb
|
83
65
|
- lib/pagy/extras/materialize.rb
|
84
66
|
- lib/pagy/extras/meilisearch.rb
|
85
67
|
- lib/pagy/extras/metadata.rb
|
86
|
-
- lib/pagy/extras/navs.rb
|
87
68
|
- lib/pagy/extras/overflow.rb
|
69
|
+
- lib/pagy/extras/pagy.rb
|
88
70
|
- lib/pagy/extras/searchkick.rb
|
89
71
|
- lib/pagy/extras/semantic.rb
|
72
|
+
- lib/pagy/extras/size.rb
|
90
73
|
- lib/pagy/extras/standalone.rb
|
91
|
-
- lib/pagy/extras/support.rb
|
92
74
|
- lib/pagy/extras/trim.rb
|
93
75
|
- lib/pagy/extras/uikit.rb
|
94
76
|
- lib/pagy/frontend.rb
|
95
77
|
- lib/pagy/i18n.rb
|
96
78
|
- lib/pagy/url_helpers.rb
|
97
|
-
-
|
98
|
-
-
|
99
|
-
-
|
100
|
-
-
|
101
|
-
-
|
102
|
-
-
|
103
|
-
-
|
104
|
-
-
|
105
|
-
-
|
106
|
-
-
|
107
|
-
-
|
108
|
-
-
|
109
|
-
-
|
110
|
-
-
|
111
|
-
-
|
79
|
+
- locales/ar.yml
|
80
|
+
- locales/be.yml
|
81
|
+
- locales/bg.yml
|
82
|
+
- locales/bs.yml
|
83
|
+
- locales/ca.yml
|
84
|
+
- locales/ckb.yml
|
85
|
+
- locales/cs.yml
|
86
|
+
- locales/da.yml
|
87
|
+
- locales/de.yml
|
88
|
+
- locales/en.yml
|
89
|
+
- locales/es.yml
|
90
|
+
- locales/fr.yml
|
91
|
+
- locales/hr.yml
|
92
|
+
- locales/id.yml
|
93
|
+
- locales/it.yml
|
94
|
+
- locales/ja.yml
|
95
|
+
- locales/km.yml
|
96
|
+
- locales/ko.yml
|
97
|
+
- locales/nb.yml
|
98
|
+
- locales/nl.yml
|
99
|
+
- locales/nn.yml
|
100
|
+
- locales/pl.yml
|
101
|
+
- locales/pt-BR.yml
|
102
|
+
- locales/pt.yml
|
103
|
+
- locales/ru.yml
|
104
|
+
- locales/sr.yml
|
105
|
+
- locales/sv-SE.yml
|
106
|
+
- locales/sv.yml
|
107
|
+
- locales/sw.yml
|
108
|
+
- locales/ta.yml
|
109
|
+
- locales/tr.yml
|
110
|
+
- locales/uk.yml
|
111
|
+
- locales/vi.yml
|
112
|
+
- locales/zh-CN.yml
|
113
|
+
- locales/zh-HK.yml
|
114
|
+
- locales/zh-TW.yml
|
115
|
+
- stylesheets/pagy.css
|
116
|
+
- stylesheets/pagy.scss
|
117
|
+
- stylesheets/pagy.tailwind.css
|
112
118
|
homepage: https://github.com/ddnexus/pagy
|
113
119
|
licenses:
|
114
120
|
- MIT
|
@@ -118,8 +124,15 @@ metadata:
|
|
118
124
|
documentation_uri: https://ddnexus.github.io/pagy
|
119
125
|
bug_tracker_uri: https://github.com/ddnexus/pagy/issues
|
120
126
|
changelog_uri: https://github.com/ddnexus/pagy/blob/master/CHANGELOG.md
|
121
|
-
|
122
|
-
post_install_message:
|
127
|
+
support: https://github.com/ddnexus/pagy/discussions/categories/q-a
|
128
|
+
post_install_message: |
|
129
|
+
*********************** PAGY WARNING! ***********************
|
130
|
+
The foundation, materialize, semantic and uikit CSS extras
|
131
|
+
have been discontinued and will be removed in v9
|
132
|
+
https://github.com/ddnexus/pagy/discussions/672
|
133
|
+
The javascript files have been deprecated/renamed
|
134
|
+
https://ddnexus.github.io/pagy/changelog/#deprecations
|
135
|
+
*************************************************************
|
123
136
|
rdoc_options: []
|
124
137
|
require_paths:
|
125
138
|
- lib
|
@@ -127,15 +140,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
140
|
requirements:
|
128
141
|
- - ">="
|
129
142
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
143
|
+
version: '3.1'
|
131
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
145
|
requirements:
|
133
146
|
- - ">="
|
134
147
|
- !ruby/object:Gem::Version
|
135
148
|
version: '0'
|
136
149
|
requirements: []
|
137
|
-
rubygems_version: 3.
|
138
|
-
signing_key:
|
150
|
+
rubygems_version: 3.5.11
|
151
|
+
signing_key:
|
139
152
|
specification_version: 4
|
140
|
-
summary: The
|
153
|
+
summary: The best pagination ruby gem
|
141
154
|
test_files: []
|
data/lib/javascripts/pagy-dev.js
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
const Pagy = {
|
3
|
-
version: "5.7.5",
|
4
|
-
// Scan for "data-pagy-json" elements, parse their JSON content and call their init functions
|
5
|
-
init(arg) {
|
6
|
-
const target = arg instanceof Element ? arg : document;
|
7
|
-
const elements = target.querySelectorAll("[data-pagy-json]");
|
8
|
-
const warn = (el, err) => console.warn("Pagy.init() skipped element: %o\n%s", el, err);
|
9
|
-
for (const element of elements) {
|
10
|
-
const json = element.getAttribute("data-pagy-json");
|
11
|
-
try {
|
12
|
-
const [keyword, ...args] = JSON.parse(json);
|
13
|
-
if (keyword === "nav") {
|
14
|
-
Pagy.initNav(element, args);
|
15
|
-
}
|
16
|
-
else if (keyword === "combo") {
|
17
|
-
Pagy.initCombo(element, args);
|
18
|
-
}
|
19
|
-
else if (keyword === "selector") {
|
20
|
-
Pagy.initSelector(element, args);
|
21
|
-
}
|
22
|
-
else {
|
23
|
-
warn(element, `Illegal PagyJSON keyword: expected "nav"|"combo"|"selector", got "${keyword}"`);
|
24
|
-
}
|
25
|
-
}
|
26
|
-
catch (err) {
|
27
|
-
warn(element, err);
|
28
|
-
}
|
29
|
-
}
|
30
|
-
},
|
31
|
-
// Init the *_nav_js helpers
|
32
|
-
initNav(el, [tags, sequels, labelSequels, trimParam]) {
|
33
|
-
const container = el.parentElement ?? el;
|
34
|
-
const widths = Object.getOwnPropertyNames(sequels).map(w => parseInt(w)).sort((a, b) => b - a);
|
35
|
-
let lastWidth = -1;
|
36
|
-
const fillIn = (link, page, label) => link.replace(/__pagy_page__/g, page).replace(/__pagy_label__/g, label);
|
37
|
-
(el.pagyRender = function () {
|
38
|
-
const width = widths.find(w => w < container.clientWidth) || 0;
|
39
|
-
if (width === lastWidth) {
|
40
|
-
return;
|
41
|
-
} // no change: abort
|
42
|
-
let html = tags.before;
|
43
|
-
const series = sequels[width.toString()];
|
44
|
-
const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());
|
45
|
-
for (const i in series) {
|
46
|
-
const item = series[i];
|
47
|
-
const label = labels[i];
|
48
|
-
if (typeof trimParam === "string" && item === 1) {
|
49
|
-
html += Pagy.trim(fillIn(tags.link, item.toString(), label), trimParam);
|
50
|
-
}
|
51
|
-
else if (typeof item === "number") {
|
52
|
-
html += fillIn(tags.link, item.toString(), label);
|
53
|
-
}
|
54
|
-
else if (item === "gap") {
|
55
|
-
html += tags.gap;
|
56
|
-
}
|
57
|
-
else { // active page
|
58
|
-
html += fillIn(tags.active, item, label);
|
59
|
-
}
|
60
|
-
}
|
61
|
-
html += tags.after; // eslint-disable-line align-assignments/align-assignments
|
62
|
-
el.innerHTML = "";
|
63
|
-
el.insertAdjacentHTML("afterbegin", html);
|
64
|
-
lastWidth = width;
|
65
|
-
})();
|
66
|
-
if (el.classList.contains("pagy-rjs")) {
|
67
|
-
Pagy.rjsObserver.observe(container);
|
68
|
-
}
|
69
|
-
},
|
70
|
-
// The observer instance for responsive navs
|
71
|
-
rjsObserver: new ResizeObserver(entries => {
|
72
|
-
entries.filter(e => e.contentBoxSize)
|
73
|
-
.forEach(e => e.target.querySelectorAll(".pagy-rjs")
|
74
|
-
.forEach(rjs => rjs.pagyRender()));
|
75
|
-
}),
|
76
|
-
// Init the *_combo_nav_js helpers
|
77
|
-
initCombo(el, [link, trimParam]) {
|
78
|
-
Pagy.initInput(el, inputValue => [inputValue, link.replace(/__pagy_page__/, inputValue)], trimParam);
|
79
|
-
},
|
80
|
-
// Init the items_selector_js helper
|
81
|
-
initSelector(el, [from, link, trimParam]) {
|
82
|
-
Pagy.initInput(el, inputValue => {
|
83
|
-
const page = Math.max(Math.ceil(from / parseInt(inputValue)), 1).toString();
|
84
|
-
const html = link.replace(/__pagy_page__/, page).replace(/__pagy_items__/, inputValue);
|
85
|
-
return [page, html];
|
86
|
-
}, trimParam);
|
87
|
-
},
|
88
|
-
// Init the input element
|
89
|
-
initInput(el, getVars, trimParam) {
|
90
|
-
const input = el.querySelector("input");
|
91
|
-
const initial = input.value;
|
92
|
-
const action = function () {
|
93
|
-
if (input.value === initial) {
|
94
|
-
return;
|
95
|
-
} // not changed
|
96
|
-
const [min, val, max] = [input.min, input.value, input.max].map(n => parseInt(n) || 0);
|
97
|
-
if (val < min || val > max) { // reset invalid/out-of-range
|
98
|
-
input.value = initial;
|
99
|
-
input.select();
|
100
|
-
return;
|
101
|
-
}
|
102
|
-
let [page, html] = getVars(input.value); // eslint-disable-line prefer-const
|
103
|
-
if (typeof trimParam === "string" && page === "1") {
|
104
|
-
html = Pagy.trim(html, trimParam);
|
105
|
-
}
|
106
|
-
el.insertAdjacentHTML("afterbegin", html);
|
107
|
-
el.querySelector("a").click();
|
108
|
-
};
|
109
|
-
["change", "focus"].forEach(e => input.addEventListener(e, input.select)); // auto-select
|
110
|
-
input.addEventListener("focusout", action); // trigger action
|
111
|
-
input.addEventListener("keypress", e => { if (e.key === "Enter") {
|
112
|
-
action();
|
113
|
-
} }); // trigger action
|
114
|
-
},
|
115
|
-
// Trim the ${page-param}=1 params in links
|
116
|
-
trim: (link, param) => link.replace(new RegExp(`[?&]${param}=1\\b(?!&)|\\b${param}=1&`), "")
|
117
|
-
};
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQWVBLE1BQU0sSUFBSSxHQUFHO0lBQ1QsT0FBTyxFQUFFLE9BQU87SUFFaEIsNkZBQTZGO0lBQzdGLElBQUksQ0FBQyxHQUFrQjtRQUNuQixNQUFNLE1BQU0sR0FBSyxHQUFHLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBTyxDQUFDLEVBQVUsRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNHLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzVCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQVcsQ0FBQztZQUM5RCxJQUFJO2dCQUNBLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYSxDQUFDO2dCQUN4RCxJQUFJLE9BQU8sS0FBSyxLQUFLLEVBQUU7b0JBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBcUIsRUFBRSxJQUFlLENBQUMsQ0FBQztpQkFDeEQ7cUJBQU0sSUFBSSxPQUFPLEtBQUssT0FBTyxFQUFFO29CQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFpQixDQUFDLENBQUM7aUJBQzlDO3FCQUFNLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBb0IsQ0FBQyxDQUFDO2lCQUNwRDtxQkFBTTtvQkFDSCxJQUFJLENB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Q0FBRyxtQ0FBbUM7WUFDOUUsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtnQkFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7YUFBRTtZQUN4RixFQUFFLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUF1QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pELENBQUMsQ0FBQztRQUNGLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBUSxjQUFjO1FBQ2hHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBdUMsaUJBQWlCO1FBQ25HLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFO1lBQUUsTUFBTSxFQUFFLENBQUE7U0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO0lBQ3ZHLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsSUFBSSxFQUFFLENBQUMsSUFBVyxFQUFFLEtBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssaUJBQWlCLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO0NBQzdHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIFBhZ3lKU09OICAgICA9IHJlYWRvbmx5IFtcIm5hdlwiLCAuLi5OYXZBcmdzXSB8IFtcImNvbWJvXCIsIC4uLkNvbWJvQXJnc10gfCBbXCJzZWxlY3RvclwiLCAuLi5TZWxlY3RvckFyZ3NdXG50eXBlIE5hdkFyZ3MgICAgICA9IHJlYWRvbmx5IFtUYWdzLCBTZXF1ZWxzLCBudWxsfExhYmVsU2VxdWVscywgc3RyaW5nP11cbnR5cGUgQ29tYm9BcmdzICAgID0gcmVhZG9ubHkgW3N0cmluZywgc3RyaW5nP11cbnR5cGUgU2VsZWN0b3JBcmdzID0gcmVhZG9ubHkgW251bWJlciwgc3RyaW5nLCBzdHJpbmc/XVxuaW50ZXJmYWNlIFRhZ3Mge1xuICAgIHJlYWRvbmx5IGJlZm9yZTogc3RyaW5nXG4gICAgcmVhZG9ubHkgbGluazogICBzdHJpbmdcbiAgICByZWFkb25seSBhY3RpdmU6IHN0cmluZ1xuICAgIHJlYWRvbmx5IGdhcDogICAgc3RyaW5nXG4gICAgcmVhZG9ubHkgYWZ0ZXI6ICBzdHJpbmdcbn1cbmludGVyZmFjZSBTZXF1ZWxzICAgICAgeyByZWFkb25seSBbd2lkdGg6c3RyaW5nXTogKHN0cmluZ3xudW1iZXJ8XCJnYXBcIilbXSB9XG5pbnRlcmZhY2UgTGFiZWxTZXF1ZWxzIHsgcmVhZG9ubHkgW3dpZHRoOnN0cmluZ106IHN0cmluZ1tdIH1cbmludGVyZmFjZSBOYXZFbGVtZW50IGV4dGVuZHMgRWxlbWVudCB7IHBhZ3lSZW5kZXIoKTogdm9pZCB9XG5cbmNvbnN0IFBhZ3kgPSB7XG4gICAgdmVyc2lvbjogXCI1LjcuNVwiLFxuXG4gICAgLy8gU2NhbiBmb3IgXCJkYXRhLXBhZ3ktanNvblwiIGVsZW1lbnRzLCBwYXJzZSB0aGVpciBKU09OIGNvbnRlbnQgYW5kIGNhbGwgdGhlaXIgaW5pdCBmdW5jdGlvbnNcbiAgICBpbml0KGFyZz86RWxlbWVudHxuZXZlcikge1xuICAgICAgICBjb25zdCB0YXJnZXQgICA9IGFyZyBpbnN0YW5jZW9mIEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudDtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0YXJnZXQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLXBhZ3ktanNvbl1cIik7XG4gICAgICAgIGNvbnN0IHdhcm4gICAgID0gKGVsOkVsZW1lbnQsIGVycjp1bmtub3duKSA9PiBjb25zb2xlLndhcm4oXCJQYWd5LmluaXQoKSBza2lwcGVkIGVsZW1lbnQ6ICVvXFxuJXNcIiwgZWwsIGVycik7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgY29uc3QganNvbiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5LWpzb25cIikgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBba2V5d29yZCwgLi4uYXJnc10gPSBKU09OLnBhcnNlKGpzb24pIGFzIFBhZ3lKU09OO1xuICAgICAgICAgICAgICAgIGlmIChrZXl3b3JkID09PSBcIm5hdlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIFBhZ3kuaW5pdE5hdihlbGVtZW50IGFzIE5hdkVsZW1lbnQsIGFyZ3MgYXMgTmF2QXJncyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXl3b3JkID09PSBcImNvbWJvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgUGFneS5pbml0Q29tYm8oZWxlbWVudCwgYXJncyBhcyBDb21ib0FyZ3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5d29yZCA9PT0gXCJzZWxlY3RvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIFBhZ3kuaW5pdFNlbGVjdG9yKGVsZW1lbnQsIGFyZ3MgYXMgU2VsZWN0b3JBcmdzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3YXJuKGVsZW1lbnQsIGBJbGxlZ2FsIFBhZ3lKU09OIGtleXdvcmQ6IGV4cGVjdGVkIFwibmF2XCJ8XCJjb21ib1wifFwic2VsZWN0b3JcIiwgZ290IFwiJHtrZXl3b3JkfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7IHdhcm4oZWxlbWVudCwgZXJyKSB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gSW5pdCB0aGUgKl9uYXZfanMgaGVscGVyc1xuICAgIGluaXROYXYoZWw6TmF2RWxlbWVudCwgW3RhZ3MsIHNlcXVlbHMsIGxhYmVsU2VxdWVscywgdHJpbVBhcmFtXTpOYXZBcmdzKSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGVsLnBhcmVudEVsZW1lbnQgPz8gZWw7XG4gICAgICAgIGNvbnN0IHdpZHRocyAgICA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNlcXVlbHMpLm1hcCh3ID0+IHBhcnNlSW50KHcpKS5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgICAgIGxldCBsYXN0V2lkdGggICA9IC0xO1xuICAgICAgICBjb25zdCBmaWxsSW4gICAgPSAobGluazpzdHJpbmcsIHBhZ2U6c3RyaW5nLCBsYWJlbDpzdHJpbmcpOnN0cmluZyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fL2csIHBhZ2UpLnJlcGxhY2UoL19fcGFneV9sYWJlbF9fL2csIGxhYmVsKTtcbiAgICAgICAgKGVsLnBhZ3lSZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gd2lkdGhzLmZpbmQodyA9PiB3IDwgY29udGFpbmVyLmNsaWVudFdpZHRoKSB8fCAwO1xuICAgICAgICAgICAgaWYgKHdpZHRoID09PSBsYXN0V2lkdGgpIHsgcmV0dXJuIH0gLy8gbm8gY2hhbmdlOiBhYm9ydFxuICAgICAgICAgICAgbGV0IGh0bWwgICAgID0gdGFncy5iZWZvcmU7XG4gICAgICAgICAgICBjb25zdCBzZXJpZXMgPSBzZXF1ZWxzW3dpZHRoLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gbGFiZWxTZXF1ZWxzPy5bd2lkdGgudG9TdHJpbmcoKV0gPz8gc2VyaWVzLm1hcChsID0+IGwudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gc2VyaWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSAgPSBzZXJpZXNbaV07XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBsYWJlbHNbaV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0cmltUGFyYW0gPT09IFwic3RyaW5nXCIgJiYgaXRlbSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IFBhZ3kudHJpbShmaWxsSW4odGFncy5saW5rLCBpdGVtLnRvU3RyaW5nKCksIGxhYmVsKSwgdHJpbVBhcmFtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gZmlsbEluKHRhZ3MubGluaywgaXRlbS50b1N0cmluZygpLCBsYWJlbCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSBcImdhcFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gdGFncy5nYXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYWN0aXZlIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBmaWxsSW4odGFncy5hY3RpdmUsIGl0ZW0sIGxhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBodG1sICs9IHRhZ3MuYWZ0ZXI7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgICAgIGVsLmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgaHRtbCk7XG4gICAgICAgICAgICBsYXN0V2lkdGggPSB3aWR0aDtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucyhcInBhZ3ktcmpzXCIpKSB7IFBhZ3kucmpzT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIpIH1cbiAgICB9LFxuXG4gICAgLy8gVGhlIG9ic2VydmVyIGluc3RhbmNlIGZvciByZXNwb25zaXZlIG5hdnNcbiAgICByanNPYnNlcnZlcjogbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICBlbnRyaWVzLmZpbHRlcihlID0+IGUuY29udGVudEJveFNpemUpXG4gICAgICAgICAgICAgICAuZm9yRWFjaChlID0+IGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGw8TmF2RWxlbWVudD4oXCIucGFneS1yanNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChyanMgPT4gcmpzLnBhZ3lSZW5kZXIoKSkpO1xuICAgIH0pLFxuXG4gICAgLy8gSW5pdCB0aGUgKl9jb21ib19uYXZfanMgaGVscGVyc1xuICAgIGluaXRDb21ibyhlbDpFbGVtZW50LCBbbGluaywgdHJpbVBhcmFtXTpDb21ib0FyZ3MpIHtcbiAgICAgICAgUGFneS5pbml0SW5wdXQoZWwsIGlucHV0VmFsdWUgPT4gW2lucHV0VmFsdWUsIGxpbmsucmVwbGFjZSgvX19wYWd5X3BhZ2VfXy8sIGlucHV0VmFsdWUpXSwgdHJpbVBhcmFtKTtcbiAgICB9LFxuXG4gICAgLy8gSW5pdCB0aGUgaXRlbXNfc2VsZWN0b3JfanMgaGVscGVyXG4gICAgaW5pdFNlbGVjdG9yKGVsOkVsZW1lbnQsIFtmcm9tLCBsaW5rLCB0cmltUGFyYW1dOlNlbGVjdG9yQXJncykge1xuICAgICAgICBQYWd5LmluaXRJbnB1dChlbCwgaW5wdXRWYWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYWdlID0gTWF0aC5tYXgoTWF0aC5jZWlsKGZyb20gLyBwYXJzZUludChpbnB1dFZhbHVlKSksIDEpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gbGluay5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fLywgcGFnZSkucmVwbGFjZSgvX19wYWd5X2l0ZW1zX18vLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBbcGFnZSwgaHRtbF07XG4gICAgICAgIH0sIHRyaW1QYXJhbSk7XG4gICAgfSxcblxuICAgIC8vIEluaXQgdGhlIGlucHV0IGVsZW1lbnRcbiAgICBpbml0SW5wdXQoZWw6RWxlbWVudCwgZ2V0VmFyczoodjpzdHJpbmcpPT5bc3RyaW5nLCBzdHJpbmddLCB0cmltUGFyYW0/OnN0cmluZykge1xuICAgICAgICBjb25zdCBpbnB1dCAgID0gZWwucXVlcnlTZWxlY3RvcihcImlucHV0XCIpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgY29uc3QgYWN0aW9uICA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LnZhbHVlID09PSBpbml0aWFsKSB7IHJldHVybiB9ICAvLyBub3QgY2hhbmdlZFxuICAgICAgICAgICAgY29uc3QgW21pbiwgdmFsLCBtYXhdID0gW2lucHV0Lm1pbiwgaW5wdXQudmFsdWUsIGlucHV0Lm1heF0ubWFwKG4gPT4gcGFyc2VJbnQobikgfHwgMCk7XG4gICAgICAgICAgICBpZiAodmFsIDwgbWluIHx8IHZhbCA+IG1heCkgeyAgLy8gcmVzZXQgaW52YWxpZC9vdXQtb2YtcmFuZ2VcbiAgICAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IFtwYWdlLCBodG1sXSA9IGdldFZhcnMoaW5wdXQudmFsdWUpOyAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRyaW1QYXJhbSA9PT0gXCJzdHJpbmdcIiAmJiBwYWdlID09PSBcIjFcIikgeyBodG1sID0gUGFneS50cmltKGh0bWwsIHRyaW1QYXJhbSkgfVxuICAgICAgICAgICAgZWwuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLCBodG1sKTtcbiAgICAgICAgICAgIChlbC5xdWVyeVNlbGVjdG9yKFwiYVwiKSBhcyBIVE1MQW5jaG9yRWxlbWVudCkuY2xpY2soKTtcbiAgICAgICAgfTtcbiAgICAgICAgW1wiY2hhbmdlXCIsIFwiZm9jdXNcIl0uZm9yRWFjaChlID0+IGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoZSwgaW5wdXQuc2VsZWN0KSk7ICAgICAgICAvLyBhdXRvLXNlbGVjdFxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgYWN0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGFjdGlvblxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZSA9PiB7IGlmIChlLmtleSA9PT0gXCJFbnRlclwiKSB7IGFjdGlvbigpIH0gfSk7IC8vIHRyaWdnZXIgYWN0aW9uXG4gICAgfSxcblxuICAgIC8vIFRyaW0gdGhlICR7cGFnZS1wYXJhbX09MSBwYXJhbXMgaW4gbGlua3NcbiAgICB0cmltOiAobGluazpzdHJpbmcsIHBhcmFtOnN0cmluZykgPT4gbGluay5yZXBsYWNlKG5ldyBSZWdFeHAoYFs/Jl0ke3BhcmFtfT0xXFxcXGIoPyEmKXxcXFxcYiR7cGFyYW19PTEmYCksIFwiXCIpXG59O1xuIl19
|
@@ -1,30 +0,0 @@
|
|
1
|
-
declare type NavArgs = readonly [Tags, Sequels, null | LabelSequels, string?];
|
2
|
-
declare type ComboArgs = readonly [string, string?];
|
3
|
-
declare type SelectorArgs = readonly [number, string, string?];
|
4
|
-
interface Tags {
|
5
|
-
readonly before: string;
|
6
|
-
readonly link: string;
|
7
|
-
readonly active: string;
|
8
|
-
readonly gap: string;
|
9
|
-
readonly after: string;
|
10
|
-
}
|
11
|
-
interface Sequels {
|
12
|
-
readonly [width: string]: (string | number | "gap")[];
|
13
|
-
}
|
14
|
-
interface LabelSequels {
|
15
|
-
readonly [width: string]: string[];
|
16
|
-
}
|
17
|
-
interface NavElement extends Element {
|
18
|
-
pagyRender(): void;
|
19
|
-
}
|
20
|
-
declare const Pagy: {
|
21
|
-
version: string;
|
22
|
-
init(arg?: Element | never): void;
|
23
|
-
initNav(el: NavElement, [tags, sequels, labelSequels, trimParam]: NavArgs): void;
|
24
|
-
rjsObserver: ResizeObserver;
|
25
|
-
initCombo(el: Element, [link, trimParam]: ComboArgs): void;
|
26
|
-
initSelector(el: Element, [from, link, trimParam]: SelectorArgs): void;
|
27
|
-
initInput(el: Element, getVars: (v: string) => [string, string], trimParam?: string): void;
|
28
|
-
trim: (link: string, param: string) => string;
|
29
|
-
};
|
30
|
-
export default Pagy;
|
@@ -1,117 +0,0 @@
|
|
1
|
-
const Pagy = {
|
2
|
-
version: "5.7.5",
|
3
|
-
// Scan for "data-pagy-json" elements, parse their JSON content and call their init functions
|
4
|
-
init(arg) {
|
5
|
-
const target = arg instanceof Element ? arg : document;
|
6
|
-
const elements = target.querySelectorAll("[data-pagy-json]");
|
7
|
-
const warn = (el, err) => console.warn("Pagy.init() skipped element: %o\n%s", el, err);
|
8
|
-
for (const element of elements) {
|
9
|
-
const json = element.getAttribute("data-pagy-json");
|
10
|
-
try {
|
11
|
-
const [keyword, ...args] = JSON.parse(json);
|
12
|
-
if (keyword === "nav") {
|
13
|
-
Pagy.initNav(element, args);
|
14
|
-
}
|
15
|
-
else if (keyword === "combo") {
|
16
|
-
Pagy.initCombo(element, args);
|
17
|
-
}
|
18
|
-
else if (keyword === "selector") {
|
19
|
-
Pagy.initSelector(element, args);
|
20
|
-
}
|
21
|
-
else {
|
22
|
-
warn(element, `Illegal PagyJSON keyword: expected "nav"|"combo"|"selector", got "${keyword}"`);
|
23
|
-
}
|
24
|
-
}
|
25
|
-
catch (err) {
|
26
|
-
warn(element, err);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
},
|
30
|
-
// Init the *_nav_js helpers
|
31
|
-
initNav(el, [tags, sequels, labelSequels, trimParam]) {
|
32
|
-
const container = el.parentElement ?? el;
|
33
|
-
const widths = Object.getOwnPropertyNames(sequels).map(w => parseInt(w)).sort((a, b) => b - a);
|
34
|
-
let lastWidth = -1;
|
35
|
-
const fillIn = (link, page, label) => link.replace(/__pagy_page__/g, page).replace(/__pagy_label__/g, label);
|
36
|
-
(el.pagyRender = function () {
|
37
|
-
const width = widths.find(w => w < container.clientWidth) || 0;
|
38
|
-
if (width === lastWidth) {
|
39
|
-
return;
|
40
|
-
} // no change: abort
|
41
|
-
let html = tags.before;
|
42
|
-
const series = sequels[width.toString()];
|
43
|
-
const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());
|
44
|
-
for (const i in series) {
|
45
|
-
const item = series[i];
|
46
|
-
const label = labels[i];
|
47
|
-
if (typeof trimParam === "string" && item === 1) {
|
48
|
-
html += Pagy.trim(fillIn(tags.link, item.toString(), label), trimParam);
|
49
|
-
}
|
50
|
-
else if (typeof item === "number") {
|
51
|
-
html += fillIn(tags.link, item.toString(), label);
|
52
|
-
}
|
53
|
-
else if (item === "gap") {
|
54
|
-
html += tags.gap;
|
55
|
-
}
|
56
|
-
else { // active page
|
57
|
-
html += fillIn(tags.active, item, label);
|
58
|
-
}
|
59
|
-
}
|
60
|
-
html += tags.after; // eslint-disable-line align-assignments/align-assignments
|
61
|
-
el.innerHTML = "";
|
62
|
-
el.insertAdjacentHTML("afterbegin", html);
|
63
|
-
lastWidth = width;
|
64
|
-
})();
|
65
|
-
if (el.classList.contains("pagy-rjs")) {
|
66
|
-
Pagy.rjsObserver.observe(container);
|
67
|
-
}
|
68
|
-
},
|
69
|
-
// The observer instance for responsive navs
|
70
|
-
rjsObserver: new ResizeObserver(entries => {
|
71
|
-
entries.filter(e => e.contentBoxSize)
|
72
|
-
.forEach(e => e.target.querySelectorAll(".pagy-rjs")
|
73
|
-
.forEach(rjs => rjs.pagyRender()));
|
74
|
-
}),
|
75
|
-
// Init the *_combo_nav_js helpers
|
76
|
-
initCombo(el, [link, trimParam]) {
|
77
|
-
Pagy.initInput(el, inputValue => [inputValue, link.replace(/__pagy_page__/, inputValue)], trimParam);
|
78
|
-
},
|
79
|
-
// Init the items_selector_js helper
|
80
|
-
initSelector(el, [from, link, trimParam]) {
|
81
|
-
Pagy.initInput(el, inputValue => {
|
82
|
-
const page = Math.max(Math.ceil(from / parseInt(inputValue)), 1).toString();
|
83
|
-
const html = link.replace(/__pagy_page__/, page).replace(/__pagy_items__/, inputValue);
|
84
|
-
return [page, html];
|
85
|
-
}, trimParam);
|
86
|
-
},
|
87
|
-
// Init the input element
|
88
|
-
initInput(el, getVars, trimParam) {
|
89
|
-
const input = el.querySelector("input");
|
90
|
-
const initial = input.value;
|
91
|
-
const action = function () {
|
92
|
-
if (input.value === initial) {
|
93
|
-
return;
|
94
|
-
} // not changed
|
95
|
-
const [min, val, max] = [input.min, input.value, input.max].map(n => parseInt(n) || 0);
|
96
|
-
if (val < min || val > max) { // reset invalid/out-of-range
|
97
|
-
input.value = initial;
|
98
|
-
input.select();
|
99
|
-
return;
|
100
|
-
}
|
101
|
-
let [page, html] = getVars(input.value); // eslint-disable-line prefer-const
|
102
|
-
if (typeof trimParam === "string" && page === "1") {
|
103
|
-
html = Pagy.trim(html, trimParam);
|
104
|
-
}
|
105
|
-
el.insertAdjacentHTML("afterbegin", html);
|
106
|
-
el.querySelector("a").click();
|
107
|
-
};
|
108
|
-
["change", "focus"].forEach(e => input.addEventListener(e, input.select)); // auto-select
|
109
|
-
input.addEventListener("focusout", action); // trigger action
|
110
|
-
input.addEventListener("keypress", e => { if (e.key === "Enter") {
|
111
|
-
action();
|
112
|
-
} }); // trigger action
|
113
|
-
},
|
114
|
-
// Trim the ${page-param}=1 params in links
|
115
|
-
trim: (link, param) => link.replace(new RegExp(`[?&]${param}=1\\b(?!&)|\\b${param}=1&`), "")
|
116
|
-
};
|
117
|
-
export default Pagy;
|
data/lib/javascripts/pagy.js
DELETED
@@ -1 +0,0 @@
|
|
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.5",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&")),"")}},a=i;window.Pagy=a}();
|
data/lib/locales/ar.yml
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# :arabic pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
ar:
|
4
|
-
pagy:
|
5
|
-
|
6
|
-
item_name:
|
7
|
-
zero: "صفر"
|
8
|
-
one: "عنصر"
|
9
|
-
two: "عنصرين"
|
10
|
-
few: "قليل"
|
11
|
-
many: "كثير"
|
12
|
-
other: "عناصر"
|
13
|
-
|
14
|
-
nav:
|
15
|
-
prev: "‹ السابق"
|
16
|
-
next: "التالي ›"
|
17
|
-
gap: "…"
|
18
|
-
|
19
|
-
info:
|
20
|
-
no_items: "لا يوجد %{item_name}"
|
21
|
-
single_page: "عرض <b>%{count}</b> %{item_name}"
|
22
|
-
multiple_pages: "عرض %{item_name} <b>%{from}-%{to}</b> من اجمالي <b>%{count}</b>"
|
23
|
-
|
24
|
-
combo_nav_js: "الصفحة %{page_input} من %{pages}"
|
25
|
-
|
26
|
-
items_selector_js: "عرض %{items_input} %{item_name} لكل صفحة"
|
data/lib/locales/bg.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# :one_other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
bg:
|
4
|
-
pagy:
|
5
|
-
|
6
|
-
item_name:
|
7
|
-
one: "резултат"
|
8
|
-
other: "резултати"
|
9
|
-
|
10
|
-
nav:
|
11
|
-
prev: "‹ Предишна"
|
12
|
-
next: "Следваща ›"
|
13
|
-
gap: "…"
|
14
|
-
|
15
|
-
info:
|
16
|
-
no_items: "Няма намерени %{item_name}"
|
17
|
-
single_page: "Показани са <b>%{count}</b> %{item_name}"
|
18
|
-
multiple_pages: "Показани са %{item_name} <b>%{from}-%{to}</b> от <b>%{count}</b> общо"
|
19
|
-
|
20
|
-
combo_nav_js: "<label>Страница %{page_input} от %{pages}</label>"
|
21
|
-
|
22
|
-
items_selector_js: "<label>Покажи %{items_input} %{item_name} на страница</label>"
|
data/lib/locales/bs.yml
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# :east_slavic pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
bs:
|
4
|
-
pagy:
|
5
|
-
|
6
|
-
item_name:
|
7
|
-
one: "stavka"
|
8
|
-
few: "stavke"
|
9
|
-
many: "stavki"
|
10
|
-
other: "stavki"
|
11
|
-
|
12
|
-
nav:
|
13
|
-
prev: "‹ Prethodna"
|
14
|
-
next: "Sljedeća ›"
|
15
|
-
gap: "…"
|
16
|
-
|
17
|
-
info:
|
18
|
-
no_items: "Nije pronađena %{item_name}"
|
19
|
-
single_page: "Prikazuje se <b>%{count}</b> %{item_name}"
|
20
|
-
multiple_pages: "Prikaz %{item_name} <b>%{from}-%{to}</b> od <b>%{count}</b> ukupno"
|
21
|
-
|
22
|
-
combo_nav_js: "<label>Stranica %{page_input} od %{pages}</label>"
|
23
|
-
|
24
|
-
items_selector_js: "<label>Prikaži %{items_input} %{item_name} po stranici</label>"
|
data/lib/locales/ca.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# :one_other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
ca:
|
4
|
-
pagy:
|
5
|
-
|
6
|
-
item_name:
|
7
|
-
one: "element"
|
8
|
-
other: "elements"
|
9
|
-
|
10
|
-
nav:
|
11
|
-
prev: "‹ Anterior"
|
12
|
-
next: "Següent ›"
|
13
|
-
gap: "…"
|
14
|
-
|
15
|
-
info:
|
16
|
-
no_items: "No s'ha trobat cap resultat"
|
17
|
-
single_page: "Mostrant <b>%{count}</b> %{item_name}"
|
18
|
-
multiple_pages: "Mostrant %{item_name} <b>%{from}-%{to}</b> de <b>%{count}</b> en total"
|
19
|
-
|
20
|
-
combo_nav_js: "<label>Pàgina %{page_input} de %{pages}</label>"
|
21
|
-
|
22
|
-
items_selector_js: "<label>Mostra %{items_input} %{item_name} per pàgina</label>"
|
data/lib/locales/cs.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# :czech pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb)
|
2
|
-
|
3
|
-
cs:
|
4
|
-
pagy:
|
5
|
-
item_name:
|
6
|
-
one: "položka"
|
7
|
-
few: "položek"
|
8
|
-
other: "položky"
|
9
|
-
|
10
|
-
nav:
|
11
|
-
prev: "‹ Předchozí"
|
12
|
-
next: "Další ›"
|
13
|
-
gap: "…"
|
14
|
-
|
15
|
-
info:
|
16
|
-
no_items: "Nic nebylo nalezeno"
|
17
|
-
single_page: "Zobrazeno <b>%{count}</b> %{item_name}"
|
18
|
-
multiple_pages: "Zobrazeno %{item_name} <b>%{from}-%{to}</b> z <b>%{count}</b> celkem"
|
19
|
-
|
20
|
-
combo_nav_js: "<label>Strana %{page_input} z %{pages}</label>"
|
21
|
-
|
22
|
-
items_selector_js: "<label>Zobrazit %{items_input} %{item_name} na stránce</label>"
|