-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchunk-WVZWHAHI.js
62 lines (53 loc) · 16.2 KB
/
chunk-WVZWHAHI.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import{g as E}from"./chunk-6QGFZL3G.js";var p={shareAllNewRenderers:"auto",showRenderStats:!1};function ce(i){for(let[t,e]of Object.entries(i))t in p&&(p[t]=e)}var u=class{#e=0;#t=0;queue(t){return new Promise(async(e,r)=>{try{let n=++this.#e,s=await t;n>this.#t&&(this.#t=n,e(s))}catch(n){r(n)}})}};var z=0,R=class{canReuse(t,e){return t===e||this.canReuseValue(t,e)}canReuseValue(t,e){return!1}debugGetChildren(){return Array.from(this.#e.values())}#e=new Set;addChild(t){this.#e.add(t)}removeChild(t){this.#e.delete(t)}lastSourceGeneration=0;markStale(t){if(t.detail.generation!==z)throw new Error("A TwistyProp was marked stale too late!");if(this.lastSourceGeneration!==t.detail.generation){this.lastSourceGeneration=t.detail.generation;for(let e of this.#e)e.markStale(t);this.#r()}}#t=new Set;addRawListener(t,e){this.#t.add(t),e?.initial&&t()}removeRawListener(t){this.#t.delete(t)}#r(){this.#n||(this.#n=!0,setTimeout(()=>this.#i(),0))}#n=!1;#i(){if(!this.#n)throw new Error("Invalid dispatch state!");for(let t of this.#t)t();this.#n=!1}#s=new Map;addFreshListener(t){let e=new u,r=null,n=async()=>{let s=await e.queue(this.get());r!==null&&this.canReuse(r,s)||(r=s,t(s))};this.#s.set(t,n),this.addRawListener(n,{initial:!0})}removeFreshListener(t){this.removeRawListener(this.#s.get(t)),this.#s.delete(t)}},F=class extends R{#e;constructor(t){super(),this.#e=E(()=>this.getDefaultValue()),t&&(this.#e=this.deriveFromPromiseOrValue(t,this.#e))}set(t){this.#e=this.deriveFromPromiseOrValue(t,this.#e);let e={sourceProp:this,value:this.#e,generation:++z};this.markStale(new CustomEvent("stale",{detail:e}))}async get(){return this.#e}async deriveFromPromiseOrValue(t,e){return this.derive(await t,e)}},M=class extends F{derive(t){return t}},ve=Symbol("no value"),G=class extends R{constructor(e,r){super();this.userVisibleErrorTracker=r;this.#e=e;for(let n of Object.values(e))n.addChild(this)}#e;#t=null;#r=null;async get(){let e=this.lastSourceGeneration;if(this.#r?.generation===e)return this.#r.output;let r={generation:e,output:this.#i(this.#n(),e,this.#t)};return this.#r=r,this.userVisibleErrorTracker?.reset(),r.output}async#n(){let e={};for(let[n,s]of Object.entries(this.#e))e[n]=s.get();let r={};for(let n in this.#e)r[n]=await e[n];return r}async#i(e,r,n=null){let s=await e,a=o=>(this.#t={inputs:s,output:Promise.resolve(o),generation:r},o);if(!n)return a(await this.derive(s));let d=n.inputs;for(let o in this.#e)if(!this.#e[o].canReuse(s[o],d[o]))return a(await this.derive(s));return n.output}},U=class{#e=[];addListener(t,e){let r=!1,n=s=>{r||e(s)};t.addFreshListener(n),this.#e.push(()=>{t.removeFreshListener(n),r=!0})}addMultiListener3(t,e){this.addMultiListener(t,e)}addMultiListener(t,e){let r=!1,n=t.length-1,s=async a=>{if(n>0){n--;return}if(r)return;let d=t.map(S=>S.get()),o=await Promise.all(d);e(o)};for(let a of t)a.addFreshListener(s);this.#e.push(()=>{for(let a of t)a.removeFreshListener(s);r=!0})}disconnect(){for(let t of this.#e)t()}};var H=class{},C;globalThis.HTMLElement?C=HTMLElement:C=H;var V=class{define(){}},f;globalThis.customElements?f=customElements:f=new V;var v=class{constructor(t){this.callback=t}animFrameID=null;animFrame=this.animFrameWrapper.bind(this);requestIsPending(){return!!this.animFrameID}requestAnimFrame(){this.animFrameID||(this.animFrameID=requestAnimationFrame(this.animFrame))}cancelAnimFrame(){this.animFrameID&&(cancelAnimationFrame(this.animFrameID),this.animFrameID=0)}animFrameWrapper(t){this.animFrameID=0,this.callback(t)}};var ee=null;async function te(){return ee??=import("./twisty-dynamic-3d-UHULXLNW.js")}var m=E(async()=>(await te()).T3I);var re=Math.PI*2,c=360/re;var ne=!0,W=500,ie=50,se=.75;function q(i){return(Math.exp(1-i)-(1-i))/(1-Math.E)+1}var _=class{constructor(t,e,r,n){this.startTimestamp=t;this.momentumX=e;this.momentumY=r;this.callback=n;this.scheduler.requestAnimFrame(),this.lastTimestamp=t}scheduler=new v(this.render.bind(this));lastTimestamp;render(t){let e=(this.lastTimestamp-this.startTimestamp)/W,r=Math.min(1,(t-this.startTimestamp)/W);if(e===0&&r>ie/W)return;let n=q(r)-q(e);this.callback(this.momentumX*n*1e3,this.momentumY*n*1e3),r<1&&this.scheduler.requestAnimFrame(),this.lastTimestamp=t}};async function Ee(i){let t=new(await m).Spherical;return t.setFromVector3(i),{latitude:90-t.phi*c,longitude:t.theta*c,distance:t.radius}}var D=class{constructor(t,e,r,n){this.model=t;this.mirror=e;this.canvas=r;this.dragTracker=n;this.dragTracker.addEventListener("move",this.onMove.bind(this)),this.dragTracker.addEventListener("up",this.onUp.bind(this))}experimentalInertia=ne;onMovementBound=this.onMovement.bind(this);experimentalHasBeenMoved=!1;temperMovement(t){return Math.sign(t)*Math.log(Math.abs(t*10)+1)/6}onMove(t){t.detail.attachedInfo??={};let{temperedX:e,temperedY:r}=this.onMovement(t.detail.movementX,t.detail.movementY),n=t.detail.attachedInfo;n.lastTemperedX=e*10,n.lastTemperedY=r*10,n.timestamp=t.timeStamp}onMovement(t,e){let r=this.mirror?-1:1,n=Math.min(this.canvas.offsetWidth,this.canvas.offsetHeight),s=this.temperMovement(t/n),a=this.temperMovement(e/n*se);return this.model.twistySceneModel.orbitCoordinatesRequest.set((async()=>{let d=await this.model.twistySceneModel.orbitCoordinates.get();return{latitude:d.latitude+2*a*c*r,longitude:d.longitude-2*s*c}})()),{temperedX:s,temperedY:a}}onUp(t){t.preventDefault(),"lastTemperedX"in t.detail.attachedInfo&&"lastTemperedY"in t.detail.attachedInfo&&"timestamp"in t.detail.attachedInfo&&t.timeStamp-t.detail.attachedInfo.timestamp<60&&new _(t.timeStamp,t.detail.attachedInfo.lastTemperedX,t.detail.attachedInfo.lastTemperedY,this.onMovementBound)}};var Ce={floating:!0,none:!0},B=class extends M{getDefaultValue(){return"auto"}};var O=class{constructor(t){this.sourceText=t}getAsString(){return this.sourceText}},w=class extends C{shadow;contentWrapper;#e=new Map;constructor(t){super(),this.shadow=this.attachShadow({mode:t?.mode??"closed"}),this.contentWrapper=document.createElement("div"),this.contentWrapper.classList.add("wrapper"),this.shadow.appendChild(this.contentWrapper)}addCSS(t){let e=this.#e.get(t);if(e)return e;let r=document.createElement("style");return r.textContent=t.getAsString(),this.#e.set(t,r),this.shadow.appendChild(r),r}removeCSS(t){let e=this.#e.get(t);e&&(this.shadow.removeChild(e),this.#e.delete(t))}addElement(t){return this.contentWrapper.appendChild(t)}prependElement(t){this.contentWrapper.prepend(t)}removeElement(t){return this.contentWrapper.removeChild(t)}};f.define("twisty-managed-custom-element",w);var g=globalThis.performance,L=class{mode=0;dom=document.createElement("div");constructor(){this.dom.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",this.dom.addEventListener("click",t=>{t.preventDefault(),this.showPanel(++this.mode%this.dom.children.length)},!1),this.showPanel(0)}addPanel(t){return this.dom.appendChild(t.dom),t}showPanel(t){for(let e=0;e<this.dom.children.length;e++)this.dom.children[e].style.display=e===t?"block":"none";this.mode=t}beginTime=(g||Date).now();prevTime=this.beginTime;frames=0;fpsPanel=this.addPanel(new P("FPS","#0ff","#002"));msPanel=this.addPanel(new P("MS","#0f0","#020"));memPanel=g?.memory?this.addPanel(new P("MB","#f08","#201")):null;REVISION=16;begin(){this.beginTime=(g||Date).now()}end(){this.frames++;let t=(g||Date).now();if(this.msPanel.update(t-this.beginTime,200),t>=this.prevTime+1e3&&(this.fpsPanel.update(this.frames*1e3/(t-this.prevTime),100),this.prevTime=t,this.frames=0,this.memPanel)){let e=g.memory;this.memPanel.update(e.usedJSHeapSize/1048576,e.jsHeapSizeLimit/1048576)}return t}update(){this.beginTime=this.end()}},l=Math.round(globalThis?.window?.devicePixelRatio??1),X=80*l,K=48*l,$=3*l,j=2*l,y=3*l,h=15*l,T=74*l,b=30*l,P=class{constructor(t,e,r){this.name=t;this.fg=e;this.bg=r;this.dom.width=X,this.dom.height=K,this.dom.style.cssText="width:80px;height:48px",this.context.font=`bold ${9*l}px Helvetica,Arial,sans-serif`,this.context.textBaseline="top",this.context.fillStyle=r,this.context.fillRect(0,0,X,K),this.context.fillStyle=e,this.context.fillText(t,$,j),this.context.fillRect(y,h,T,b),this.context.fillStyle=r,this.context.globalAlpha=.9,this.context.fillRect(y,h,T,b)}min=1/0;max=0;dom=document.createElement("canvas");context=this.dom.getContext("2d");update(t,e){this.min=Math.min(this.min,t),this.max=Math.max(this.max,t),this.context.fillStyle=this.bg,this.context.globalAlpha=1,this.context.fillRect(0,0,X,h),this.context.fillStyle=this.fg,this.context.fillText(`${Math.round(t)} ${this.name} (${Math.round(this.min)}-${Math.round(this.max)})`,$,j),this.context.drawImage(this.dom,y+l,h,T-l,b,y,h,T-l,b),this.context.fillRect(y+T-l,h,l,b),this.context.fillStyle=this.bg,this.context.globalAlpha=.9,this.context.fillRect(y+T-l,h,l,Math.round((1-t/e)*b))}};var ae=null;function I(){return ae??(devicePixelRatio||1)}var J=new O(`
:host {
width: 384px;
height: 256px;
display: grid;
}
.wrapper {
width: 100%;
height: 100%;
display: grid;
overflow: hidden;
place-content: center;
contain: strict;
}
.loading {
width: 4em;
height: 4em;
border-radius: 2.5em;
border: 0.5em solid rgba(0, 0, 0, 0);
border-top: 0.5em solid rgba(0, 0, 0, 0.7);
border-right: 0.5em solid rgba(0, 0, 0, 0.7);
animation: fade-in-delayed 4s, rotate 1s linear infinite;
}
@keyframes fade-in-delayed {
0% { opacity: 0; }
25% {opacity: 0; }
100% { opacity: 1; }
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
/* TODO: This is due to stats hack. Replace with \`canvas\`. */
.wrapper > canvas {
max-width: 100%;
max-height: 100%;
animation: fade-in 0.25s ease-in;
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
.wrapper.invisible {
opacity: 0;
}
.wrapper.drag-input-enabled > canvas {
cursor: grab;
}
.wrapper.drag-input-enabled > canvas:active {
cursor: grabbing;
}
`);var k=class extends EventTarget{constructor(e){super();this.target=e}#e=new Map;start(){this.addTargetListener("pointerdown",this.onPointerDown.bind(this)),this.addTargetListener("contextmenu",e=>{e.preventDefault()}),this.addTargetListener("touchmove",e=>e.preventDefault()),this.addTargetListener("dblclick",e=>e.preventDefault())}stop(){for(let[e,r]of this.#t.entries())this.target.removeEventListener(e,r);this.#t.clear(),this.#r=!1}#t=new Map;addTargetListener(e,r){this.#t.has(e)||(this.target.addEventListener(e,r),this.#t.set(e,r))}#r=!1;#n(){this.#r||(this.addTargetListener("pointermove",this.onPointerMove.bind(this)),this.addTargetListener("pointerup",this.onPointerUp.bind(this)),this.#r=!0)}#i(e){this.#e.delete(e.pointerId)}#s(e){let r=this.#e.get(e.pointerId);if(!r)return{movementInfo:null,hasMoved:!1};let n;return(e.movementX??0)!==0||(e.movementY??0)!==0?n={attachedInfo:r.attachedInfo,movementX:e.movementX,movementY:e.movementY,elapsedMs:e.timeStamp-r.lastTimeStamp}:n={attachedInfo:r.attachedInfo,movementX:e.clientX-r.lastClientX,movementY:e.clientY-r.lastClientY,elapsedMs:e.timeStamp-r.lastTimeStamp},r.lastClientX=e.clientX,r.lastClientY=e.clientY,r.lastTimeStamp=e.timeStamp,Math.abs(n.movementX)<.1&&Math.abs(n.movementY)<.1?{movementInfo:null,hasMoved:r.hasMoved}:(r.hasMoved=!0,{movementInfo:n,hasMoved:r.hasMoved})}onPointerDown(e){this.#n();let r={attachedInfo:{},hasMoved:!1,lastClientX:e.clientX,lastClientY:e.clientY,lastTimeStamp:e.timeStamp};this.#e.set(e.pointerId,r),this.target.setPointerCapture(e.pointerId)}onPointerMove(e){let r=this.#s(e).movementInfo;r&&(e.preventDefault(),this.dispatchEvent(new CustomEvent("move",{detail:r})))}onPointerUp(e){let r=this.#s(e),n=this.#e.get(e.pointerId);this.#i(e),this.target.releasePointerCapture(e.pointerId);let s;if(r.hasMoved)s=new CustomEvent("up",{detail:{attachedInfo:n.attachedInfo}});else{let{altKey:a,ctrlKey:d,metaKey:o,shiftKey:S}=e;s=new CustomEvent("press",{detail:{normalizedX:e.offsetX/this.target.offsetWidth*2-1,normalizedY:1-e.offsetY/this.target.offsetHeight*2,rightClick:!!(e.button&2),keys:{altKey:a,ctrlOrMetaKey:d||o,shiftKey:S}}})}this.dispatchEvent(s)}};var x=[];async function oe(i,t,e,r){x.length===0&&x.push(A());let n=await x[0];return n.setSize(i,t),n.render(e,r),n.domElement}async function Q(i,t,e,r,n){if(i===0||t===0)return;x.length===0&&x.push(A());let s=await oe(i,t,r,n),a=e.getContext("2d");a.clearRect(0,0,e.width,e.height),a.drawImage(s,0,0)}async function A(){let i=(await m).WebGLRenderer,t=new i({antialias:!0,alpha:!0});return t.setPixelRatio(I()),t}async function le(i,t,e=!1){let r=new(await m).Spherical(t.distance,(90-(e?-1:1)*t.latitude)/c,((e?180:0)+t.longitude)/c);r.makeSafe(),i.position.setFromSpherical(r),i.lookAt(0,0,0)}var N=0,de=2,Z=!1;function me(){return p.shareAllNewRenderers!=="auto"?(p.shareAllNewRenderers||N++,p.shareAllNewRenderers!=="never"):N<de?(N++,!1):(Z=!0,!0)}function et(){return Z}var Y=class extends w{constructor(e,r,n){super();this.model=e;this.options=n;this.scene=r??null,this.loadingElement=this.addElement(document.createElement("div")),this.loadingElement.classList.add("loading"),p.showRenderStats&&(this.stats=new L,this.stats.dom.style.position="absolute",this.contentWrapper.appendChild(this.stats.dom))}scene=null;stats=null;rendererIsShared=me();loadingElement=null;async connectedCallback(){this.addCSS(J),this.addElement((await this.canvasInfo()).canvas),this.#i(),new ResizeObserver(this.#i.bind(this)).observe(this.contentWrapper),this.orbitControls(),this.#e(),this.scheduleRender()}async#e(){(await this.#l()).addEventListener("press",async r=>{await this.model.twistySceneModel.movePressInput.get()==="basic"&&this.dispatchEvent(new CustomEvent("press",{detail:{pressInfo:r.detail,cameraPromise:this.camera()}}))})}#t=new u;async clearCanvas(){if(this.rendererIsShared){let e=await this.canvasInfo();e.context.clearRect(0,0,e.canvas.width,e.canvas.height)}else{let r=(await this.renderer()).getContext();r.clear(r.COLOR_BUFFER_BIT)}}#r=0;#n=0;async#i(){let e=await this.#t.queue(this.camera()),r=this.contentWrapper.clientWidth,n=this.contentWrapper.clientHeight;this.#r=r,this.#n=n;let s=0,a=0,d=0;if(n>r&&(d=n-r,a=-Math.floor(.5*d)),e.aspect=r/n,e.setViewOffset(r,n-d,s,a,r,n),e.updateProjectionMatrix(),this.clearCanvas(),this.rendererIsShared){let o=await this.canvasInfo();o.canvas.width=r*I(),o.canvas.height=n*I(),o.canvas.style.width=`${r.toString()}px`,o.canvas.style.height=`${n.toString()}px`}else(await this.renderer()).setSize(r,n,!0);this.scheduleRender()}#s=null;async renderer(){if(this.rendererIsShared)throw new Error("renderer expected to be shared.");return this.#s??=A()}#d=null;async canvasInfo(){return this.#d??=(async()=>{let e;if(this.rendererIsShared)e=this.addElement(document.createElement("canvas"));else{let n=await this.renderer();e=this.addElement(n.domElement)}this.loadingElement?.remove();let r=e.getContext("2d");return{canvas:e,context:r}})()}#m=null;async#l(){return this.#m??=(async()=>{let e=new k((await this.canvasInfo()).canvas);return this.model?.twistySceneModel.dragInput.addFreshListener(r=>{let n=!1;switch(r){case"auto":{e.start(),n=!0;break}case"none":{e.stop();break}}this.contentWrapper.classList.toggle("drag-input-enabled",n)}),e})()}#c=null;async camera(){return this.#c??=(async()=>{let e=new(await m).PerspectiveCamera(20,1,.1,20);return e.position.copy(new(await m).Vector3(2,4,4).multiplyScalar(this.options?.backView?-1:1)),e.lookAt(0,0,0),e})()}#p=null;async orbitControls(){return this.#p??=(async()=>{let e=new D(this.model,!!this.options?.backView,(await this.canvasInfo()).canvas,await this.#l());return this.model&&this.addListener(this.model.twistySceneModel.orbitCoordinates,async r=>{let n=await this.camera();le(n,r,this.options?.backView),this.scheduleRender()}),e})()}addListener(e,r){e.addFreshListener(r),this.#a.push(()=>{e.removeFreshListener(r)})}#a=[];disconnect(){for(let e of this.#a)e();this.#a=[]}#o=null;experimentalNextRenderFinishedCallback(e){this.#o=e}async render(){if(!this.scene)throw new Error("Attempted to render without a scene");this.stats?.begin();let[e,r,n]=await Promise.all([this.scene.scene(),this.camera(),this.canvasInfo()]);this.rendererIsShared?Q(this.#r,this.#n,n.canvas,e,r):(await this.renderer()).render(e,r),this.stats?.end(),this.#o?.(),this.#o=null}#h=new v(this.render.bind(this));scheduleRender(){this.#h.requestAnimFrame()}};f.define("twisty-3d-vantage",Y);export{ce as a,v as b,u as c,F as d,M as e,ve as f,G as g,U as h,Ce as i,B as j,re as k,c as l,C as m,f as n,O as o,w as p,oe as q,Ee as r,le as s,et as t,Y as u,te as v,m as w};
//# sourceMappingURL=chunk-WVZWHAHI.js.map