@dreher-media/dm-js-lib 0.6.2 → 0.6.4

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.
@@ -1,2 +1,2 @@
1
- /*! dm-js-lib v0.6.2 */
1
+ /*! dm-js-lib v0.6.4 */
2
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 a=t.getAttribute("data-download-href"),n=t.getAttribute("data-download-filename");a&&((t,e)=>{const a=document.createElement("a");a.href=t,a.download=e||t.split("/").pop()||"download",document.body.appendChild(a),a.click(),document.body.removeChild(a)})(a,n)})})})}function e(t){const e=t.dataset.tabTarget;if(e)return e;const a=t.dataset.tabLink;if(a)return a;const n=t.getAttribute("href");return n?.startsWith("#")?n.slice(1):null}function a(t){return Array.from(document.querySelectorAll(`[data-tab-content="${t}"]`))}function n(t){const a=[];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 n=e(t);n&&a.push(n)}),a}function o(t){const a=[];return t.querySelectorAll(".tab-link:not([data-lang-link]):not([data-lang]), [data-tab-link]").forEach(t=>{const n=e(t);n&&a.push(n)}),a}function r(t){const r=t.dataset.tabGroup,i=e(t),l=i?a(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")});n(r).forEach(t=>{a(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=>{a(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 a=t.textContent?.trim().toLowerCase();return a||null}function l(t){const e=t.match(/^([a-z]{2})(?:-|$)/i);return e?e[1].toLowerCase():null}function d(t){if(document.querySelector(`[data-lang-link="${t}"]`))return!0;if(document.querySelector(`[data-lang-content="${t}"]`))return!0;if(document.querySelector(`.biography-lang-links .tab-link[data-lang]:not([data-lang-link])[data-lang="${t}"]`))return!0;return!!document.querySelector(`.biography-text.${t}`)}function s(t){sessionStorage.setItem("selected_lang",t),document.querySelectorAll("[data-lang-content]").forEach(e=>{const a=e;a.dataset.langContent===t?(a.style.display="",a.classList.add("lang-active")):(a.style.display="none",a.classList.remove("lang-active"))}),document.querySelectorAll(`.biography-text:not([data-lang-content]):not(.${t})`).forEach(t=>{t.style.display="none"}),document.querySelectorAll(`.biography-text:not([data-lang-content]).${t}`).forEach(t=>{t.style.display="block"}),document.querySelectorAll("[data-lang-link]").forEach(e=>{const a=e;i(a)===t?a.classList.add("active"):a.classList.remove("active")}),document.querySelectorAll(`.biography-lang-links .tab-link[data-lang]:not([data-lang-link]):not([data-lang="${t}"])`).forEach(t=>{t.classList.remove("active")}),document.querySelectorAll(`.biography-lang-links .tab-link[data-lang]:not([data-lang-link])[data-lang="${t}"]`).forEach(t=>{t.classList.add("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&&d(e))t=e;else{if(!d("en"))return;t="en"}}if(t){const e=document.querySelector(`[data-lang-link="${t}"]`);if(e)return void e.click();const a=document.querySelector(`.biography-lang-links .tab-link[data-lang]:not([data-lang-link])[data-lang="${t}"]`);if(a)return void a.click();s(t)}}function u(t,e="script"){return new Promise((a,n)=>{const o="script"===e?`script[src="${t}"]`:`link[rel="stylesheet"][href="${t}"]`;if(document.querySelector(o))a();else if("script"===e){const e=document.createElement("script");e.src=t,e.async=!0,e.onload=()=>a(),e.onerror=()=>n(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=()=>a(),e.onerror=()=>n(new Error(`Failed to load stylesheet: ${t}`)),document.head.appendChild(e)}else n(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)}"undefined"!=typeof window&&void 0===window.videoSwipers&&(window.videoSwipers=[]);const p=()=>"undefined"!=typeof window?window.videoSwipers:void 0;function m(t){if(void 0!==window.Plyr){const e=window.Plyr.setup("._init-plyr");t.push(...e),e.forEach(e=>{e.on("play",()=>{g(null,t,{});const e=p();e&&e.forEach(t=>{t.autoplay.stop()})}),e.on("pause",()=>{const t=p();t&&t.forEach(t=>{t.autoplay.start()})})})}}function g(t=null,e,a){e.forEach(t=>{t.pause()});for(const[e,n]of Object.entries(a))if(t!==e)if("youtube"===n.type){n.player.pauseVideo()}else if("vimeo"===n.type){n.player.pause()}else if("dailymotion"===n.type){n.player.pause()}}function h(t,e,a){g(t,e,a);const n=p();n&&n.forEach(t=>{t.autoplay.stop()})}function w(t){const e=p();e&&e.forEach(t=>{t.autoplay.start()})}function b(t){let e=new Date(t);if(!isNaN(e.getTime()))return e;const a=t.match(/^(\d{4}-\d{2}-\d{2})\s+(\d{1,2}):(\d{2})$/);if(a){const[,t,n,o]=a;if(e=new Date(t),!isNaN(e.getTime()))return e.setHours(parseInt(n,10),parseInt(o,10),0,0),e}return null}function v(t){const e=t.match(/^(\d{1,2}):(\d{2})$/);if(!e)return null;const a=parseInt(e[1],10),n=parseInt(e[2],10);if(a<0||a>23||n<0||n>59)return null;const o=new Date;return o.setHours(a,n,0,0),o}function k(t,e,a){return!(e&&t<e)&&!(a&&t>a)}function E(t,e,a){const n=60*t.getHours()+t.getMinutes();if(e){if(n<60*e.getHours()+e.getMinutes())return!1}if(a){if(n>60*a.getHours()+a.getMinutes())return!1}return!0}function S(t){const e=new Date(t);return e.setHours(0,0,0,0),e}function L(t){const e=new Date;if(t.startsWith("before:")){const a=v(t.substring(7));return!!a&&E(e,void 0,a)}if(t.startsWith("after:")){const a=v(t.substring(6));return!!a&&E(e,a,void 0)}if(t.startsWith("between:")){const a=t.substring(8).split(",");if(2!==a.length)return!1;const n=v(a[0].trim()),o=v(a[1].trim());return!(!n||!o)&&E(e,n,o)}if(t.startsWith("day:")){const e=t.substring(4),a=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"][(new Date).getDay()];if("weekday"===e)return["monday","tuesday","wednesday","thursday","friday"].includes(a);if("weekend"===e)return["saturday","sunday"].includes(a);return e.split("|").map(t=>t.trim().toLowerCase()).includes(a)}return!1}function A(t){if(!t.startsWith("param:"))return!1;const e=t.substring(6),a=new URLSearchParams(window.location.search);if(e.startsWith("!")){const t=e.substring(1);return!a.has(t)}if(e.includes("!=")){const[t,n]=e.split("!=");return a.get(t)!==n}if(e.includes("=")){const[t,n]=e.split("=");return a.get(t)===n}return a.has(e)}function q(t){const e=t.dataset.conditionalDate?.trim(),a=t.dataset.conditionalUrl?.trim(),n=e?e.split("|").map(t=>t.trim()).filter(t=>t):[],o=a?a.split("|").map(t=>t.trim()).filter(t=>t):[];if(n.length>0){if(!n.map(t=>t.startsWith("day:")||t.match(/^(before|after|between):\d{1,2}:\d{2}/)?L(t):function(t){const e=new Date;if(t.startsWith("before:")){const a=t.substring(7),n=b(a);return!!n&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(a)?e<n:S(e)<S(n))}if(t.startsWith("after:")){const a=t.substring(6),n=b(a);return!!n&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(a)?e>n:S(e)>S(n))}if(t.startsWith("between:")){const a=t.substring(8).split(",");if(2!==a.length)return!1;const n=b(a[0].trim()),o=b(a[1].trim());if(!n||!o)return!1;const r=/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(a[0]),i=/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(a[1]);return r||i?k(e,n,o):k(S(e),S(n),S(o))}if(t.startsWith("on:")){const a=t.substring(3),n=b(a);return!!n&&(/\d{4}-\d{2}-\d{2}[ T]\d{1,2}:\d{2}/.test(a)?e.getTime()-e.getTime()%6e4==n.getTime()-n.getTime()%6e4:S(e).getTime()===S(n).getTime())}return!1}(t)).some(t=>t))return!1}if(o.length>0){if(!o.map(t=>A(t)).some(t=>t))return!1}return!0}function $(){document.querySelectorAll("[data-conditional], [data-conditional-date], [data-conditional-url]").forEach(t=>{!function(t){const e=q(t);("show"===(t.dataset.conditionalMode||"show")?e:!e)?(t.style.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)})}!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 a=window.FsCC?.store.consents[e]??!1,n=document.querySelector(`[fs-cc="${e}"]`);a?(t.style.display="none",n&&(n.style.display="block")):(t.style.display="block",n&&(n.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(a=>{const n=a.getAttribute("href");if(!n)return;if(n.startsWith("#")||n.toLowerCase().startsWith("javascript:"))return;let o;try{o=new URL(n,window.location.href)}catch{return}o.origin===window.location.origin&&t(o.pathname)===e&&a.classList.add("w--current")})})}(),t(),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-separator]").forEach(t=>{const e=t.getAttribute("data-separator");if(!e)return;const a=Array.from(t.children);a.forEach((t,n)=>{if(n<a.length-1){const a=document.createElement("span");a.innerHTML=`&nbsp;${e}&nbsp;`,t.insertAdjacentElement("afterend",a)}})})}),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(a=>{e(a)===i&&(t=a)}),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")}),n(l).forEach(t=>{a(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(a=>{e(a)===i&&(t=a)}),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),d=l?a(l):[];if(d.length>0){if(i)document.querySelectorAll(`[data-tab-content][data-tab-group="${i}"]`).forEach(t=>{d.includes(t)||(t.style.display="none",t.classList.remove("active"))}),n(i).forEach(t=>{a(t).forEach(t=>{d.includes(t)||(t.style.display="none",t.classList.remove("active"))})});else{const t=r.parentNode;t&&o(t).forEach(t=>{a(t).forEach(t=>{d.includes(t)||(t.style.display="none",t.classList.remove("active"))})})}d.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 a=e,n=a.dataset.tabGroup;if(!(l&&n===l||a.classList.contains("active")))if(n){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 e=document.querySelector(`.tab-link[data-tab-group="${n}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${n}"]`);e&&r(e)}else{const t=a.parentNode;t&&null!==t.querySelector(".tab-link.active:not([data-lang-link]):not([data-lang]), [data-tab-link].active")||r(a)}}),document.querySelectorAll("[data-tab-first-active][data-tab-group]").forEach(e=>{const a=e.dataset.tabGroup;if(!a)return;if(l&&a===l)return;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 n=document.querySelector(`.tab-link[data-tab-group="${a}"]:not([data-lang-link]):not([data-lang]), [data-tab-link][data-tab-group="${a}"]`);n&&r(n)})}}),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll("[data-lang-link]").forEach(t=>{t.addEventListener("click",t=>{t.preventDefault();const e=i(t.currentTarget);e&&s(e)})}),document.querySelectorAll(".biography-lang-links .tab-link[data-lang]:not([data-lang-link])[data-lang]").forEach(t=>{t.addEventListener("click",t=>{t.preventDefault();const e=t.currentTarget,a=e.dataset?.lang;a&&s(a)})}),c()}),"interactive"!==document.readyState&&"complete"!==document.readyState||c(),document.addEventListener("DOMContentLoaded",()=>{const t=["maxresdefault","sddefault","hqdefault","mqdefault","default"],e=(a,n=0)=>{if(a.naturalWidth>120)return;if(n>=t.length)return;const o=t[n],r=a.src,i=new Image;i.onload=()=>{i.naturalWidth>120?a.src=i.src:e(a,n+1)},i.onerror=()=>{e(a,n+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"),a={};let n=!1;const o=document.querySelectorAll("._init-plyr").length>0,r=y("youtube"),i=y("vimeo"),l=y("dailymotion"),d=()=>{n||(n=!0,function(t,e,a){t.forEach(t=>{t.addEventListener("click",()=>{const n=t.querySelector("[data-custom-embed]");n&&(t.innerHTML=n.innerHTML);const o=t,r=`player_${o.dataset.id}`,i=o.dataset.type,l=o.dataset.videoId,d=parseInt(o.dataset.time||"0",10);if(l&&i)if(h(r,a,e),"youtube"===i&&window.YT){const t=new window.YT.Player(r,{videoId:l,playerVars:{start:d},events:{onReady:t=>{t.target.playVideo()},onStateChange:t=>{t.data===window.YT.PlayerState.PLAYING?h(r,a,e):t.data!==window.YT.PlayerState.PAUSED&&t.data!==window.YT.PlayerState.ENDED||w()}}});e[r]={type:i,player:t}}else if("vimeo"===i&&window.Vimeo){const t=document.getElementById(r);t&&(t.innerHTML="");const n=new window.Vimeo.Player(r,{id:l,autoplay:!0,start:d});n.on("play",()=>h(r,a,e)),n.on("pause",()=>w()),e[r]={type:i,player:n}}else"dailymotion"===i&&window.dailymotion&&window.dailymotion.createPlayer(r,{video:l,params:{autoplay:1,start:d,mute:!1}}).then(t=>{t.on("play",()=>h(r,a,e)),t.on("pause",()=>w()),t.on("ended",()=>w()),e[r]={type:"dailymotion",player:t}}).catch(t=>{console.error("Error initializing Dailymotion player:",t)})})})}(e,a,t))};r&&(window.onYouTubeIframeAPIReady=()=>{d()});const s=[];var c;o&&s.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&&s.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&&s.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&&s.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)})),s.length>0?Promise.all(s).then(()=>{o&&m(t),r?setTimeout(()=>{n||d()},1e3):setTimeout(()=>{d()},100)}).catch(e=>{console.error("Error loading video player APIs:",e),o&&void 0!==window.Plyr&&m(t),setTimeout(()=>{d()},500)}):(o&&void 0!==window.Plyr&&m(t),d());const p="undefined"!=typeof window?window.videoSwipers:void 0;p&&p.forEach(e=>{e.on("slideChange",()=>{g(null,t,a)})})}),document.addEventListener("DOMContentLoaded",()=>{$(),window.addEventListener("popstate",()=>{$()}),window.addEventListener("hashchange",()=>{$()})}),"interactive"!==document.readyState&&"complete"!==document.readyState||$()}();
@@ -1,2 +1,2 @@
1
- /*! dm-js-lib/filter v0.6.2 */
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}"]`,n=e?`[data-filter-instance="${e}"] ${a}, ${a}[data-filter-instance="${e}"]`:`${a}:not([data-filter-instance])`,i=document.querySelector(n);if(!i)return!1;if("input"===i.tagName.toLowerCase()){const t=i.type;return"text"===t||"search"===t}return!1}function n(t){const e={},a={},n="[data-filter-field]",i=t?`[data-filter-instance="${t}"] ${n}, ${n}[data-filter-instance="${t}"]`:`${n}:not([data-filter-instance])`;return document.querySelectorAll(i).forEach(t=>{const n=t,i=n.dataset.filterField;if(i){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;return t.dataset.filterValue||null}(n);let l=!1;if("select"===n.tagName.toLowerCase()){const e=n,a=e.dataset.filterAllValue||"",i=e.dataset.filterAllText||"All";(!t||""===t||t===a||t.trim&&t.trim()===a)&&(l=!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)&&(l=!0)}}if(t&&"string"==typeof t&&t.trim().length>0&&!l){const l=function(t){return t?t.split(",").map(t=>t.trim()).filter(t=>t.length>0):[]}(n.dataset.filterSearch);l.length>0&&(a[i]=l),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 n=t.dataset.filterValue;if(n){return n.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}return[]}function l(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),n="[data-filter-count], [data-filter-results]",i=t?`[data-filter-instance="${t}"] ${n}, ${n}[data-filter-instance="${t}"]`:`${n}:not([data-filter-instance])`,l=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 d=e.querySelectorAll("[data-filter-item]");if(d.length>0)c=Array.from(d);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 f={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(l)||null,loadingElement:document.querySelector(s)||null,lastUpdate:Date.now()};return r.set(a,f),f}function c(t,e){const a=o(t),n=r.get(a);return n&&n.listElement===e?n:s(t,e)}function d(t){const r=e(t),{filters:o,multifieldSearches:s}=n(r),d=c(r,t),f=d.items;d.loadingElement&&(d.loadingElement.style.display="",d.loadingElement.classList.add("filter-loading-active")),requestAnimationFrame(()=>{let e=0;if(f.forEach(t=>{const n=function(t,e,n,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=n[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||l(t).some(t=>t.includes(e)||e.includes(t))}))return!1}else{let n=i(t,e);if(0===n.length&&(n=l(t)),0===n.length)return!1;const o=a(e,r);if(!s.some(t=>n.some(e=>o?e.includes(t)||t.includes(e):e===t)))return!1}}return!0}(t,o,s,r);n?(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,n,i){const l=i?.countElements||[];if(0===l.length){const t="[data-filter-count], [data-filter-results]",e=n?`[data-filter-instance="${n}"] ${t}, ${t}[data-filter-instance="${n}"]`:`${t}:not([data-filter-instance])`;l.push(...Array.from(document.querySelectorAll(e)))}l.forEach(t=>{const n=t;void 0!==n.dataset.filterCount&&(n.textContent=e.toString(),n.setAttribute("aria-label",`Total items: ${e}`)),void 0!==n.dataset.filterResults&&(n.textContent=a.toString(),n.setAttribute("aria-label",`Showing ${a} of ${e} items`))})}(0,f.length,e,r,d),d.emptyElement)if(0===e){d.emptyElement.style.display="",d.emptyElement.classList.add("filter-empty-active");const t=d.emptyElement.dataset.filterEmptyText;if(t){(d.emptyElement.querySelector("[data-filter-empty-text-content]")||d.emptyElement).textContent=t}}else d.emptyElement.style.display="none",d.emptyElement.classList.remove("filter-empty-active");d.loadingElement&&(d.loadingElement.style.display="none",d.loadingElement.classList.remove("filter-loading-active"));const n=new CustomEvent("filter:change",{detail:{instance:r,filters:o,visibleCount:e,total:f.length}});if(t.dispatchEvent(n),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 ${f.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),n=t?`filter_${t}_`:"filter_";Array.from(a.keys()).forEach(t=>{t.startsWith(n)&&a.delete(t)}),Object.entries(e).forEach(([t,e])=>{e.length>0&&a.set(`${n}${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 n=`filter_${t}_${e||"default"}`;localStorage.setItem(n,JSON.stringify(a))}catch(t){console.warn("Failed to save filter state to localStorage",t)}}(m,r,o)})}function f(t){const a=e(t),n="[data-filter-list]",i=a?`[data-filter-instance="${a}"] ${n}, ${n}[data-filter-instance="${a}"]`:`${n}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{d(t)})}function u(t){const a=t.dataset.filterField;if(!a)return;if(!("true"===t.dataset.filterAutofill))return;const n=t.options.length>0,l="true"===t.dataset.filterAutofillRefresh;if(n&&!l){const e=t.options[0];if(!("true"===e?.dataset.filterAutofillOption))return;if(!l)return;Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()})}const r=e(t),o="[data-filter-list]",s=r?`[data-filter-instance="${r}"] ${o}, ${o}[data-filter-instance="${r}"]`:`${o}:not([data-filter-instance])`,d=document.querySelector(s);if(!d)return;const f=function(t,e,a){const n=c(a,t),l=new Set;return n.items.forEach(t=>{i(t,e).forEach(t=>{t&&l.add(t)})}),Array.from(l).sort()}(d,a,r);if(0===f.length)return;const u=t.dataset.filterAllValue||"",m=t.dataset.filterAllText||"All",h="false"!==t.dataset.filterAutofillAll;if(n?Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()}):t.innerHTML="",h){const e=document.createElement("option");e.value=u,e.textContent=m,e.dataset.filterAutofillOption="true",t.appendChild(e)}f.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 m(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&&u(e)})}const h={setFilter:(t,e,a)=>{const n=`[data-filter-field="${e}"]`,i=t?`[data-filter-instance="${t}"] ${n}, ${n}[data-filter-instance="${t}"]`:`${n}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{const e=t,n=e.tagName.toLowerCase();if("input"===n){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=t.value.toLowerCase()===a.toLowerCase():t.value=a}else"select"===n&&(e.value=a)});const l="[data-filter-list]",r=t?`[data-filter-instance="${t}"] ${l}, ${l}[data-filter-instance="${t}"]`:`${l}:not([data-filter-instance])`,o=document.querySelector(r);o&&d(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])`,n=document.querySelector(a);if(n){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")}),d(n)}},getActiveFilters:t=>{const{filters:e}=n(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])`,n=document.querySelector(a);n&&(s(t,n),m(t),d(n))}};let p=!1,$=!1,y=!1,E=!1;function v(){if(p||(window.filterAPI=h),$||(document.querySelectorAll('input[type="checkbox"][data-filter-field]').forEach(t=>{t.addEventListener("change",()=>{f(t)})}),document.querySelectorAll('input[type="radio"][data-filter-field]').forEach(t=>{t.addEventListener("change",()=>{const a=t.dataset.filterField,n=e(t),i=t.name;if(i)document.querySelectorAll(`input[type="radio"][name="${i}"]`).forEach(e=>{e!==t&&(e.checked=!1)});else if(a){const e=n?`input[type="radio"][data-filter-field="${a}"][data-filter-instance="${n}"], input[type="radio"][data-filter-field="${a}"][data-filter-instance="${n}"]`:`input[type="radio"][data-filter-field="${a}"]:not([data-filter-instance])`;document.querySelectorAll(e).forEach(e=>{e!==t&&(e.checked=!1)})}f(t)})}),document.addEventListener("change",t=>{const e=t.target;"select"===e.tagName.toLowerCase()&&e.hasAttribute("data-filter-field")&&f(e)}),document.querySelectorAll('input[type="text"][data-filter-field], input[type="search"][data-filter-field]').forEach(t=>{let e;const a=t,n=a.dataset.filterDebounce&&parseInt(a.dataset.filterDebounce,10)||300;t.addEventListener("input",()=>{clearTimeout(e),e=setTimeout(()=>{f(a)},n)})}),document.querySelectorAll("[data-filter-field]:not(input):not(select)").forEach(t=>{const e=t;e.setAttribute("role","button"),e.setAttribute("tabindex","0");const a=t=>{t.preventDefault();const a=e.querySelector('input[type="checkbox"], input[type="radio"]');a?(a.checked=!a.checked,f(a)):(e.classList.toggle("active"),f(e))};e.addEventListener("click",a),e.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||a(t)})}),$=!0),document.querySelectorAll("select[data-filter-field]").forEach(t=>{const e=t;"true"===e.dataset.filterAutofill&&u(e)}),y||(document.querySelectorAll("[data-filter-clear]").forEach(t=>{t.addEventListener("click",a=>{a.preventDefault();const n=e(t),i="[data-filter-field]",l=n?`[data-filter-instance="${n}"] ${i}, ${i}[data-filter-instance="${n}"]`:`${i}:not([data-filter-instance])`;document.querySelectorAll(l).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")});const r="[data-filter-list]",o=n?`[data-filter-instance="${n}"] ${r}, ${r}[data-filter-instance="${n}"]`:`${r}:not([data-filter-instance])`,s=document.querySelector(o);if(s){if("true"===s.dataset.filterUrl){const t=new URLSearchParams(window.location.search),e=n?`filter_${n}_`:"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}_${n||"default"}`;localStorage.removeItem(e)}catch(t){}d(s);const e=new CustomEvent("filter:clear",{detail:{instance:n}});s.dispatchEvent(e)}})}),y=!0),document.querySelectorAll("[data-filter-list]").forEach(t=>{const a=t,n=e(a),i=a.dataset.filterPersist;i&&function(t,e){try{const a=`filter_${t}_${e||"default"}`,n=localStorage.getItem(a);if(n){const t=JSON.parse(n);Object.entries(t).forEach(([t,a])=>{const n=`[data-filter-field="${t}"]`,i=e?`[data-filter-instance="${e}"] ${n}, ${n}[data-filter-instance="${e}"]`:`${n}:not([data-filter-instance])`;document.querySelectorAll(i).forEach(t=>{const e=t,n=e.tagName.toLowerCase();if("input"===n){const t=e,n=t.value.toLowerCase();"checkbox"===t.type||"radio"===t.type?t.checked=a.includes(n):"text"!==t.type&&"search"!==t.type||(t.value=a[0]||"")}else if("select"===n){const t=e;a.length>0&&(t.value=a[0])}})})}}catch(t){console.warn("Failed to restore filter state from localStorage",t)}}(i,n),"true"===a.dataset.filterUrl&&function(t){const e=new URLSearchParams(window.location.search),a=t?`filter_${t}_`:"filter_";e.forEach((e,n)=>{if(n.startsWith(a)){const i=n.replace(a,""),l=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=l.includes(a):"text"!==t.type&&"search"!==t.type||(t.value=l[0]||"")}else if("select"===a){const t=e;l.length>0&&(t.value=l[0])}})}})}(n),a.setAttribute("role","region"),a.setAttribute("aria-label","Filtered list"),a.id||(a.id=`filter-list-${n||"default"}-${Date.now()}`);let l=document.querySelector(`#filter-live-${n||"default"}`);l||(l=document.createElement("div"),l.id=`filter-live-${n||"default"}`,l.setAttribute("aria-live","polite"),l.setAttribute("aria-atomic","true"),l.className="sr-only",l.style.cssText="position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;",document.body.appendChild(l)),s(n,a),m(n),d(a)}),!E){new MutationObserver(()=>{document.querySelectorAll("[data-filter-list]").forEach(t=>{const a=t,n=e(a);s(n,a),m(n)})}).observe(document.body,{childList:!0,subtree:!0}),E=!0}p=!0}return"loading"===document.readyState?document.addEventListener("DOMContentLoaded",v):v(),t.filterAPI=h,t.initFilter=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",v):v()},t}({});
1
+ /*! dm-js-lib/filter v0.6.4 */
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 l(t,e){const l=`[data-filter-field="${t}"]`,i=e?`[data-filter-instance="${e}"] ${l}, ${l}[data-filter-instance="${e}"]`:`${l}:not([data-filter-instance])`,a=document.querySelectorAll(i);let n=null;for(const t of Array.from(a)){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 i(t){const e={},l={},i="[data-filter-field]",a=t?`[data-filter-instance="${t}"] ${i}, ${i}[data-filter-instance="${t}"]`:`${i}:not([data-filter-instance])`;return console.log("[Filter] getAllFilters called:",{instance:t,selector:a}),document.querySelectorAll(a).forEach(t=>{const i=t,a=i.dataset.filterField;if(a){if(null!==i.closest("[data-filter-list]"))return void console.log("[Filter] Skipping list item (not a control):",{field:a,tagName:i.tagName,element:i});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;return t.dataset.filterValue||null}(i);console.log("[Filter] Processing control:",{field:a,tagName:i.tagName,value:t,element:i});let n=!1;if("select"===i.tagName.toLowerCase()){const e=i,l=e.dataset.filterAllValue||"",r=e.dataset.filterAllText||"All";(!t||""===t||t===l||t.trim&&t.trim()===l)&&(n=!0);const o=e.options[e.selectedIndex];if(o&&(!o.hasAttribute("value")||""===o.value)){const t=o.textContent?.trim().toLowerCase()||"";(t===r.toLowerCase()||t.startsWith("select")||t.startsWith("choose")||"all"===t||""===t)&&(n=!0)}console.log("[Filter] Select check:",{field:a,value:t,allValue:l,allText:r,selectedIndex:e.selectedIndex,selectedOptionText:o?.textContent,shouldIgnore:n})}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):[]}(i.dataset.filterSearch);n.length>0&&(l[a]=n),e[a]||(e[a]=[]),e[a].push(t.toLowerCase()),console.log("[Filter] Added filter:",{field:a,value:t.toLowerCase(),filters:e})}else console.log("[Filter] Skipped filter:",{field:a,value:t,shouldIgnore:n,reason:t?n?"should ignore":"empty string":"no value"})}}),console.log("[Filter] getAllFilters result:",{filters:e,multifieldSearches:l}),{filters:e,multifieldSearches:l}}function a(t,e){const l=t.dataset.filterField;if(l===e){const i=t.dataset.filterValue||t.textContent?.trim()||"",a=i.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean);return console.log("[Filter] getItemFieldValue (item field match):",{field:e,itemField:l,value:i,result:a,item:t}),a}const i=t.querySelector(`[data-filter-field="${e}"]`);if(i){return(i.dataset.filterValue||i.textContent?.trim()||i.getAttribute("value")||"").split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}const a=t.dataset.filterValue;if(a){return a.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)}return[]}function n(t){const e=[],l=t.dataset.filterValue;return l&&e.push(...l.split(",").map(t=>t.trim().toLowerCase()).filter(Boolean)),e}const r=new Map;function o(t){return t||"default"}function s(t,e){const l=o(t),i="[data-filter-count], [data-filter-results]",a=t?`[data-filter-instance="${t}"] ${i}, ${i}[data-filter-instance="${t}"]`:`${i}: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 d=e.querySelectorAll("[data-filter-item]");if(d.length>0)c=Array.from(d);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 f={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(a)),emptyElement:document.querySelector(n)||null,loadingElement:document.querySelector(s)||null,lastUpdate:Date.now()};return r.set(l,f),f}function c(t,e){const l=o(t),i=r.get(l);return i&&i.listElement===e?i:s(t,e)}function d(t){const r=e(t);console.log("[Filter] applyFilters called:",{instance:r,listElement:t.id||"no-id"});const{filters:o,multifieldSearches:s}=i(r),d=c(r,t),f=d.items;console.log("[Filter] applyFilters: Found items:",f.length),d.loadingElement&&(d.loadingElement.style.display="",d.loadingElement.classList.add("filter-loading-active")),requestAnimationFrame(()=>{let e=0;if(console.log("[Filter] applyFilters: Processing items with filters:",{filters:o,multifieldSearches:s}),f.forEach((t,i)=>{const c=function(t,e,i,r){const o={};for(const[t,l]of Object.entries(e))l.length>0&&(o[t]=l);if(0===Object.keys(o).length)return console.log("[Filter] matchesFilters: No active filters, showing item:",t),!0;console.log("[Filter] matchesFilters: Checking item:",{item:t,itemId:t.id,itemDataFilterValue:t.dataset.filterValue,activeFilters:o});for(const[e,s]of Object.entries(o)){const o=i[e];if(o&&o.length>0){if(!s.some(e=>{const l=o.some(l=>a(t,l).some(t=>t.includes(e)||e.includes(t)));return l||n(t).some(t=>t.includes(e)||e.includes(t))}))return!1}else{let i=a(t,e);if(0===i.length&&(i=n(t)),console.log("[Filter] matchesFilters: Field check:",{field:e,filterValues:s,itemValues:i,itemId:t.id}),0===i.length)return console.log("[Filter] matchesFilters: No item values found, hiding item:",t.id),!1;const o=l(e,r),c=s.some(t=>i.some(e=>{if(o){const l=e.includes(t)||t.includes(e);return console.log("[Filter] matchesFilters: Search match check:",{filterValue:t,itemValue:e,match:l,isSearch:o}),l}const l=e===t;return console.log("[Filter] matchesFilters: Exact match check:",{filterValue:t,itemValue:e,match:l,isSearch:o}),l}));if(console.log("[Filter] matchesFilters: Field result:",{field:e,matches:c,itemId:t.id}),!c)return console.log("[Filter] matchesFilters: Item does not match filter, hiding:",t.id),!1}}return console.log("[Filter] matchesFilters: Item matches all filters, showing:",t.id),!0}(t,o,s,r);c?(t.style.display="",t.classList.add("filter-active"),t.classList.remove("filter-hidden"),e++,i<3&&console.log("[Filter] applyFilters: Item shown:",{index:i,itemId:t.id,itemDataFilterValue:t.dataset.filterValue})):(t.style.display="none",t.classList.add("filter-hidden"),t.classList.remove("filter-active"),i<3&&console.log("[Filter] applyFilters: Item hidden:",{index:i,itemId:t.id,itemDataFilterValue:t.dataset.filterValue}))}),console.log("[Filter] applyFilters: Result:",{visibleCount:e,total:f.length}),function(t,e,l,i,a){const n=a?.countElements||[];if(0===n.length){const t="[data-filter-count], [data-filter-results]",e=i?`[data-filter-instance="${i}"] ${t}, ${t}[data-filter-instance="${i}"]`:`${t}:not([data-filter-instance])`;n.push(...Array.from(document.querySelectorAll(e)))}n.forEach(t=>{const i=t;void 0!==i.dataset.filterCount&&(i.textContent=e.toString(),i.setAttribute("aria-label",`Total items: ${e}`)),void 0!==i.dataset.filterResults&&(i.textContent=l.toString(),i.setAttribute("aria-label",`Showing ${l} of ${e} items`))})}(0,f.length,e,r,d),d.emptyElement)if(0===e){d.emptyElement.style.display="",d.emptyElement.classList.add("filter-empty-active");const t=d.emptyElement.dataset.filterEmptyText;if(t){(d.emptyElement.querySelector("[data-filter-empty-text-content]")||d.emptyElement).textContent=t}}else d.emptyElement.style.display="none",d.emptyElement.classList.remove("filter-empty-active");d.loadingElement&&(d.loadingElement.style.display="none",d.loadingElement.classList.remove("filter-loading-active"));const i=new CustomEvent("filter:change",{detail:{instance:r,filters:o,visibleCount:e,total:f.length}});if(t.dispatchEvent(i),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 ${f.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,l=e?document.querySelector(e):t;l?.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 l=new URLSearchParams(window.location.search),i=t?`filter_${t}_`:"filter_";Array.from(l.keys()).forEach(t=>{t.startsWith(i)&&l.delete(t)}),Object.entries(e).forEach(([t,e])=>{e.length>0&&l.set(`${i}${t}`,e.join(","))});const a=`${window.location.pathname}${l.toString()?`?${l.toString()}`:""}${window.location.hash}`;window.history.pushState({},"",a)}(r,o);const m=t.dataset.filterPersist;m&&function(t,e,l){try{const i=`filter_${t}_${e||"default"}`;localStorage.setItem(i,JSON.stringify(l))}catch(t){console.warn("Failed to save filter state to localStorage",t)}}(m,r,o)})}function f(t){const l=e(t),i="[data-filter-list]",a=l?`[data-filter-instance="${l}"] ${i}, ${i}[data-filter-instance="${l}"]`:`${i}:not([data-filter-instance])`,n=document.querySelectorAll(a);console.log("[Filter] handleFilterChange called:",{instance:l,listSelector:a,listsFound:n.length,lists:Array.from(n).map(t=>({id:t.id,element:t}))}),n.forEach(t=>{console.log("[Filter] Applying filters to list:",t.id||"no-id"),d(t)})}function u(t){const l=t.dataset.filterField;if(!l)return;if(!("true"===t.dataset.filterAutofill))return;const i=t.options.length>0,n="true"===t.dataset.filterAutofillRefresh;if(i&&!n){const e=t.options[0];if(!("true"===e?.dataset.filterAutofillOption))return;if(!n)return;Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()})}const r=e(t),o="[data-filter-list]",s=r?`[data-filter-instance="${r}"] ${o}, ${o}[data-filter-instance="${r}"]`:`${o}:not([data-filter-instance])`,d=document.querySelector(s);if(!d)return;const f=function(t,e,l){const i=c(l,t),n=new Set;return i.items.forEach(t=>{a(t,e).forEach(t=>{t&&n.add(t)})}),Array.from(n).sort()}(d,l,r);if(0===f.length)return;const u=t.dataset.filterAllValue||"",m=t.dataset.filterAllText||"All",h="false"!==t.dataset.filterAutofillAll;if(i?Array.from(t.options).forEach(t=>{"true"===t.dataset.filterAutofillOption&&t.remove()}):t.innerHTML="",h){const e=document.createElement("option");e.value=u,e.textContent=m,e.dataset.filterAutofillOption="true",t.appendChild(e)}f.forEach(e=>{const l=document.createElement("option");l.value=e,l.textContent=e.split(" ").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "),l.dataset.filterAutofillOption="true",t.appendChild(l)})}function m(t){const e="select[data-filter-field]",l=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`;document.querySelectorAll(l).forEach(t=>{const e=t;"true"===e.dataset.filterAutofill&&u(e)})}const h={setFilter:(t,e,l)=>{const i=`[data-filter-field="${e}"]`,a=t?`[data-filter-instance="${t}"] ${i}, ${i}[data-filter-instance="${t}"]`:`${i}:not([data-filter-instance])`;document.querySelectorAll(a).forEach(t=>{const e=t,i=e.tagName.toLowerCase();if("input"===i){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=t.value.toLowerCase()===l.toLowerCase():t.value=l}else"select"===i&&(e.value=l)});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&&d(o)},clear:t=>{const e="[data-filter-list]",l=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`,i=document.querySelector(l);if(i){const e="[data-filter-field]",l=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`;document.querySelectorAll(l).forEach(t=>{const e=t,l=e.tagName.toLowerCase();if("input"===l){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=!1:t.value=""}else"select"===l?e.selectedIndex=0:e.classList.remove("active")}),d(i)}},getActiveFilters:t=>{const{filters:e}=i(t);return e},refresh:t=>{const e="[data-filter-list]",l=t?`[data-filter-instance="${t}"] ${e}, ${e}[data-filter-instance="${t}"]`:`${e}:not([data-filter-instance])`,i=document.querySelector(l);i&&(s(t,i),m(t),d(i))}};let p=!1,y=!1,$=!1,g=!1;function v(){if(p||(window.filterAPI=h),y||(document.querySelectorAll('input[type="checkbox"][data-filter-field]').forEach(t=>{t.addEventListener("change",()=>{f(t)})}),document.querySelectorAll('input[type="radio"][data-filter-field]').forEach(t=>{t.addEventListener("change",()=>{const l=t.dataset.filterField,i=e(t),a=t.name;if(a)document.querySelectorAll(`input[type="radio"][name="${a}"]`).forEach(e=>{e!==t&&(e.checked=!1)});else if(l){const e=i?`input[type="radio"][data-filter-field="${l}"][data-filter-instance="${i}"], input[type="radio"][data-filter-field="${l}"][data-filter-instance="${i}"]`:`input[type="radio"][data-filter-field="${l}"]:not([data-filter-instance])`;document.querySelectorAll(e).forEach(e=>{e!==t&&(e.checked=!1)})}f(t)})}),document.addEventListener("change",t=>{const e=t.target;"select"===e.tagName.toLowerCase()&&e.hasAttribute("data-filter-field")&&(console.log("[Filter] Select change detected:",{element:e,field:e.getAttribute("data-filter-field"),value:e.value,selectedIndex:e.selectedIndex,selectedOption:e.options[e.selectedIndex]?.textContent}),f(e))}),document.querySelectorAll('input[type="text"][data-filter-field], input[type="search"][data-filter-field]').forEach(t=>{let e;const l=t,i=l.dataset.filterDebounce&&parseInt(l.dataset.filterDebounce,10)||300;t.addEventListener("input",()=>{clearTimeout(e),e=setTimeout(()=>{f(l)},i)})}),document.querySelectorAll("[data-filter-field]:not(input):not(select)").forEach(t=>{const e=t;e.setAttribute("role","button"),e.setAttribute("tabindex","0");const l=t=>{t.preventDefault();const l=e.querySelector('input[type="checkbox"], input[type="radio"]');l?(l.checked=!l.checked,f(l)):(e.classList.toggle("active"),f(e))};e.addEventListener("click",l),e.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||l(t)})}),y=!0),document.querySelectorAll("select[data-filter-field]").forEach(t=>{const e=t;"true"===e.dataset.filterAutofill&&u(e)}),$||(document.querySelectorAll("[data-filter-clear]").forEach(t=>{t.addEventListener("click",l=>{l.preventDefault();const i=e(t),a="[data-filter-field]",n=i?`[data-filter-instance="${i}"] ${a}, ${a}[data-filter-instance="${i}"]`:`${a}:not([data-filter-instance])`;document.querySelectorAll(n).forEach(t=>{const e=t;if(null!==e.closest("[data-filter-list]"))return;const l=e.tagName.toLowerCase();if("input"===l){const t=e;"checkbox"===t.type||"radio"===t.type?t.checked=!1:t.value=""}else"select"===l?e.selectedIndex=0:e.classList.remove("active")});const r="[data-filter-list]",o=i?`[data-filter-instance="${i}"] ${r}, ${r}[data-filter-instance="${i}"]`:`${r}:not([data-filter-instance])`,s=document.querySelector(o);if(s){if("true"===s.dataset.filterUrl){const t=new URLSearchParams(window.location.search),e=i?`filter_${i}_`:"filter_";Array.from(t.keys()).forEach(l=>{l.startsWith(e)&&t.delete(l)});const l=`${window.location.pathname}${t.toString()?`?${t.toString()}`:""}${window.location.hash}`;window.history.pushState({},"",l)}const t=s.dataset.filterPersist;if(t)try{const e=`filter_${t}_${i||"default"}`;localStorage.removeItem(e)}catch(t){}d(s);const e=new CustomEvent("filter:clear",{detail:{instance:i}});s.dispatchEvent(e)}})}),$=!0),document.querySelectorAll("[data-filter-list]").forEach(t=>{const l=t,i=e(l),a=l.dataset.filterPersist;a&&function(t,e){try{const l=`filter_${t}_${e||"default"}`,i=localStorage.getItem(l);if(i){const t=JSON.parse(i);Object.entries(t).forEach(([t,l])=>{const i=`[data-filter-field="${t}"]`,a=e?`[data-filter-instance="${e}"] ${i}, ${i}[data-filter-instance="${e}"]`:`${i}:not([data-filter-instance])`;document.querySelectorAll(a).forEach(t=>{const e=t,i=e.tagName.toLowerCase();if("input"===i){const t=e,i=t.value.toLowerCase();"checkbox"===t.type||"radio"===t.type?t.checked=l.includes(i):"text"!==t.type&&"search"!==t.type||(t.value=l[0]||"")}else if("select"===i){const t=e;l.length>0&&(t.value=l[0])}})})}}catch(t){console.warn("Failed to restore filter state from localStorage",t)}}(a,i),"true"===l.dataset.filterUrl&&function(t){const e=new URLSearchParams(window.location.search),l=t?`filter_${t}_`:"filter_";e.forEach((e,i)=>{if(i.startsWith(l)){const a=i.replace(l,""),n=e.split(",").map(t=>t.trim()),r=`[data-filter-field="${a}"]`,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,l=e.tagName.toLowerCase();if("input"===l){const t=e,l=t.value.toLowerCase();"checkbox"===t.type||"radio"===t.type?t.checked=n.includes(l):"text"!==t.type&&"search"!==t.type||(t.value=n[0]||"")}else if("select"===l){const t=e;n.length>0&&(t.value=n[0])}})}})}(i),l.setAttribute("role","region"),l.setAttribute("aria-label","Filtered list"),l.id||(l.id=`filter-list-${i||"default"}-${Date.now()}`);let n=document.querySelector(`#filter-live-${i||"default"}`);n||(n=document.createElement("div"),n.id=`filter-live-${i||"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(i,l),m(i),d(l)}),!g){new MutationObserver(()=>{document.querySelectorAll("[data-filter-list]").forEach(t=>{const l=t,i=e(l);s(i,l),m(i)})}).observe(document.body,{childList:!0,subtree:!0}),g=!0}p=!0}return"loading"===document.readyState?document.addEventListener("DOMContentLoaded",v):v(),t.filterAPI=h,t.initFilter=function(){"loading"===document.readyState?document.addEventListener("DOMContentLoaded",v):v()},t}({});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreher-media/dm-js-lib",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
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",