PageSourceSearch

https://www.scoutmotors.com/_astro/TurntableViewer.astro_astro_type_script_index_0_lang.CiwSSsUS.js

js scoutmotors.com collected 2026-10-03 20:20:07 UTC 6,132 bytes, 1 lines download raw bytes

1import{t as e}from"./gsap.CvDoa17S.js";import{n as t}from"./screen.C7FgSqdh.js";import{t as n}from"./deviceStatus.DQ4yLzYU.js";import{n as r}from"./scroll.DRgPia6E.js";import{i,r as a,t as o}from"./maths.DLf3n1j8.js";import{t as s}from"./focus-trap.esm.B1WdRdrv.js";var c=class c extends HTMLElement{static MODAL_ACTIVE_CLASS=`has-viewer-open`;static PIXES_PER_FRAME=10;unbindScreenListener=()=>{};$imageTransition;$tabsElement;isTouchOrSmall=n.value?.isTouchOrSmall;sequenceObj=null;$modal;focusTrap;dragState={startX:0,lastX:0,oldX:0,x:0,smoothX:0,lerp:.1,max:0,isStarted:!1};isRafPlaying=!1;rafIncrement=0;closeCallback=()=>{};$modalClose;$turntable;isLeaving=!1;constructor(){super(),this.onActivate=this.onActivate.bind(this),this.onPostActivate=this.onPostActivate.bind(this),this.onDeactivate=this.onDeactivate.bind(this),this.onPostDeactivate=this.onPostDeactivate.bind(this),this.onDragStart=this.onDragStart.bind(this),this.onDragEnd=this.onDragEnd.bind(this),this.onDrag=this.onDrag.bind(this),this.onDragUpdate=this.onDragUpdate.bind(this),this.onClose=this.onClose.bind(this),this.onResize=this.onResize.bind(this),this.$imageTransition=this.querySelector(`[data-transition-image]`),this.$modal=this.querySelector(`[data-modal]`),this.$tabsElement=this.closest(`c-tabs`),this.$modalClose=this.querySelector(`[data-modal-close]`),this.$turntable=this.closest(`c-turntable`),this.focusTrap=s(this.$modal,{onActivate:this.onActivate,onPostActivate:this.onPostActivate,onDeactivate:this.onDeactivate,onPostDeactivate:this.onPostDeactivate})}connectedCallback(){this.setSequence(),this.bindEvents()}disconnectedCallback(){this.unbindEvents()}bindEvents(){this.$modalClose.addEventListener(`click`,this.onClose),this.unbindScreenListener=t.listen(this.onResize),this.addEventListener(`pointerdown`,this.onDragStart),this.addEventListener(`pointerup`,this.onDragEnd),this.addEventListener(`pointerleave`,this.onDragEnd),this.addEventListener(`pointermove`,this.onDrag)}unbindEvents(){this.unbindScreenListener?.(),this.$modalClose.removeEventListener(`click`,this.onClose),this.removeEventListener(`pointerdown`,this.onDragStart),this.removeEventListener(`pointerup`,this.onDragEnd),this.removeEventListener(`pointerleave`,this.onDragEnd),this.removeEventListener(`pointermove`,this.onDrag)}onResize(){this.focusTrap.active&&this.scrollToTarget(!0)}onDragStart(e){this.$modalClose.contains(e.target)||e.target===this.$modalClose||this.isLeaving||(this.classList.add(`is-dragging`),this.dragState.isStarted=!0,this.dragState.oldX=this.dragState.x,this.dragState.startX=e instanceof MouseEvent?e.clientX:e.touches[0].clientX,this.play())}onDragEnd(){this.dragState.isStarted&&(this.dragState.isStarted=!1,this.classList.remove(`is-dragging`))}onDrag(e){if(!this.dragState.isStarted)return;let t=e instanceof MouseEvent?e.clientX:e.touches[0].clientX;this.dragState.x=this.dragState.oldX+(t-this.dragState.startX),this.dragState.lastX=t}onDragUpdate(){this.dragState.smoothX+=(this.dragState.x-this.dragState.smoothX)*this.dragState.lerp,this.dragState.smoothX=i(this.dragState.smoothX,1),this.computeSequenceProgress(),Math.abs(this.dragState.smoothX-this.dragState.x)<=.5&&!this.dragState.isStarted&&(this.rafIncrement++,this.rafIncrement>=1&&(this.pause(),this.closeCallback()))}onClose(){this.closeModal()}play(){this.isRafPlaying||(this.isRafPlaying=!0,this.rafIncrement=0,e.ticker.add(this.onDragUpdate))}pause(){this.isRafPlaying&&(this.isRafPlaying=!1,e.ticker.remove(this.onDragUpdate))}onActivate(){this.$modal.classList.add(`is-active`),requestAnimationFrame(()=>{this.setAttribute(`aria-hidden`,`false`)})}onPostActivate(){this.isTouchOrSmall||this.scrollToTarget(!1)}onDeactivate(){requestAnimationFrame(()=>{this.$modal.classList.remove(`is-active`),this.$modal.setAttribute(`aria-hidden`,`true`),this.isTouchOrSmall&&this.scrollToTarget(!0)})}onPostDeactivate(){this.reset()}initLoad(){}lazyLoad(){this.load()}load(){if(this.sequenceObj===null)return;let{$sequence:e}=this.sequenceObj;!this.sequenceObj.isLoaded&&!this.sequenceObj.isReady&&e.loadImages({readyCallback:()=>{this.sequenceObj.isReady=!0},loadedCallback:()=>{this.sequenceObj.isLoaded=!0}})}setSequence(){let e=this.querySelector(`c-sequence`),t=e.getAttribute(`data-uid`);this.sequenceObj={uid:t,$sequence:e,isLoaded:!1,isReady:!1},requestAnimationFrame(()=>{this.dragState.max=(e.imagesSequence?.frames||0)*c.PIXES_PER_FRAME})}computeSequenceProgress(){if(this.sequenceObj===null)return;let{$sequence:e}=this.sequenceObj,t=this.dragState.smoothX%this.dragState.max,n;n=Math.sign(t)===-1?t+this.dragState.max:t;
1let r=o(0,1,a(0,this.dragState.max,0,1,n));e.playerTimeline?.progress(r)}active(n=!1,r){n||(this.lazyLoad(),this.sequenceObj?.$sequence?.onResize(t.get()),r?.getAttribute(`data-type`)===`interior`?e.fromTo(this.$imageTransition,{autoAlpha:1},{autoAlpha:0,duration:1}):e.set(this.$imageTransition,{autoAlpha:0})),this.openModal()}openModal(){document.documentElement.classList.add(c.MODAL_ACTIVE_CLASS),this.closeCallback=()=>{},requestAnimationFrame(()=>{this.focusTrap.activate(),this.focus()})}closeModal(){this.focusTrap.deactivate()}reset(){if(this.isTouchOrSmall)document.documentElement.classList.remove(c.MODAL_ACTIVE_CLASS),document.querySelector(`.c-turntable_inner`)?.classList.add(`is-inview`),e.delayedCall(.4,()=>{this.$tabsElement?.setSelectedTab(null,!1,!0)});else{let e=Math.abs(this.dragState.smoothX%this.dragState.max),t=Math.min(e,this.dragState.max-e);Math.abs((this.dragState.smoothX+t)%this.dragState.max)===0?this.dragState.x=this.dragState.smoothX+t:Math.abs((this.dragState.smoothX-t)%this.dragState.max)===0&&(this.dragState.x=this.dragState.smoothX-t),this.isLeaving=!0,this.closeCallback=()=>{document.documentElement.classList.remove(c.MODAL_ACTIVE_CLASS),this.$tabsElement?.setSelectedTab(this.$tabsElement?.$firstTab,!1,!0),document.activeElement?.blur(),this.isLeaving=!1},this.play()}}scrollToTarget(e=!1,t=()=>{}){let n=this.$turntable.getBoundingClientRect();r.value.scrollTo(this.$turntable,{offset:n.height-window.innerHeight,immediate:e,onComplete:t})}};customElements.define(`c-turntable-viewer`,c);

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.