@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 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>/* Google Analytics */</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
- data-type="youtube"
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"> 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: '.my-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
@@ -1,2 +1,2 @@
1
- /*! dm-js-lib v1.1.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 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.1.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_";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.1.0 */
2
- var Pagination=function(t){"use strict";const e="default",n="pagination-hidden",a="pagination-active",i="pagination-disabled",o=new Map,r=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=t.dataset[e]??t.closest(`[data-${e.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}]`)?.dataset[e];if(!a)return n;const i=Number.parseInt(a,10);return Number.isNaN(i)||i<=0?n:i},d=(t,e)=>{const n=t.closest("[data-pagination-instance]")??t,a=t=>Array.from(n.querySelectorAll(t)).filter(t=>r(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=>r(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:o,options:r}=t,{items:s}=e,{pageSize:c,mode:l}=r,d=s.length,u=Math.max(Math.ceil(d/c),1);t.totalPages=u;var g,p,f;t.currentPage=(g=o,p=1,f=u,Math.min(Math.max(g,p),f));const m=t.currentPage*c;s.forEach((e,a)=>{const i=a+1;("numbers"===l?i>(t.currentPage-1)*c&&i<=t.currentPage*c:i<=m)?e.classList.remove(n):e.classList.add(n)}),(t=>{const{elements:e,currentPage:n,totalPages:a}=t,i=e.items.length,o="numbers"===t.options.mode?Math.min(t.options.pageSize,Math.max(i-(n-1)*t.options.pageSize,0)):Math.min(n*t.options.pageSize,i);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(o)})})(t),(t=>{const{elements:e,currentPage:n,totalPages:o,options:r}=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"===r.mode)s(e.controls.prev,n<=1),s(e.controls.first,n<=1),s(e.controls.next,n>=o),s(e.controls.last,n>=o);else{const t=n>=o;s(e.controls.loadMore,t),e.controls.loadMore.forEach(e=>{t?e.setAttribute("data-pagination-complete","true"):e.removeAttribute("data-pagination-complete")})}(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 P={instanceId:t.id,currentPage:t.currentPage,totalPages:t.totalPages,totalItems:d},v=new CustomEvent("pagination:change",{detail:P});if(e.list.dispatchEvent(v),t.currentPage>=t.totalPages){const t=new CustomEvent("pagination:end",{detail:P});e.list.dispatchEvent(t)}},f=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},m=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)},P=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||b(t.id,n)})},{root:null,threshold:n});a.observe(e),t.observer=a},v=t=>{const e=r(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=l(t,"paginationStartPage",1),o="true"===t.dataset.paginationUrl?e:void 0,r=t.dataset.paginationPersist||void 0,s=t.dataset.paginationInfiniteOffset,c=void 0!==s?Number.parseFloat(s):.5;return{mode:n,pageSize:a,startPage:i,urlKey:o,persistKey:r,infiniteOffset:Number.isNaN(c)?.5:c}})(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};f(a),o.set(e,a),P(a),p(a),m(a)},h=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,p(t),P(t)},b=(t,e)=>{const n=o.get(t);n&&(n.currentPage=e,p(n),m(n))},w=t=>{const e=o.get(t);e&&(e.currentPage>=e.totalPages||b(t,e.currentPage+1))},y=t=>{const e=o.get(t);e&&(e.currentPage<=1||b(t,e.currentPage-1))};let S=!1;function E(){if(S)return void o.forEach(t=>{h(t)});document.querySelectorAll("[data-pagination-list]").forEach(t=>{v(t)});document.querySelectorAll("[data-filter-list]").forEach(t=>{t.addEventListener("filter:change",()=>{const e=r(t);o.forEach(n=>{if(!(n.id===e))return;const a=n.elements.list,i=a===t,o=t.contains(a)||a.contains(t);(i||o)&&(n.currentPage=1,h(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=r(n),i=n.dataset.paginationControl;if(i){if("load-more"===i)return t.preventDefault(),void w(a);if(t.preventDefault(),"prev"===i)y(a);else if("next"===i)w(a);else if("first"===i)b(a,1);else if("last"===i){const t=o.get(a);if(!t)return;b(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 o=r(n);b(o,i)})})(),S=!0;new MutationObserver(()=>{o.forEach(t=>{h(t)})}).observe(document.body,{childList:!0,subtree:!0})}const L={goToPage(t,n){b(t||e,n)},next(t=null){w(t||e)},prev(t=null){y(t||e)},refresh(t=null){if(t){const e=o.get(t);return void(e&&h(e))}o.forEach(t=>{h(t)})},getState(t=null){const n=t||e;return o.get(n)}};return"undefined"==typeof window||window.paginationAPI||(window.paginationAPI=L),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",E):E(),t.initPagination=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",E):E()},t.paginationAPI=L,t}({});
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}({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreher-media/dm-js-lib",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Centralized JavaScript library for Dreher.Media websites with CDN delivery",
5
5
  "type": "module",
6
6
  "main": "dist/dm-js-lib.min.js",