pagy 7.0.11 → 8.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/apps/calendar.ru +2196 -0
  3. data/apps/demo.ru +452 -0
  4. data/apps/rails.ru +205 -0
  5. data/apps/repro.ru +168 -0
  6. data/bin/pagy +83 -0
  7. data/{lib/config → config}/pagy.rb +6 -17
  8. data/javascripts/pagy-dev.js +114 -0
  9. data/{lib/javascripts → javascripts}/pagy-module.js +12 -10
  10. data/javascripts/pagy.js +1 -0
  11. data/lib/optimist.rb +1022 -0
  12. data/lib/pagy/calendar.rb +1 -1
  13. data/lib/pagy/console.rb +2 -2
  14. data/lib/pagy/countless.rb +1 -1
  15. data/lib/pagy/extras/bootstrap.rb +52 -63
  16. data/lib/pagy/extras/bulma.rb +49 -64
  17. data/lib/pagy/extras/calendar.rb +2 -2
  18. data/lib/pagy/extras/countless.rb +1 -1
  19. data/lib/pagy/extras/foundation.rb +49 -61
  20. data/lib/pagy/extras/headers.rb +1 -1
  21. data/lib/pagy/extras/items.rb +21 -18
  22. data/lib/pagy/extras/{frontend_helpers.rb → js_tools.rb} +4 -1
  23. data/lib/pagy/extras/jsonapi.rb +1 -1
  24. data/lib/pagy/extras/materialize.rb +53 -51
  25. data/lib/pagy/extras/metadata.rb +1 -1
  26. data/lib/pagy/extras/pagy.rb +82 -0
  27. data/lib/pagy/extras/semantic.rb +47 -50
  28. data/lib/pagy/extras/trim.rb +12 -12
  29. data/lib/pagy/extras/uikit.rb +48 -49
  30. data/lib/pagy/frontend.rb +33 -50
  31. data/lib/pagy/url_helpers.rb +1 -2
  32. data/lib/pagy.rb +15 -14
  33. data/{lib/locales → locales}/ar.yml +2 -2
  34. data/{lib/locales → locales}/be.yml +4 -4
  35. data/{lib/locales → locales}/bg.yml +4 -4
  36. data/{lib/locales → locales}/bs.yml +4 -4
  37. data/{lib/locales → locales}/ca.yml +4 -4
  38. data/locales/ckb.yml +18 -0
  39. data/{lib/locales → locales}/cs.yml +4 -4
  40. data/{lib/locales → locales}/da.yml +4 -4
  41. data/{lib/locales → locales}/de.yml +4 -4
  42. data/{lib/locales → locales}/en.yml +4 -4
  43. data/{lib/locales → locales}/es.yml +2 -2
  44. data/{lib/locales → locales}/fr.yml +4 -4
  45. data/{lib/locales → locales}/hr.yml +4 -4
  46. data/{lib/locales → locales}/id.yml +4 -4
  47. data/{lib/locales → locales}/it.yml +4 -4
  48. data/{lib/locales → locales}/ja.yml +4 -4
  49. data/{lib/locales → locales}/km.yml +4 -4
  50. data/{lib/locales → locales}/ko.yml +4 -4
  51. data/{lib/locales → locales}/nb.yml +4 -4
  52. data/{lib/locales → locales}/nl.yml +4 -4
  53. data/{lib/locales → locales}/nn.yml +4 -4
  54. data/{lib/locales → locales}/pl.yml +4 -4
  55. data/{lib/locales → locales}/pt-BR.yml +2 -2
  56. data/{lib/locales → locales}/pt.yml +2 -2
  57. data/locales/ru.yml +25 -0
  58. data/{lib/locales → locales}/sr.yml +4 -4
  59. data/{lib/locales → locales}/sv-SE.yml +4 -4
  60. data/{lib/locales → locales}/sv.yml +4 -4
  61. data/{lib/locales → locales}/sw.yml +4 -4
  62. data/{lib/locales → locales}/ta.yml +4 -4
  63. data/{lib/locales → locales}/tr.yml +4 -4
  64. data/{lib/locales → locales}/uk.yml +4 -4
  65. data/{lib/locales → locales}/vi.yml +4 -4
  66. data/{lib/locales → locales}/zh-CN.yml +4 -4
  67. data/{lib/locales → locales}/zh-HK.yml +4 -4
  68. data/{lib/locales → locales}/zh-TW.yml +4 -4
  69. data/pkg/pagy-8.0.1.gem +0 -0
  70. data/{lib/stylesheets → stylesheets}/pagy.css +19 -34
  71. data/{lib/stylesheets → stylesheets}/pagy.scss +17 -19
  72. data/stylesheets/pagy.tailwind.css +21 -0
  73. metadata +65 -51
  74. data/lib/javascripts/pagy-dev.js +0 -112
  75. data/lib/javascripts/pagy.js +0 -1
  76. data/lib/locales/ckb.yml +0 -18
  77. data/lib/locales/ru.yml +0 -27
  78. data/lib/pagy/extras/navs.rb +0 -51
  79. data/lib/pagy/extras/support.rb +0 -40
  80. data/lib/stylesheets/pagy.tailwind.scss +0 -24
  81. /data/{lib/javascripts → javascripts}/pagy-module.d.ts +0 -0
@@ -17,7 +17,7 @@ ta:
17
17
  other: "பதிவுகள்"
18
18
  info:
19
19
  no_items: "%{item_name} கிடைக்கவில்லை"
