@dreher-media/dm-js-lib 1.1.0 → 1.2.0
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.
- package/README.md +34 -13
- package/dist/dm-js-lib.min.js +2 -2
- package/dist/standalone/filter.min.js +2 -2
- package/dist/standalone/pagination.min.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,9 +21,11 @@ Additionally, there are standalone modules available that can be loaded separate
|
|
|
21
21
|
## Built-in Modules
|
|
22
22
|
|
|
23
23
|
### 🛠️ Utilities
|
|
24
|
+
|
|
24
25
|
**A collection of four small utility functions**
|
|
25
26
|
|
|
26
27
|
Combines four simple utilities that work automatically:
|
|
28
|
+
|
|
27
29
|
- **Active Link** - Automatically highlights active navigation links
|
|
28
30
|
- **File Download** - Enables file downloads from any element
|
|
29
31
|
- **Separators** - Automatically inserts separators between elements
|
|
@@ -32,6 +34,7 @@ Combines four simple utilities that work automatically:
|
|
|
32
34
|
**Perfect for:** Common website tasks that need minimal setup
|
|
33
35
|
|
|
34
36
|
**Examples:**
|
|
37
|
+
|
|
35
38
|
```html
|
|
36
39
|
<!-- Active Link (automatic) -->
|
|
37
40
|
<nav>
|
|
@@ -57,6 +60,7 @@ Combines four simple utilities that work automatically:
|
|
|
57
60
|
---
|
|
58
61
|
|
|
59
62
|
### 🍪 Cookie Consent
|
|
63
|
+
|
|
60
64
|
**Shows or hides content based on cookie preferences**
|
|
61
65
|
|
|
62
66
|
Integrates with Finsweet Cookie Consent to automatically show/hide content based on user consent choices. Perfect for GDPR compliance.
|
|
@@ -64,10 +68,13 @@ Integrates with Finsweet Cookie Consent to automatically show/hide content based
|
|
|
64
68
|
**Perfect for:** Analytics scripts, marketing embeds, tracking pixels
|
|
65
69
|
|
|
66
70
|
**Example:**
|
|
71
|
+
|
|
67
72
|
```html
|
|
68
73
|
<div fs-cc="analytics">
|
|
69
74
|
<!-- Shown when analytics consent is given -->
|
|
70
|
-
<script
|
|
75
|
+
<script>
|
|
76
|
+
/* Google Analytics */
|
|
77
|
+
</script>
|
|
71
78
|
</div>
|
|
72
79
|
```
|
|
73
80
|
|
|
@@ -76,6 +83,7 @@ Integrates with Finsweet Cookie Consent to automatically show/hide content based
|
|
|
76
83
|
---
|
|
77
84
|
|
|
78
85
|
### 🌍 Language
|
|
86
|
+
|
|
79
87
|
**Multi-language content switching**
|
|
80
88
|
|
|
81
89
|
Create multi-language pages with automatic browser language detection. Users can switch languages, and their preference is remembered.
|
|
@@ -83,6 +91,7 @@ Create multi-language pages with automatic browser language detection. Users can
|
|
|
83
91
|
**Perfect for:** International websites, bilingual content, localized pages
|
|
84
92
|
|
|
85
93
|
**Example:**
|
|
94
|
+
|
|
86
95
|
```html
|
|
87
96
|
<button data-lang-link="en">English</button>
|
|
88
97
|
<button data-lang-link="de">Deutsch</button>
|
|
@@ -96,6 +105,7 @@ Create multi-language pages with automatic browser language detection. Users can
|
|
|
96
105
|
---
|
|
97
106
|
|
|
98
107
|
### 📑 Tabs
|
|
108
|
+
|
|
99
109
|
**Interactive tab interfaces**
|
|
100
110
|
|
|
101
111
|
Create tabbed content sections with support for multiple tab groups, URL control, and automatic activation.
|
|
@@ -103,6 +113,7 @@ Create tabbed content sections with support for multiple tab groups, URL control
|
|
|
103
113
|
**Perfect for:** Product details, FAQ sections, feature comparisons, content organization
|
|
104
114
|
|
|
105
115
|
**Example:**
|
|
116
|
+
|
|
106
117
|
```html
|
|
107
118
|
<div class="tabs">
|
|
108
119
|
<button class="tab-link" data-tab-target="tab1">Tab 1</button>
|
|
@@ -118,6 +129,7 @@ Create tabbed content sections with support for multiple tab groups, URL control
|
|
|
118
129
|
---
|
|
119
130
|
|
|
120
131
|
### 🎥 Video Players
|
|
132
|
+
|
|
121
133
|
**Unified video player management**
|
|
122
134
|
|
|
123
135
|
Supports YouTube, Vimeo, Dailymotion, and HTML5 videos (Plyr). Automatically pauses other videos when one plays. Integrates with Swiper carousels. **Also automatically upgrades YouTube thumbnail quality** for crisp, clear thumbnails.
|
|
@@ -125,12 +137,10 @@ Supports YouTube, Vimeo, Dailymotion, and HTML5 videos (Plyr). Automatically pau
|
|
|
125
137
|
**Perfect for:** Video galleries, product demos, tutorial pages, media libraries
|
|
126
138
|
|
|
127
139
|
**Example:**
|
|
140
|
+
|
|
128
141
|
```html
|
|
129
|
-
<div class="youtube"
|
|
130
|
-
|
|
131
|
-
data-video-id="dQw4w9WgXcQ"
|
|
132
|
-
data-id="player1">
|
|
133
|
-
<img src="thumbnail.jpg" alt="Video">
|
|
142
|
+
<div class="youtube" data-type="youtube" data-video-id="dQw4w9WgXcQ" data-id="player1">
|
|
143
|
+
<img src="thumbnail.jpg" alt="Video" />
|
|
134
144
|
</div>
|
|
135
145
|
```
|
|
136
146
|
|
|
@@ -141,6 +151,7 @@ YouTube thumbnails are automatically upgraded to the highest available quality -
|
|
|
141
151
|
---
|
|
142
152
|
|
|
143
153
|
### 🎯 Conditional Elements
|
|
154
|
+
|
|
144
155
|
**Show or hide elements based on dates, times, URL parameters, and whether elements have children**
|
|
145
156
|
|
|
146
157
|
Conditionally display content based on various client-side conditions. Perfect for time-sensitive content, calendar events, preview modes, empty-state handling, and dynamic content display.
|
|
@@ -148,14 +159,13 @@ Conditionally display content based on various client-side conditions. Perfect f
|
|
|
148
159
|
**Perfect for:** Time-sensitive promotions, calendar events, preview/debug modes, seasonal content, business hours displays, hiding empty containers
|
|
149
160
|
|
|
150
161
|
**Example:**
|
|
162
|
+
|
|
151
163
|
```html
|
|
152
164
|
<!-- Show before a specific date -->
|
|
153
165
|
<div data-conditional-date="before:2025-12-31">Limited time offer</div>
|
|
154
166
|
|
|
155
167
|
<!-- Show on weekdays during business hours -->
|
|
156
|
-
<div data-conditional-date="day:weekday between:09:00,17:00">
|
|
157
|
-
Business hours content
|
|
158
|
-
</div>
|
|
168
|
+
<div data-conditional-date="day:weekday between:09:00,17:00">Business hours content</div>
|
|
159
169
|
|
|
160
170
|
<!-- Show when preview parameter is in URL -->
|
|
161
171
|
<div data-conditional-url="param:preview=true">Preview content</div>
|
|
@@ -173,6 +183,7 @@ Conditionally display content based on various client-side conditions. Perfect f
|
|
|
173
183
|
These modules are not included in the main bundle and must be loaded separately when needed. They're perfect for when you only need specific functionality.
|
|
174
184
|
|
|
175
185
|
### 🔍 Filter
|
|
186
|
+
|
|
176
187
|
**Powerful filtering system for lists and collections**
|
|
177
188
|
|
|
178
189
|
Create advanced filter interfaces with checkboxes, search boxes, dropdowns, and more. Supports multiple filter types, URL persistence, and localStorage.
|
|
@@ -180,6 +191,7 @@ Create advanced filter interfaces with checkboxes, search boxes, dropdowns, and
|
|
|
180
191
|
**Perfect for:** Product catalogs, portfolio galleries, blog archives, directory listings
|
|
181
192
|
|
|
182
193
|
**Installation:**
|
|
194
|
+
|
|
183
195
|
```html
|
|
184
196
|
<script src="https://cdn.jsdelivr.net/npm/@dreher-media/dm-js-lib@latest/dist/standalone/filter.min.js"></script>
|
|
185
197
|
```
|
|
@@ -194,10 +206,11 @@ The filter module auto-initializes on page load. Manual initialization is option
|
|
|
194
206
|
```
|
|
195
207
|
|
|
196
208
|
**Example:**
|
|
209
|
+
|
|
197
210
|
```html
|
|
198
211
|
<!-- Filter controls -->
|
|
199
|
-
<input type="checkbox" data-filter-field="category" value="design"
|
|
200
|
-
<input type="text" data-filter-field="search" placeholder="Search..."
|
|
212
|
+
<input type="checkbox" data-filter-field="category" value="design" /> Design
|
|
213
|
+
<input type="text" data-filter-field="search" placeholder="Search..." />
|
|
201
214
|
|
|
202
215
|
<!-- Filterable list -->
|
|
203
216
|
<ul data-filter-list>
|
|
@@ -211,6 +224,7 @@ The filter module auto-initializes on page load. Manual initialization is option
|
|
|
211
224
|
---
|
|
212
225
|
|
|
213
226
|
### 🔄 Preview Detail Switcher
|
|
227
|
+
|
|
214
228
|
**Switch between preview and detail views**
|
|
215
229
|
|
|
216
230
|
Create interactive interfaces where clicking preview elements shows corresponding detail views. Only one detail view is visible at a time.
|
|
@@ -218,22 +232,24 @@ Create interactive interfaces where clicking preview elements shows correspondin
|
|
|
218
232
|
**Perfect for:** Product galleries, portfolio showcases, content switchers
|
|
219
233
|
|
|
220
234
|
**Installation:**
|
|
235
|
+
|
|
221
236
|
```html
|
|
222
237
|
<script src="https://cdn.jsdelivr.net/npm/@dreher-media/dm-js-lib@latest/dist/standalone/previewDetailSwitcher.min.js"></script>
|
|
223
238
|
<script>
|
|
224
239
|
// Initialize
|
|
225
240
|
PreviewDetailSwitcher.initPreviewDetailSwitcher({
|
|
226
|
-
container:
|
|
241
|
+
container: ".my-container",
|
|
227
242
|
});
|
|
228
243
|
</script>
|
|
229
244
|
```
|
|
230
245
|
|
|
231
246
|
**Example:**
|
|
247
|
+
|
|
232
248
|
```html
|
|
233
249
|
<div class="gallery">
|
|
234
250
|
<button data-preview-id="item1">Preview 1</button>
|
|
235
251
|
<button data-preview-id="item2">Preview 2</button>
|
|
236
|
-
|
|
252
|
+
|
|
237
253
|
<div data-detail-item data-detail-id="item1">Detail 1</div>
|
|
238
254
|
<div data-detail-item data-detail-id="item2">Detail 2</div>
|
|
239
255
|
</div>
|
|
@@ -244,6 +260,7 @@ Create interactive interfaces where clicking preview elements shows correspondin
|
|
|
244
260
|
---
|
|
245
261
|
|
|
246
262
|
### 📄 Pagination
|
|
263
|
+
|
|
247
264
|
**Client-side pagination for generic lists**
|
|
248
265
|
|
|
249
266
|
Paginate any list of items on the client using simple data attributes. Supports numbered pagination, “load more” buttons, and infinite scroll, and integrates cleanly with the standalone filter module.
|
|
@@ -251,11 +268,13 @@ Paginate any list of items on the client using simple data attributes. Supports
|
|
|
251
268
|
**Perfect for:** Blog indexes, product grids, search result lists, and any long collection of items.
|
|
252
269
|
|
|
253
270
|
**Installation:**
|
|
271
|
+
|
|
254
272
|
```html
|
|
255
273
|
<script src="https://cdn.jsdelivr.net/npm/@dreher-media/dm-js-lib@latest/dist/standalone/pagination.min.js"></script>
|
|
256
274
|
```
|
|
257
275
|
|
|
258
276
|
**Example:**
|
|
277
|
+
|
|
259
278
|
```html
|
|
260
279
|
<div data-pagination-mode="numbers">
|
|
261
280
|
<ul data-pagination-list data-pagination-page-size="9">
|
|
@@ -314,6 +333,7 @@ No JavaScript coding required. Everything works through HTML attributes.
|
|
|
314
333
|
## Browser Support
|
|
315
334
|
|
|
316
335
|
Works in all modern browsers:
|
|
336
|
+
|
|
317
337
|
- Chrome (latest)
|
|
318
338
|
- Firefox (latest)
|
|
319
339
|
- Safari (latest)
|
|
@@ -330,6 +350,7 @@ Most modules work standalone. Some modules have optional dependencies:
|
|
|
330
350
|
## Getting Help
|
|
331
351
|
|
|
332
352
|
Each module has detailed documentation with examples. Click on any module name above to see:
|
|
353
|
+
|
|
333
354
|
- Complete usage examples
|
|
334
355
|
- All available options
|
|
335
356
|
- Styling tips
|
package/dist/dm-js-lib.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! dm-js-lib v1.
|
|
2
|
-
!function(){"use strict";function t(){document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-download-href]").forEach(t=>{t.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const n=t.getAttribute("data-download-href"),a=t.getAttribute("data-download-filename");n&&((t,e)=>{const n=document.createElement("a");n.href=t,n.download=e||t.split("/").pop()||"download",n.target="_blank",document.body.appendChild(n),n.click(),document.body.removeChild(n)})(n,a)})})})}function e(t){const e=t.dataset.tabTarget;if(e)return e;const n=t.dataset.tabLink;if(n)return n;const a=t.getAttribute("href");return a?.startsWith("#")?a.slice(1):null}function n(t){return Array.from(document.querySelectorAll(`[data-tab-content="${t}"]`))}function a(t){const n=[];return document.querySelectorAll(`.tab-link[data-tab-group="${t}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${t}"]`).forEach(t=>{const a=e(t);a&&n.push(a)}),n}function o(t){const n=[];return t.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(t=>{const a=e(t);a&&n.push(a)}),n}function r(t){const r=t.dataset.tabGroup,i=e(t),l=i?n(i):[];if(r){document.querySelectorAll(`.tab-link[data-tab-group="${r}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${r}"]`).forEach(t=>{t.classList.remove("active")}),document.querySelectorAll(`[data-tab-content][data-tab-group="${r}"]`).forEach(t=>{t.style.display="none",t.classList.remove("active")});a(r).forEach(t=>{n(t).forEach(t=>{t.style.display="none",t.classList.remove("active")})})}else{const e=t.parentNode;if(e){e.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(t=>{t.classList.remove("active")});o(e).forEach(t=>{n(t).forEach(t=>{t.style.display="none",t.classList.remove("active")})})}}t.classList.add("active"),l.forEach(t=>{t.style.display="block",t.classList.add("active")})}function i(t){const e=t.dataset.langLink;if(e)return e;const n=t.textContent?.trim().toLowerCase();return n||null}function l(t){const e=t.match(/^([a-z]{2})(?:-|$)/i);return e?e[1].toLowerCase():null}function s(t){if(document.querySelector(`[data-lang-link="${t}"]`))return!0;return!!document.querySelector(`[data-lang-content="${t}"]`)}function d(t){sessionStorage.setItem("selected_lang",t),document.querySelectorAll("[data-lang-content]").forEach(e=>{const n=e;n.dataset.langContent===t?(n.style.display="",n.classList.add("lang-active")):(n.style.display="none",n.classList.remove("lang-active"))}),document.querySelectorAll("[data-lang-link]").forEach(e=>{const n=e;i(n)===t?n.classList.add("active"):n.classList.remove("active")})}function c(){let t=sessionStorage.getItem("selected_lang");if(!t){const e=function(){if(navigator.languages&&navigator.languages.length>0)for(const t of navigator.languages){const e=l(t);if(e)return e}return navigator.language?l(navigator.language):null}();if(e&&s(e))t=e;else{if(!s("en"))return;t="en"}}if(t){const e=document.querySelector(`[data-lang-link="${t}"]`);if(e)return void e.click();d(t)}}function u(t,e="script"){return new Promise((n,a)=>{const o="script"===e?`script[src="${t}"]`:`link[rel="stylesheet"][href="${t}"]`;if(document.querySelector(o))n();else if("script"===e){const e=document.createElement("script");e.src=t,e.async=!0,e.onload=()=>n(),e.onerror=()=>a(new Error(`Failed to load script: ${t}`)),document.head.appendChild(e)}else if("stylesheet"===e){const e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onload=()=>n(),e.onerror=()=>a(new Error(`Failed to load stylesheet: ${t}`)),document.head.appendChild(e)}else a(new Error(`Unsupported resource type: ${e}`))})}function f(t){return u(t,"script")}function y(t){const e=document.querySelectorAll(".youtube");return Array.from(e).some(e=>e.dataset.type===t)}const p="youtube-pause-overlay";function m(t){const e=t.querySelector(`.${p}`);e?.remove()}"undefined"!=typeof window&&void 0===window.videoSwipers&&(window.videoSwipers=[]);const h=()=>"undefined"!=typeof window?window.videoSwipers:void 0;function g(t){if(void 0!==window.Plyr){const e=window.Plyr.setup("._init-plyr");t.push(...e),e.forEach(e=>{e.on("play",()=>{w(null,t,{},e);const n=h();n&&n.forEach(t=>{t.autoplay.stop()})}),e.on("pause",()=>{const t=h();t&&t.forEach(t=>{t.autoplay.start()})})})}}function w(t=null,e,n,a=null){e.forEach(t=>{a&&t===a||t.pause()});for(const[e,a]of Object.entries(n))if(t!==e)if("youtube"===a.type){a.player.pauseVideo()}else if("vimeo"===a.type){a.player.pause()}else if("dailymotion"===a.type){a.player.pause()}}function b(t,e,n){w(t,e,n);const a=h();a&&a.forEach(t=>{t.autoplay.stop()})}function v(t){const e=h();e&&e.forEach(t=>{t.autoplay.start()})}function E(t,e,n){t.forEach(t=>{t.addEventListener("click",()=>{const a=t.querySelector("[data-custom-embed]");a&&(t.innerHTML=a.innerHTML);const o=t,r=`player_${o.dataset.id}`,i=o.dataset.type,l=o.dataset.videoId,s=parseInt(o.dataset.time||"0",10);if(l&&i)if(b(r,n,e),"other"!==i){if("ardmediathek"===i){const t=`https://www.ardmediathek.de/embed/${encodeURIComponent(l)}`,e=document.createElement("iframe");return e.src=t,e.setAttribute("allowfullscreen",""),e.setAttribute("allow","fullscreen"),e.setAttribute("frameborder","0"),e.style.width="100%",e.style.aspectRatio="16/9",o.innerHTML="",void o.appendChild(e)}if("youtube"===i&&window.YT){o.id=r,o.innerHTML="";const t=new window.YT.Player(r,{videoId:l,playerVars:{start:s,rel:0},events:{onReady:t=>{t.target.playVideo()},onStateChange:t=>{t.data===window.YT.PlayerState.PLAYING?(m(o),b(r,n,e)):t.data!==window.YT.PlayerState.PAUSED&&t.data!==window.YT.PlayerState.ENDED||(!function(t,e){m(t);const n=document.createElement("div");n.className=p,n.setAttribute("aria-hidden","true"),Object.assign(n.style,{position:"absolute",inset:"0",cursor:"pointer",zIndex:"1"}),n.addEventListener("click",()=>{m(t),e.playVideo()}),t.style.position="relative",t.appendChild(n)}(o,t.target),v())}}});e[r]={type:i,player:t}}else if("vimeo"===i&&window.Vimeo){const t=document.getElementById(r);t&&(t.innerHTML="");const a=new window.Vimeo.Player(r,{id:l,autoplay:!0,start:s});a.on("play",()=>b(r,n,e)),a.on("pause",()=>v()),e[r]={type:i,player:a}}else"dailymotion"===i&&window.dailymotion&&window.dailymotion.createPlayer(r,{video:l,params:{autoplay:1,start:s,mute:!1}}).then(t=>{t.on("play",()=>b(r,n,e)),t.on("pause",()=>v()),t.on("ended",()=>v()),e[r]={type:"dailymotion",player:t}}).catch(t=>{console.error("Error initializing Dailymotion player:",t)})}else window.open(l,"_blank","noopener,noreferrer")})})}function k(t){let e=new Date(t);if(!isNaN(e.getTime()))return e;const n=t.match(/^(\d{4}-\d{2}-\d{2})\s+(\d{1,2}):(\d{2})$/);if(n){const[,t,a,o]=n;if(e=new Date(t),!isNaN(e.getTime()))return e.setHours(parseInt(a,10),parseInt(o,10),0,0),e}return null}function L(t){const e=t.match(/^(\d{1,2}):(\d{2})$/);if(!e)return null;const n=parseInt(e[1],10),a=parseInt(e[2],10);if(n<0||n>23||a<0||a>59)return null;const o=new Date;return o.setHours(n,a,0,0),o}function S(t,e,n){return!(e&&t<e)&&!(n&&t>n)}function A(t,e,n){const a=60*t.getHours()+t.getMinutes();if(e){if(a<60*e.getHours()+e.getMinutes())return!1}if(n){if(a>60*n.getHours()+n.getMinutes())return!1}return!0}function q(t){const e=new Date(t);return e.setHours(0,0,0,0),e}function T(t){const e=new Date;if(t.startsWith("before:")){const n=L(t.substring(7));return!!n&&A(e,void 0,n)}if(t.startsWith("after:")){const n=L(t.substring(6));return!!n&&A(e,n,void 0)}if(t.startsWith("between:")){const n=t.substring(8).split(",");if(2!==n.length)return!1;const a=L(n[0].trim()),o=L(n[1].trim());return!(!a||!o)&&A(e,a,o)}if(t.startsWith("day:")){const e=t.substring(4),n=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][(new Date).getDay()];if("weekday"===e)return["monday","tuesday","wednesday","thursday","friday"].includes(n);if("weekend"===e)return["saturday","sunday"].includes(n);return e.split("|").map(t=>t.trim().toLowerCase()).includes(n)}return!1}function $(t){if(!t.startsWith("param:"))return!1;const e=t.substring(6),n=new URLSearchParams(window.location.search);if(e.startsWith("!")){const t=e.substring(1);return!n.has(t)}if(e.includes("!=")){const[t,a]=e.split("!=");return n.get(t)!==a}if(e.includes("=")){const[t,a]=e.split("=");return n.get(t)===a}return n.has(e)}const C=new Set(["script","style","template","link","noscript"]);function P(t){const e=t.tagName.toLowerCase();if(C.has(e))return!1;if(null!==t.getAttribute("hidden"))return!1;try{const e=window.getComputedStyle(t);if("none"===e.display||"hidden"===e.visibility||0===parseFloat(e.opacity))return!1}catch{return!0}return!0}function D(t){const e=t.tagName.toLowerCase();if(C.has(e))return!1;if(null!==t.getAttribute("hidden"))return!1;const n=t;return"none"!==n.style?.display}function I(t,e){const n=e?.classList.contains("conditional-hidden")&&(t===e||e.contains(t))?D:P;let a=0;for(let e=0;e<t.children.length;e++)n(t.children[e])&&a++;return a}function M(t){const e=t.dataset.conditionalDate?.trim(),n=t.dataset.conditionalUrl?.trim(),a=t.dataset.conditionalChildren?.trim(),o=e?e.split("|").map(t=>t.trim()).filter(t=>t):[],r=n?n.split("|").map(t=>t.trim()).filter(t=>t):[],i=a?a.split("|").map(t=>t.trim()).filter(t=>t):[];if(o.length>0){if(!o.map(t=>t.startsWith("day:")||t.match(/^(before|after|between):\d{1,2}:\d{2}/)?T(t):function(t){const e=new Date;if(t.startsWith("before:")){const n=t.substring(7),a=k(n);return!!a&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(n)?e<a:q(e)<q(a))}if(t.startsWith("after:")){const n=t.substring(6),a=k(n);return!!a&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(n)?e>a:q(e)>q(a))}if(t.startsWith("between:")){const n=t.substring(8).split(",");if(2!==n.length)return!1;const a=k(n[0].trim()),o=k(n[1].trim());if(!a||!o)return!1;const r=/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(n[0]),i=/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(n[1]);return r||i?S(e,a,o):S(q(e),q(a),q(o))}if(t.startsWith("on:")){const n=t.substring(3),a=k(n);return!!a&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(n)?e.getTime()-e.getTime()%6e4==a.getTime()-a.getTime()%6e4:q(e).getTime()===q(a).getTime())}return!1}(t)).some(t=>t))return!1}if(r.length>0){if(!r.map(t=>$(t)).some(t=>t))return!1}if(i.length>0){const e=i.map(e=>function(t,e){const n=e.trim();if(!n||"self"===n.toLowerCase())return I(t,t)>0;const a="self ";if(n.toLowerCase().startsWith(a)){const e=n.slice(5).trim();if(!e)return!1;const a=t.querySelector(e);return null!==a&&I(a,t)>0}const o=document.querySelector(n);return null!==o&&I(o,t)>0}(t,e));if(!e.some(t=>t))return!1}return!0}let W=null,F=null;function H(){const t=document.querySelectorAll("[data-conditional], [data-conditional-date], [data-conditional-url], [data-conditional-children]");F=new Set(t);try{t.forEach(t=>{!function(t){const e=M(t);("show"===(t.dataset.conditionalMode||"show")?e:!e)?(t.style.removeProperty("display"),t.classList.add("conditional-active"),t.classList.remove("conditional-hidden")):(t.style.display="none",t.classList.add("conditional-hidden"),t.classList.remove("conditional-active"))}(t)})}finally{setTimeout(()=>{F=null},0)}}!function(){let t=!1;const e=()=>{window.FsCC?(t||(window.FsCC.consentController.on("updateconsents",()=>{e()}),t=!0),document.querySelectorAll("[fs-cc-reject]").forEach(t=>{const e=t.getAttribute("fs-cc-reject");if(!e)return;const n=window.FsCC?.store.consents[e]??!1,a=document.querySelector(`[fs-cc="${e}"]`);n?(t.style.display="none",a&&(a.style.display="block")):(t.style.display="block",a&&(a.style.display="none"))})):setTimeout(e,200)};document.addEventListener("DOMContentLoaded",e)}(),function(){const t=t=>{const e=(t||"").replace(/\/+$/,"").replace(/\.html?$/i,"");return""===e?"/":e};window.addEventListener("load",()=>{const e=t(window.location.pathname);document.querySelectorAll("a[href]").forEach(n=>{const a=n.getAttribute("href");if(!a)return;if(a.startsWith("#")||a.toLowerCase().startsWith("javascript:"))return;let o;try{o=new URL(a,window.location.href)}catch{return}o.origin===window.location.origin&&t(o.pathname)===e&&n.classList.add("w--current")})})}(),t(),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-separator]").forEach(t=>{const e=t.getAttribute("data-separator");if(!e)return;const n=Array.from(t.children);n.forEach((t,a)=>{if(a<n.length-1){const n=document.createElement("span");n.innerHTML=`${e}`,t.insertAdjacentElement("afterend",n)}})})}),void 0!==window.Webflow&&window.Webflow.push(()=>{document.querySelectorAll(".copyright-year").forEach(t=>{t.textContent=(new Date).getFullYear().toString()})}),document.addEventListener("DOMContentLoaded",()=>{const t=new URLSearchParams(window.location.search),i=t.get("tab"),l=t.get("tabGroup");if(i){let t=null;l?(document.querySelectorAll(`.tab-link[data-tab-group="${l}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${l}"]`).forEach(n=>{e(n)===i&&(t=n)}),document.querySelectorAll(`.tab-link[data-tab-group="${l}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${l}"]`).forEach(t=>{t.classList.remove("active")}),document.querySelectorAll(`[data-tab-content][data-tab-group="${l}"]`).forEach(t=>{t.style.display="none",t.classList.remove("active")}),a(l).forEach(t=>{n(t).forEach(t=>{t.style.display="none",t.classList.remove("active")})})):document.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(n=>{e(n)===i&&(t=n)}),t&&r(t)}if(document.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(t=>{t.addEventListener("click",t=>{t.preventDefault(),r(t.currentTarget)})}),i||document.querySelectorAll(".tab-link.active:not([data-lang-link]):not([data-lang]), [data-tab-link].active").forEach(t=>{const r=t,i=r.dataset.tabGroup,l=e(r),s=l?n(l):[];if(s.length>0){if(i)document.querySelectorAll(`[data-tab-content][data-tab-group="${i}"]`).forEach(t=>{s.includes(t)||(t.style.display="none",t.classList.remove("active"))}),a(i).forEach(t=>{n(t).forEach(t=>{s.includes(t)||(t.style.display="none",t.classList.remove("active"))})});else{const t=r.parentNode;t&&o(t).forEach(t=>{n(t).forEach(t=>{s.includes(t)||(t.style.display="none",t.classList.remove("active"))})})}s.forEach(t=>{t.style.display="block",t.classList.add("active")})}}),!i){const t=new Set;document.querySelectorAll(".tab-link[data-tab-first-active]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-first-active]").forEach(e=>{const n=e,a=n.dataset.tabGroup;if(!(l&&a===l||n.classList.contains("active")))if(a){if(t.has(a))return;if(null!==document.querySelector(`.tab-link.active[data-tab-group="${a}"]:not([data-lang-link]):not([data-lang]), [data-tab-link].active[data-tab-group="${a}"]`))return void t.add(a);t.add(a);const e=document.querySelector(`.tab-link[data-tab-group="${a}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${a}"]`);e&&r(e)}else{const t=n.parentNode;t&&null!==t.querySelector(".tab-link.active:not([data-lang-link]):not([data-lang]), [data-tab-link].active")||r(n)}}),document.querySelectorAll("[data-tab-first-active][data-tab-group]").forEach(e=>{const n=e.dataset.tabGroup;if(!n)return;if(l&&n===l)return;if(t.has(n))return;if(null!==document.querySelector(`.tab-link.active[data-tab-group="${n}"]:not([data-lang-link]):not([data-lang]), [data-tab-link].active[data-tab-group="${n}"]`))return void t.add(n);t.add(n);const a=document.querySelector(`.tab-link[data-tab-group="${n}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${n}"]`);a&&r(a)})}}),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-lang-link]").forEach(t=>{t.addEventListener("click",t=>{t.preventDefault();const e=i(t.currentTarget);e&&d(e)})}),c()}),"interactive"!==document.readyState&&"complete"!==document.readyState||c(),document.addEventListener("DOMContentLoaded",()=>{const t=["maxresdefault","sddefault","hqdefault","mqdefault","default"],e=(n,a=0)=>{if(n.naturalWidth>120)return;if(a>=t.length)return;const o=t[a],r=n.src,i=new Image;i.onload=()=>{i.naturalWidth>120?n.src=i.src:e(n,a+1)},i.onerror=()=>{e(n,a+1)},i.src=r.replace(/maxresdefault/,o)};document.querySelectorAll(".youtube img").forEach(t=>{e(t)})}),document.addEventListener("DOMContentLoaded",()=>{let t=[];const e=document.querySelectorAll(".youtube"),n={};let a=!1;const o=document.querySelectorAll("._init-plyr").length>0,r=y("youtube"),i=y("vimeo"),l=y("dailymotion"),s=()=>{a||(a=!0,E(e,n,t))};r&&(window.onYouTubeIframeAPIReady=()=>{s()});const d=[];var c;o&&d.push(window.Plyr&&"function"==typeof window.Plyr.setup?Promise.resolve():Promise.all([(c="https://cdn.plyr.io/3.7.8/plyr.css",u(c,"stylesheet")),f("https://cdn.plyr.io/3.7.8/plyr.polyfilled.js")]).then(()=>{}).catch(t=>{throw console.error("Failed to load Plyr resources:",t),t})),r&&d.push(window.YT&&"function"==typeof window.YT.Player?Promise.resolve():f("https://www.youtube.com/iframe_api").catch(t=>{console.error("Failed to load YouTube API:",t)})),i&&d.push(window.Vimeo&&"function"==typeof window.Vimeo.Player?Promise.resolve():f("https://player.vimeo.com/api/player.js").catch(t=>{console.error("Failed to load Vimeo API:",t)})),l&&d.push(window.dailymotion&&"function"==typeof window.dailymotion.createPlayer?Promise.resolve():f("https://api.dmcdn.net/all.js").catch(t=>{console.error("Failed to load Dailymotion API:",t)})),d.length>0?Promise.all(d).then(()=>{o&&g(t),r?setTimeout(()=>{a||s()},1e3):setTimeout(()=>{s()},100)}).catch(e=>{console.error("Error loading video player APIs:",e),o&&void 0!==window.Plyr&&g(t),setTimeout(()=>{s()},500)}):(o&&void 0!==window.Plyr&&g(t),s());const p="undefined"!=typeof window?window.videoSwipers:void 0;p&&p.forEach(e=>{e.on("slideChange",()=>{w(null,t,n)})})}),document.addEventListener("DOMContentLoaded",()=>{H(),window.addEventListener("popstate",()=>{H()}),window.addEventListener("hashchange",()=>{H()}),new MutationObserver(t=>{null!==F&&t.every(t=>F.has(t.target))||(null!==W&&clearTimeout(W),W=setTimeout(()=>{W=null,H()},50))}).observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class","style","hidden"]})}),"interactive"!==document.readyState&&"complete"!==document.readyState||H()}();
|
|
1
|
+
/*! dm-js-lib v1.2.0 */
|
|
2
|
+
!function(){"use strict";function t(){document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-download-href]").forEach(t=>{t.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const n=t.getAttribute("data-download-href"),a=t.getAttribute("data-download-filename");n&&((t,e)=>{const n=document.createElement("a");n.href=t,n.download=e||t.split("/").pop()||"download",n.target="_blank",document.body.appendChild(n),n.click(),document.body.removeChild(n)})(n,a)})})})}function e(t){const e=t.dataset.tabTarget;if(e)return e;const n=t.dataset.tabLink;if(n)return n;const a=t.getAttribute("href");return a?.startsWith("#")?a.slice(1):null}function n(t){return Array.from(document.querySelectorAll(`[data-tab-content="${t}"]`))}function a(t){const n=[];return document.querySelectorAll(`.tab-link[data-tab-group="${t}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${t}"]`).forEach(t=>{const a=e(t);a&&n.push(a)}),n}function o(t){const n=[];return t.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(t=>{const a=e(t);a&&n.push(a)}),n}function r(t){const r=t.dataset.tabGroup,i=e(t),l=i?n(i):[];if(r){document.querySelectorAll(`.tab-link[data-tab-group="${r}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${r}"]`).forEach(t=>{t.classList.remove("active")}),document.querySelectorAll(`[data-tab-content][data-tab-group="${r}"]`).forEach(t=>{t.style.display="none",t.classList.remove("active")});a(r).forEach(t=>{n(t).forEach(t=>{t.style.display="none",t.classList.remove("active")})})}else{const e=t.parentNode;if(e){e.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(t=>{t.classList.remove("active")});o(e).forEach(t=>{n(t).forEach(t=>{t.style.display="none",t.classList.remove("active")})})}}t.classList.add("active"),l.forEach(t=>{t.style.display="block",t.classList.add("active")})}function i(t){const e=t.dataset.langLink;if(e)return e;const n=t.textContent?.trim().toLowerCase();return n||null}function l(t){const e=t.match(/^([a-z]{2})(?:-|$)/i);return e?e[1].toLowerCase():null}function s(t){if(document.querySelector(`[data-lang-link="${t}"]`))return!0;return!!document.querySelector(`[data-lang-content="${t}"]`)}function d(t){sessionStorage.setItem("selected_lang",t),document.querySelectorAll("[data-lang-content]").forEach(e=>{const n=e;n.dataset.langContent===t?(n.style.display="",n.classList.add("lang-active")):(n.style.display="none",n.classList.remove("lang-active"))}),document.querySelectorAll("[data-lang-link]").forEach(e=>{const n=e;i(n)===t?n.classList.add("active"):n.classList.remove("active")})}function c(){let t=sessionStorage.getItem("selected_lang");if(!t){const e=function(){if(navigator.languages&&navigator.languages.length>0)for(const t of navigator.languages){const e=l(t);if(e)return e}return navigator.language?l(navigator.language):null}();if(e&&s(e))t=e;else{if(!s("en"))return;t="en"}}if(t){const e=document.querySelector(`[data-lang-link="${t}"]`);if(e)return void e.click();d(t)}}function u(t,e="script"){return new Promise((n,a)=>{const o="script"===e?`script[src="${t}"]`:`link[rel="stylesheet"][href="${t}"]`;if(document.querySelector(o))n();else if("script"===e){const e=document.createElement("script");e.src=t,e.async=!0,e.onload=()=>n(),e.onerror=()=>a(new Error(`Failed to load script: ${t}`)),document.head.appendChild(e)}else if("stylesheet"===e){const e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onload=()=>n(),e.onerror=()=>a(new Error(`Failed to load stylesheet: ${t}`)),document.head.appendChild(e)}else a(new Error(`Unsupported resource type: ${e}`))})}function f(t){return u(t,"script")}function y(t){const e=document.querySelectorAll(".youtube");return Array.from(e).some(e=>e.dataset.type===t)}const p="youtube-pause-overlay";function m(t){const e=t.querySelector(`.${p}`);e?.remove()}"undefined"!=typeof window&&void 0===window.videoSwipers&&(window.videoSwipers=[]);const h=()=>"undefined"!=typeof window?window.videoSwipers:void 0;function g(t){if(void 0!==window.Plyr){const e=window.Plyr.setup("._init-plyr");t.push(...e),e.forEach(e=>{e.on("play",()=>{w(null,t,{},e);const n=h();n&&n.forEach(t=>{t.autoplay.stop()})}),e.on("pause",()=>{const t=h();t&&t.forEach(t=>{t.autoplay.start()})})})}}function w(t=null,e,n,a=null){e.forEach(t=>{a&&t===a||t.pause()});for(const[e,a]of Object.entries(n))if(t!==e)if("youtube"===a.type){a.player.pauseVideo()}else if("vimeo"===a.type){a.player.pause()}else if("dailymotion"===a.type){a.player.pause()}}function b(t,e,n){w(t,e,n);const a=h();a&&a.forEach(t=>{t.autoplay.stop()})}function v(t){const e=h();e&&e.forEach(t=>{t.autoplay.start()})}function E(t,e,n){t.forEach(t=>{t.addEventListener("click",()=>{const a=t.querySelector("[data-custom-embed]");a&&(t.innerHTML=a.innerHTML);const o=t,r=`player_${o.dataset.id}`,i=o.dataset.type,l=o.dataset.videoId,s=parseInt(o.dataset.time||"0",10);if(l&&i)if(b(r,n,e),"other"!==i){if("ardmediathek"===i){const t=`https://www.ardmediathek.de/embed/${encodeURIComponent(l)}`,e=document.createElement("iframe");return e.src=t,e.setAttribute("allowfullscreen",""),e.setAttribute("allow","fullscreen"),e.setAttribute("frameborder","0"),e.style.width="100%",e.style.aspectRatio="16/9",o.innerHTML="",void o.appendChild(e)}if("youtube"===i&&window.YT){o.id=r,o.innerHTML="";const t=new window.YT.Player(r,{videoId:l,playerVars:{start:s,rel:0},events:{onReady:t=>{t.target.playVideo()},onStateChange:t=>{t.data===window.YT.PlayerState.PLAYING?(m(o),b(r,n,e)):t.data!==window.YT.PlayerState.PAUSED&&t.data!==window.YT.PlayerState.ENDED||(!function(t,e){m(t);const n=document.createElement("div");n.className=p,n.setAttribute("aria-hidden","true"),Object.assign(n.style,{position:"absolute",inset:"0",cursor:"pointer",zIndex:"1"}),n.addEventListener("click",()=>{m(t),e.playVideo()}),t.style.position="relative",t.appendChild(n)}(o,t.target),v())}}});e[r]={type:i,player:t}}else if("vimeo"===i&&window.Vimeo){const t=document.getElementById(r);t&&(t.innerHTML="");const a=new window.Vimeo.Player(r,{id:l,autoplay:!0,start:s});a.on("play",()=>b(r,n,e)),a.on("pause",()=>v()),e[r]={type:i,player:a}}else"dailymotion"===i&&window.dailymotion&&window.dailymotion.createPlayer(r,{video:l,params:{autoplay:1,start:s,mute:!1}}).then(t=>{t.on("play",()=>b(r,n,e)),t.on("pause",()=>v()),t.on("ended",()=>v()),e[r]={type:"dailymotion",player:t}}).catch(t=>{console.error("Error initializing Dailymotion player:",t)})}else window.open(l,"_blank","noopener,noreferrer")})})}function k(t){let e=new Date(t);if(!isNaN(e.getTime()))return e;const n=t.match(/^(\d{4}-\d{2}-\d{2})\s+(\d{1,2}):(\d{2})$/);if(n){const[,t,a,o]=n;if(e=new Date(t),!isNaN(e.getTime()))return e.setHours(parseInt(a,10),parseInt(o,10),0,0),e}return null}function L(t){const e=t.match(/^(\d{1,2}):(\d{2})$/);if(!e)return null;const n=parseInt(e[1],10),a=parseInt(e[2],10);if(n<0||n>23||a<0||a>59)return null;const o=new Date;return o.setHours(n,a,0,0),o}function S(t,e,n){return!(e&&t<e)&&!(n&&t>n)}function A(t,e,n){const a=60*t.getHours()+t.getMinutes();if(e){if(a<60*e.getHours()+e.getMinutes())return!1}if(n){if(a>60*n.getHours()+n.getMinutes())return!1}return!0}function q(t){const e=new Date(t);return e.setHours(0,0,0,0),e}function C(t){const e=new Date;if(t.startsWith("before:")){const n=L(t.substring(7));return!!n&&A(e,void 0,n)}if(t.startsWith("after:")){const n=L(t.substring(6));return!!n&&A(e,n,void 0)}if(t.startsWith("between:")){const n=t.substring(8).split(",");if(2!==n.length)return!1;const a=L(n[0].trim()),o=L(n[1].trim());return!(!a||!o)&&A(e,a,o)}if(t.startsWith("day:")){const e=t.substring(4),n=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][(new Date).getDay()];if("weekday"===e)return["monday","tuesday","wednesday","thursday","friday"].includes(n);if("weekend"===e)return["saturday","sunday"].includes(n);return e.split("|").map(t=>t.trim().toLowerCase()).includes(n)}return!1}function T(t){if(!t.startsWith("param:"))return!1;const e=t.substring(6),n=new URLSearchParams(window.location.search);if(e.startsWith("!")){const t=e.substring(1);return!n.has(t)}if(e.includes("!=")){const[t,a]=e.split("!=");return n.get(t)!==a}if(e.includes("=")){const[t,a]=e.split("=");return n.get(t)===a}return n.has(e)}const $=new Set(["script","style","template","link","noscript"]),P=/(?:^|\s+)(current-year|before:|after:|between:|on:|day:)/g;function D(t){const e=t.tagName.toLowerCase();if($.has(e))return!1;if(null!==t.getAttribute("hidden"))return!1;try{const e=window.getComputedStyle(t);if("none"===e.display||"hidden"===e.visibility||0===parseFloat(e.opacity))return!1}catch{return!0}return!0}function I(t){const e=t.tagName.toLowerCase();if($.has(e))return!1;if(null!==t.getAttribute("hidden"))return!1;const n=t;return"none"!==n.style?.display}function M(t,e){const n=e?.classList.contains("conditional-hidden")&&(t===e||e.contains(t))?I:D;let a=0;for(let e=0;e<t.children.length;e++)n(t.children[e])&&a++;return a}function W(t){const e=t.dataset.conditionalDate?.trim(),n=t.dataset.conditionalUrl?.trim(),a=t.dataset.conditionalChildren?.trim(),o=e?e.split("|").map(t=>t.trim()).filter(t=>t):[],r=n?n.split("|").map(t=>t.trim()).filter(t=>t):[],i=a?a.split("|").map(t=>t.trim()).filter(t=>t):[];if(o.length>0){if(!o.map(t=>{const e=function(t){const e=t.trim();if(!e)return[];const n=[],a=new RegExp(P.source,P.flags);let o;for(;null!==(o=a.exec(e));){const t=o[1],e=o.index+o[0].length-t.length;n.push(e)}if(0===n.length)return[e];const r=Array.from(new Set(n)).sort((t,e)=>t-e),i=[];for(let t=0;t<r.length;t++){const n=r[t],a=r[t+1]??e.length,o=e.slice(n,a).trim();o&&i.push(o)}return i}(t);return 0!==e.length&&e.every(t=>t.startsWith("day:")||t.match(/^(before|after|between):\d{1,2}:\d{2}/)?C(t):function(t){const e=new Date,n=t.trim();if("current-year"===n.toLowerCase()){const t=e.getFullYear(),n=new Date(t,0,1),a=new Date(t,11,31);return S(q(e),q(n),q(a))}if(n.startsWith("before:")){const t=n.substring(7),a=k(t);return!!a&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(t)?e<a:q(e)<q(a))}if(n.startsWith("after:")){const t=n.substring(6),a=k(t);return!!a&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(t)?e>a:q(e)>q(a))}if(n.startsWith("between:")){const t=n.substring(8).split(",");if(2!==t.length)return!1;const a=k(t[0].trim()),o=k(t[1].trim());if(!a||!o)return!1;const r=/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(t[0]),i=/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(t[1]);return r||i?S(e,a,o):S(q(e),q(a),q(o))}if(n.startsWith("on:")){const t=n.substring(3),a=k(t);return!!a&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(t)?e.getTime()-e.getTime()%6e4==a.getTime()-a.getTime()%6e4:q(e).getTime()===q(a).getTime())}return!1}(t))}).some(t=>t))return!1}if(r.length>0){if(!r.map(t=>T(t)).some(t=>t))return!1}if(i.length>0){const e=i.map(e=>function(t,e){const n=e.trim();if(!n||"self"===n.toLowerCase())return M(t,t)>0;const a="self ";if(n.toLowerCase().startsWith(a)){const e=n.slice(5).trim();if(!e)return!1;const a=t.querySelector(e);return null!==a&&M(a,t)>0}const o=document.querySelector(n);return null!==o&&M(o,t)>0}(t,e));if(!e.some(t=>t))return!1}return!0}let F=null,H=null;function N(){const t=document.querySelectorAll("[data-conditional], [data-conditional-date], [data-conditional-url], [data-conditional-children]");H=new Set(Array.from(t));try{t.forEach(t=>{!function(t){const e=W(t);("show"===(t.dataset.conditionalMode||"show")?e:!e)?(t.style.removeProperty("display"),t.classList.add("conditional-active"),t.classList.remove("conditional-hidden")):(t.style.display="none",t.classList.add("conditional-hidden"),t.classList.remove("conditional-active"))}(t)})}finally{setTimeout(()=>{H=null},0)}}!function(){let t=!1;const e=()=>{window.FsCC?(t||(window.FsCC.consentController.on("updateconsents",()=>{e()}),t=!0),document.querySelectorAll("[fs-cc-reject]").forEach(t=>{const e=t.getAttribute("fs-cc-reject");if(!e)return;const n=window.FsCC?.store.consents[e]??!1,a=document.querySelector(`[fs-cc="${e}"]`);n?(t.style.display="none",a&&(a.style.display="block")):(t.style.display="block",a&&(a.style.display="none"))})):setTimeout(e,200)};document.addEventListener("DOMContentLoaded",e)}(),function(){const t=t=>{const e=(t||"").replace(/\/+$/,"").replace(/\.html?$/i,"");return""===e?"/":e};window.addEventListener("load",()=>{const e=t(window.location.pathname);document.querySelectorAll("a[href]").forEach(n=>{const a=n.getAttribute("href");if(!a)return;if(a.startsWith("#")||a.toLowerCase().startsWith("javascript:"))return;let o;try{o=new URL(a,window.location.href)}catch{return}o.origin===window.location.origin&&t(o.pathname)===e&&n.classList.add("w--current")})})}(),t(),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-separator]").forEach(t=>{const e=t.getAttribute("data-separator");if(!e)return;const n=Array.from(t.children);n.forEach((t,a)=>{if(a<n.length-1){const n=document.createElement("span");n.innerHTML=`${e}`,t.insertAdjacentElement("afterend",n)}})})}),void 0!==window.Webflow&&window.Webflow.push(()=>{document.querySelectorAll(".copyright-year").forEach(t=>{t.textContent=(new Date).getFullYear().toString()})}),document.addEventListener("DOMContentLoaded",()=>{const t=new URLSearchParams(window.location.search),i=t.get("tab"),l=t.get("tabGroup");if(i){let t=null;l?(document.querySelectorAll(`.tab-link[data-tab-group="${l}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${l}"]`).forEach(n=>{e(n)===i&&(t=n)}),document.querySelectorAll(`.tab-link[data-tab-group="${l}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${l}"]`).forEach(t=>{t.classList.remove("active")}),document.querySelectorAll(`[data-tab-content][data-tab-group="${l}"]`).forEach(t=>{t.style.display="none",t.classList.remove("active")}),a(l).forEach(t=>{n(t).forEach(t=>{t.style.display="none",t.classList.remove("active")})})):document.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(n=>{e(n)===i&&(t=n)}),t&&r(t)}if(document.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(t=>{t.addEventListener("click",t=>{t.preventDefault(),r(t.currentTarget)})}),i||document.querySelectorAll(".tab-link.active:not([data-lang-link]):not([data-lang]), [data-tab-link].active").forEach(t=>{const r=t,i=r.dataset.tabGroup,l=e(r),s=l?n(l):[];if(s.length>0){if(i)document.querySelectorAll(`[data-tab-content][data-tab-group="${i}"]`).forEach(t=>{s.includes(t)||(t.style.display="none",t.classList.remove("active"))}),a(i).forEach(t=>{n(t).forEach(t=>{s.includes(t)||(t.style.display="none",t.classList.remove("active"))})});else{const t=r.parentNode;t&&o(t).forEach(t=>{n(t).forEach(t=>{s.includes(t)||(t.style.display="none",t.classList.remove("active"))})})}s.forEach(t=>{t.style.display="block",t.classList.add("active")})}}),!i){const t=new Set;document.querySelectorAll(".tab-link[data-tab-first-active]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-first-active]").forEach(e=>{const n=e,a=n.dataset.tabGroup;if(!(l&&a===l||n.classList.contains("active")))if(a){if(t.has(a))return;if(null!==document.querySelector(`.tab-link.active[data-tab-group="${a}"]:not([data-lang-link]):not([data-lang]), [data-tab-link].active[data-tab-group="${a}"]`))return void t.add(a);t.add(a);const e=document.querySelector(`.tab-link[data-tab-group="${a}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${a}"]`);e&&r(e)}else{const t=n.parentNode;t&&null!==t.querySelector(".tab-link.active:not([data-lang-link]):not([data-lang]), [data-tab-link].active")||r(n)}}),document.querySelectorAll("[data-tab-first-active][data-tab-group]").forEach(e=>{const n=e.dataset.tabGroup;if(!n)return;if(l&&n===l)return;if(t.has(n))return;if(null!==document.querySelector(`.tab-link.active[data-tab-group="${n}"]:not([data-lang-link]):not([data-lang]), [data-tab-link].active[data-tab-group="${n}"]`))return void t.add(n);t.add(n);const a=document.querySelector(`.tab-link[data-tab-group="${n}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${n}"]`);a&&r(a)})}}),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-lang-link]").forEach(t=>{t.addEventListener("click",t=>{t.preventDefault();const e=i(t.currentTarget);e&&d(e)})}),c()}),"interactive"!==document.readyState&&"complete"!==document.readyState||c(),document.addEventListener("DOMContentLoaded",()=>{const t=["maxresdefault","sddefault","hqdefault","mqdefault","default"],e=(n,a=0)=>{if(n.naturalWidth>120)return;if(a>=t.length)return;const o=t[a],r=n.src,i=new Image;i.onload=()=>{i.naturalWidth>120?n.src=i.src:e(n,a+1)},i.onerror=()=>{e(n,a+1)},i.src=r.replace(/maxresdefault/,o)};document.querySelectorAll(".youtube img").forEach(t=>{e(t)})}),document.addEventListener("DOMContentLoaded",()=>{let t=[];const e=document.querySelectorAll(".youtube"),n={};let a=!1;const o=document.querySelectorAll("._init-plyr").length>0,r=y("youtube"),i=y("vimeo"),l=y("dailymotion"),s=()=>{a||(a=!0,E(e,n,t))};r&&(window.onYouTubeIframeAPIReady=()=>{s()});const d=[];var c;o&&d.push(window.Plyr&&"function"==typeof window.Plyr.setup?Promise.resolve():Promise.all([(c="https://cdn.plyr.io/3.7.8/plyr.css",u(c,"stylesheet")),f("https://cdn.plyr.io/3.7.8/plyr.polyfilled.js")]).then(()=>{}).catch(t=>{throw console.error("Failed to load Plyr resources:",t),t})),r&&d.push(window.YT&&"function"==typeof window.YT.Player?Promise.resolve():f("https://www.youtube.com/iframe_api").catch(t=>{console.error("Failed to load YouTube API:",t)})),i&&d.push(window.Vimeo&&"function"==typeof window.Vimeo.Player?Promise.resolve():f("https://player.vimeo.com/api/player.js").catch(t=>{console.error("Failed to load Vimeo API:",t)})),l&&d.push(window.dailymotion&&"function"==typeof window.dailymotion.createPlayer?Promise.resolve():f("https://api.dmcdn.net/all.js").catch(t=>{console.error("Failed to load Dailymotion API:",t)})),d.length>0?Promise.all(d).then(()=>{o&&g(t),r?setTimeout(()=>{a||s()},1e3):setTimeout(()=>{s()},100)}).catch(e=>{console.error("Error loading video player APIs:",e),o&&void 0!==window.Plyr&&g(t),setTimeout(()=>{s()},500)}):(o&&void 0!==window.Plyr&&g(t),s());const p="undefined"!=typeof window?window.videoSwipers:void 0;p&&p.forEach(e=>{e.on("slideChange",()=>{w(null,t,n)})})}),document.addEventListener("DOMContentLoaded",()=>{N(),window.addEventListener("popstate",()=>{N()}),window.addEventListener("hashchange",()=>{N()}),new MutationObserver(t=>{null!==H&&t.every(t=>H.has(t.target))||(null!==F&&clearTimeout(F),F=setTimeout(()=>{F=null,N()},50))}).observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["class","style","hidden"]})}),"interactive"!==document.readyState&&"complete"!==document.readyState||N()}();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! dm-js-lib/filter v1.
|
|
2
|
-
var Filter=function(t){"use strict";function e(t){let e=t;for(;e;){const t=e.dataset.filterInstance;if(t)return t;e=e.parentElement}return null}function a(t,e){const a=`[data-filter-field="${t}"]`,l=e?`[data-filter-instance="${e}"] ${a}, ${a}[data-filter-instance="${e}"]`:`${a}:not([data-filter-instance])`,i=document.querySelectorAll(l);let n=null;for(const t of Array.from(i)){const e=t;if(null===e.closest("[data-filter-list]")){n=e;break}}if(!n)return!1;if("input"===n.tagName.toLowerCase()){const t=n.type;return"text"===t||"search"===t}return!1}function l(t){const e={},a={},l="[data-filter-field]",i=t?`[data-filter-instance="${t}"] ${l}, ${l}[data-filter-instance="${t}"]`:`${l}:not([data-filter-instance])`;return document.querySelectorAll(i).forEach(t=>{const l=t,i=l.dataset.filterField;if(i){if(null!==l.closest("[data-filter-list]"))return;const t=function(t){const e=t.tagName.toLowerCase();if("input"===e){const e=t.type;return"checkbox"===e||"radio"===e?t.checked?t.value||"true":null:"text"===e||"search"===e?t.value.trim()||null:t.value||null}if("select"===e)return t.value||null;const a=t.dataset.filterValue;return a?"radio"===t.dataset.filterType?t.classList.contains("active")?a:null:a:null}(l);let n=!1;if("select"===l.tagName.toLowerCase()){const e=l,a=e.dataset.filterAllValue||"",i=e.dataset.filterAllText||"All";(!t||""===t||t===a||t.trim&&t.trim()===a)&&(n=!0);const r=e.options[e.selectedIndex];if(r&&(!r.hasAttribute("value")||""===r.value)){const t=r.textContent?.trim().toLowerCase()||"";(t===i.toLowerCase()||t.startsWith("select")||t.startsWith("choose")||"all"===t||""===t)&&(n=!0)}}if(t&&"string"==typeof t&&t.trim().length>0&&!n){const n=function(t){return t?t.split(",").map(t=>t.trim()).filter(t=>t.length>0):[]}(l.dataset.filterSearch);n.length>0&&(a[i]=n),e[i]||(e[i]=[]),e[i].push(t.toLowerCase())}}}),{filters:e,multifieldSearches:a}}function i(t,e){if(t.dataset.filterField===e){return(t.dataset.filterValue||t.textContent?.trim()||"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}const a=t.querySelector(`[data-filter-field="${e}"]`);if(a){return(a.dataset.filterValue||a.textContent?.trim()||a.getAttribute("value")||"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}const l=t.dataset.filterValue;if(l){return l.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}return[]}function n(t){const e=[],a=t.dataset.filterValue;return a&&e.push(...a.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)),e}const r=new Map;function o(t){return t||"default"}function s(t,e){const a=o(t),l="[data-filter-count], [data-filter-results]",i=t?`[data-filter-instance="${t}"] ${l}, ${l}[data-filter-instance="${t}"]`:`${l}:not([data-filter-instance])`,n=t?`[data-filter-instance="${t}"] [data-filter-empty], [data-filter-empty][data-filter-instance="${t}"]`:"[data-filter-empty]:not([data-filter-instance])",s=t?`[data-filter-instance="${t}"] [data-filter-loading], [data-filter-loading][data-filter-instance="${t}"]`:"[data-filter-loading]:not([data-filter-instance])";let c=[];const f=e.querySelectorAll("[data-filter-item]");if(f.length>0)c=Array.from(f);else if(Array.from(e.children).forEach(t=>{t instanceof HTMLElement&&c.push(t)}),0===c.length){const t=e.querySelectorAll("[data-filter-field]");c=Array.from(t)}const d={listElement:e,items:c,controls:Array.from(document.querySelectorAll(t?`[data-filter-instance="${t}"] [data-filter-field], [data-filter-field][data-filter-instance="${t}"]`:"[data-filter-field]:not([data-filter-instance])")),countElements:Array.from(document.querySelectorAll(i)),emptyElement:document.querySelector(n)||null,loadingElement:document.querySelector(s)||null,lastUpdate:Date.now()};return r.set(a,d),d}function c(t,e){const a=o(t),l=r.get(a);return l&&l.listElement===e?l:s(t,e)}function f(t){const r=e(t),{filters:o,multifieldSearches:s}=l(r),f=c(r,t),d=f.items;f.loadingElement&&(f.loadingElement.style.display="",f.loadingElement.classList.add("filter-loading-active")),requestAnimationFrame(()=>{let e=0;if(d.forEach(t=>{const l=function(t,e,l,r){const o={};for(const[t,a]of Object.entries(e))a.length>0&&(o[t]=a);if(0===Object.keys(o).length)return!0;for(const[e,s]of Object.entries(o)){const o=l[e];if(o&&o.length>0){if(!s.some(e=>{const a=o.some(a=>i(t,a).some(t=>t.includes(e)||e.includes(t)));return a||n(t).some(t=>t.includes(e)||e.includes(t))}))return!1}else{let l=i(t,e);if(0===l.length&&(l=n(t)),0===l.length)return!1;const o=a(e,r);if(!s.some(t=>l.some(e=>o?e.includes(t)||t.includes(e):e===t)))return!1}}return!0}(t,o,s,r);l?(t.style.display="",t.classList.add("filter-active"),t.classList.remove("filter-hidden"),e++):(t.style.display="none",t.classList.add("filter-hidden"),t.classList.remove("filter-active"))}),function(t,e,a,l,i){const n=i?.countElements||[];if(0===n.length){const t="[data-filter-count], [data-filter-results]",e=l?`[data-filter-instance="${l}"] ${t}, ${t}[data-filter-instance="${l}"]`:`${t}:not([data-filter-instance])`;n.push(...Array.from(document.querySelectorAll(e)))}n.forEach(t=>{const l=t;void 0!==l.dataset.filterCount&&(l.textContent=e.toString(),l.setAttribute("aria-label",`Total items: ${e}`)),void 0!==l.dataset.filterResults&&(l.textContent=a.toString(),l.setAttribute("aria-label",`Showing ${a} of ${e} items`))})}(0,d.length,e,r,f),f.emptyElement)if(0===e){f.emptyElement.style.display="",f.emptyElement.classList.add("filter-empty-active");const t=f.emptyElement.dataset.filterEmptyText;if(t){(f.emptyElement.querySelector("[data-filter-empty-text-content]")||f.emptyElement).textContent=t}}else f.emptyElement.style.display="none",f.emptyElement.classList.remove("filter-empty-active");f.loadingElement&&(f.loadingElement.style.display="none",f.loadingElement.classList.remove("filter-loading-active"));const l=new CustomEvent("filter:change",{detail:{instance:r,filters:o,visibleCount:e,total:d.length}});if(t.dispatchEvent(l),0===e){const e=new CustomEvent("filter:empty",{detail:{instance:r,filters:o}});t.dispatchEvent(e)}const c=document.querySelector(`#filter-live-${r||"default"}`);c&&(c.textContent=0===e?"No results found":`Showing ${e} of ${d.length} items`);const u=t.dataset.filterScroll;u&&requestAnimationFrame(()=>{if("top"===u)window.scrollTo({top:0,behavior:"smooth"});else if("anchor"===u){const e=t.dataset.filterScrollAnchor,a=e?document.querySelector(e):t;a?.scrollIntoView({behavior:"smooth",block:"start"})}else{const t=document.querySelector(u);t?.scrollIntoView({behavior:"smooth",block:"start"})}});"true"===t.dataset.filterUrl&&function(t,e){const a=new URLSearchParams(window.location.search),l=t?`filter_${t}_`:"filter_";Array.from(a.keys()).forEach(t=>{t.startsWith(l)&&a.delete(t)}),Object.entries(e).forEach(([t,e])=>{e.length>0&&a.set(`${l}${t}`,e.join(","))});const i=`${window.location.pathname}${a.toString()?`?${a.toString()}`:""}${window.location.hash}`;window.history.pushState({},"",i)}(r,o);const m=t.dataset.filterPersist;m&&function(t,e,a){try{const l=`filter_${t}_${e||"default"}`;localStorage.setItem(l,JSON.stringify(a))}catch(t){console.warn("Failed to save filter state to localStorage",t)}}(m,r,o)})}function d(t){const a=e(t),l="[data-filter-list]",i=a?`[data-filter-instance="${a}"] ${l}, ${l}[data-filter-instance="${a}"]`:`${l}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{f(t)})}function u(t,e,a){const l=new Set;return Array.from(t).forEach(t=>{(function(t,e,a){const l=c(a,t),n=new Set;return l.items.forEach(t=>{i(t,e).forEach(t=>{t&&n.add(t)})}),Array.from(n)})(t,e,a).forEach(t=>l.add(t))}),Array.from(l).sort()}function m(t){const a=t.dataset.filterField;if(!a)return;if(!("true"===t.dataset.filterAutofill))return;const l=t.options.length>0,i="true"===t.dataset.filterAutofillRefresh;if(l&&!i){const e=t.options[0];if(!("true"===e?.dataset.filterAutofillOption))return;if(!i)return;Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()})}const n=e(t),r="[data-filter-list]",o=n?`[data-filter-instance="${n}"] ${r}, ${r}[data-filter-instance="${n}"]`:`${r}:not([data-filter-instance])`,s=document.querySelectorAll(o);if(0===s.length)return;const c=u(s,a,n);if(0===c.length)return;const f=t.dataset.filterAllValue||"",d=t.dataset.filterAllText||"All",m="false"!==t.dataset.filterAutofillAll;if(l?Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()}):t.innerHTML="",m){const e=document.createElement("option");e.value=f,e.textContent=d,e.dataset.filterAutofillOption="true",t.appendChild(e)}c.forEach(e=>{const a=document.createElement("option");a.value=e,a.textContent=e.split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "),a.dataset.filterAutofillOption="true",t.appendChild(a)})}function h(t){const e="select[data-filter-field]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`;document.querySelectorAll(a).forEach(t=>{const e=t;"true"===e.dataset.filterAutofill&&m(e)})}const p={setFilter:(t,e,a)=>{const l=`[data-filter-field="${e}"]`,i=t?`[data-filter-instance="${t}"] ${l}, ${l}[data-filter-instance="${t}"]`:`${l}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{const e=t,l=e.tagName.toLowerCase();if("input"===l){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=t.value.toLowerCase()===a.toLowerCase():t.value=a}else"select"===l&&(e.value=a)});const n="[data-filter-list]",r=t?`[data-filter-instance="${t}"] ${n}, ${n}[data-filter-instance="${t}"]`:`${n}:not([data-filter-instance])`,o=document.querySelector(r);o&&f(o)},clear:t=>{const e="[data-filter-list]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`,l=document.querySelector(a);if(l){const e="[data-filter-field]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`;document.querySelectorAll(a).forEach(t=>{const e=t,a=e.tagName.toLowerCase();if("input"===a){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=!1:t.value=""}else"select"===a?e.selectedIndex=0:e.classList.remove("active")}),f(l)}},getActiveFilters:t=>{const{filters:e}=l(t);return e},refresh:t=>{const e="[data-filter-list]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`,l=document.querySelector(a);l&&(s(t,l),h(t),f(l))}};let y=!1,$=!1,v=!1,E=!1;function A(){if(y||(window.filterAPI=p),$||(document.querySelectorAll('input[type="checkbox"][data-filter-field]').forEach(t=>{const e=t;null===e.closest("[data-filter-list]")&&e.addEventListener("change",()=>{d(e)})}),document.querySelectorAll('input[type="radio"][data-filter-field]').forEach(t=>{const a=t;null===a.closest("[data-filter-list]")&&a.addEventListener("change",()=>{const t=a.dataset.filterField,l=e(a),i=a.name;if(i)document.querySelectorAll(`input[type="radio"][name="${i}"]`).forEach(t=>{t!==a&&(t.checked=!1)});else if(t){const e=l?`input[type="radio"][data-filter-field="${t}"][data-filter-instance="${l}"], input[type="radio"][data-filter-field="${t}"][data-filter-instance="${l}"]`:`input[type="radio"][data-filter-field="${t}"]:not([data-filter-instance])`;document.querySelectorAll(e).forEach(t=>{t!==a&&(t.checked=!1)})}d(a)})}),document.addEventListener("change",t=>{const e=t.target;"select"===e.tagName.toLowerCase()&&e.hasAttribute("data-filter-field")&&null===e.closest("[data-filter-list]")&&d(e)}),document.querySelectorAll('input[type="text"][data-filter-field], input[type="search"][data-filter-field]').forEach(t=>{const e=t;if(null!==e.closest("[data-filter-list]"))return;let a;const l=e.dataset.filterDebounce&&parseInt(e.dataset.filterDebounce,10)||300;e.addEventListener("input",()=>{clearTimeout(a),a=setTimeout(()=>{d(e)},l)})}),document.querySelectorAll("[data-filter-field]:not(input):not(select)").forEach(t=>{const a=t;if(null!==a.closest("[data-filter-list]"))return;a.setAttribute("role","button"),a.setAttribute("tabindex","0");const l="radio"===a.dataset.filterType,i=t=>{t.preventDefault();const i=a.querySelector('input[type="checkbox"], input[type="radio"]');if(i)i.checked=!i.checked,d(i);else if(l){const t=a.dataset.filterField,l=e(a);if(t){const e=l?`[data-filter-field="${t}"][data-filter-type="radio"][data-filter-instance="${l}"], [data-filter-instance="${l}"] [data-filter-field="${t}"][data-filter-type="radio"]`:`[data-filter-field="${t}"][data-filter-type="radio"]:not([data-filter-instance])`;document.querySelectorAll(e).forEach(t=>{const e=t;null===e.closest("[data-filter-list]")&&e.classList.remove("active")})}a.classList.add("active"),d(a)}else a.classList.toggle("active"),d(a)};a.addEventListener("click",i),a.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||i(t)})}),$=!0),document.querySelectorAll("select[data-filter-field]").forEach(t=>{const e=t;"true"===e.dataset.filterAutofill&&m(e)}),v||(document.querySelectorAll("[data-filter-clear]").forEach(t=>{t.addEventListener("click",a=>{a.preventDefault();const l=e(t),i="[data-filter-field]",n=l?`[data-filter-instance="${l}"] ${i}, ${i}[data-filter-instance="${l}"]`:`${i}:not([data-filter-instance])`;document.querySelectorAll(n).forEach(t=>{const e=t;if(null!==e.closest("[data-filter-list]"))return;const a=e.tagName.toLowerCase();if("input"===a){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=!1:t.value=""}else"select"===a?e.selectedIndex=0:e.classList.remove("active")});const r="[data-filter-list]",o=l?`[data-filter-instance="${l}"] ${r}, ${r}[data-filter-instance="${l}"]`:`${r}:not([data-filter-instance])`,s=document.querySelector(o);if(s){if("true"===s.dataset.filterUrl){const t=new URLSearchParams(window.location.search),e=l?`filter_${l}_`:"filter_";Array.from(t.keys()).forEach(a=>{a.startsWith(e)&&t.delete(a)});const a=`${window.location.pathname}${t.toString()?`?${t.toString()}`:""}${window.location.hash}`;window.history.pushState({},"",a)}const t=s.dataset.filterPersist;if(t)try{const e=`filter_${t}_${l||"default"}`;localStorage.removeItem(e)}catch(t){}f(s);const e=new CustomEvent("filter:clear",{detail:{instance:l}});s.dispatchEvent(e)}})}),v=!0),document.querySelectorAll("[data-filter-list]").forEach(t=>{const a=t,l=e(a),i=a.dataset.filterPersist;i&&function(t,e){try{const a=`filter_${t}_${e||"default"}`,l=localStorage.getItem(a);if(l){const t=JSON.parse(l);Object.entries(t).forEach(([t,a])=>{const l=`[data-filter-field="${t}"]`,i=e?`[data-filter-instance="${e}"] ${l}, ${l}[data-filter-instance="${e}"]`:`${l}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{const e=t,l=e.tagName.toLowerCase();if("input"===l){const t=e,l=t.value.toLowerCase();"checkbox"===t.type||"radio"===t.type?t.checked=a.includes(l):"text"!==t.type&&"search"!==t.type||(t.value=a[0]||"")}else if("select"===l){const t=e;a.length>0&&(t.value=a[0])}})})}}catch(t){console.warn("Failed to restore filter state from localStorage",t)}}(i,l),"true"===a.dataset.filterUrl&&function(t){const e=new URLSearchParams(window.location.search),a=t?`filter_${t}_`:"filter_";e.forEach((e,l)=>{if(l.startsWith(a)){const i=l.replace(a,""),n=e.split(",").map(t=>t.trim()),r=`[data-filter-field="${i}"]`,o=t?`[data-filter-instance="${t}"] ${r}, ${r}[data-filter-instance="${t}"]`:`${r}:not([data-filter-instance])`;document.querySelectorAll(o).forEach(t=>{const e=t,a=e.tagName.toLowerCase();if("input"===a){const t=e,a=t.value.toLowerCase();"checkbox"===t.type||"radio"===t.type?t.checked=n.includes(a):"text"!==t.type&&"search"!==t.type||(t.value=n[0]||"")}else if("select"===a){const t=e;n.length>0&&(t.value=n[0])}})}})}(l),a.setAttribute("role","region"),a.setAttribute("aria-label","Filtered list"),a.id||(a.id=`filter-list-${l||"default"}-${Date.now()}`);let n=document.querySelector(`#filter-live-${l||"default"}`);n||(n=document.createElement("div"),n.id=`filter-live-${l||"default"}`,n.setAttribute("aria-live","polite"),n.setAttribute("aria-atomic","true"),n.className="sr-only",n.style.cssText="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;",document.body.appendChild(n)),s(l,a),h(l),f(a)}),!E){new MutationObserver(()=>{document.querySelectorAll("[data-filter-list]").forEach(t=>{const a=t,l=e(a);s(l,a),h(l)})}).observe(document.body,{childList:!0,subtree:!0}),E=!0}y=!0}return"loading"===document.readyState?document.addEventListener("DOMContentLoaded",A):A(),t.filterAPI=p,t.initFilter=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",A):A()},t}({});
|
|
1
|
+
/*! dm-js-lib/filter v1.2.0 */
|
|
2
|
+
var Filter=function(t){"use strict";function e(t){let e=t;for(;e;){const t=e.dataset.filterInstance;if(t)return t;e=e.parentElement}return null}function a(t,e){const a=`[data-filter-field="${t}"]`,l=e?`[data-filter-instance="${e}"] ${a}, ${a}[data-filter-instance="${e}"]`:`${a}:not([data-filter-instance])`,i=document.querySelectorAll(l);let n=null;for(const t of Array.from(i)){const e=t;if(null===e.closest("[data-filter-list]")){n=e;break}}if(!n)return!1;if("input"===n.tagName.toLowerCase()){const t=n.type;return"text"===t||"search"===t}return!1}function l(t){const e={},a={},l="[data-filter-field]",i=t?`[data-filter-instance="${t}"] ${l}, ${l}[data-filter-instance="${t}"]`:`${l}:not([data-filter-instance])`;return document.querySelectorAll(i).forEach(t=>{const l=t,i=l.dataset.filterField;if(i){if(null!==l.closest("[data-filter-list]"))return;const t=function(t){const e=t.tagName.toLowerCase();if("input"===e){const e=t.type;return"checkbox"===e||"radio"===e?t.checked?t.value||"true":null:"text"===e||"search"===e?t.value.trim()||null:t.value||null}if("select"===e)return t.value||null;const a=t.dataset.filterValue;return a?"radio"===t.dataset.filterType?t.classList.contains("active")?a:null:a:null}(l);let n=!1;if("select"===l.tagName.toLowerCase()){const e=l,a=e.dataset.filterAllValue||"",i=e.dataset.filterAllText||"All";(!t||""===t||t===a||t.trim&&t.trim()===a)&&(n=!0);const r=e.options[e.selectedIndex];if(r&&(!r.hasAttribute("value")||""===r.value)){const t=r.textContent?.trim().toLowerCase()||"";(t===i.toLowerCase()||t.startsWith("select")||t.startsWith("choose")||"all"===t||""===t)&&(n=!0)}}if(t&&"string"==typeof t&&t.trim().length>0&&!n){const n=function(t){return t?t.split(",").map(t=>t.trim()).filter(t=>t.length>0):[]}(l.dataset.filterSearch);n.length>0&&(a[i]=n),e[i]||(e[i]=[]),e[i].push(t.toLowerCase())}}}),{filters:e,multifieldSearches:a}}function i(t,e){if(t.dataset.filterField===e){return(t.dataset.filterValue||t.textContent?.trim()||"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}const a=t.querySelector(`[data-filter-field="${e}"]`);if(a){return(a.dataset.filterValue||a.textContent?.trim()||a.getAttribute("value")||"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}const l=t.dataset.filterValue;if(l){return l.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}return[]}function n(t){const e=[],a=t.dataset.filterValue;return a&&e.push(...a.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)),e}const r=new Map;function o(t){return t||"default"}function s(t,e){const a=o(t),l="[data-filter-count], [data-filter-results]",i=t?`[data-filter-instance="${t}"] ${l}, ${l}[data-filter-instance="${t}"]`:`${l}:not([data-filter-instance])`,n=t?`[data-filter-instance="${t}"] [data-filter-empty], [data-filter-empty][data-filter-instance="${t}"]`:"[data-filter-empty]:not([data-filter-instance])",s=t?`[data-filter-instance="${t}"] [data-filter-loading], [data-filter-loading][data-filter-instance="${t}"]`:"[data-filter-loading]:not([data-filter-instance])";let c=[];const f=e.querySelectorAll("[data-filter-item]");if(f.length>0)c=Array.from(f);else if(Array.from(e.children).forEach(t=>{t instanceof HTMLElement&&c.push(t)}),0===c.length){const t=e.querySelectorAll("[data-filter-field]");c=Array.from(t)}const d={listElement:e,items:c,controls:Array.from(document.querySelectorAll(t?`[data-filter-instance="${t}"] [data-filter-field], [data-filter-field][data-filter-instance="${t}"]`:"[data-filter-field]:not([data-filter-instance])")),countElements:Array.from(document.querySelectorAll(i)),emptyElement:document.querySelector(n)||null,loadingElement:document.querySelector(s)||null,lastUpdate:Date.now()};return r.set(a,d),d}function c(t,e){const a=o(t),l=r.get(a);return l&&l.listElement===e?l:s(t,e)}function f(t){const r=e(t),{filters:o,multifieldSearches:s}=l(r),f=c(r,t),d=f.items;f.loadingElement&&(f.loadingElement.style.display="",f.loadingElement.classList.add("filter-loading-active")),requestAnimationFrame(()=>{let e=0;if(d.forEach(t=>{const l=function(t,e,l,r){const o={};for(const[t,a]of Object.entries(e))a.length>0&&(o[t]=a);if(0===Object.keys(o).length)return!0;for(const[e,s]of Object.entries(o)){const o=l[e];if(o&&o.length>0){if(!s.some(e=>{const a=o.some(a=>i(t,a).some(t=>t.includes(e)||e.includes(t)));return a||n(t).some(t=>t.includes(e)||e.includes(t))}))return!1}else{let l=i(t,e);if(0===l.length&&(l=n(t)),0===l.length)return!1;const o=a(e,r);if(!s.some(t=>l.some(e=>o?e.includes(t)||t.includes(e):e===t)))return!1}}return!0}(t,o,s,r);l?(t.style.display="",t.classList.add("filter-active"),t.classList.remove("filter-hidden"),e++):(t.style.display="none",t.classList.add("filter-hidden"),t.classList.remove("filter-active"))}),function(t,e,a,l,i){const n=i?.countElements||[];if(0===n.length){const t="[data-filter-count], [data-filter-results]",e=l?`[data-filter-instance="${l}"] ${t}, ${t}[data-filter-instance="${l}"]`:`${t}:not([data-filter-instance])`;n.push(...Array.from(document.querySelectorAll(e)))}n.forEach(t=>{const l=t;void 0!==l.dataset.filterCount&&(l.textContent=e.toString(),l.setAttribute("aria-label",`Total items: ${e}`)),void 0!==l.dataset.filterResults&&(l.textContent=a.toString(),l.setAttribute("aria-label",`Showing ${a} of ${e} items`))})}(0,d.length,e,r,f),f.emptyElement)if(0===e){f.emptyElement.style.display="",f.emptyElement.classList.add("filter-empty-active");const t=f.emptyElement.dataset.filterEmptyText;if(t){(f.emptyElement.querySelector("[data-filter-empty-text-content]")||f.emptyElement).textContent=t}}else f.emptyElement.style.display="none",f.emptyElement.classList.remove("filter-empty-active");f.loadingElement&&(f.loadingElement.style.display="none",f.loadingElement.classList.remove("filter-loading-active"));const l=new CustomEvent("filter:change",{detail:{instance:r,filters:o,visibleCount:e,total:d.length}});if(t.dispatchEvent(l),0===e){const e=new CustomEvent("filter:empty",{detail:{instance:r,filters:o}});t.dispatchEvent(e)}const c=document.querySelector(`#filter-live-${r||"default"}`);c&&(c.textContent=0===e?"No results found":`Showing ${e} of ${d.length} items`);const u=t.dataset.filterScroll;u&&requestAnimationFrame(()=>{if("top"===u)window.scrollTo({top:0,behavior:"smooth"});else if("anchor"===u){const e=t.dataset.filterScrollAnchor,a=e?document.querySelector(e):t;a?.scrollIntoView({behavior:"smooth",block:"start"})}else{const t=document.querySelector(u);t?.scrollIntoView({behavior:"smooth",block:"start"})}});"true"===t.dataset.filterUrl&&function(t,e){const a=new URLSearchParams(window.location.search),l=t?`filter_${t}_`:"filter_",i=[];a.forEach((t,e)=>{e.startsWith(l)&&i.push(e)}),i.forEach(t=>a.delete(t)),Object.entries(e).forEach(([t,e])=>{e.length>0&&a.set(`${l}${t}`,e.join(","))});const n=`${window.location.pathname}${a.toString()?`?${a.toString()}`:""}${window.location.hash}`;window.history.pushState({},"",n)}(r,o);const m=t.dataset.filterPersist;m&&function(t,e,a){try{const l=`filter_${t}_${e||"default"}`;localStorage.setItem(l,JSON.stringify(a))}catch(t){console.warn("Failed to save filter state to localStorage",t)}}(m,r,o)})}function d(t){const a=e(t),l="[data-filter-list]",i=a?`[data-filter-instance="${a}"] ${l}, ${l}[data-filter-instance="${a}"]`:`${l}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{f(t)})}function u(t,e,a){const l=new Set;return Array.from(t).forEach(t=>{(function(t,e,a){const l=c(a,t),n=new Set;return l.items.forEach(t=>{i(t,e).forEach(t=>{t&&n.add(t)})}),Array.from(n)})(t,e,a).forEach(t=>l.add(t))}),Array.from(l).sort()}function m(t){const a=t.dataset.filterField;if(!a)return;if(!("true"===t.dataset.filterAutofill))return;const l=t.options.length>0,i="true"===t.dataset.filterAutofillRefresh;if(l&&!i){const e=t.options[0];if(!("true"===e?.dataset.filterAutofillOption))return;if(!i)return;Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()})}const n=e(t),r="[data-filter-list]",o=n?`[data-filter-instance="${n}"] ${r}, ${r}[data-filter-instance="${n}"]`:`${r}:not([data-filter-instance])`,s=document.querySelectorAll(o);if(0===s.length)return;const c=u(s,a,n);if(0===c.length)return;const f=t.dataset.filterAllValue||"",d=t.dataset.filterAllText||"All",m="false"!==t.dataset.filterAutofillAll;if(l?Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()}):t.innerHTML="",m){const e=document.createElement("option");e.value=f,e.textContent=d,e.dataset.filterAutofillOption="true",t.appendChild(e)}c.forEach(e=>{const a=document.createElement("option");a.value=e,a.textContent=e.split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "),a.dataset.filterAutofillOption="true",t.appendChild(a)})}function h(t){const e="select[data-filter-field]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`;document.querySelectorAll(a).forEach(t=>{const e=t;"true"===e.dataset.filterAutofill&&m(e)})}const p={setFilter:(t,e,a)=>{const l=`[data-filter-field="${e}"]`,i=t?`[data-filter-instance="${t}"] ${l}, ${l}[data-filter-instance="${t}"]`:`${l}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{const e=t,l=e.tagName.toLowerCase();if("input"===l){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=t.value.toLowerCase()===a.toLowerCase():t.value=a}else"select"===l&&(e.value=a)});const n="[data-filter-list]",r=t?`[data-filter-instance="${t}"] ${n}, ${n}[data-filter-instance="${t}"]`:`${n}:not([data-filter-instance])`,o=document.querySelector(r);o&&f(o)},clear:t=>{const e="[data-filter-list]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`,l=document.querySelector(a);if(l){const e="[data-filter-field]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`;document.querySelectorAll(a).forEach(t=>{const e=t,a=e.tagName.toLowerCase();if("input"===a){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=!1:t.value=""}else"select"===a?e.selectedIndex=0:e.classList.remove("active")}),f(l)}},getActiveFilters:t=>{const{filters:e}=l(t);return e},refresh:t=>{const e="[data-filter-list]",a=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`,l=document.querySelector(a);l&&(s(t,l),h(t),f(l))}};let $=!1,y=!1,E=!1,v=!1;function A(){if($||(window.filterAPI=p),y||(document.querySelectorAll('input[type="checkbox"][data-filter-field]').forEach(t=>{const e=t;null===e.closest("[data-filter-list]")&&e.addEventListener("change",()=>{d(e)})}),document.querySelectorAll('input[type="radio"][data-filter-field]').forEach(t=>{const a=t;null===a.closest("[data-filter-list]")&&a.addEventListener("change",()=>{const t=a.dataset.filterField,l=e(a),i=a.name;if(i)document.querySelectorAll(`input[type="radio"][name="${i}"]`).forEach(t=>{t!==a&&(t.checked=!1)});else if(t){const e=l?`input[type="radio"][data-filter-field="${t}"][data-filter-instance="${l}"], input[type="radio"][data-filter-field="${t}"][data-filter-instance="${l}"]`:`input[type="radio"][data-filter-field="${t}"]:not([data-filter-instance])`;document.querySelectorAll(e).forEach(t=>{t!==a&&(t.checked=!1)})}d(a)})}),document.addEventListener("change",t=>{const e=t.target;"select"===e.tagName.toLowerCase()&&e.hasAttribute("data-filter-field")&&null===e.closest("[data-filter-list]")&&d(e)}),document.querySelectorAll('input[type="text"][data-filter-field], input[type="search"][data-filter-field]').forEach(t=>{const e=t;if(null!==e.closest("[data-filter-list]"))return;let a;const l=e.dataset.filterDebounce&&parseInt(e.dataset.filterDebounce,10)||300;e.addEventListener("input",()=>{clearTimeout(a),a=setTimeout(()=>{d(e)},l)})}),document.querySelectorAll("[data-filter-field]:not(input):not(select)").forEach(t=>{const a=t;if(null!==a.closest("[data-filter-list]"))return;a.setAttribute("role","button"),a.setAttribute("tabindex","0");const l="radio"===a.dataset.filterType,i=t=>{t.preventDefault();const i=a.querySelector('input[type="checkbox"], input[type="radio"]');if(i)i.checked=!i.checked,d(i);else if(l){const t=a.dataset.filterField,l=e(a);if(t){const e=l?`[data-filter-field="${t}"][data-filter-type="radio"][data-filter-instance="${l}"], [data-filter-instance="${l}"] [data-filter-field="${t}"][data-filter-type="radio"]`:`[data-filter-field="${t}"][data-filter-type="radio"]:not([data-filter-instance])`;document.querySelectorAll(e).forEach(t=>{const e=t;null===e.closest("[data-filter-list]")&&e.classList.remove("active")})}a.classList.add("active"),d(a)}else a.classList.toggle("active"),d(a)};a.addEventListener("click",i),a.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||i(t)})}),y=!0),document.querySelectorAll("select[data-filter-field]").forEach(t=>{const e=t;"true"===e.dataset.filterAutofill&&m(e)}),E||(document.querySelectorAll("[data-filter-clear]").forEach(t=>{t.addEventListener("click",a=>{a.preventDefault();const l=e(t),i="[data-filter-field]",n=l?`[data-filter-instance="${l}"] ${i}, ${i}[data-filter-instance="${l}"]`:`${i}:not([data-filter-instance])`;document.querySelectorAll(n).forEach(t=>{const e=t;if(null!==e.closest("[data-filter-list]"))return;const a=e.tagName.toLowerCase();if("input"===a){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=!1:t.value=""}else"select"===a?e.selectedIndex=0:e.classList.remove("active")});const r="[data-filter-list]",o=l?`[data-filter-instance="${l}"] ${r}, ${r}[data-filter-instance="${l}"]`:`${r}:not([data-filter-instance])`,s=document.querySelector(o);if(s){if("true"===s.dataset.filterUrl){const t=new URLSearchParams(window.location.search),e=l?`filter_${l}_`:"filter_",a=[];t.forEach((t,l)=>{l.startsWith(e)&&a.push(l)}),a.forEach(e=>t.delete(e));const i=`${window.location.pathname}${t.toString()?`?${t.toString()}`:""}${window.location.hash}`;window.history.pushState({},"",i)}const t=s.dataset.filterPersist;if(t)try{const e=`filter_${t}_${l||"default"}`;localStorage.removeItem(e)}catch(t){}f(s);const e=new CustomEvent("filter:clear",{detail:{instance:l}});s.dispatchEvent(e)}})}),E=!0),document.querySelectorAll("[data-filter-list]").forEach(t=>{const a=t,l=e(a),i=a.dataset.filterPersist;i&&function(t,e){try{const a=`filter_${t}_${e||"default"}`,l=localStorage.getItem(a);if(l){const t=JSON.parse(l);Object.entries(t).forEach(([t,a])=>{const l=`[data-filter-field="${t}"]`,i=e?`[data-filter-instance="${e}"] ${l}, ${l}[data-filter-instance="${e}"]`:`${l}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{const e=t,l=e.tagName.toLowerCase();if("input"===l){const t=e,l=t.value.toLowerCase();"checkbox"===t.type||"radio"===t.type?t.checked=a.includes(l):"text"!==t.type&&"search"!==t.type||(t.value=a[0]||"")}else if("select"===l){const t=e;a.length>0&&(t.value=a[0])}})})}}catch(t){console.warn("Failed to restore filter state from localStorage",t)}}(i,l),"true"===a.dataset.filterUrl&&function(t){const e=new URLSearchParams(window.location.search),a=t?`filter_${t}_`:"filter_";e.forEach((e,l)=>{if(l.startsWith(a)){const i=l.replace(a,""),n=e.split(",").map(t=>t.trim()),r=`[data-filter-field="${i}"]`,o=t?`[data-filter-instance="${t}"] ${r}, ${r}[data-filter-instance="${t}"]`:`${r}:not([data-filter-instance])`;document.querySelectorAll(o).forEach(t=>{const e=t,a=e.tagName.toLowerCase();if("input"===a){const t=e,a=t.value.toLowerCase();"checkbox"===t.type||"radio"===t.type?t.checked=n.includes(a):"text"!==t.type&&"search"!==t.type||(t.value=n[0]||"")}else if("select"===a){const t=e;n.length>0&&(t.value=n[0])}})}})}(l),a.setAttribute("role","region"),a.setAttribute("aria-label","Filtered list"),a.id||(a.id=`filter-list-${l||"default"}-${Date.now()}`);let n=document.querySelector(`#filter-live-${l||"default"}`);n||(n=document.createElement("div"),n.id=`filter-live-${l||"default"}`,n.setAttribute("aria-live","polite"),n.setAttribute("aria-atomic","true"),n.className="sr-only",n.style.cssText="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;",document.body.appendChild(n)),s(l,a),h(l),f(a)}),!v){new MutationObserver(()=>{document.querySelectorAll("[data-filter-list]").forEach(t=>{const a=t,l=e(a);s(l,a),h(l)})}).observe(document.body,{childList:!0,subtree:!0}),v=!0}$=!0}return"loading"===document.readyState?document.addEventListener("DOMContentLoaded",A):A(),t.filterAPI=p,t.initFilter=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",A):A()},t}({});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! dm-js-lib/pagination v1.
|
|
2
|
-
var Pagination=function(t){"use strict";const e="default",n="pagination-hidden",a="pagination-active",i="pagination-disabled",
|
|
1
|
+
/*! dm-js-lib/pagination v1.2.0 */
|
|
2
|
+
var Pagination=function(t){"use strict";const e="default",n="pagination-hidden",a="pagination-active",i="pagination-disabled",r=new Map,o=t=>{if(!t)return e;const n=t.dataset.paginationInstance;if(n&&""!==n.trim())return n.trim();const a=t.closest("[data-pagination-instance]");return a?.dataset.paginationInstance?a.dataset.paginationInstance.trim():e},s=t=>!t.classList.contains("pagination-exclude")&&!t.classList.contains("filter-hidden"),c=t=>{const e=Array.from(t.querySelectorAll("[data-pagination-item]"));return e.length>0?e.filter(s):Array.from(t.children).filter(t=>t instanceof HTMLElement).filter(s)},l=(t,e,n)=>{if(!t)return n;const a=String(e),i=`data-${a.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}`,r=t.dataset,o=t.closest(`[${i}]`),s=o?.dataset,c=r[a]??s?.[a];if(!c)return n;const l=Number.parseInt(c,10);return Number.isNaN(l)||l<=0?n:l},d=(t,e)=>{const n=t.closest("[data-pagination-instance]")??t,a=t=>Array.from(n.querySelectorAll(t)).filter(t=>o(t)===e);return{prev:a('[data-pagination-control="prev"]'),next:a('[data-pagination-control="next"]'),first:a('[data-pagination-control="first"]'),last:a('[data-pagination-control="last"]'),loadMore:a('[data-pagination-control="load-more"]')}},u=(t,e)=>{const n=t.closest("[data-pagination-instance]")??t,a=t=>Array.from(n.querySelectorAll(t)).filter(t=>o(t)===e);return{currentPage:a("[data-pagination-current-page]"),totalPages:a("[data-pagination-total-pages]"),totalItems:a("[data-pagination-total-items]"),visibleItems:a("[data-pagination-visible-items]")}},g=t=>{const e=t.closest("[data-pagination-instance]")??t;return e.querySelector("[data-pagination-sentinel]")??e.querySelector('[data-pagination-control="load-more"]')},p=t=>{const{elements:e,currentPage:n,totalPages:a}=t,i=e.items.length,r=((t,e,n,a,i)=>{const r=i??a;if("numbers"===t){if(n<=1)return Math.min(r,e);const t=r+(n-2)*a,i=Math.max(e-t,0);return Math.min(a,i)}return n<=1?Math.min(r,e):Math.min(r+(n-1)*a,e)})(t.options.mode,i,n,t.options.pageSize,t.options.firstPageSize);e.status.currentPage.forEach(t=>{t.textContent=String(n)}),e.status.totalPages.forEach(t=>{t.textContent=String(a)}),e.status.totalItems.forEach(t=>{t.textContent=String(i)}),e.status.visibleItems.forEach(t=>{t.textContent=String(r)})},f=t=>{const{elements:e,currentPage:r,options:o}=t,{items:s}=e,{pageSize:c,firstPageSize:l,mode:d}=o,u=s.length,g=((t,e,n)=>{const a=n??e;if(t<=0)return 1;if(a>=t)return 1;const i=t-a;return 1+Math.ceil(i/e)})(u,c,l);t.totalPages=g;var f,m,P;t.currentPage=(f=r,m=1,P=g,Math.min(Math.max(f,m),P));const h=l??c,v="numbers"===d?0:t.currentPage<=1?h:h+(t.currentPage-1)*c;s.forEach((e,a)=>{const i=a+1;("numbers"===d?(()=>{if(t.currentPage<=1)return i<=h;const e=h+(t.currentPage-2)*c+1,n=h+(t.currentPage-1)*c;return i>=e&&i<=n})():i<=v)?e.classList.remove(n):e.classList.add(n)}),p(t),(t=>{const{elements:e,currentPage:n,totalPages:r,options:o}=t,s=(t,e)=>{t.forEach(t=>{e?(t.classList.add(i),t.classList.add("is-disabled"),t.setAttribute("aria-disabled","true")):(t.classList.remove(i),t.classList.remove("is-disabled"),t.removeAttribute("aria-disabled"))})};if("numbers"===o.mode)s(e.controls.prev,n<=1),s(e.controls.first,n<=1),s(e.controls.next,n>=r),s(e.controls.last,n>=r);else{const t=n>=r;s(e.controls.loadMore,t),e.controls.loadMore.forEach(e=>{t?e.setAttribute("data-pagination-complete","true"):e.removeAttribute("data-pagination-complete"),o.hideLoadMoreWhenComplete&&(e.style.display=t?"none":"")})}(e.list.closest("[data-pagination-instance]")??e.list).querySelectorAll("[data-pagination-page]").forEach(t=>{const e=t.dataset.paginationPage;if(!e||"*"===e)return;const i=Number.parseInt(e,10);Number.isNaN(i)||(i===n?(t.classList.add(a),t.classList.add("is-active"),t.setAttribute("aria-current","page")):(t.classList.remove(a),t.classList.remove("is-active"),t.removeAttribute("aria-current")))})})(t);const b={instanceId:t.id,currentPage:t.currentPage,totalPages:t.totalPages,totalItems:u},w=new CustomEvent("pagination:change",{detail:b});if(e.list.dispatchEvent(w),t.currentPage>=t.totalPages){const t=new CustomEvent("pagination:end",{detail:b});e.list.dispatchEvent(t)}},m=t=>{let e=t.options.startPage;if(t.options.persistKey){const n=(t=>{if("undefined"==typeof window||!window.localStorage)return null;try{const e=window.localStorage.getItem(`pagination_${t}`);if(!e)return null;const n=Number.parseInt(e,10);return Number.isNaN(n)||n<=0?null:n}catch{return null}})(t.options.persistKey);null!==n&&(e=n)}if(t.options.urlKey){const n=(t=>{if("undefined"==typeof window)return null;try{const e=new URL(window.location.href).searchParams.get(`page_${t}`);if(!e)return null;const n=Number.parseInt(e,10);return Number.isNaN(n)||n<=0?null:n}catch{return null}})(t.options.urlKey);null!==n&&(e=n)}t.currentPage=e},P=t=>{t.options.persistKey&&((t,e)=>{if("undefined"!=typeof window&&window.localStorage)try{window.localStorage.setItem(`pagination_${t}`,String(e))}catch{}})(t.options.persistKey,t.currentPage),t.options.urlKey&&((t,e)=>{if("undefined"!=typeof window)try{const n=new URL(window.location.href);n.searchParams.set(`page_${t}`,String(e)),window.history.replaceState({},"",n.toString())}catch{}})(t.options.urlKey,t.currentPage)},h=t=>{if("infinite"!==t.options.mode)return;if(!("IntersectionObserver"in window))return;const e=t.elements.sentinel;if(!e)return;const n=t.options.infiniteOffset??.5,a=new IntersectionObserver(e=>{e.forEach(e=>{if(!e.isIntersecting)return;const n=t.currentPage+1;n>t.totalPages||w(t.id,n)})},{root:null,threshold:n});a.observe(e),t.observer=a},v=t=>{const e=o(t),n=((t,e)=>{const n=(t=>{const e=t?.dataset.paginationMode??t?.closest("[data-pagination-mode]")?.dataset.paginationMode??null;return"load-more"===e||"infinite"===e?e:"numbers"})(t),a=l(t,"paginationPageSize",12),i=t.dataset.paginationFirstPageSize??t.closest("[data-pagination-first-page-size]")?.dataset.paginationFirstPageSize,r=void 0!==i?Number.parseInt(i,10):void 0,o=r&&!Number.isNaN(r)&&r>0?r:void 0,s=l(t,"paginationStartPage",1),c="true"===t.dataset.paginationUrl?e:void 0,d=t.dataset.paginationPersist||void 0,u="false"!==t.dataset.paginationHideLoadMoreWhenComplete&&null===t.closest('[data-pagination-hide-load-more-when-complete="false"]'),g=t.dataset.paginationInfiniteOffset,p=void 0!==g?Number.parseFloat(g):.5;return{mode:n,pageSize:a,firstPageSize:o,startPage:s,urlKey:c,persistKey:d,infiniteOffset:Number.isNaN(p)?.5:p,hideLoadMoreWhenComplete:u}})(t,e),a={id:e,elements:{list:t,items:c(t),controls:d(t,e),status:u(t,e),sentinel:g(t)},options:n,currentPage:1,totalPages:1};m(a),r.set(e,a),h(a),f(a),P(a)},b=t=>{const e=t.elements.list;(t=>{t.observer&&(t.observer.disconnect(),t.observer=void 0)})(t);const n=c(e);t.elements.items=n,f(t),h(t)},w=(t,e)=>{const n=r.get(t);n&&(n.currentPage=e,f(n),P(n))},y=t=>{const e=r.get(t);e&&(e.currentPage>=e.totalPages||w(t,e.currentPage+1))},S=t=>{const e=r.get(t);e&&(e.currentPage<=1||w(t,e.currentPage-1))};let N=!1;function L(){if(N)return void r.forEach(t=>{b(t)});document.querySelectorAll("[data-pagination-list]").forEach(t=>{v(t)});document.querySelectorAll("[data-filter-list]").forEach(t=>{t.addEventListener("filter:change",()=>{const e=o(t);r.forEach(n=>{if(!(n.id===e))return;const a=n.elements.list,i=a===t,r=t.contains(a)||a.contains(t);(i||r)&&(n.currentPage=1,b(n))})})}),(()=>{const t=document;t.addEventListener("click",t=>{const e=t.target;if(!e)return;const n=e.closest("[data-pagination-control]");if(!n)return;const a=o(n),i=n.dataset.paginationControl;if(i){if("load-more"===i)return t.preventDefault(),void y(a);if(t.preventDefault(),"prev"===i)S(a);else if("next"===i)y(a);else if("first"===i)w(a,1);else if("last"===i){const t=r.get(a);if(!t)return;w(a,t.totalPages)}}}),t.addEventListener("click",t=>{const e=t.target;if(!e)return;const n=e.closest("[data-pagination-page]");if(!n)return;const a=n.dataset.paginationPage;if(!a||"*"===a)return;const i=Number.parseInt(a,10);if(Number.isNaN(i)||i<=0)return;t.preventDefault();const r=o(n);w(r,i)})})(),N=!0;new MutationObserver(()=>{r.forEach(t=>{b(t)})}).observe(document.body,{childList:!0,subtree:!0})}const E={goToPage(t,n){w(t||e,n)},next(t=null){y(t||e)},prev(t=null){S(t||e)},refresh(t=null){if(t){const e=r.get(t);return void(e&&b(e))}r.forEach(t=>{b(t)})},getState(t=null){const n=t||e;return r.get(n)}};return"undefined"==typeof window||window.paginationAPI||(window.paginationAPI=E),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",L):L(),t.initPagination=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",L):L()},t.paginationAPI=E,t}({});
|