PageSourceSearch

https://knix.ca/cdn/shop/t/343/assets/product-innovation-DEEZRYCU.js

js knix.ca collected 2026-10-02 08:12:59 UTC 4,132 bytes, 1 lines download raw bytes

1import{e as n}from"./chunk-UWFWQZHK.js";var l,a=n(()=>{l=class extends HTMLElement{constructor(){super(),this.selectors={blocks:"[js-innovation-blocks]",block:"[js-innovation-block]",blockHeader:"[js-innovation-block-header]",blockContent:"[js-innovation-block-content]",imageDisplay:"[js-innovation-image-display]",blockCaret:".product-innovation__block-caret"},this.activeBlock=null,this.activeBlockIndex=0,this.isTouch=!1,this.hoverTimeout=null,this.expandTimeouts=new Map}connectedCallback(){this.sectionId=this.getAttribute("data-section-id"),this.initElements(),this.initEventListeners(),this.initializeFirstBlock()}initElements(){this.blocksContainer=this.querySelector(this.selectors.blocks),this.blocks=this.querySelectorAll(this.selectors.block),this.imageDisplay=this.querySelectorAll(this.selectors.imageDisplay),this.totalBlocks=this.blocks.length,this.initializeImageContainer()}initEventListeners(){this.blocks.forEach(e=>{let t=e.querySelector(this.selectors.blockHeader);t&&(t.addEventListener("mouseenter",this.onBlockHover.bind(this,e)),t.addEventListener("mouseleave",this.onBlockLeave.bind(this,e)),t.addEventListener("click",this.onBlockActive.bind(this,e)),t.addEventListener("focusin",this.onBlockActive.bind(this,e)),e.addEventListener("keydown",this.onBlockKeyDown.bind(this,e)))})}initializeFirstBlock(){this.blocks.length>0&&this.setActiveBlock(this.blocks[0],!1)}initializeImageContainer(){let e=this.imageDisplay[0];if(e){let t=e.querySelector("img");if(t){let i=()=>{let s=e.closest(".product-innovation__image-display");if(s){s.style.minHeight=`${t.offsetHeight}px`;let o=t.offsetWidth/t.offsetHeight;s.style.aspectRatio=o.toString()}};t.complete&&t.offsetHeight>0?i():(t.addEventListener("load",i,{once:!0}),setTimeout(()=>{t.offsetHeight>0&&i()},100))}}}onBlockHover(e){this.hoverTimeout&&clearTimeout(this.hoverTimeout),this.hoverTimeout=setTimeout(()=>{this.setActiveBlock(e,!0)},50)}onBlockLeave(e){this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=null)}onBlockActive(e){this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=null),this.setActiveBlock(e,!0)}onBlockKeyDown(e,t){(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),this.onBlockActive(e)),(t.key==="ArrowDown"||t.key==="ArrowUp")&&(t.preventDefault(),this.navigateBlocks(e,t.key==="ArrowDown"))}navigateBlocks(e,t){let i=Array.from(this.blocks).indexOf(e),s;t?s=i+1>=this.blocks.length?0:i+1:s=i-1<0?this.blocks.length-1:i-1;let o=this.blocks[s];o.focus(),this.setActiveBlock(o,!0)}setActiveBlock(e,t=!0){if(this.activeBlock===e)return;let i=parseInt(e.getAttribute("data-block-index"));this.collapseAllBlocks(),this.expandBlock(e,t),this.activeBlock=e,this.activeBlockIndex=i,this.updateImage(i)}expandBlock(e){let t=e.querySelector(this.selectors.blockContent),i=e.querySelector(this.selectors.blockHeader);if(!t)return;this.expandTimeouts.has(e)&&(clearTimeout(this.expandTimeouts.get(e)),this.expandTimeouts.delete(e)),i.setAttribute("aria-expanded","true"),i.classList.add("active"),e.setAttribute("aria-expanded","true"),t.setAttribute("aria-hidden","false");let s=t.scrollHeight;t.style.maxHeight=`${s}px`;let o=setTimeout(()=>{t.style.maxHeight="none",this.expandTimeouts.delete(e)},300);this.expandTimeouts.set(e,o)}collapseAllBlocks(){this.blocks.forEach(e=>{this.collapseBlock(e)})}collapseBlock(e){let t=e.querySelector(this.selectors.blockContent),i=e.querySelector(this.selectors.blockHeader);t&&(this.expandTimeouts.has(e)&&(clearTimeout(this.expandTimeouts.get(e)),this.expandTimeouts.delete(e)),i.setAttribute("aria-expanded","false"),i.classList.remove("active"),e.setAttribute("aria-expanded","false"),t.setAttribute("aria-hidden","true"),t.style.maxHeight=`${t.scrollHeight}px`,t.offsetHeight,t.style.maxHeight="0px")}updateImage(e){this.imageDisplay&&this.imageDisplay.forEach((t,i)=>{i===e?(t.classList.remove("opacity-0"),t.setAttribute("aria-hidden","false")):(t.classList.add("opacity-0"),t.setAttribute("aria-hidden","true"))})}collapseActiveBlock(){this.activeBlock&&(this.collapseBlock(this.activeBlock),this.activeBlock=null)}}});a();export{l as ProductInnovation};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.