20
- single_page: "<b>%{count}</b> %{item_name} காட்டப்படுகின்றது"
21
- multiple_pages: "மொத்தம் <b>%{count}</b> %{item_name}, காட்டப்படுபவை <b>%{from}-%{to}</b>"
22
- combo_nav_js: "<label>%{pages}-இல் %{page_input}-வது பக்கம்</label>"
23
- items_selector_js: "<label>ஒரு பக்கத்திற்கு %{items_input} %{item_name} காட்டு</label>"
20
+ single_page: "%{count} %{item_name} காட்டப்படுகின்றது"
21
+ multiple_pages: "மொத்தம் %{count} %{item_name}, காட்டப்படுபவை %{from}-%{to}"
22
+ combo_nav_js: "%{pages}-இல் %{page_input}-வது பக்கம்"
23
+ items_selector_js: "ஒரு பக்கத்திற்கு %{items_input} %{item_name} காட்டு"
@@ -13,7 +13,7 @@ tr:
13
13
  item_name: "kayıt"
14
14
  info:
15
15
  no_items: "Hiç %{item_name} bulunamadı"
16
- single_page: "Toplam <b>%{count}</b> %{item_name} gösteriliyor"
17
- multiple_pages: "<b>%{count}</b> %{item_name} içerisinden <b>%{from}-%{to}</b> kadarı gösteriliyor"
18
- combo_nav_js: "<label>Sayfa %{page_input} / %{pages}</label>"
19
- items_selector_js: "<label>Sayfada %{items_input} %{item_name} göster</label>"
16
+ single_page: "Toplam %{count} %{item_name} gösteriliyor"
17
+ multiple_pages: "%{count} %{item_name} içerisinden %{from}-%{to} kadarı gösteriliyor"
18
+ combo_nav_js: "Sayfa %{page_input} / %{pages}"
19
+ items_selector_js: "Sayfada %{items_input} %{item_name} göster"
@@ -19,7 +19,7 @@ uk:
19
19
  other: "записів"
20
20
  info:
21
21
  no_items: "Більше %{item_name} немає"
22
- single_page: "<b>%{count}</b> %{item_name}"
23
- multiple_pages: "Загалом <b>%{count}</b> %{item_name}, показані з <b>%{from}</b> по <b>%{to}</b>"
24
- combo_nav_js: "<label>Сторінка %{page_input} з %{pages}</label>"
25
- items_selector_js: "<label>Показати %{items_input} %{item_name} на сторінці</label>"
22
+ single_page: "%{count} %{item_name}"
23
+ multiple_pages: "Загалом %{count} %{item_name}, показані з %{from} по %{to}"
24
+ combo_nav_js: "Сторінка %{page_input} з %{pages}"
25
+ items_selector_js: "Показати %{items_input} %{item_name} на сторінці"
@@ -11,7 +11,7 @@ vi:
11
11
  item_name: "kết quả"
12
12
  info:
13
13
  no_items: "Không tìm thấy %{item_name} nào"
14
- single_page: "<b>%{count}</b> %{item_name}"
15
- multiple_pages: "Đang hiển thị <b>%{from}-%{to}</b> trong tổng số <b>%{count} %{item_name}</b>"
16
- combo_nav_js: "<label>Trang %{page_input} trên %{pages}</label>"
17
- items_selector_js: "<label>Hiển thị %{items_input} %{item_name} mỗi trang</label>"
14
+ single_page: "%{count} %{item_name}"
15
+ multiple_pages: "Đang hiển thị %{from}-%{to} trong tổng số %{count} %{item_name}"
16
+ combo_nav_js: "Trang %{page_input} trên %{pages}"
17
+ items_selector_js: "Hiển thị %{items_input} %{item_name} mỗi trang"
@@ -13,7 +13,7 @@ zh-CN:
13
13
  item_name: ""
14
14
  info:
15
15
  no_items: "项目未找到"
16
- single_page: "显示<b>%{count}</b> 项%{item_name}"
17
- multiple_pages: "共 <b>%{count}</b> 项%{item_name},显示 <b>%{from}-%{to}</b>"
18
- combo_nav_js: "<label>第 %{page_input} / %{pages} 页</label>"
19
- items_selector_js: "<label>每页显示 %{items_input} 条%</label>"
16
+ single_page: "显示%{count} 项%{item_name}"
17
+ multiple_pages: "共 %{count} 项%{item_name},显示 %{from}-%{to}"
18
+ combo_nav_js: " %{page_input} / %{pages} "
19
+ items_selector_js: "每页显示 %{items_input} 条%"
@@ -13,7 +13,7 @@ zh-HK:
13
13
  item_name: ""
14
14
  info:
15
15
  no_items: "記錄未搵到"
16
- single_page: "顯示 <b>%{count}</b> %{item_name}"
17
- multiple_pages: "共 <b>%{count}</b> %{item_name},顯示 <b>%{from}-%{to}</b>"
18
- combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
19
- items_selector_js: "<label>每頁顯示 %{items_input} 記錄</label>"
16
+ single_page: "顯示 %{count} %{item_name}"
17
+ multiple_pages: "共 %{count} %{item_name},顯示 %{from}-%{to}"
18
+ combo_nav_js: " %{page_input} / %{pages} "
19
+ items_selector_js: "每頁顯示 %{items_input} 記錄"
@@ -13,7 +13,7 @@ zh-TW:
13
13
  item_name: ""
14
14
  info:
15
15
  no_items: "沒找到項"
16
- single_page: "顯示 <b>%{count}</b> 項%{item_name}"
17
- multiple_pages: "共 <b>%{count}</b> 項%{item_name},顯示 <b>%{from}-%{to}</b>"
18
- combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
19
- items_selector_js: "<label>每頁顯示 %{items_input} 項%{item_name}</label>"
16
+ single_page: "顯示 %{count} 項%{item_name}"
17
+ multiple_pages: "共 %{count} 項%{item_name},顯示 %{from}-%{to}"
18
+ combo_nav_js: " %{page_input} / %{pages} "
19
+ items_selector_js: "每頁顯示 %{items_input} 項%{item_name}"
Binary file
@@ -1,61 +1,46 @@
1
1
  .pagy {
2
2
  display: flex;
3
- }
4
-
5
- .pagy > :not([hidden]) ~ :not([hidden]) {
6
- --space-reverse: 0;
7
- margin-right: calc(0.25rem * var(--space-reverse));
8
- margin-left: calc(0.25rem * calc(1 - var(--space-reverse)));
9
- }
10
-
11
- .pagy {
12
3
  font-family: sans-serif;
13
4
  font-size: 0.875rem;
14
5
  line-height: 1.25rem;
15
6
  font-weight: 600;
16
- color: rgb(107 114 128);
7
+ color: #6b7280;
17
8
  }
