1try{!function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="bf9680a6-41b2-4f7c-9068-4982751334a5",e._sentryDebugIdIdentifier="sentry-dbid-bf9680a6-41b2-4f7c-9068-4982751334a5")}()}catch(e){}"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7220],{7220:function(e,t,o){o.r(t);var n=o(85893),l=o(67294),a=o(74250),i=o(99477),r=o(68968),s=o(82854),d=o(54917),m=o(69365),c=o(84880),u=o(98671),w=o(71911);let f={"/models/factory_010.glb":[{position:[19.1,45.4,40.9],target:[-25.9,-1.8,1.7],fov:10,mobileFov:19},{position:[21.58,55.08,56.61],target:[21.5,1.4,8.7],fov:10,mobileFov:16},{position:[11.5,55,55.7],target:[11.5,-.6,9],fov:11,mobileFov:16},{position:[1.6,41.1,58.6],target:[1.5,-.3,8.7],fov:10,mobileFov:16},{position:[-13.2,41.1,58.6],target:[-13,-.3,8.7],fov:10,mobileFov:16},{position:[9,23.8,31.2],target:[9,-18,-30.3],fov:21,mobileFov:28},{position:[-3.3,18.9,26.2],target:[-3.3,-18,-40.1],fov:10,mobileFov:16},{position:[-10.6,23.8,31.2],target:[-10.6,-18,-40.1],fov:10,mobileFov:17},{position:[-20.5,23.8,31.2],target:[-20.5,-18,-40.1],fov:10,mobileFov:17},{position:[-14.8,.9,-2.1],target:[-72.1,-10.1,-40],fov:10,mobileFov:16},{position:[1.6,25.18,54.51],target:[1.7,1.7,-5.9],fov:31,mobileFov:38,mobileTarget:[1.7,0,-5.9]}],"/models/san-carlos.glb":[{position:[63.88,19.92,82.76],target:[0,0,0],fov:24,mobilePosition:[63.88,26.2,95.1],mobileTarget:[-22.9,0,0],mobileFov:27}]},g={"/models/factory_010.glb":new Set([0,1,11,36,37]),"/models/san-carlos.glb":"all"},p=new Set([0,1,11]),v={"/models/san-carlos.glb":{szLarge:5,wMed:1}},h=[{position:[40,25,40],target:[0,0,0]}],b=new Map;t.default=e=>{let{sources:t,activeModelIndex:o=0,className:y,activeCameraIndex:F=0}=e,x=(0,l.useRef)(null),[M,S]=(0,l.useState)(!1),z=(0,l.useRef)(new Map),P=(0,l.useRef)(new Map),T=(0,l.useRef)(null),E=(0,l.useCallback)((e,t)=>{var o;let n=T.current;if(!n)return;let l=f[e]||h,i=l[t%l.length];if(!i)return;let r=window.innerWidth<768,s=r&&i.mobileFov?i.mobileFov:null!==(o=i.fov)&&void 0!==o?o:n.camera.fov,d=r&&i.mobilePosition?i.mobilePosition:i.position,m=r&&i.mobileTarget?i.mobileTarget:i.target;n.tween={from:n.controls.target.clone(),to:new a.Pa4(...m),camFrom:n.camera.position.clone(),camTo:new a.Pa4(...d),fovFrom:n.camera.fov,fovTo:s,start:performance.now(),dur:800}},[]);return(0,l.useEffect)(()=>{let e=T.current;if(!e)return;let n=t[o];if(!n||n===e.activeSrc)return;let l=z.current.get(e.activeSrc);if(!l)return;let a=t=>{let o=P.current.get(n)||0,a=P.current.get(e.activeSrc)||0;t.position.x=o+350,e.modelTween={entering:t,leaving:l,enterBaseX:o,leaveBaseX:a,start:performance.now(),dur:800},e.activeSrc=n,E(n,F)},i=z.current.get(n);if(i)a(i);else{e.loadModel(n,!1);let t=setInterval(()=>{let e=z.current.get(n);e&&(clearInterval(t),a(e))},50)}},[o,t]),(0,l.useEffect)(()=>{let e=T.current;e&&(e.modelTween||E(e.activeSrc,F))},[F,E]),(0,l.useEffect)(()=>{var e;let n=x.current;if(!n)return;let l=window.innerWidth<768,y=new i.CP7({antialias:!0,alpha:!0});y.setPixelRatio(Math.min(devicePixelRatio,l?1.5:2)),y.setClearColor(0,0),y.toneMapping=a.uL9,y.shadowMap.enabled=!0,y.shadowMap.type=a.dwk,y.domElement.style.display="block",y.domElement.style.width="100%",y.domElement.style.height="100%",y.domElement.style.pointerEvents="none",y.domElement.style.touchAction="auto",n.appendChild(y.domElement);let M=new a.xsS;M.background=new a.Ilk(16777215);let E=new a.Mig(16777215,2);M.add(E);let O=new a.Ox3(16777215,3);O.position.set(2,50,30),O.castShadow=!0;let I=l?1024:2048;O.shadow.mapSize.width=I,O.shadow.mapSize.height=I,O.shadow.radius=6,O.shadow.blurSamples=l?8:16,O.shadow.bias=-.0005,O.shadow.camera.near=.1,O.shadow.camera.far=200,O.shadow.camera.left=-60,O.shadow.camera.right=60,O.shadow.camera.top=60,O.shadow.camera.bottom=-60,M.add(O);let C={lineColor:"#656163",neoColor:"#605c5e",szLarge:14,szSmall:0,wLarge:1,aLarge:20,wMed:0,aMed:14,wSmall:2,aSmall:60,smallOutline:!0},_=[],j=()=>{let e=y.getPixelRatio();return new a.FM8(n.clientWidth*e,n.clientHeight*e)},k=(e,t)=>{let o=new a.Ilk(C.lineColor),n=j(),l=[];e.traverse(e=>{e.isMesh&&"__groundPlane"!==e.name&&l.push(e)});let i=t&&g[t]||p,r=e=>"all"===i||i.has(e),s=l.filter((e,t)=>
1r(t)),d=new a.Wid({color:16777215,roughness:1,metalness:0,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}),m=new a.Wid({color:new a.Ilk(C.neoColor),roughness:.8,metalness:0,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1});for(let e=0;e<l.length;e++){let t=r(e);l[e].material=t?d:m,l[e].castShadow=!t,l[e].receiveShadow=t}let f=new a.ZzF;for(let e of s)f.expandByObject(e);let h=f.getSize(new a.Pa4),b=Math.max(h.x,h.y,h.z)||1;e.traverse(e=>{"__groundPlane"===e.name&&(e.visible=!1)});let y=new a.ZzF,F=new a.Pa4;for(let e of s){var x,M;let l;e.geometry.attributes.normal||e.geometry.computeVertexNormals(),y.setFromObject(e),y.getSize(F);let i=Math.max(F.x,F.y,F.z)/b,r=t?v[t]:void 0,s=(null!==(x=null==r?void 0:r.szLarge)&&void 0!==x?x:C.szLarge)/100,d=C.szSmall/100,m="large"==(l=i>=s?"large":i<d?"small":"medium")?C.wLarge:"medium"===l?null!==(M=null==r?void 0:r.wMed)&&void 0!==M?M:C.wMed:C.wSmall;if(m<=0)continue;let f="small"===l&&C.smallOutline?89:"large"===l?C.aLarge:"medium"===l?C.aMed:C.aSmall,g=new a.TOt(e.geometry,f),p=g.attributes.position;if(!p||0===p.count){g.dispose();continue}let h=new u.z;h.setPositions(p.array);let S=new w.Y({color:o,linewidth:m,worldUnits:!1,resolution:n,dashed:!1,alphaToCoverage:!0});_.push(S);let z=new c.w(h,S);z.computeLineDistances(),e.add(z),g.dispose()}},L=n.clientWidth,R=n.clientHeight,D=f[t[o]||t[0]]||h,N=D[F%D.length],W=L<768&&(null==N?void 0:N.mobileFov)?N.mobileFov:null!==(e=null==N?void 0:N.fov)&&void 0!==e?e:28,A=new a.cPb(W,L/R,.01,1e3);A.position.set(3,2,3);let V=new m.z(A,y.domElement);V.enabled=!0,V.enableRotate=!1,V.enablePan=!1,V.enableZoom=!1;let Z=()=>{};y.setSize(L,R,!1);let B={renderer:y,scene:M,camera:A,controls:V,activeSrc:t[o]||t[0],loadModel:(e,t)=>{},animId:0,tween:null,modelTween:null};T.current=B;let U=new s._().setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.7/"),q=new r.E;q.setDRACOLoader(U),q.setMeshoptDecoder(d.z);let H=(e,t,o)=>{e.traverse(e=>{e.isMesh&&!e.geometry.attributes.normal&&e.geometry.computeVertexNormals()});let n=[];e.traverse(e=>{e.name.startsWith("Truck")&&n.push(e)}),n.forEach(e=>e.removeFromParent()),M.add(e),e.updateMatrixWorld(!0);let l=new a.ZzF().setFromObject(e),i=l.getCenter(new a.Pa4);e.position.sub(i),l.setFromObject(e);let r=l.getSize(new a.Pa4),s=.85*Math.max(r.x,r.y,r.z);if(k(e,t),P.current.set(t,e.position.x),o||(e.position.x+=350),z.current.set(t,e),o){let e=(f[t]||h)[0];A.position.set(...e.position),V.target.set(...e.target),A.near=.001*s,A.far=100*s,A.updateProjectionMatrix(),V.update(),Z()}o&&S(!0)},X=t[o]||t[0],Y=(e,t)=>{let o=b.get(e);o?H(o.clone(!0),e,t):q.load(e,o=>{b.set(e,o.scene.clone(!0)),H(o.scene,e,t)})};Y(X,!0),B.loadModel=Y;let G=e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2,J=!0,K=new IntersectionObserver(e=>{let[t]=e;J=t.isIntersecting},{threshold:0});K.observe(n);let Q=()=>{if(B.animId=requestAnimationFrame(Q),J||B.tween||B.modelTween){if(B.tween){let e=Math.min(1,(performance.now()-B.tween.start)/B.tween.dur),t=G(e);V.target.lerpVectors(B.tween.from,B.tween.to,t),A.position.lerpVectors(B.tween.camFrom,B.tween.camTo,t),A.fov=B.tween.fovFrom+(B.tween.fovTo-B.tween.fovFrom)*t,A.updateProjectionMatrix(),e>=1&&(B.tween=null)}if(B.modelTween){let e=B.modelTween,t=Math.min(1,(performance.now()-e.start)/e.dur),o=G(t);e.entering.position.x=e.enterBaseX+350*(1-o),e.leaving.position.x=e.leaveBaseX-350*o,t>=1&&(B.modelTween=null)}V.update(),y.render(M,A)}};B.animId=requestAnimationFrame(Q);let $=new ResizeObserver(e=>{let[t]=e,{width:o,height:n}=t.contentRect;if(0===o||0===n)return;A.aspect=o/n,A.updateProjectionMatrix(),y.setSize(o,n,!1);let l=y.getPixelRatio(),i=new a.FM8(o*l,n*l);_.forEach(e=>e.resolution.copy(i))});return $.observe(n),()=>{_.forEach(e=>e.dispose()),K.disconnect(),$.disconnect(),cancelAnimationFrame(B.animId),V.dispose(),y.dispose(),n.removeChild(y.domElement),T.current=null}},[t.join(",")]),(0,n.jsxs)("div",{className:y,style:{position:"relative"},children:[!M&&(0,n.jsx)("div",{className:"absolute inset-0 flex items-center justify-center z-10",children:(0,n.jsx)("p",{className:"text-[14px] text-black/[0.32] leading-[130%]",children:"Loading..."})}),(0,n.jsx)("div",{ref:x,style:{width:"100%",height:"100%",overflow:"hidden"}}),(0,n.jsx)("div",{className:"model-viewer-gradient absolute inset-0 pointer-events-none"})]})}}}]);
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.