1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7169],{3526:(e,t,n)=>{"use strict";n.d(t,{z:()=>i});var a=n(58973);let i=e=>"undefined"!=typeof navigator&&"connection"in navigator&&(0,a.G)(navigator.connection)&&"saveData"in navigator.connection&&"boolean"==typeof navigator.connection.saveData?!0===navigator.connection.saveData:e},26790:(e,t,n)=>{"use strict";n.d(t,{x:()=>a});let a=(e=2)=>"undefined"!=typeof navigator&&"hardwareConcurrency"in navigator&&"number"==typeof navigator.hardwareConcurrency&&!1===Number.isNaN(navigator.hardwareConcurrency)&&navigator.hardwareConcurrency>0?navigator.hardwareConcurrency:e},33033:(e,t,n)=>{"use strict";n.d(t,{M:()=>r});var a=n(21462),i=n(58973);let o=(e="4g")=>{let t="undefined"!=typeof navigator&&"connection"in navigator&&(0,i.G)(navigator.connection)&&"effectiveType"in navigator.connection&&"string"==typeof navigator.connection.effectiveType&&navigator.connection.effectiveType.length?navigator.connection.effectiveType:null;return null==t?e:"slow-2g"===t?"slow-2g":"2g"===t?"2g":"3g"===t?"3g":"4g"===t?"4g":e},r=e=>{let[t,n]=(0,a.useState)(()=>null!=e?e:o());return(0,a.useEffect)(()=>{let e=()=>{n(o())};return"undefined"!=typeof navigator&&"connection"in navigator&&(0,i.G)(navigator.connection)&&"addEventListener"in navigator.connection&&"function"==typeof navigator.connection.addEventListener&&navigator.connection.addEventListener("change",e),()=>{"undefined"!=typeof navigator&&"connection"in navigator&&(0,i.G)(navigator.connection)&&"removeEventListener"in navigator.connection&&"function"==typeof navigator.connection.removeEventListener&&navigator.connection.removeEventListener("change",e)}},[]),t}},58973:(e,t,n)=>{"use strict";n.d(t,{G:()=>a});let a=e=>null!==e&&"object"==typeof e},67169:(e,t,n)=>{"use strict";n.r(t),n.d(t,{HorizontalImageSequence:()=>_});var a=n(23798),i=n(46186),o=n(53524),r=n(6952),c=n.n(r),l=n(21462),s=n(35965),u=n(36698),d=n(78526),g=n(26790),m=n(33033),v=n(3526),h=n(26533),f=n(41249),p=n(68898),y=n(7972),w=n(24874),S=n(67171),q=n(22381),I=n(91130),j=n.n(I);let b=(0,w.y)(),_=({visibility:e,lengthMobile:t,lengthDesktop:r,preloadKey:w,imageSequence:I,title:_})=>{let{width:x}=(0,u.v)(),T=(0,p.U)("(min-width: 690px)"),C=(0,m.M)(),U=(0,v.z)(!1),M=(0,g.x)(),E=(0,d.j)(),[N,L]=(0,l.useState)(!0),k=!T&&I.imageSequenceMobile?I.imageSequenceMobile:I.url,{data:P,isLoading:R,isError:A}=(0,h.I)((e=>(0,i.j)({queryKey:["horizontal-image-sequence",e],queryFn:async()=>await b.public.services.image_sequence.fetch.query({sequenceName:e})}))(k)),H=(0,y.R)(e=>e.removePendingSection);(0,l.useEffect)(()=>{!R&&w&&(T||"desktop"!==e)&&(!T||"mobile"!==e)&&A&&H(w)},[H,A,w,e,R,T]);let[D,X]=(0,l.useState)(null),F=(0,l.useMemo)(()=>"4g"!==C&&"3g"!==C||U||M&&M<4||E<4,[C,U,M,E]);(0,l.useEffect)(()=>{if(!D)return;let e=D.closest(".js-image-sequence");if(!e)return;let t=2;window.devicePixelRatio&&(t=Math.max(2,window.devicePixelRatio)),D.width=window.innerWidth*t,D.height=e.getBoundingClientRect().height*t,D.style.setProperty("--pixelDensity",t.toString())},[D,x]);let B=(0,l.useRef)({value:0}),[O,W]=(0,l.useState)([]),$=(0,l.useCallback)(async e=>{if(!P||!D)return;let t=D.width,n=Math.ceil((P.length-1)/("minimal"===e?3:1)),a=new Set,i=async e=>new Promise((n,i)=>{if(a.has(e))return void i(Error("Image already loaded"));{if(e>P.length-1)return void i(Error("Invalid frame"));let o=P[e]?.url;if(null==o)return void i(Error("Invalid image URL"));let r=new Image;a.add(e),r.onload=()=>{W(t=>(t[e]=r,t)),n("Image loaded")},r.onerror=()=>{a.delete(e),i(Error(`Failed to load ${o} at frame ${e}`))},setTimeout(()=>{i(Error("Image load timeout"))},6e4);let c=[360,480,560,640,768,860,940,1024,1280,1366,1440,1600,1920,2560,3840].sort(),l=c.reduce((e,n)=>Math.abs(t/Math.max(2,window.devicePixelRatio)-n)>200||n<=e?e:n,0),s=0===l?c[c.length-1]||1920:l;r.src=`/_next/image?url=${encodeURIComponent(o)}&w=${s.toString()}&q=95`}});return await Promise.all(Array(n).fill(null).map((t,n)=>i(n*("minimal"===e?3:1)).catch(e=>{})))},[P,D]),z=(0,l.useCallback)(()=>{if(!D)return;let e=D.getContext("2d"),{height:t}=D,n=2;window.devicePixelRatio&&(n=Math.max(2,window.devicePixelRatio));let a=D.width;if(!e)return;let i=O[B.current.value];if(i instanceof HTMLImageElement){let o,r,c,l;i.width*=n,i.height*=n;let s=D.width/D.height,u=i.width/i.height;u>s?(o=t*u,r=t,c=(a-o)/2,l=0):(o=(r=t)*u,l=0,c=(a-o)/2),i.width=o,i.height=r,e.imageSmoothingEnabled=!1,e.clearRect(0,0,D.width,D.height),e.drawImage(i,c,l,i.width,i.height)}},[D,O]),G=(0,l.useCallback)(async()=>
1{if(!P||!D)return;let e=D.closest(".js-canvas-wrapper");if(O.length<=P.length&&e){await $(!1===F?"full":"minimal"),z();let t=e.querySelector(".js-loading-container");s.gsap.fromTo(t,{opacity:1},{opacity:0,duration:.5,ease:"Power4.easeInOut",onComplete:()=>{L(!1)}})}},[P,D,z,O.length,F,$]),V=(0,l.useCallback)(e=>{if(e.preventDefault(),!D||!P)return;let t=D.closest(".js-canvas-wrapper");if(!t)return;let n=t.querySelector(".js-indicator"),a=n?.querySelector(".js-indicator-thumb")||document.createElement("div"),i=0;null!==n&&(i=n.getBoundingClientRect().width-a.getBoundingClientRect().width);let o=t.scrollWidth-x,r=t.scrollLeft/o,c=s.gsap.fromTo(a,{x:0},{x:i,ease:"none",paused:!0});B.current.value=Math.round((P.length-1)*r),c.progress(r),O.length<=0||z()},[D,P,O.length,z,x]),J=(0,l.useCallback)(e=>{let t=e.target;if(!(t instanceof HTMLElement))return;let n=t.closest(".js-canvas-wrapper");if(!n)return;let a=n.querySelector(".js-view-button"),i=n.querySelector(".js-loading-lottie"),o=s.gsap.timeline();o.fromTo(a,{scale:1.5},{scale:0,duration:.5,ease:"Power4.easeInOut"},0),o.fromTo(i,{scale:0,opacity:1},{scale:1,opacity:1,duration:.5,ease:"Power4.easeInOut"},0),G().catch(e=>{})},[G]),K=(0,y.R)(e=>e.addAssets);(0,l.useEffect)(()=>{if(!R){if(!w||!P||!T&&"desktop"===e||T&&"mobile"===e){w&&H(w);return}K({[w]:[...P.map((e,t)=>t%3==0?e.url:null).filter(f.Wo)]})}},[K,w,H,P,e,R,T]),(0,l.useEffect)(()=>{if(!D)return;let e=D.closest(".js-canvas-wrapper"),t=D.closest(".js-canvas-holder"),n=s.gsap.fromTo(t,{yPercent:-10},{yPercent:10,ease:"none"}),a=s.ScrollTrigger.create({trigger:e,start:"top bottom",end:"bottom top",animation:n,scrub:!0});return()=>{a.kill()}},[D]);let Q=(0,l.useRef)(!1),Y=(0,l.useCallback)(e=>{let t=D?.closest(".js-canvas-wrapper");t&&s.gsap.to(t,{scrollTo:{x:t.scrollLeft+x*(e?-.1:.1)}}),Q.current&&requestAnimationFrame(()=>{Y(e)})},[D,x]),Z=(0,l.useRef)({x:-1,left:-1}),ee=(0,l.useCallback)(e=>{Z.current={x:"clientX"in e&&"number"==typeof e.clientX?e.clientX:"touches"in e&&e.touches instanceof TouchList?e.touches[0]?.clientX??0:0,left:D?.closest(".js-canvas-wrapper")?.scrollLeft||0}},[D]),et=(0,l.useCallback)(()=>{Z.current={x:-1,left:-1}},[]),en=(0,l.useCallback)(e=>{let t=D?.closest(".js-canvas-wrapper");if(!t||Z.current.x<0)return;let n="clientX"in e&&"number"==typeof e.clientX?e.clientX:"touches"in e&&e.touches instanceof TouchList?e.touches[0]?.clientX??0:0,{width:a}=t.getBoundingClientRect(),i=(Z.current.x-n)/a*(t.scrollWidth-x);20>Math.abs(i)||s.gsap.to(t,{scrollTo:{x:Z.current.left+i}})},[D,x]),ea=(0,l.useRef)(null),[ei,eo]=(0,l.useState)(null);return((0,l.useEffect)(()=>{if(!ei)return;let e=!1;return(async()=>{let{default:t}=await n.e(7957).then(n.t.bind(n,99297,23));e||(ea.current=t.loadAnimation({container:ei,renderer:"svg",loop:!0,autoplay:!0,path:"/assets/lottie/loader.json"}))})(),()=>{e=!0,ea.current?.destroy(),ea.current=null}},[ei]),!T&&"desktop"===e||T&&"mobile"===e)?null:(0,a.jsx)("section",{onMouseDown:ee,onTouchStart:ee,onMouseUp:et,onTouchCancel:et,onTouchEnd:et,onMouseLeave:et,onMouseMove:en,onTouchMove:en,onScroll:V,className:(0,o.A)(j().imageSequenceHolder,"js-canvas-wrapper"),children:(0,a.jsx)("div",{style:{width:`${!T?t:r}vw`},className:j().imageSequenceFeed,children:(0,a.jsxs)("div",{className:(0,o.A)(j().imageSequence,"js-image-sequence"),children:[(0,a.jsx)("div",{className:(0,o.A)(j().imageSequenceCanvasHolder,"js-canvas-holder"),children:(0,a.jsx)("canvas",{ref:X,className:j().imageSequenceCanvas})}),N?(0,a.jsxs)("div",{className:(0,o.A)(j().imageSequenceUI,"js-loading-container"),children:[(0,a.jsx)("div",{className:j().imageSequenceUIPlaceholder,children:P&&P[0]?(0,a.jsx)(c(),{src:P[0].url,style:{objectFit:T?"contain":"cover",objectPosition:"center center"},draggable:"false",fill:!0,alt:"A placeholder of the 3D render"}):null}),(0,a.jsx)(S.$,{customStyle:{transform:"scale(1.5)"},onClick:J,customClass:"js-view-button",label:"VIEW IN 3D"}),(0,a.jsx)("div",{ref:eo,className:(0,o.A)(j().imageSequenceUILoadingLottie,"js-loading-lottie")})]}):null,(0,a.jsxs)("div",{style:{top:0,opacity:+(!1===N)},className:j().imageSequenceUITop,children:[(0,a.jsx)("div",{onMouseDown:()=>{Q.current=!0,Y(!0)},onMouseUp:()=>{Q.current=!1},className:(0,o.A)(j().imageSequenceUITopChevron,"js-arrow-left"),children:(0,a.jsx)(q.O,{})}),(0,a.jsx)("h2",{className:j().imageSequenceUITopTitle,children:_}),(0,a.jsx)("div",{className:(0,o.A)(j().imageSequenceUITopChevron,"js-arrow-right"),onMouseDown:()=>{Q.current=!0,Y(!1)},onMouseUp:()=>{Q.current=!1},children:(0,a.jsx)(q.O,{})})]}),(0,a.jsx)("div",{style:{opacity:+(!1===N)},className:(0,o.A)(j().imageSequenceUIIndicator,"js-indicator"),children:(0,a.jsx)("div",{"aria-label":"Slider",role:"slider",tabIndex:0,"aria-valuemin":1,"aria-valuemax":1,"aria-valuenow":1,"aria-valuetext":"It is a animation with image sequences",className:(0,o.A)(j().imageSequenceUIIndicatorThumb,"js-indicator-thumb")})})]})})})}},78526:(e,t,n)=>{"use strict";n.d(t,{j:()=>a});let a=(e=2)=>"undefined"!=typeof navigator&&"deviceMemory"in navigator&&"number"==typeof navigator.deviceMemory&&!1===Number.isNaN(navigator.deviceMemory)&&navigator.deviceMemory>0?navigator.deviceMemory:e},91130:e=>{e.exports={imageSequence:"style_imageSequence__ozJHf",imageSequenceHolder:"style_imageSequenceHolder__vJ_Ng",imageSequenceFeed:"style_imageSequenceFeed__8F5ky",imageSequenceCanvas:"style_imageSequenceCanvas__boxVw",imageSequenceCanvasHolder:"style_imageSequenceCanvasHolder__QyB1k",imageSequenceUI:"style_imageSequenceUI__N22Wg",imageSequenceUIPlaceholder:"style_imageSequenceUIPlaceholder__OX7m1",imageSequenceUILoadingLottie:"style_imageSequenceUILoadingLottie___bgEY",imageSequenceUIIndicator:"style_imageSequenceUIIndicator__qH36I",imageSequenceUIIndicatorThumb:"style_imageSequenceUIIndicatorThumb__6m3k0",imageSequenceUITop:"style_imageSequenceUITop__PcUUB",imageSequenceUITopChevron:"style_imageSequenceUITopChevron___brEI",imageSequenceUITopTitle:"style_imageSequenceUITopTitle__gVhUT"}}}]);
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.