18
-
19
- .pagy .page.gap {
20
- /* if you need to customize it */
9
+ .pagy > :not([hidden]) ~ :not([hidden]) {
10
+ --space-reverse: 0;
11
+ margin-right: calc(0.25rem * var(--space-reverse));
12
+ margin-left: calc(0.25rem * calc(1 - var(--space-reverse)));
21
13
  }
22
-
23
- .pagy .page a {
14
+ .pagy a:not(.gap) {
24
15
  display: block;
25
16
  text-decoration: none;
26
17
  border-radius: 0.5rem;
27
- background-color: rgb(229 231 235);
18
+ background-color: #e5e7eb;
28
19
  padding: 0.25rem 0.75rem;
29
20
  color: inherit;
30
21
  }
31
-
32
- .pagy .page a:hover {
33
- background-color: rgb(209 213 219);
22
+ .pagy a:not(.gap):hover {
23
+ background-color: #d1d5db;
34
24
  }
35
-
36
- .pagy .page.active a {
25
+ .pagy a:not(.gap):not([href]) { /* disabled links */
37
26
  cursor: default;
38
- background-color: rgb(156 163 175);
39
- color: rgb(255 255 255);
27
+ background-color: #f3f4f6;
28
+ color: #d1d5db;
40
29
  }
41
-
42
- .pagy .page.disabled a {
43
- cursor: default;
44
- background-color: rgb(243 244 246);
45
- color: rgb(209 213 219);
30
+ .pagy a:not(.gap).current {
31
+ background-color: #9ca3af;
32
+ color: white;
46
33
  }
47
-
48
- .pagy .pagy-combo-input, .pagy.pagy-items-selector-js {
34
+ .pagy label {
49
35
  white-space: nowrap;
50
36
  display: inline-block;
51
37
  border-radius: 0.5rem;
52
- background-color: rgb(229 231 235);
38
+ background-color: #e5e7eb;
53
39
  padding: 0.125rem 0.75rem;
54
40
  }
55
-
56
- .pagy .pagy-combo-input input, .pagy.pagy-items-selector-js input {
41
+ .pagy label input {
57
42
  line-height: 1.5rem;
58
43
  border-radius: 0.375rem;
59
44
  border-style: none;
60
- background-color: rgb(243 244 246);
45
+ background-color: #f3f4f6;
61
46
  }
@@ -10,31 +10,29 @@
10
10
  margin-right: calc(0.25rem * var(--space-reverse));
11
11
  margin-left: calc(0.25rem * calc(1 - var(--space-reverse)));
12
12
  }
13
- .page {
14
- a {
15
- display: block;
16
- text-decoration: none;
17
- border-radius: 0.5rem;
18
- background-color: rgb(229 231 235);
19
- padding: 0.25rem 0.75rem;
20
- color: inherit;
21
- &:hover {
22
- background-color: rgb(209 213 219);
23
- }
24
- }
25
- &.active a {
26
- cursor: default;
27
- background-color: rgb(156 163 175);
28
- color: rgb(255 255 255);
13
+
14
+ a:not(.gap) {
15
+ display: block;
16
+ text-decoration: none;
17
+ border-radius: 0.5rem;
18
+ background-color: rgb(229 231 235);
19
+ padding: 0.25rem 0.75rem;
20
+ color: inherit;
21
+ &:hover {
22
+ background-color: rgb(209 213 219);
29
23
  }
30
- &.disabled a {
24
+ &:not([href]) { /* disabled links */
31
25
  cursor: default;
32
26
  background-color: rgb(243 244 246);
33
27
  color: rgb(209 213 219);
34
28
  }
35
- &.gap { } /* if you need to customize it */
29
+ &.current {
30
+ background-color: rgb(156 163 175);
31
+ color: rgb(255 255 255);
32
+ }
36
33
  }
37
- .pagy-combo-input, &.pagy-items-selector-js {
34
+
35
+ label {
38
36
  white-space: nowrap;
39
37
  display: inline-block;
40
38
  border-radius: 0.5rem;
@@ -0,0 +1,21 @@
1
+ .pagy {
2
+ @apply flex space-x-1 font-semibold text-sm text-gray-500;
3
+ a:not(.gap) {
4
+ @apply block rounded-lg px-3 py-1 bg-gray-200;
5
+ &:hover {
6
+ @apply bg-gray-300;
7
+ }
8
+ &:not([href]) { /* disabled links */
9
+ @apply text-gray-300 bg-gray-100 cursor-default;
10
+ }
11
+ &.current {
12
+ @apply text-white bg-gray-400;
13
+ }
14
+ }
15
+ label {
16
+ @apply inline-block whitespace-nowrap bg-gray-200 rounded-lg px-3 py-0.5;
17
+ input {
18
+ @apply bg-gray-100 border-none rounded-md;
19
+ }
20
+ }
21
+ }
metadata CHANGED
@@ -1,64 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagy
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.11
4
+ version: 8.0.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: 2024-03-18 00:00:00.000000000 Z
11
+ date: 2024-04-06 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
- - lib/config/pagy.rb
22
- - lib/javascripts/pagy-dev.js
23
- - lib/javascripts/pagy-module.d.ts
24
- - lib/javascripts/pagy-module.js
25
- - lib/javascripts/pagy.js
26
- - lib/locales/ar.yml
27
- - lib/locales/be.yml
28
- - lib/locales/bg.yml
29
- - lib/locales/bs.yml
30
- - lib/locales/ca.yml
31
- - lib/locales/ckb.yml
32
- - lib/locales/cs.yml
33
- - lib/locales/da.yml
34
- - lib/locales/de.yml
35
- - lib/locales/en.yml
36
- - lib/locales/es.yml
37
- - lib/locales/fr.yml
38
- - lib/locales/hr.yml
39
- - lib/locales/id.yml
40
- - lib/locales/it.yml
41
- - lib/locales/ja.yml
42
- - lib/locales/km.yml
43
- - lib/locales/ko.yml
44
- - lib/locales/nb.yml
45
- - lib/locales/nl.yml
46
- - lib/locales/nn.yml
47
- - lib/locales/pl.yml
48
- - lib/locales/pt-BR.yml
49
- - lib/locales/pt.yml
50
- - lib/locales/ru.yml
51
- - lib/locales/sr.yml
52
- - lib/locales/sv-SE.yml
53
- - lib/locales/sv.yml
54
- - lib/locales/sw.yml
55
- - lib/locales/ta.yml
56
- - lib/locales/tr.yml
57
- - lib/locales/uk.yml
58
- - lib/locales/vi.yml
59
- - lib/locales/zh-CN.yml
60
- - lib/locales/zh-HK.yml
61
- - lib/locales/zh-TW.yml
22
+ - apps/calendar.ru
23
+ - apps/demo.ru
24
+ - apps/rails.ru
25
+ - apps/repro.ru
26
+ - bin/pagy
27
+ - config/pagy.rb
28
+ - javascripts/pagy-dev.js
29
+ - javascripts/pagy-module.d.ts
30
+ - javascripts/pagy-module.js
31
+ - javascripts/pagy.js
32
+ - lib/optimist.rb
62
33
  - lib/pagy.rb
63
34
  - lib/pagy/backend.rb
64
35
  - lib/pagy/calendar.rb
@@ -79,29 +50,65 @@ files:
79
50
  - lib/pagy/extras/countless.rb
80
51
  - lib/pagy/extras/elasticsearch_rails.rb
81
52
  - lib/pagy/extras/foundation.rb
82
- - lib/pagy/extras/frontend_helpers.rb
83
53
  - lib/pagy/extras/gearbox.rb
84
54
  - lib/pagy/extras/headers.rb
85
55
  - lib/pagy/extras/i18n.rb
86
56
  - lib/pagy/extras/items.rb
57
+ - lib/pagy/extras/js_tools.rb
87
58
  - lib/pagy/extras/jsonapi.rb
88
59
  - lib/pagy/extras/materialize.rb
89
60
  - lib/pagy/extras/meilisearch.rb
90
61
  - lib/pagy/extras/metadata.rb
91
- - lib/pagy/extras/navs.rb
92
62
  - lib/pagy/extras/overflow.rb
63
+ - lib/pagy/extras/pagy.rb
93
64
  - lib/pagy/extras/searchkick.rb
94
65
  - lib/pagy/extras/semantic.rb
95
66
  - lib/pagy/extras/standalone.rb
96
- - lib/pagy/extras/support.rb
97
67
  - lib/pagy/extras/trim.rb
98
68
  - lib/pagy/extras/uikit.rb
99
69
  - lib/pagy/frontend.rb
100
70
  - lib/pagy/i18n.rb
101
71
  - lib/pagy/url_helpers.rb
102
- - lib/stylesheets/pagy.css
103
- - lib/stylesheets/pagy.scss
104
- - lib/stylesheets/pagy.tailwind.scss
72
+ - locales/ar.yml
73
+ - locales/be.yml
74
+ - locales/bg.yml
75
+ - locales/bs.yml
76
+ - locales/ca.yml
77
+ - locales/ckb.yml
78
+ - locales/cs.yml
79
+ - locales/da.yml
80
+ - locales/de.yml
81
+ - locales/en.yml
82
+ - locales/es.yml
83
+ - locales/fr.yml
84
+ - locales/hr.yml
85
+ - locales/id.yml
86
+ - locales/it.yml
87
+ - locales/ja.yml
88
+ - locales/km.yml
89
+ - locales/ko.yml
90
+ - locales/nb.yml
91
+ - locales/nl.yml
92
+ - locales/nn.yml
93
+ - locales/pl.yml
94
+ - locales/pt-BR.yml
95
+ - locales/pt.yml
96
+ - locales/ru.yml
97
+ - locales/sr.yml
98
+ - locales/sv-SE.yml
99
+ - locales/sv.yml
100
+ - locales/sw.yml
101
+ - locales/ta.yml
102
+ - locales/tr.yml
103
+ - locales/uk.yml
104
+ - locales/vi.yml
105
+ - locales/zh-CN.yml
106
+ - locales/zh-HK.yml
107
+ - locales/zh-TW.yml
108
+ - pkg/pagy-8.0.1.gem
109
+ - stylesheets/pagy.css
110
+ - stylesheets/pagy.scss
111
+ - stylesheets/pagy.tailwind.css
105
112
  homepage: https://github.com/ddnexus/pagy
106
113
  licenses:
107
114
  - MIT
@@ -112,7 +119,14 @@ metadata:
112
119
  bug_tracker_uri: https://github.com/ddnexus/pagy/issues
113
120
  changelog_uri: https://github.com/ddnexus/pagy/blob/master/CHANGELOG.md
114
121
  support: https://github.com/ddnexus/pagy/discussions/categories/q-a
115
- post_install_message:
122
+ post_install_message: |
123
+ *********************** PAGY WARNING! ***********************
124
+ We may drop pagy's less used CSS extras.
125
+
126
+ If you wish to keep them alive, please, vote here:
127
+
128
+ https://github.com/ddnexus/pagy/discussions/categories/survey
129
+ *************************************************************
116
130
  rdoc_options: []
117
131
  require_paths:
118
132
  - lib
@@ -1,112 +0,0 @@
1
- "use strict";
2
- window.Pagy = (() => {
3
- // The observer instance for responsive navs
4
- const rjsObserver = new ResizeObserver(entries => entries.forEach(e => e.target.querySelectorAll(".pagy-rjs").forEach(el => el.pagyRender())));
5
- // Init the *_nav_js helpers
6
- const initNav = (el, [tags, sequels, labelSequels, trimParam]) => {
7
- const container = el.parentElement ?? el;
8
- const widths = Object.keys(sequels).map(w => parseInt(w)).sort((a, b) => b - a);
9
- let lastWidth = -1;
10
- const fillIn = (link, page, label) => link.replace(/__pagy_page__/g, page).replace(/__pagy_label__/g, label);
11
- (el.pagyRender = function () {
12
- const width = widths.find(w => w < container.clientWidth) || 0;
13
- if (width === lastWidth) {
14
- return;
15
- } // no change: abort
16
- let html = tags.before; // already trimmed in html
17
- const series = sequels[width.toString()];
18
- const labels = labelSequels?.[width.toString()] ?? series.map(l => l.toString());
19
- for (const i in series) {
20
- const item = series[i];
21
- const label = labels[i];
22
- let filled;
23
- if (typeof item === "number") {
24
- filled = fillIn(tags.link, item.toString(), label);
25
- }
26
- else if (item === "gap") {
27
- filled = tags.gap;
28
- }
29
- else { // active page
30
- filled = fillIn(tags.active, item, label);
31
- }
32
- html += (typeof trimParam === "string" && item == 1) ? trim(filled, trimParam) : filled;
33
- }
34
- html += tags.after; // eslint-disable-line align-assignments/align-assignments
35
- el.innerHTML = "";
36
- el.insertAdjacentHTML("afterbegin", html);
37
- lastWidth = width;
38
- })();
39
- if (el.classList.contains("pagy-rjs")) {
40
- rjsObserver.observe(container);
41
- }
42
- };
43
- // Init the *_combo_nav_js helpers
44
- const initCombo = (el, [url_token, trimParam]) => initInput(el, inputValue => [inputValue, url_token.replace(/__pagy_page__/, inputValue)], trimParam);
45
- // Init the items_selector_js helper
46
- const initSelector = (el, [from, url_token, trimParam]) => {
47
- initInput(el, inputValue => {
48
- const page = Math.max(Math.ceil(from / parseInt(inputValue)), 1).toString();
49
- const url = url_token.replace(/__pagy_page__/, page).replace(/__pagy_items__/, inputValue);
50
- return [page, url];
51
- }, trimParam);
52
- };
53
- // Init the input element
54
- const initInput = (el, getVars, trimParam) => {
55
- const input = el.querySelector("input");
56
- const initial = input.value;
57
- const action = function () {
58
- if (input.value === initial) {
59
- return;
60
- } // not changed
61
- const [min, val, max] = [input.min, input.value, input.max].map(n => parseInt(n) || 0);
62
- if (val < min || val > max) { // reset invalid/out-of-range
63
- input.value = initial;
64
- input.select();
65
- return;
66
- }
67
- let [page, url] = getVars(input.value); // eslint-disable-line prefer-const
68
- if (typeof trimParam === "string" && page === "1") {
69
- url = trim(url, trimParam);
70
- }
71
- window.location.href = url;
72
- };
73
- ["change", "focus"].forEach(e => input.addEventListener(e, input.select)); // auto-select
74
- input.addEventListener("focusout", action); // trigger action
75
- input.addEventListener("keypress", e => { if (e.key === "Enter") {
76
- action();
77
- } }); // trigger action
78
- };
79
- // Trim the ${page-param}=1 params in links
80
- const trim = (link, param) => link.replace(new RegExp(`[?&]${param}=1\\b(?!&)|\\b${param}=1&`), "");
81
- // Public interface
82
- return {
83
- version: "7.0.11",
84
- // Scan for elements with a "data-pagy" attribute and call their init functions with the decoded args
85
- init(arg) {
86
- const target = arg instanceof Element ? arg : document;
87
- const elements = target.querySelectorAll("[data-pagy]");
88
- for (const el of elements) {
89
- try {
90
- const uint8array = Uint8Array.from(atob(el.getAttribute("data-pagy")), c => c.charCodeAt(0));
91
- const [keyword, ...args] = JSON.parse((new TextDecoder()).decode(uint8array)); // base64-utf8 -> JSON -> Array
92
- if (keyword === "nav") {
93
- initNav(el, args);
94
- }
95
- else if (keyword === "combo") {
96
- initCombo(el, args);
97
- }
98
- else if (keyword === "selector") {
99
- initSelector(el, args);
100
- }
101
- else {
102
- console.warn("Skipped Pagy.init() for: %o\nUnknown keyword '%s'", el, keyword);
103
- }
104
- }
105
- catch (err) {
106
- console.warn("Skipped Pagy.init() for: %o\n%s", el, err);
107
- }
108
- }
109
- }
110
- };
111
- })();
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInBhZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQWtCQSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUNmLDRDQUE0QztJQUM1QyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUNOLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFhLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FDM0UsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEUsNEJBQTRCO0lBQzVCLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBYSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFTLEVBQUUsRUFBRTtRQUNoRixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQVcsRUFBRSxJQUFXLEVBQUUsS0FBWSxFQUFTLEVBQUUsQ0FDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0UsQ0FBQyxFQUFFLENB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QTtnQkFBQyxDQUFDO1lBQzlFLENBQUM7UUFDTCxDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIE5hdkFyZ3MgPSByZWFkb25seSBbVGFncywgU2VxdWVscywgbnVsbCB8IExhYmVsU2VxdWVscywgc3RyaW5nP11cbnR5cGUgQ29tYm9BcmdzID0gcmVhZG9ubHkgW3N0cmluZywgc3RyaW5nP11cbnR5cGUgU2VsZWN0b3JBcmdzID0gcmVhZG9ubHkgW251bWJlciwgc3RyaW5nLCBzdHJpbmc/XVxuXG5pbnRlcmZhY2UgVGFncyB7XG4gICAgcmVhZG9ubHkgYmVmb3JlOnN0cmluZ1xuICAgIHJlYWRvbmx5IGxpbms6c3RyaW5nXG4gICAgcmVhZG9ubHkgYWN0aXZlOnN0cmluZ1xuICAgIHJlYWRvbmx5IGdhcDpzdHJpbmdcbiAgICByZWFkb25seSBhZnRlcjpzdHJpbmdcbn1cblxuaW50ZXJmYWNlIFNlcXVlbHMge3JlYWRvbmx5IFt3aWR0aDpzdHJpbmddOihzdHJpbmcgfCBudW1iZXIpW119XG5cbmludGVyZmFjZSBMYWJlbFNlcXVlbHMge3JlYWRvbmx5IFt3aWR0aDpzdHJpbmddOnN0cmluZ1tdfVxuXG5pbnRlcmZhY2UgTmF2RWxlbWVudCBleHRlbmRzIEVsZW1lbnQge3BhZ3lSZW5kZXIoKTp2b2lkfVxuXG5jb25zdCBQYWd5ID0gKCgpID0+IHtcbiAgICAvLyBUaGUgb2JzZXJ2ZXIgaW5zdGFuY2UgZm9yIHJlc3BvbnNpdmUgbmF2c1xuICAgIGNvbnN0IHJqc09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGUgPT4gZS50YXJnZXQucXVlcnlTZWxlY3RvckFsbDxOYXZFbGVtZW50PihcIi5wYWd5LXJqc1wiKS5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwgPT4gZWwucGFneVJlbmRlcigpKSkpO1xuXG4gICAgLy8gSW5pdCB0aGUgKl9uYXZfanMgaGVscGVyc1xuICAgIGNvbnN0IGluaXROYXYgPSAoZWw6TmF2RWxlbWVudCwgW3RhZ3MsIHNlcXVlbHMsIGxhYmVsU2VxdWVscywgdHJpbVBhcmFtXTpOYXZBcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGVsLnBhcmVudEVsZW1lbnQgPz8gZWw7XG4gICAgICAgIGNvbnN0IHdpZHRocyA9IE9iamVjdC5rZXlzKHNlcXVlbHMpLm1hcCh3ID0+IHBhcnNlSW50KHcpKS5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICAgICAgY29uc3QgZmlsbEluID0gKGxpbms6c3RyaW5nLCBwYWdlOnN0cmluZywgbGFiZWw6c3RyaW5nKTpzdHJpbmcgPT5cbiAgICAgICAgICAgIGxpbmsucmVwbGFjZSgvX19wYWd5X3BhZ2VfXy9nLCBwYWdlKS5yZXBsYWNlKC9fX3BhZ3lfbGFiZWxfXy9nLCBsYWJlbCk7XG4gICAgICAgIChlbC5wYWd5UmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB3aWR0aHMuZmluZCh3ID0+IHcgPCBjb250YWluZXIuY2xpZW50V2lkdGgpIHx8IDA7XG4gICAgICAgICAgICBpZiAod2lkdGggPT09IGxhc3RXaWR0aCkgeyByZXR1cm4gfSAvLyBubyBjaGFuZ2U6IGFib3J0XG4gICAgICAgICAgICBsZXQgaHRtbCA9IHRhZ3MuYmVmb3JlOyAgLy8gYWxyZWFkeSB0cmltbWVkIGluIGh0bWxcbiAgICAgICAgICAgIGNvbnN0IHNlcmllcyA9IHNlcXVlbHNbd2lkdGgudG9TdHJpbmcoKV07XG4gICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBsYWJlbFNlcXVlbHM/Llt3aWR0aC50b1N0cmluZygpXSA/PyBzZXJpZXMubWFwKGwgPT4gbC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBpbiBzZXJpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gc2VyaWVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gbGFiZWxzW2ldO1xuICAgICAgICAgICAgICAgIGxldCBmaWxsZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxlZCA9IGZpbGxJbih0YWdzLmxpbmssIGl0ZW0udG9TdHJpbmcoKSwgbGFiZWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbSA9PT0gXCJnYXBcIikge1xuICAgICAgICAgICAgICAgICAgICBmaWxsZWQgPSB0YWdzLmdhcDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBhY3RpdmUgcGFnZVxuICAgICAgICAgICAgICAgICAgICBmaWxsZWQgPSBmaWxsSW4odGFncy5hY3RpdmUsIGl0ZW0sIGxhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaHRtbCArPSAodHlwZW9mIHRyaW1QYXJhbSA9PT0gXCJzdHJpbmdcIiAmJiBpdGVtID09IDEpID8gdHJpbShmaWxsZWQsIHRyaW1QYXJhbSkgOiBmaWxsZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBodG1sICs9IHRhZ3MuYWZ0ZXI7ICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBhbGlnbi1hc3NpZ25tZW50cy9hbGlnbi1hc3NpZ25tZW50c1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgICAgIGVsLmluc2VydEFkamFjZW50SFRNTChcImFmdGVyYmVnaW5cIiwgaHRtbCk7XG4gICAgICAgICAgICBsYXN0V2lkdGggPSB3aWR0aDtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucyhcInBhZ3ktcmpzXCIpKSB7IHJqc09ic2VydmVyLm9ic2VydmUoY29udGFpbmVyKSB9XG4gICAgfTtcblxuICAgIC8vIEluaXQgdGhlICpfY29tYm9fbmF2X2pzIGhlbHBlcnNcbiAgICBjb25zdCBpbml0Q29tYm8gPSAoZWw6RWxlbWVudCwgW3VybF90b2tlbiwgdHJpbVBhcmFtXTpDb21ib0FyZ3MpID0+XG4gICAgICAgIGluaXRJbnB1dChlbCwgaW5wdXRWYWx1ZSA9PiBbaW5wdXRWYWx1ZSwgdXJsX3Rva2VuLnJlcGxhY2UoL19fcGFneV9wYWdlX18vLCBpbnB1dFZhbHVlKV0sIHRyaW1QYXJhbSk7XG5cbiAgICAvLyBJbml0IHRoZSBpdGVtc19zZWxlY3Rvcl9qcyBoZWxwZXJcbiAgICBjb25zdCBpbml0U2VsZWN0b3IgPSAoZWw6RWxlbWVudCwgW2Zyb20sIHVybF90b2tlbiwgdHJpbVBhcmFtXTpTZWxlY3RvckFyZ3MpID0+IHtcbiAgICAgICAgaW5pdElucHV0KGVsLCBpbnB1dFZhbHVlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBNYXRoLm1heChNYXRoLmNlaWwoZnJvbSAvIHBhcnNlSW50KGlucHV0VmFsdWUpKSwgMSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHVybF90b2tlbi5yZXBsYWNlKC9fX3BhZ3lfcGFnZV9fLywgcGFnZSkucmVwbGFjZSgvX19wYWd5X2l0ZW1zX18vLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBbcGFnZSwgdXJsXTtcbiAgICAgICAgfSwgdHJpbVBhcmFtKTtcbiAgICB9O1xuXG4gICAgLy8gSW5pdCB0aGUgaW5wdXQgZWxlbWVudFxuICAgIGNvbnN0IGluaXRJbnB1dCA9IChlbDpFbGVtZW50LCBnZXRWYXJzOih2OnN0cmluZykgPT4gW3N0cmluZywgc3RyaW5nXSwgdHJpbVBhcmFtPzpzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBlbC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRcIikgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5pdGlhbCA9IGlucHV0LnZhbHVlO1xuICAgICAgICBjb25zdCBhY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQudmFsdWUgPT09IGluaXRpYWwpIHsgcmV0dXJuIH0gIC8vIG5vdCBjaGFuZ2VkXG4gICAgICAgICAgICBjb25zdCBbbWluLCB2YWwsIG1heF0gPSBbaW5wdXQubWluLCBpbnB1dC52YWx1ZSwgaW5wdXQubWF4XS5tYXAobiA9PiBwYXJzZUludChuKSB8fCAwKTtcbiAgICAgICAgICAgIGlmICh2YWwgPCBtaW4gfHwgdmFsID4gbWF4KSB7ICAvLyByZXNldCBpbnZhbGlkL291dC1vZi1yYW5nZVxuICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0gaW5pdGlhbDtcbiAgICAgICAgICAgICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgW3BhZ2UsIHVybF0gPSBnZXRWYXJzKGlucHV0LnZhbHVlKTsgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1jb25zdFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0cmltUGFyYW0gPT09IFwic3RyaW5nXCIgJiYgcGFnZSA9PT0gXCIxXCIpIHsgdXJsID0gdHJpbSh1cmwsIHRyaW1QYXJhbSkgfVxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgICAgIH07XG4gICAgICAgIFtcImNoYW5nZVwiLCBcImZvY3VzXCJdLmZvckVhY2goZSA9PiBpbnB1dC5hZGRFdmVudExpc3RlbmVyKGUsIGlucHV0LnNlbGVjdCkpOyAgICAgICAgLy8gYXV0by1zZWxlY3RcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsIGFjdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBhY3Rpb25cbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXByZXNzXCIsIGUgPT4geyBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikgeyBhY3Rpb24oKSB9IH0pOyAvLyB0cmlnZ2VyIGFjdGlvblxuICAgIH07XG5cbiAgICAvLyBUcmltIHRoZSAke3BhZ2UtcGFyYW19PTEgcGFyYW1zIGluIGxpbmtzXG4gICAgY29uc3QgdHJpbSA9IChsaW5rOnN0cmluZywgcGFyYW06c3RyaW5nKSA9PlxuICAgICAgICBsaW5rLnJlcGxhY2UobmV3IFJlZ0V4cChgWz8mXSR7cGFyYW19PTFcXFxcYig/ISYpfFxcXFxiJHtwYXJhbX09MSZgKSwgXCJcIik7XG5cbiAgICAvLyBQdWJsaWMgaW50ZXJmYWNlXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmVyc2lvbjogXCI3LjAuMTFcIixcblxuICAgICAgICAvLyBTY2FuIGZvciBlbGVtZW50cyB3aXRoIGEgXCJkYXRhLXBhZ3lcIiBhdHRyaWJ1dGUgYW5kIGNhbGwgdGhlaXIgaW5pdCBmdW5jdGlvbnMgd2l0aCB0aGUgZGVjb2RlZCBhcmdzXG4gICAgICAgIGluaXQoYXJnPzpFbGVtZW50IHwgbmV2ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGFyZyBpbnN0YW5jZW9mIEVsZW1lbnQgPyBhcmcgOiBkb2N1bWVudDtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1wYWd5XVwiKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OGFycmF5ID0gVWludDhBcnJheS5mcm9tKGF0b2IoZWwuZ2V0QXR0cmlidXRlKFwiZGF0YS1wYWd5XCIpIGFzIHN0cmluZyksIGMgPT4gYy5jaGFyQ29kZUF0KDApKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2tleXdvcmQsIC4uLmFyZ3NdID0gSlNPTi5wYXJzZSgobmV3IFRleHREZWNvZGVyKCkpLmRlY29kZSh1aW50OGFycmF5KSk7IC8vIGJhc2U2NC11dGY4IC0+IEpTT04gLT4gQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleXdvcmQgPT09IFwibmF2XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXROYXYoZWwgYXMgTmF2RWxlbWVudCwgYXJncyBhcyBOYXZBcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXl3b3JkID09PSBcImNvbWJvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRDb21ibyhlbCwgYXJncyBhcyBDb21ib0FyZ3MpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleXdvcmQgPT09IFwic2VsZWN0b3JcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5pdFNlbGVjdG9yKGVsLCBhcmdzIGFzIFNlbGVjdG9yQXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJTa2lwcGVkIFBhZ3kuaW5pdCgpIGZvcjogJW9cXG5Vbmtub3duIGtleXdvcmQgJyVzJ1wiLCBlbCwga2V5d29yZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgY29uc29sZS53YXJuKFwiU2tpcHBlZCBQYWd5LmluaXQoKSBmb3I6ICVvXFxuJXNcIiwgZWwsIGVycikgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbn0pKCk7XG4iXX0=
@@ -1 +0,0 @@
1
- !function(){let e=(()=>{let e=new ResizeObserver(e=>e.forEach(e=>e.target.querySelectorAll(".pagy-rjs").forEach(e=>e.pagyRender()))),t=(t,[r,n,a,i])=>{let l=t.parentElement??t,p=Object.keys(n).map(e=>parseInt(e)).sort((e,t)=>t-e),c=-1,s=(e,t,r)=>e.replace(/__pagy_page__/g,t).replace(/__pagy_label__/g,r);(t.pagyRender=function(){let e=p.find(e=>e<l.clientWidth)||0;if(e===c)return;let g=r.before,f=n[e.toString()],y=a?.[e.toString()]??f.map(e=>e.toString());for(let e in f){let t;let n=f[e],a=y[e];t="number"==typeof n?s(r.link,n.toString(),a):"gap"===n?r.gap:s(r.active,n,a),g+="string"==typeof i&&1==n?o(t,i):t}g+=r.after,t.innerHTML="",t.insertAdjacentHTML("afterbegin",g),c=e})(),t.classList.contains("pagy-rjs")&&e.observe(l)},r=(e,[t,r])=>a(e,e=>[e,t.replace(/__pagy_page__/,e)],r),n=(e,[t,r,n])=>{a(e,e=>{let n=Math.max(Math.ceil(t/parseInt(e)),1).toString(),a=r.replace(/__pagy_page__/,n).replace(/__pagy_items__/,e);return[n,a]},n)},a=(e,t,r)=>{let n=e.querySelector("input"),a=n.value,i=function(){if(n.value===a)return;let[e,i,l]=[n.min,n.value,n.max].map(e=>parseInt(e)||0);if(i<e||i>l){n.value=a,n.select();return}let[p,c]=t(n.value);"string"==typeof r&&"1"===p&&(c=o(c,r)),window.location.href=c};["change","focus"].forEach(e=>n.addEventListener(e,n.select)),n.addEventListener("focusout",i),n.addEventListener("keypress",e=>{"Enter"===e.key&&i()})},o=(e,t)=>e.replace(RegExp(`[?&]${t}=1\\b(?!&)|\\b${t}=1&`),"");return{version:"7.0.11",init(e){for(let a of(e instanceof Element?e:document).querySelectorAll("[data-pagy]"))try{let e=Uint8Array.from(atob(a.getAttribute("data-pagy")),e=>e.charCodeAt(0)),[o,...i]=JSON.parse(new TextDecoder().decode(e));"nav"===o?t(a,i):"combo"===o?r(a,i):"selector"===o?n(a,i):console.warn("Skipped Pagy.init() for: %o\nUnknown keyword '%s'",a,o)}catch(e){console.warn("Skipped Pagy.init() for: %o\n%s",a,e)}}}})();window.Pagy=e}();
data/lib/locales/ckb.yml DELETED
@@ -1,18 +0,0 @@
1
- # :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
2
-
3
- ckb:
4
- pagy:
5
- item_name: "بابەت"
6
- aria_label:
7
- nav: "پەڕەکان"
8
- prev: "پاش"
9
- next: "پێش"
10
- prev: "&lt;"
11
- next: "&gt;"
12
- gap: "&hellip;"
13
- info:
14
- no_items: "هیچ %{item_name}ێک نەدۆزرایەوە"
15
- single_page: "پیشاندانی <b>%{count}</b> %{item_name}"
16
- multiple_pages: "پشاندانی %{item_name}ی <b>%{from}-%{to}</b> لە کۆی <b>%{count}</b> بە گشتی"
17
- combo_nav_js: "<label>پەڕی %{page_input} لە %{pages}</label>"
18
- items_selector_js: "<label>نیشاندانی %{items_input} %{item_name} لە هەر پەڕێک</label>"
data/lib/locales/ru.yml DELETED
@@ -1,27 +0,0 @@
1
- # :east_slavic pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
2
- ru:
3
- pagy:
4
- aria_label:
5
- # please add a comment in the https://github.com/ddnexus/pagy/issues/599
6
- # posting the translation of the following "Page"/"Pages" with the plurals for this locale
7
- nav: "Pages"
8
- # one: ""
9
- # few: ""
10
- # many: ""
11
- # other: ""
12
- prev: "Назад"
13
- next: "Вперёд"
14
- prev: "&lt;"
15
- next: "&gt;"
16
- gap: "&hellip;"
17
- item_name:
18
- one: "запись"
19
- few: "записи"
20
- many: "записей"
21
- other: "записей"
22
- info:
23
- no_items: "Пока %{item_name} нет"
24
- single_page: "<b>%{count}</b> %{item_name}"
25
- multiple_pages: "Всего <b>%{count}</b> %{item_name}, показаны с <b>%{from}</b> по <b>%{to}</b>"
26
- combo_nav_js: "<label>Страница %{page_input} из %{pages}</label>"
27
- items_selector_js: "<label>Показать %{items_input} %{item_name} на странице</label>"