@pacem/pacem-3d 1.0.0-abel → 1.0.0-amaldi

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-3d v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var Un=Object.defineProperty;var Oo=(n,e)=>{for(var t in e)Un(n,t,{get:e[t],enumerable:!0})};var Sn={};Oo(Sn,{Drawing3D:()=>Bi});var Bi={};Oo(Bi,{AdapterUtils:()=>We,BasicMaterialElement:()=>$o,DragEvent:()=>mt,KnownShader:()=>U,LambertMaterialElement:()=>Ht,LineMaterialElement:()=>yt,MaterialElement:()=>Q,OrbitCameraBehavior:()=>Po,Pacem3DAdapterElement:()=>Je,Pacem3DCameraElement:()=>Ce,Pacem3DDetector:()=>Vo,Pacem3DElement:()=>xe,Pacem3DGroupElement:()=>Ze,Pacem3DLightElement:()=>Ie,Pacem3DMeshElement:()=>ke,Pacem3DObjectElement:()=>Fe,Pacem3DOrthographicCameraElement:()=>Be,Pacem3DPerspectiveCameraElement:()=>qe,Pacem3DPrimitiveElement:()=>ee,Pacem3DThreeAdapterElement:()=>lo,Pacem3DWebgpuAdapterElement:()=>Pt,Pacem3DWgslScriptElement:()=>sr,PacemBoxElement:()=>Ae,PacemConeElement:()=>tt,PacemCylinderElement:()=>rt,PacemDodecahedronElement:()=>Ko,PacemHexahedronElement:()=>qo,PacemIcosahedronElement:()=>Jo,PacemLineElement:()=>Qr,PacemOctahedronElement:()=>Zo,PacemOrbitCameraBehaviorElement:()=>Pe,PacemPlaneElement:()=>Ct,PacemSphereElement:()=>Er,PacemTetrahedronElement:()=>Yo,PacemTorusElement:()=>Rt,PhongMaterialElement:()=>He,PolyhedronElement:()=>je,RenderableElement:()=>be,RenderableEvent:()=>gt,StalePropertyFlag:()=>I,StandardMaterialElement:()=>Qe,UI3DEvent:()=>$t,Ui3DElement:()=>ae,computePlaneNormal:()=>So,computeSharpVertexNormals:()=>ce,isBasicMaterial:()=>Fr,isCamera:()=>pe,isGeometry:()=>cr,isGroup:()=>vt,isInteraction:()=>kr,isLambertMaterial:()=>Xr,isLight:()=>Se,isLineMaterial:()=>Ke,isMaterial:()=>Ne,isMesh:()=>Ee,isMeshGeometry:()=>kt,isOrthographicCamera:()=>Ur,isPerspectiveCamera:()=>zr,isPhongMaterial:()=>Hr,isRenderable:()=>ar,isShaderMaterial:()=>Yi,isStage:()=>Bo,isStandardMaterial:()=>jr,isUi3DObject:()=>Ut});import{Watch as k,PropertyConverters as J,CustomElement as zt,PacemEventTarget as Wn,PropertyChangeEvent as Yn,CustomElementUtils as Wi,CustomUIEvent as Zn,P as _t,Utils as Ge,Components as qn}from"@pacem/pacem-core";import{Geometry as De}from"@pacem/pacem-numerical";import{Utils as kn}from"@pacem/pacem-core";import{parseAsNumericalArray as ki}from"@pacem/pacem-foundation";import{Geometry as Sr}from"@pacem/pacem-numerical";var $e={convert:n=>Sr.LinearAlgebra.Vector3D.parse(n),convertBack:n=>`${n.x||0} ${n.y||0} ${n.z||0}`},Vr={convert:n=>{let e=ki(n),t=()=>{throw new Error(`Cannot parse "${n}" as a valid Vector3D.`)};if(kn.isNullOrEmpty(e)&&t(),e.length===3)return Sr.LinearAlgebra.Vector3D.from(...e);if(e.length===1){let o=e[0];return Sr.LinearAlgebra.Vector3D.from(o,o,o)}t()},convertBack:n=>`${n.x||0} ${n.y||0} ${n.z||0}`},Do={convert:n=>Sr.LinearAlgebra.Quaternion.parse(n),convertBack:n=>`${n.x||0} ${n.y||0} ${n.z||0} ${n.w||0}`},Go={convert:n=>n==="true"?!0:n==="false"?!1:ki(n)[0],convertBack:n=>n.toString()};import{CustomElement as Fn,P as Bt,PCSS as Hi,Defaults as Xn,ViewChild as ji,Watch as St,PropertyConverters as Vt,Utils as ge,Components as Fi,PropertyChangeEventName as Xi,Logging as Hn,Animations as jn,UI as $r}from"@pacem/pacem-core";var ze=Math.PI/180;var Ue=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},xe=class extends Fi.PacemItemsContainerElement{constructor(){super(...arguments),this._itemPropertyChangeHandler=e=>{let t=e.target;this.adapter&&this.adapter.updateItem(this,t),t.flags.splice(0)},this._clickHandler=e=>{let t=this;if(!t.interactive||ge.isNull(t._lastHitResult))return;let o=e.type.replace(/^mouse/,""),r=t._lastHitResult,i=r.object,s=r.point;this._itemDispatch(i,s,o,e)},this._hitTestCallback=(e,t)=>{let o=this;if(e!=o._lastHitResult){if(e?.object!=o._lastHitResult?.object){let r=e?.object,i=o._lastHitResult?.object,s=e?.point;ge.isNull(i)||this._itemDispatch(i,s,"out",t),ge.isNull(r)||this._itemDispatch(r,s,"over",t)}o._lastHitResult=e}},this._moveHandler=e=>{let t=this;if(!t.adapter||!t.interactive)return;let o=t._resizer.currentSize,r=s=>t._hitTestCallback(s,e),i=e.type==="mousemove"?{x:e.pageX-o.left,y:e.pageY-o.top}:{x:-1,y:-1};t.adapter.raycast(this,i,o,r)},this._resizeHandler=e=>{let t=this.#e,o=e.detail;if(!ge.isNull(t)&&t.height===o.height&&t.width===o.width)return;this.#e=o;let r=this.adapter;ge.isNull(r)||(this.adapter.invalidateSize(this,o),this.dispatchEvent(new Fi.ResizeEvent(o)))}}validate(e){return e instanceof be}get stage(){return this._container}get scene(){return this.adapter&&this.adapter.getScene(this)}register(e){let t=super.register(e);return t&&(this._add(e),e.addEventListener(Xi,this._itemPropertyChangeHandler,!1)),t}unregister(e){let t=super.unregister(e);return t&&(e.removeEventListener(Xi,this._itemPropertyChangeHandler,!1),this._erase(e)),t}_refreshDatasource(e=this.datasource){this.adapter?.updateItem(this,void 0)}_buildUpDatasourceFromDOM(e=this.items){ge.isNullOrEmpty(e)||(this.datasource=e.slice())}_add(e){this.adapter&&this.adapter.addItem(this,e)}_erase(e){this.adapter&&this.adapter.removeItem(this,e)}_initializeAdapter(e,t){return new Promise((o,r)=>{let i=this.datasource||[];ge.isNull(e)||i.forEach(s=>e.removeItem(this,s)),!ge.isNull(this._container)&&!ge.isNull(t)?t.initialize(this).then(s=>{(i||[]).forEach(a=>this._add(a)),o()},s=>{this.log(Hn.LogLevel.Error,s?.toString()),r(s)}):o()})}propertyChangedCallback(e,t,o,r){if(super.propertyChangedCallback(e,t,o,r),!r)switch(e){case"adapter":this._initializeAdapter(t,o);break;case"items":this._buildUpDatasourceFromDOM(o);break;case"transparent":this.adapter?.invalidateSize(this,this.size);break;case"datasource":this._refreshDatasource(o);case"disabled":case"background":this.render();break}}viewActivatedCallback(){super.viewActivatedCallback();let e=this._container,t=this._resizer;t.addEventListener("resize",this._resizeHandler,!1),t.target=e,this._initializeAdapter(null,this.adapter).then(o=>{e.addEventListener("mousemove",this._moveHandler,!1),e.addEventListener("click",this._clickHandler,!1),e.addEventListener("mouseup",this._clickHandler,!1),e.addEventListener("mousedown",this._clickHandler,!1),e.addEventListener("mouseout",this._moveHandler,!1),this._buildUpDatasourceFromDOM(),this.render()})}_itemDispatch(e,t,o,r){if(!ge.isNull(e)){var i,s,a;r instanceof Event?s=r:i={item:e,offset:r},typeof o=="string"?a=o:(a=o.type,s=o.originalEvent);let l=t,u=()=>r instanceof Event?new gt(a,e,s,l):new mt(a,{detail:i,cancelable:a===$r.DragDropEventType.Init||a===$r.DragDropEventType.Drag},s,l),p=r instanceof Event?new gt("item"+a,e,s,l):new mt("item"+a,{detail:i,cancelable:a===$r.DragDropEventType.Init||a===$r.DragDropEventType.Drag},s,l);var c=!1;if(e instanceof EventTarget){let f=u();e.dispatchEvent(f),c=f.defaultPrevented}return e.stage.dispatchEvent(p),c||p.defaultPrevented}return!1}disconnectedCallback(){this.#t?.stop();let e=this._resizer,t=this._container;ge.isNull(t)||(t.removeEventListener("click",this._clickHandler,!1),t.removeEventListener("mouseup",this._clickHandler,!1),t.removeEventListener("mousedown",this._clickHandler,!1),t.removeEventListener("mousemove",this._moveHandler,!1),t.removeEventListener("mouseout",this._moveHandler,!1)),ge.isNull(e)||e.removeEventListener("resize",this._resizeHandler,!1),super.disconnectedCallback()}#e;get size(){return this.#e}render(e,t,o=performance.now()){if(ge.isNull(e))this.#t?.stop(),this.#t=jn.Timer.run(r=>this._doRender());else{let r=this.adapter;ge.isNull(r)||r.updateItem(this,e)}}#t;_doRender(){if(!this.disabled&&!ge.isNull(this.adapter)){let e=this.adapter.getScene(this),t=new CustomEvent("prerender",{detail:{scene:e},cancelable:!0});this.dispatchEvent(t),t.defaultPrevented||(this.adapter.render(this),this.dispatchEvent(new CustomEvent("render",{detail:{scene:e}})))}}};Ue([ji(`.${Hi}-3d`)],xe.prototype,"_container",void 0);Ue([ji(Bt+"-resize")],xe.prototype,"_resizer",void 0);Ue([St({emit:!1,converter:Vt.Boolean})],xe.prototype,"interactive",void 0);Ue([St({emit:!1,converter:Vt.Boolean})],xe.prototype,"transparent",void 0);Ue([St({emit:!1,converter:Vt.String})],xe.prototype,"background",void 0);Ue([St({emit:!1,converter:Vt.Element})],xe.prototype,"adapter",void 0);Ue([St({emit:!1,converter:Vt.Json})],xe.prototype,"datasource",void 0);Ue([St({emit:!1,converter:Vt.Boolean})],xe.prototype,"orbit",void 0);xe=Ue([Fn({tagName:Bt+"-"+"3d",shadow:Xn.USE_SHADOW_ROOT,template:`<${Bt}-resize watch-position="true"></${Bt}-resize><div class="${Hi}-3d"></div><${Bt}-content></${Bt}-content>`})],xe);var S=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i};function Bo(n){return!Ge.isNull(n)&&"render"in n&&typeof n.render=="function"}function ar(n){return Bo(n?.stage)}function Ut(n){return"transformMatrix"in n&&ar(n)}function pe(n){return"type"in n&&"up"in n&&"lookAt"in n&&ar(n)}function zr(n){return pe(n)&&"type"in n&&n.type==="perspective"}function Ur(n){return pe(n)&&"type"in n&&n.type==="orthographic"}function Se(n){return"type"in n&&(n.type==="ambient"||n.type==="omni"||n.type==="direction"||n.type=="spot")&&ar(n)}function Ee(n){return"geometry"in n&&Ut(n)}function cr(n){return"positions"in n&&Ge.isArray(n.positions)}function kt(n){return("triangleIndices"in n&&Ge.isArray(n.triangleIndices)||"normals"in n&&Ge.isArray(n.normals)||"textureCoordinates"in n&&Ge.isArray(n.textureCoordinates))&&cr(n)}function vt(n){return"childRenderables"in n&&Ge.isArray(n.childRenderables)&&Ut(n)}function ce(n){let e=[];if(!Ge.isNullOrEmpty(n)){let t=n.triangleIndices;if(t.length%3!==0)throw new RangeError(`Invalid mesh geometry: ${t.length} is not multiple of 3.`);for(let o=2;o<t.length;o+=3){let r=t[o-2],i=t[o-1],s=t[o],a=n.positions[r],c=n.positions[i],l=n.positions[s],u=So(a,c,l);e.push(u,u,u)}}n.normals=e}function So(n,e,t){let o=De.LinearAlgebra.Vector3D.subtract(n,e),r=De.LinearAlgebra.Vector3D.subtract(n,t),i=De.LinearAlgebra.Vector3D.cross(o,r);return De.LinearAlgebra.Vector3D.unit(i)}var $t=class extends Zn{constructor(e,t,o,r){super(e,t,o),this.#e=r}#e;get point(){return this.#e}},mt=class extends $t{},gt=class extends $t{constructor(e,t,o,r){super(e,{detail:t,bubbles:!0,cancelable:!0},o,r)}},I;(function(n){n.Position="position",n.Transform="transform",n.Geometry="geometry",n.Children="children",n.Material="material",n.Light="light",n.Camera="camera",n.Visibility="visibility"})(I||(I={}));function kr(n){return typeof n=="object"&&"time"in n&&typeof n.time=="number"}var Xe={OBJECT_SELECTOR:_t+"-"+"3d"+"-object",LIGHT_SELECTOR:_t+"-"+"3d"+"-light",PERSPECTIVE_CAMERA_SELECTOR:_t+"-"+"3d"+"-perspective-camera",ORTHO_CAMERA_SELECTOR:_t+"-"+"3d"+"-orthographic-camera",LINE_SELECTOR:_t+"-"+"3d"+"-line",MESH_SELECTOR:_t+"-"+"3d"+"-mesh",GROUP_SELECTOR:_t+"-"+"3d"+"-group",DEFAULT_COORDS:{x:0,y:0,z:0}},be=class n extends qn.PacemCrossItemsContainerElement{constructor(){super(...arguments),this.position=Xe.DEFAULT_COORDS,this.#e=[]}validate(e){return!1}findContainer(){return this.parent||this.stage}get stage(){return this._scene=this._scene||Wi.findAncestorOfType(this,xe)}get parent(){return this._drawableParent=this._drawableParent||Wi.findAncestor(this,e=>e instanceof n)}disconnectedCallback(){delete this._scene,delete this._drawableParent,super.disconnectedCallback()}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"hide":this.setAsDirty(I.Visibility);break;case"items":this.setAsDirty(I.Children);break;case"position":this.setAsDirty(I.Position);break}}#e;get flags(){return this.#e}setAsDirty(...e){for(let t of e)this.flags.includes(t)||this.flags.push(t);this.stage?.render(this)}};S([k({emit:!1,converter:$e})],be.prototype,"position",void 0);S([k({emit:!1,reflectBack:!0,converter:J.String})],be.prototype,"tag",void 0);S([k({emit:!1,converter:J.Boolean})],be.prototype,"inert",void 0);var ae=class extends be{propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"transformMatrix":this.setAsDirty(I.Transform);break;case"translateZ":case"translateX":case"translateY":this.offset={x:this.translateX,y:this.translateY,z:this.translateZ};break;case"scaleX":case"scaleY":case"scaleZ":this.scale={x:this.scaleX,y:this.scaleY,z:this.scaleZ};break;case"scale":case"offset":case"rotate":this._computeTransformMatrix();break}}_computeTransformMatrix(){let e=De.LinearAlgebra.Matrix3D,t=De.LinearAlgebra.Vector3D,o=De.LinearAlgebra.Quaternion,r=this.scale??t.from(1,1,1),i=e.scale(e.identity(),r);if(!Ge.isNull(this.rotate)){let a=o.toRotationMatrix(this.rotate);i=e.multiply(i,a)}let s=this.offset??t.from(0,0,0);i=e.translate(i,s),this.transformMatrix=i}};S([k({emit:!1,converter:Do})],ae.prototype,"rotate",void 0);S([k({emit:!1,converter:Vr})],ae.prototype,"scale",void 0);S([k({emit:!1,converter:Vr})],ae.prototype,"offset",void 0);S([k({emit:!1})],ae.prototype,"transformMatrix",void 0);S([k({emit:!1,converter:J.Number})],ae.prototype,"scaleX",void 0);S([k({emit:!1,converter:J.Number})],ae.prototype,"scaleY",void 0);S([k({emit:!1,converter:J.Number})],ae.prototype,"scaleZ",void 0);S([k({emit:!1,converter:J.Number})],ae.prototype,"translateX",void 0);S([k({emit:!1,converter:J.Number})],ae.prototype,"translateY",void 0);S([k({emit:!1,converter:J.Number})],ae.prototype,"translateZ",void 0);var Ze=class extends ae{validate(e){return e instanceof be}#e=[];get childRenderables(){return this.#e}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"items":case"datasource":this.#e=o||[],this.setAsDirty(I.Children);break}}};S([k({emit:!1})],Ze.prototype,"datasource",void 0);Ze=S([zt({tagName:Xe.GROUP_SELECTOR})],Ze);var ke=class extends ae{propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"geometry":this.setAsDirty(I.Geometry);break;case"material":case"backMaterial":this.setAsDirty(I.Material);break}}};S([k({emit:!1,converter:J.Json})],ke.prototype,"geometry",void 0);S([k({emit:!1,converter:J.Json})],ke.prototype,"material",void 0);S([k({emit:!1,converter:J.Json})],ke.prototype,"backMaterial",void 0);ke=S([zt({tagName:Xe.MESH_SELECTOR})],ke);var Fe=class extends ae{propertyChangedCallback(e,t,o,r){super.propertyChangedCallback(e,t,o,r),(e==="content"||e==="type")&&this.setAsDirty(I.Geometry,I.Material)}};S([k({emit:!1})],Fe.prototype,"content",void 0);S([k({emit:!1,converter:J.String})],Fe.prototype,"type",void 0);Fe=S([zt({tagName:Xe.OBJECT_SELECTOR})],Fe);var Ie=class extends be{constructor(){super(...arguments),this.intensity=.85,this.target=Xe.DEFAULT_COORDS,this.color="#fff",this.type="omni"}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"type":case"color":case"intensity":case"target":this.setAsDirty(I.Light);break}}};S([k({emit:!1,converter:J.Number})],Ie.prototype,"intensity",void 0);S([k({emit:!1,converter:$e})],Ie.prototype,"target",void 0);S([k({emit:!1,converter:J.String})],Ie.prototype,"color",void 0);S([k({emit:!1,converter:J.String})],Ie.prototype,"type",void 0);Ie=S([zt({tagName:Xe.LIGHT_SELECTOR})],Ie);var Ce=class extends be{constructor(){super(...arguments),this.near=.1,this.far=1e3,this.up=De.LinearAlgebra.Vector3D.j(),this.lookAt=Xe.DEFAULT_COORDS}#e;_resetBoundingSphere(){let e=this.#e,t=this.position,o=this.lookAt,r=Ge.isNullOrEmpty(t)||Ge.isNullOrEmpty(o)?0:De.LinearAlgebra.Vector3D.mag(De.LinearAlgebra.Vector3D.subtract(t,o)),i=this.#e={center:o,radius:r};this.dispatchEvent(new Yn({currentValue:i,propertyName:"boundingSphere",oldValue:e}))}get boundingSphere(){return this.#e}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"lookAt":case"position":this._resetBoundingSphere();case"near":case"far":case"up":this.setAsDirty(I.Camera);break}}};S([k({emit:!1,converter:J.Number})],Ce.prototype,"near",void 0);S([k({emit:!1,converter:J.Number})],Ce.prototype,"far",void 0);S([k({emit:!1,converter:$e})],Ce.prototype,"up",void 0);S([k({emit:!1,converter:$e})],Ce.prototype,"lookAt",void 0);var qe=class extends Ce{constructor(){super(...arguments),this.fov=45,this.aspect=1}get type(){return"perspective"}get aspectRatio(){return this.aspect}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"fov":case"aspect":this.setAsDirty(I.Camera);break}}};S([k({emit:!1,converter:J.Number})],qe.prototype,"fov",void 0);S([k({emit:!1,converter:J.Number})],qe.prototype,"aspect",void 0);qe=S([zt({tagName:Xe.PERSPECTIVE_CAMERA_SELECTOR})],qe);var Be=class extends Ce{constructor(){super(...arguments),this.top=1,this.left=-1,this.bottom=-1,this.right=1}get type(){return"orthographic"}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"top":case"left":case"bottom":case"right":this.setAsDirty(I.Camera);break}}};S([k({emit:!1,converter:J.Number})],Be.prototype,"top",void 0);S([k({emit:!1,converter:J.Number})],Be.prototype,"left",void 0);S([k({emit:!1,converter:J.Number})],Be.prototype,"bottom",void 0);S([k({emit:!1,converter:J.Number})],Be.prototype,"right",void 0);Be=S([zt({tagName:Xe.ORTHO_CAMERA_SELECTOR})],Be);var Je=class extends Wn{};var Vo=class{constructor(){this._detected={supported:!1,info:{}};let e=document.createElement("canvas"),t=["webgl","experimental-webgl","moz-webgl","webkit-3d"],o,r=function(a){if(a)return o.getParameter(a)},i=(a,c,l)=>{let u=this._detected;var p=u.info[a]=u.info[a]||{};c=c.replace(/[^\w]+/g,""),c=c.substring(0,1).toLowerCase()+c.substring(1),p[c]=l};if(navigator.userAgent.indexOf("MSIE")>=0)try{o=window.WebGLHelper.CreateGLContext(e,"canvas")}catch{}else for(var s=0;s<t.length;s++)try{if(o=e.getContext(t[s]),o){i("main","Context Name",t[s]);break}}catch{}this._detected.supported=!!o,i("main","Platform",navigator.platform),i("main","Agent",navigator.userAgent),o&&(i("main","Vendor",r(o.VENDOR)),i("main","Version",r(o.VERSION)),i("main","Renderer",r(o.RENDERER)),i("main","Shading Language Version",r(o.SHADING_LANGUAGE_VERSION)),i("bits","Rgba Bits",r(o.RED_BITS)+", "+r(o.GREEN_BITS)+", "+r(o.BLUE_BITS)+", "+r(o.ALPHA_BITS)),i("bits","Depth Bits",r(o.DEPTH_BITS)),i("shader","Max Vertex Attribs",r(o.MAX_VERTEX_ATTRIBS)),i("shader","Max Vertex Texture Image Units",r(o.MAX_VERTEX_TEXTURE_IMAGE_UNITS)),i("shader","Max Varying Vectors",r(o.MAX_VARYING_VECTORS)),i("shader","Max Uniform Vectors",r(o.MAX_VERTEX_UNIFORM_VECTORS)),i("tex","Max Combined Texture Image Units",r(o.MAX_COMBINED_TEXTURE_IMAGE_UNITS)),i("tex","Max Texture Size",r(o.MAX_TEXTURE_SIZE)),i("tex","Max Cube Map Texture Size",r(o.MAX_CUBE_MAP_TEXTURE_SIZE)),i("tex","Num. Compressed Texture Formats",r(o.COMPRESSED_TEXTURE_FORMATS)),i("misc","Max Render Buffer Size",r(o.MAX_RENDERBUFFER_SIZE)),i("misc","Max Viewport Dimensions",r(o.MAX_VIEWPORT_DIMS)),i("misc","Aliased Line Width Range",r(o.ALIASED_LINE_WIDTH_RANGE)),i("misc","Aliased Point Size Range",r(o.ALIASED_POINT_SIZE_RANGE)),i("misc","Supported Extensions",o.getSupportedExtensions()||[]))}get info(){return this._detected.info}get supported(){return this._detected.supported}};import{PacemEventTarget as Jn,Utils as lr,Watch as Xt,PropertyConverters as ur,PCSS as Kn}from"@pacem/pacem-core";import{Imaging as Qn}from"@pacem/pacem-foundation";var Ft=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},U;(function(n){n.Basic="basic",n.Lambert="lambert",n.Phong="phong",n.Standard="standard",n.Line="line",n.Custom="custom"})(U||(U={}));function Ne(n){return"shader"in n}function Fr(n){return Ne(n)&&n.shader===U.Basic}function Ke(n){return Ne(n)&&n.shader===U.Line}function Xr(n){return Ne(n)&&n.shader===U.Lambert}function Hr(n){return Ne(n)&&n.shader===U.Phong}function jr(n){return Ne(n)&&n.shader===U.Standard}function Yi(n){return Ne(n)&&n.shader===U.Custom}var Q=class extends Jn{constructor(e){super(),this.#e=e}#e;get shader(){return this.#e}async _loadMap(e,t=this.material?.texture){if(lr.isNull(t)||t.close(),lr.isNullOrEmpty(e))return null;let o=await Qn.loadImage(e);return lr.isNull(o)?null:await createImageBitmap(o)}propertyChangedCallback(e,t,o,r){if(super.propertyChangedCallback(e,t,o,r),!r)switch(e){case"map":case"opacity":case"wireframe":case"color":case"hide":this.updateMaterial();break}}viewActivatedCallback(){super.viewActivatedCallback(),this.updateMaterial()}updateMaterial(){this.createMaterial().then(e=>{this.material=lr.extend(e,{flags:[I.Material]})})}async createMaterial(){return{opacity:this.opacity??1,wireframe:this.wireframe??!1,color:this.color||lr.Css.getVariableValue(`--${Kn}-color-primary`),visible:!(this.hide??!1),map:this.map,texture:await this._loadMap(this.map),shader:this.shader,flags:[]}}};Ft([Xt()],Q.prototype,"material",void 0);Ft([Xt({emit:!1,converter:ur.Number})],Q.prototype,"opacity",void 0);Ft([Xt({emit:!1,converter:ur.Boolean})],Q.prototype,"wireframe",void 0);Ft([Xt({emit:!1,converter:ur.String})],Q.prototype,"color",void 0);Ft([Xt({emit:!1,converter:ur.Boolean})],Q.prototype,"hide",void 0);Ft([Xt({emit:!1,converter:ur.String})],Q.prototype,"map",void 0);import{CustomElement as ts,P as rs}from"@pacem/pacem-core";var es=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},$o=class extends Q{constructor(){super(U.Basic)}};$o=es([ts({tagName:`${rs}-${"3d"}-material-basic`})],$o);import{CustomElement as os,P as is,Watch as zo,PropertyConverters as Uo,Utils as ns}from"@pacem/pacem-core";var Wr=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Ht=class extends Q{constructor(){super(U.Lambert)}async createMaterial(){return ns.extend({emissiveColor:this.emissiveColor||"#000",reflectivity:this.reflectivity??0,refractionRatio:this.refractionRatio??0},await super.createMaterial())}propertyChangedCallback(e,t,o,r){if(super.propertyChangedCallback(e,t,o,r),!r)switch(e){case"emissiveColor":case"reflectivity":case"refractionRatio":this.updateMaterial();break}}};Wr([zo({emit:!1,converter:Uo.String})],Ht.prototype,"emissiveColor",void 0);Wr([zo({emit:!1,converter:Uo.Number})],Ht.prototype,"reflectivity",void 0);Wr([zo({emit:!1,converter:Uo.Number})],Ht.prototype,"refractionRatio",void 0);Ht=Wr([os({tagName:`${is}-${"3d"}-material-lambert`})],Ht);import{CustomElement as ss,P as as,Watch as Yr,PropertyConverters as ko,Utils as cs}from"@pacem/pacem-core";var pr=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},yt=class extends Q{constructor(){super(U.Line)}propertyChangedCallback(e,t,o,r){if(super.propertyChangedCallback(e,t,o,r),!r)switch(e){case"lineWidth":case"lineJoin":case"lineCap":case"dashArray":this.updateMaterial();break}}async createMaterial(){return cs.extend({lineWidth:this.lineWidth??1,lineJoin:this.lineJoin??"round",lineCap:this.lineCap??"round",dashArray:this.dashArray},await super.createMaterial())}};pr([Yr({emit:!1,converter:ko.Number})],yt.prototype,"lineWidth",void 0);pr([Yr({emit:!1,converter:ko.String})],yt.prototype,"lineJoin",void 0);pr([Yr({emit:!1,converter:ko.String})],yt.prototype,"lineCap",void 0);pr([Yr({emit:!1,converter:{convert:n=>n?.split(",").map(e=>parseInt(e)).filter(e=>!Number.isNaN(e)),convertBack:n=>n?.join(",")}})],yt.prototype,"dashArray",void 0);yt=pr([ss({tagName:`${as}-${"3d"}-material-line`})],yt);import{CustomElement as ls,P as us,Watch as jt,PropertyConverters as Wt,Utils as ps}from"@pacem/pacem-core";var xt=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},He=class extends Q{constructor(){super(U.Phong)}async createMaterial(){return ps.extend({emissiveColor:this.emissiveColor||"#000",reflectivity:this.reflectivity??0,refractionRatio:this.refractionRatio??0,specularColor:this.specularColor||"#000",shininess:this.shininess??0,flatShading:this.flatShading??!0},await super.createMaterial())}propertyChangedCallback(e,t,o,r){if(super.propertyChangedCallback(e,t,o,r),!r)switch(e){case"emissiveColor":case"reflectivity":case"refractionRatio":case"specularColor":case"shininess":case"flatShading":this.updateMaterial();break}}};xt([jt({emit:!1,converter:Wt.String})],He.prototype,"emissiveColor",void 0);xt([jt({emit:!1,converter:Wt.Number})],He.prototype,"reflectivity",void 0);xt([jt({emit:!1,converter:Wt.Number})],He.prototype,"refractionRatio",void 0);xt([jt({emit:!1,converter:Wt.String})],He.prototype,"specularColor",void 0);xt([jt({emit:!1,converter:Wt.Number})],He.prototype,"shininess",void 0);xt([jt({emit:!1,converter:Wt.Boolean})],He.prototype,"flatShading",void 0);He=xt([ls({tagName:`${us}-${"3d"}-material-phong`})],He);import{CustomElement as fs,P as hs,Watch as fr,PropertyConverters as hr,Utils as ds}from"@pacem/pacem-core";var Yt=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Qe=class extends Q{constructor(){super(U.Standard)}async createMaterial(){return ds.extend({emissiveColor:this.emissiveColor||"#000",refractionRatio:this.refractionRatio??0,metalness:this.metalness??0,roughness:this.roughness??0,flatShading:this.flatShading??!1},await super.createMaterial())}propertyChangedCallback(e,t,o,r){if(super.propertyChangedCallback(e,t,o,r),!r)switch(e){case"emissiveColor":case"roughness":case"metalness":case"refractionRatio":case"flatShading":this.updateMaterial();break}}};Yt([fr({emit:!1,converter:hr.String})],Qe.prototype,"emissiveColor",void 0);Yt([fr({emit:!1,converter:hr.Number})],Qe.prototype,"refractionRatio",void 0);Yt([fr({emit:!1,converter:hr.Number})],Qe.prototype,"roughness",void 0);Yt([fr({emit:!1,converter:hr.Number})],Qe.prototype,"metalness",void 0);Yt([fr({emit:!1,converter:hr.Boolean})],Qe.prototype,"flatShading",void 0);Qe=Yt([fs({tagName:`${hs}-${"3d"}-material-standard`})],Qe);import{PacemEventTarget as gs,Watch as _s,PropertyConverters as vs,Utils as ys}from"@pacem/pacem-core";var ms=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},ee=class extends gs{viewActivatedCallback(){super.viewActivatedCallback(),ys.isNull(this.geometry)&&(this.geometry=this.createDefaultGeometry())}};ms([_s({converter:vs.Json})],ee.prototype,"geometry",void 0);import{CustomElement as bs,P as Es,Watch as qt,PropertyConverters as Jt}from"@pacem/pacem-core";import{Utils as Zi}from"@pacem/pacem-core";import{Utils as xs}from"@pacem/pacem-core";function bt(n){return(e,t,o)=>{let r=`_${t}_${xs.uniqueCode()}_backingField`;function i(){return this[r]}function s(a){if(a!==this[r]){let c=this[r];this[r]=a,n.call(this,t,c,a)}}Object.defineProperty(e,t,{get:function(){return i.call(this)},set:function(a){s.call(this,a)},enumerable:!0,configurable:!1})}}var dr=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Et=class{constructor(e=[]){this.positions=e}static barycenter(e){var t={x:0,y:0,z:0};if(!Zi.isNullOrEmpty(e)){for(var o=e.length,r=0;r<e.length;r++){var i=e[r];t.x+=i.x,t.y+=i.y,t.z+=i.z}var s=1*o;t.x/=s,t.y/=s,t.z/=s}return t}static boundingBox(e){let t={minX:1/0,minY:1/0,minZ:1/0,maxX:-1/0,maxY:-1/0,maxZ:-1/0};if(!Zi.isNullOrEmpty(e))for(var o=0;o<e.length;o++){var r=e[o];t.minX=Math.min(t.minX,r.x),t.minY=Math.min(t.minY,r.y),t.minZ=Math.min(t.minZ,r.z),t.maxX=Math.max(t.maxX,r.x),t.maxY=Math.max(t.maxY,r.y),t.maxZ=Math.max(t.maxZ,r.z)}return t}setAsDirty(){Zt.call(this)}};function Zt(){let n=this;n.flags=[I.Geometry]}var et=class extends Et{};dr([bt(Zt)],et.prototype,"positions",void 0);var W=class extends Et{#e;#t;#r;get barycenter(){return this.#r??=Et.barycenter(this.positions)}set barycenter(e){this.#r=e}get boundingBox(){return this.#e??=Et.boundingBox(this.positions)}set boundingBox(e){this.#e=e}get boundingSphere(){return this.#t}set boundingSphere(e){this.#t=e}constructor(e,t,o=[],r=[]){super(e),this.triangleIndices=t,this.textureCoordinates=o,this.normals=r}};dr([bt(Zt)],W.prototype,"positions",void 0);dr([bt(Zt)],W.prototype,"triangleIndices",void 0);dr([bt(Zt)],W.prototype,"textureCoordinates",void 0);dr([bt(Zt)],W.prototype,"normals",void 0);var wt=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Zr,Ae=Zr=class extends ee{static createMeshGeometry(e,t,o,r,i,s){let a=e||1,c=t||1,l=o||1,u=r||1,p=i||1,f=s||1,h=[],b=[],C=[];for(var x=0;x<=p;x++)for(var d=c/2-c*(1*x)/(1*p),_=0;_<=f;_++)for(var T=-l/2+l*(1*_)/(1*f),N=0;N<=u;N++){var E=-a/2+a*(1*N)/(1*u);(N==0||N==u||_==0||_==f||x==0||x==p)&&h.push({x:E,y:d,z:T})}for(var v=function(se,ue,re){for(var Y=1e-5,de=0;de<h.length;de++){var me=h[de];if(Math.abs(me.x-se)<Y&&Math.abs(me.y-ue)<Y&&Math.abs(me.z-re)<Y)return de}return-1},A=function(se,ue,re,Y,de,me,Le,Oe){C.push(se),C.push(ue),C.push(re),C.push(se),C.push(re),C.push(Y),b.push({x:de,y:Oe}),b.push({x:Le,y:Oe}),b.push({x:Le,y:me}),b.push({x:de,y:Oe}),b.push({x:Le,y:me}),b.push({x:de,y:me})},_=0;_<f;_++)for(var d=c/2,T=-l/2+l*(1*_)/(1*f),L=-l/2+l*(1*(_+1))/(1*f),N=0;N<u;N++){var E=-a/2+1*N*a/(1*u),P=-a/2+1*(N+1)*a/(1*u),G=v(E,d,L),R=v(P,d,L),m=v(P,d,T),g=v(E,d,T),y=1*(N+1)/(1*u),w=1*N/(1*u),M=1-1*(_+1)/(1*f),O=1-1*_/(1*f);A(G,R,m,g,w,O,y,M)}for(var x=0;x<p;x++)for(var d=c/2-1*x*c/(1*p),D=c/2-(x+1)*c/(1*p),T=-l/2,N=0;N<u;N++){var E=a/2-1*N*a/(1*u),P=a/2-(N+1)*a/(1*u),G=v(E,D,T),R=v(P,D,T),m=v(P,d,T),g=v(E,d,T),y=(N+1)/(1*u),w=1*N/(1*u),M=1-(x+1)/(1*p),O=1-1*x/(1*p);A(G,R,m,g,w,O,y,M)}for(var x=0;x<p;x++)for(var d=c/2-1*x*c/(1*p),D=c/2-(x+1)*c/(1*p),E=-a/2,_=0;_<f;_++){var T=-l/2+_*l/(1*f),L=-l/2+(_+1)*l/(1*f),G=v(E,D,T),R=v(E,D,L),m=v(E,d,L),g=v(E,d,T),y=(_+1)/(1*f),w=1*_/(1*f),M=1-(x+1)/(1*p),O=1-x/(1*p);A(G,R,m,g,w,O,y,M)}for(var x=0;x<p;x++)for(var d=c/2-x*c/(1*p),D=c/2-(x+1)*c/(1*p),T=l/2,N=0;N<u;N++){var E=-a/2+N*a/(1*u),P=-a/2+(N+1)*a/(1*u),G=v(E,D,T),R=v(P,D,T),m=v(P,d,T),g=v(E,d,T),y=(N+1)/(1*u),w=1*N/(1*u),M=1-(x+1)/(1*p),O=1-1*x/(1*p);A(G,R,m,g,w,O,y,M)}for(var x=0;x<p;x++)for(var d=c/2-x*c/(1*p),D=c/2-(x+1)*c/(1*p),E=a/2,_=0;_<f;_++){var T=l/2-_*l/(1*f),L=l/2-(_+1)*l/(1*f),G=v(E,D,T),R=v(E,D,L),m=v(E,d,L),g=v(E,d,T),y=(_+1)/(1*f),w=1*_/(1*f),M=1-(x+1)/(1*p),O=1-1*x/(1*p);A(G,R,m,g,w,O,y,M)}for(var _=0;_<f;_++)for(var d=-c/2,T=l/2-l*_/(1*f),L=l/2-l*(_+1)/(1*f),N=0;N<u;N++){var E=-a/2+N*a/(1*u),P=-a/2+(N+1)*a/(1*u),G=v(E,d,L),R=v(P,d,L),m=v(P,d,T),g=v(E,d,T),y=(N+1)/(1*u),w=1*N/(1*u),M=1-(_+1)/(1*f),O=1-1*_/(1*f);A(G,R,m,g,w,O,y,M)}let X=new W(h,C,b);X.key=`box_${e}x${t}x${o}_w${r}_h${i}_d${s}`,ce(X);let H={x:0,y:0,z:0},K=e/2,ie=t/2,he=o/2;return X.barycenter=H,X.boundingBox={maxX:K,maxY:ie,maxZ:he,minX:-K,minY:-ie,minZ:-he},X.boundingSphere={center:H,radius:Math.sqrt(Math.pow(K,2)+Math.pow(ie,2)+Math.pow(he,2))},X}createDefaultGeometry(){return Zr.createMeshGeometry()}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"width":case"height":case"depth":case"widthSegments":case"heightSegments":case"depthSegments":this.geometry=Zr.createMeshGeometry(this.width,this.height,this.depth,this.widthSegments,this.heightSegments,this.depthSegments);break}}};wt([qt({emit:!1,converter:Jt.Number})],Ae.prototype,"width",void 0);wt([qt({emit:!1,converter:Jt.Number})],Ae.prototype,"height",void 0);wt([qt({emit:!1,converter:Jt.Number})],Ae.prototype,"depth",void 0);wt([qt({emit:!1,converter:Jt.Number})],Ae.prototype,"widthSegments",void 0);wt([qt({emit:!1,converter:Jt.Number})],Ae.prototype,"heightSegments",void 0);wt([qt({emit:!1,converter:Jt.Number})],Ae.prototype,"depthSegments",void 0);Ae=Zr=wt([bs({tagName:Es+"-"+"3d"+"-primitive-box"})],Ae);import{CustomElement as ws,P as Cs,Watch as mr,PropertyConverters as gr}from"@pacem/pacem-core";var Kt=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},qr,tt=qr=class extends ee{static createMeshGeometry(e=1,t=1,o=18,r=5,i=1){let s=e,a=[],c=[],l=[],u=ze*(360/o),p=s/t,f=t/r,h=1/o;a.push({x:0,y:t,z:0});for(let d=1;d<=r;d++){let _=t-f*d,T=_/t,N=(t-_)*p,v=(_+f)/t;for(let A=0;A<o;A++){let L=u*A,P=Math.cos(L)*N,G=-Math.sin(L)*N;a.push({x:P,y:_,z:G});let R=1+o*(d-1)+A,m=A==0?R+o-1:R-1,g=A*h,y=A==0?1-h:h*(A-1);if(d==1){l.push(0,m,R),c.push({x:g,y:1},{x:y,y:T},{x:g,y:T});continue}let w=1+o*(d-2)+A,O=A==0?w+o-1:w-1,D=m,X=R,H=w;l.push(X,O,D),l.push(X,H,O);let K={x:y,y:v},ie={x:y,y:T},he={x:g,y:T},se={x:g,y:v};c.push(he,K,ie),c.push(he,se,K)}}let b=1+(r-1)*o;a.push({x:0,y:0,z:0});let C=b+o;for(let d=1;d<=i;d++){let _=d/i,T=e*_,N=(d-1)/i;for(let E=0;E<o;E++){let v=u*E,A=Math.cos(v),L=Math.sin(v),P=v-u,G=Math.cos(P),R=Math.sin(P),m=.5*(1+A*_),g=.5*(1+L*_),y=.5*(1+G*_),w=.5*(1+R*_),M,O;if(d!=i){let Gt=Math.cos(v)*T,dt=-Math.sin(v)*T;a.push({x:Gt,y:0,z:dt}),M=C+1+(d-1)*o+E,O=E==0?M+o-1:M-1}else M=b+E,O=E==0?b+o-1:M-1;if(d==1){l.push(C,M,O),c.push({x:.5,y:.5},{x:m,y:g},{x:y,y:w});continue}let D=.5*(1+A*N),X=.5*(1+L*N),H=.5*(1+G*N),K=.5*(1+R*N),ie=C+1+(d-2)*o+E,se=E==0?ie+o-1:ie-1,ue=O,re=M,Y=ie;l.push(se,Y,ue),l.push(ue,Y,re);let de={x:H,y:K},me={x:y,y:w},Le={x:m,y:g},Oe={x:D,y:X};c.push(de,Oe,me),c.push(me,Oe,Le)}}let x=new W(a,l,c);return x.key=`cone_${e}x${t}_s${o}_h${r}_c${i}`,ce(x),x}createDefaultGeometry(){return qr.createMeshGeometry()}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"radius":case"height":case"sides":case"heightSegments":case"capSegments":this.geometry=qr.createMeshGeometry(this.radius,this.height,this.sides,this.heightSegments,this.capSegments);break}}};Kt([mr({emit:!1,converter:gr.Number})],tt.prototype,"radius",void 0);Kt([mr({emit:!1,converter:gr.Number})],tt.prototype,"height",void 0);Kt([mr({emit:!1,converter:gr.Number})],tt.prototype,"sides",void 0);Kt([mr({emit:!1,converter:gr.Number})],tt.prototype,"heightSegments",void 0);Kt([mr({emit:!1,converter:gr.Number})],tt.prototype,"capSegments",void 0);tt=qr=Kt([ws({tagName:Cs+"-"+"3d"+"-primitive-cone"})],tt);import{CustomElement as Ns,P as Rs,Watch as _r,PropertyConverters as vr}from"@pacem/pacem-core";var Qt=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Jr,rt=Jr=class extends ee{static createMeshGeometry(e=1,t=1,o=18,r=5,i=1){let s=e,a=[],c=[],l=[],u=ze*(360/o);a.push({x:0,y:t,z:0}),a.push({x:0,y:0,z:0});let p=s/i;for(let v=1;v<=i;v++)for(var f=p*v,h=0;h<o;h++){let A=2+2*o*(v-1),L=h==0?A+2*(o-1):A+2*(h-1),P=A+2*h,G=Math.cos(u*h),R=-Math.sin(u*h),m=Math.cos(u*(h-1)),g=-Math.sin(u*(h-1)),y=f*G,w=f*R,M={x:y,y:t,z:w},O={x:y,y:0,z:w};a.push(M),a.push(O);let D=.5*f/s,X=G*D,H=R*D,K=m*D,ie=g*D;if(v==1){let he=[0,L,P],se=[1,P+1,L+1],ue=[{x:.5,y:.5},{x:.5+K,y:.5-ie},{x:.5+X,y:.5-H}],re=[{x:.5,y:.5},{x:.5+X,y:.5+H},{x:.5+K,y:.5+ie}];l.push(...he),l.push(...se);for(let Y=0;Y<ue.length;Y++)c.push(ue[Y]);for(let Y=0;Y<re.length;Y++)c.push(re[Y])}else{let he=2+2*o*(v-2),se=h==0?he+2*(o-1):he+2*(h-1),ue=he+2*h,re=.5*((v-1)/i),Y=G*re,de=R*re,me=m*re,Le=g*re,Oe={x:.5+K,y:.5-ie},Gt={x:.5+X,y:.5-H},dt={x:.5+Y,y:.5-de},$i={x:.5+me,y:.5-Le},zi={x:.5+K,y:.5+ie},$n={x:.5+X,y:.5+H},Ui={x:.5+Y,y:.5+de},zn={x:.5+me,y:.5+Le};l.push(L),l.push(P),l.push(se),l.push(se),l.push(P),l.push(ue),l.push(ue+1),l.push(P+1),l.push(L+1),l.push(ue+1),l.push(L+1),l.push(se+1),c.push(Oe),c.push(Gt),c.push($i),c.push($i),c.push(Gt),c.push(dt),c.push(Ui),c.push($n),c.push(zi),c.push(Ui),c.push(zi),c.push(zn)}}let b=2+2*o*i,C=2+2*o*(i-1),x=1/o,d=1/r;for(let v=1;v<=r;v++)for(let A=0;A<o;A++){if(v!=r){var _=s*Math.cos(u*A),T=-s*Math.sin(u*A),N=t*v/r;a.push({x:_,y:N,z:T})}let L=A==0?o-1:A-1,P=v==1?C+2*L+1:b+o*(v-2)+L,G=v==1?C+2*A+1:b+o*(v-2)+A,R=v==r?C+2*A:b+o*(v-1)+A,m=v==r?C+2*L:b+o*(v-1)+L,g=L*x,y=(v-1)*d,w=A==0?1:A*x,M=v*d,O={x:g,y},D={x:w,y},X={x:w,y:M},H={x:g,y:M};l.push(P),l.push(G),l.push(R),l.push(P),l.push(R),l.push(m),c.push(O),c.push(D),c.push(X),c.push(O),c.push(X),c.push(H)}let E=new W(a,l,c);return E.key=`cylinder_${e}x${t}_s${o}_h${r}_c${i}`,ce(E),E}createDefaultGeometry(){return Jr.createMeshGeometry()}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"radius":case"height":case"sides":case"heightSegments":case"capSegments":this.geometry=Jr.createMeshGeometry(this.radius,this.height,this.sides,this.heightSegments,this.capSegments);break}}};Qt([_r({emit:!1,converter:vr.Number})],rt.prototype,"radius",void 0);Qt([_r({emit:!1,converter:vr.Number})],rt.prototype,"height",void 0);Qt([_r({emit:!1,converter:vr.Number})],rt.prototype,"sides",void 0);Qt([_r({emit:!1,converter:vr.Number})],rt.prototype,"heightSegments",void 0);Qt([_r({emit:!1,converter:vr.Number})],rt.prototype,"capSegments",void 0);rt=Jr=Qt([Ns({tagName:Rs+"-"+"3d"+"-primitive-cylinder"})],rt);import{CustomElement as Ts,P as Ms,Watch as Is,PropertyConverters as As}from"@pacem/pacem-core";var qi=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Kr,Ps=[{x:0,y:0,z:0},{x:0,y:1,z:0}],Qr=Kr=class extends ee{static createLineGeometry(e){return new et(e||Ps)}createDefaultGeometry(){return Kr.createLineGeometry()}propertyChangedCallback(e,t,o,r){super.propertyChangedCallback(e,t,o,r),e==="positions"&&(this.geometry=Kr.createLineGeometry(o))}};qi([Is({emit:!1,converter:As.Json})],Qr.prototype,"positions",void 0);Qr=Kr=qi([Ts({tagName:Ms+"-"+"3d"+"-primitive-line"})],Qr);import{CustomElement as Ls,P as Os,Watch as to,PropertyConverters as ro}from"@pacem/pacem-core";import{Geometry as Ds}from"@pacem/pacem-numerical";var yr=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},eo,Ct=eo=class extends ee{static createMeshGeometry(e,t,o,r){e||=1,t||=1,o||=4,r||=4;let i=e*.5,s=t*.5,a=[],c=[],l=[],u=[],p=Ds.LinearAlgebra.Vector3D.from(0,0,1);for(let h=0;h<=r;h++)for(let b=0;b<=o;b++){let C=-i+b*e/(1*o),x=0,d=-s+h*t/(1*r);if(a.push({x:C,y:x,z:d}),h<r&&b<o){let _=o+1,T=(b+1)/(1*o),N=1*b/(1*o),E=1-(h+1)/(1*r),v=1-1*h/(1*r);l.push((h+1)*_+b),l.push((h+1)*_+b+1),l.push(h*_+b+1),l.push((h+1)*_+b),l.push(h*_+b+1),l.push(h*_+b),c.push({x:N,y:E}),c.push({x:T,y:E}),c.push({x:T,y:v}),c.push({x:N,y:E}),c.push({x:T,y:v}),c.push({x:N,y:v}),u.push(p,p,p,p,p,p)}}let f=new W(a,l,c,u);return f.key=`plane_${e}x${t}_w${o}_l${r}`,f}createDefaultGeometry(){return eo.createMeshGeometry()}propertyChangedCallback(e,t,o,r){switch(super.propertyChangedCallback(e,t,o,r),e){case"width":case"length":case"widthSegments":case"lengthSegments":this.geometry=eo.createMeshGeometry(this.width,this.length,this.widthSegments,this.lengthSegments);break}}};yr([to({emit:!1,converter:ro.Number})],Ct.prototype,"width",void 0);yr([to({emit:!1,converter:ro.Number})],Ct.prototype,"length",void 0);yr([to({emit:!1,converter:ro.Number})],Ct.prototype,"widthSegments",void 0);yr([to({emit:!1,converter:ro.Number})],Ct.prototype,"lengthSegments",void 0);Ct=eo=yr([Ls({tagName:Os+"-"+"3d"+"-primitive-plane"})],Ct);import{CustomElement as xr,P as br,Watch as Gs,PropertyConverters as Bs}from"@pacem/pacem-core";import{Geometry as Ss}from"@pacem/pacem-numerical";var er=function(n,e,t,o){var r=arguments.length,i=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var a=n.length-1;a>=0;a--)(s=n[a])&&(i=(r<3?s(i):r>3?s(e,t,i):s(e,t))||i);return r>3&&i&&Object.defineProperty(e,t,i),i},Fo,Xo,Ho,jo,Wo,Nt={parseFloats:function(n){let e=/([\d.-]+)/i;var t=e.exec(n);let o=[];for(;t!=null;){let r=t[0],i=parseFloat(r);o.push(i),n=n.replace(r,""),t=e.exec(n)}return o}},Z=Ss.LinearAlgebra.Vector3D,je=class extends ee{propertyChangedCallback(e,t,o,r){super.propertyChangedCallback(e,t,o,r),e==="radius"&&this._assignMeshGeometry(o)}_assignMeshGeometry(e){this.geometry=this.createMeshGeometry(e>0?e:1)}createDefaultGeometry(){return this.createMeshGeometry(1)}};er([Gs({emit:!1,converter:Bs.Number})],je.prototype,"radius",void 0);var Yo=Fo=class extends je{static createMeshGeometry(e){e||=1;let o="0 0.5774 -0.8165, 0 0.5774 0.8165, 0.8165 -0.5774 0, -0.8165 -0.5774 0".split(","),r=[];for(let p=0;p<o.length;p++){let f=o[p],h=Nt.parseFloats(f);r.push({x:h[0]*e,y:h[1]*e,z:h[2]*e})}let i=[1,2,0,2,3,0,3,1,0,3,2,1],a="0.5 0.9995, 0.5 0.0004995, 0.0004995 0.5, 0.9995 0.5, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995".split(","),c=[4,5,6,7,8,9,10,11,0,3,2,1],l=[];for(let p=0;p<c.length;p++){let f=c[p],h=Nt.parseFloats(a[f]);l.push({x:h[0],y:h[1]})}let u=new W(r,i,l);return u.key=`tetrahedron_${e}`,ce(u),u.boundingSphere={center:Z.zero(),radius:e},u}createMeshGeometry(e=this.radius){return Fo.createMeshGeometry(e)}};Yo=Fo=er([xr({tagName:br+"-"+"3d"+"-primitive-tetrahedron"})],Yo);var Zo=Xo=class extends je{static createMeshGeometry(e){e||=1;let t="0 0.7071 -0.7071, 0 0.7071 0.7071, 1 0 0, 0 -0.7071 -0.7071, -1 0 0, 0 -0.7071 0.7071",o=[1,2,0,2,3,0,3,4,0,4,1,0,4,5,1,5,2,1,2,5,3,4,3,5],r="0.5 0.9995, 0.5 0.9995, 0.0004995 0.5, 0.5 0.9995, 0.9995 0.5, 0.5 0.0004995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995, 0.5 0.9995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.9995, 0.0004995 0.5, 0.5 0.0004995, 0.0004995 0.5, 0.5 0.0004995, 0.5 0.9995, 0.5 0.0004995, 0.9995 0.5, 0.5 0.0004995, 0.5 0.9995",i=[6,7,8,9,10,11,12,13,14,15,16,0,17,18,19,20,21,1,2,22,23,4,3,5],s=t.split(","),a=[];for(let p=0;p<s.length;p++){let f=s[p],h=Nt.parseFloats(f);a.push({x:h[0]*e,y:h[1]*e,z:h[2]*e})}let c=r.split(","),l=[];for(let p=0;p<i.length;p++){let f=i[p],h=Nt.parseFloats(c[f]);l.push({x:h[0],y:h[1]})}let u=new W(a,o,l);return u.key=`octahedron_${e}`,ce(u),u.boundingSphere={center:Z.zero(),radius:e},u}createMeshGeometry(e=this.radius){return Xo.createMeshGeometry(e)}};Zo=Xo=er([xr({tagName:br+"-"+"3d"+"-primitive-octahedron"})],Zo);var qo=Ho=class extends je{static createMeshGeometry(e){e||=1;let t=1/Math.sqrt(3),o=2*e*t,r=Ae.createMeshGeometry(o,o,o);return r.key=`hexahedron_${e}`,r}createMeshGeometry(e=this.radius){return Ho.createMeshGeometry(e)}};qo=Ho=er([xr({tagName:br+"-"+"3d"+"-primitive-hexahedron"})],qo);var Jo=jo=class extends je{static createMeshGeometry(e){e||=1;let t="0 0.850651 -0.525731, 0 0.850651 0.525731, 0.850651 0.525731 0, 0.525731 0 -0.850651, -0.525731 0 -0.850651, -0.850651 0.525731 0, -0.525731 0 0.850651, 0.525731 0 0.850651, 0.850651 -0.525731 0, 0 -0.850651 0.525731, 0 -0.850651 -0.525731, -0.850651 -0.525731 0",o=[1,2,0,2,3,0,3,4,0,4,5,0,5,1,0,5,6,1,6,7,1,7,2,1,2,8,3,2,7,8,6,9,7,9,8,7,8,10,3,8,9,10,6,11,9,11,10,9,10,4,3,10,11,4,6,5,11,5,4,11],r="0.5 0.808708, 0.5 0.999501, 0.5 0.808708, 0.191292 0.5, 0.000499547 0.5, 0.5 0.808708, 0.9995 0.5, 0.808708 0.5,0.000499487 0.5, 0.5 0.191292, 0.5 0.000499487, 0.5 0.191292,0.5 0.191292, 0.999501 0.5, 0.5 0.808708, 0.5 0.808708,0.9995 0.5, 0.808708 0.999501, 0.191292 0.5, 0.808708 0.5,0.5 0.999501, 0.808708 0.5, 0.999501 0.808708, 0.5 0.999501,0.000499487 0.5, 0.5 0.191292, 0.5 0.808708, 0.9995 0.5,0.808708 0.999501, 0.191292 0.5, 0.808708 0.5, 0.5 0.999501,0.808708 0.5, 0.999501 0.808708, 0.5 0.808708, 0.5 0.191292,0.9995 0.5, 0.000499547 0.5, 0.5 0.191292, 0.191292 0.5,0.5 0.000499487, 0.808708 0.5, 0.5 0.000499487, 0.999501 0.191292,0.5 0.191292, 0.808708 0.000499487, 0.9995 0.5, 0.5 0.191292,0.5 0.808708, 0.9995 0.5, 0.5 0.191292, 0.808708 0.000499487,0.999501 0.5, 0.5 0.808708, 0.5 0.000499487, 0.808708 0.5,0.999501 0.191292, 0.808708 0.5, 0.5 0.808708, 0.5 0.191292",i=[12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,28,29,30,31,32,33,1,34,35,36,2,37,38,39,40,41,42,43,7,44,45,46,8,47,48,49,50,51,52,53,9,54,55,3,10,56,57,6,58,59,5,4,11],s=t.split(","),a=[];for(let p=0;p<s.length;p++){let f=s[p],h=Nt.parseFloats(f);a.push({x:h[0]*e,y:h[1]*e,z:h[2]*e})}let c=r.split(","),l=[];for(let p=0;p<i.length;p++){let f=i[p],h=Nt.parseFloats(c[f]);l.push({x:h[0],y:h[1]})}let u=new W(a,o,l);return u.key=`icosahedron_${e}`,ce(u),u.boundingSphere={center:Z.zero(),radius:e},u}createMeshGeometry(e=this.radius){return jo.createMeshGeometry(e)}};Jo=jo=er([xr({tagName:br+"-"+"3d"+"-primitive-icosahedron"})],Jo);var Ko=Wo=class extends je{static createMeshGeometry(e){e||=1;let t=Z.from(.356822*e,.934172*e,0*e),o=Z.from(-.356822*e,.934172*e,0*e),r=Z.from(.57735*e,.57735*e,-.57735*e),i=Z.from(0*e,.356822*e,-.934172*e),s=Z.from(-.57735*e,.57735*e,-.57735*e),a=Z.from(-.57735*e,.57735*e,.57735*e),c=Z.from(0*e,.356822*e,.934172*e),l=Z.from(.57735*e,.57735*e,.57735*e),u=Z.from(.934172*e,0*e,-.356822*e),p=Z.from(.934172*e,0*e,.356822*e),f=Z.from(0*e,-.356822*e,.934172*e),h=Z.from(.57735*e,-.57735*e,.57735*e),b=Z.from(.57735*e,-.57735*e,-.57735*e),C=Z.from(.356822*e,-.934172*e,0*e),x=Z.from(-.57735*e,-.57735*e,.57735*e),d=Z.from(-.356822*e,-.934172*e,0*e),_=Z.from(0*e,-.356822*e,-.934172*e),T=Z.from(-.57735*e,-.57735*e,-.57735*e),N=Z.from(-.934172*e,0*e,.356822*e),E=Z.from(-.934172*e,0*e,-.356822*e),v=[t,o,r,i,s,a,c,l,u,p,f,h,b,C,x,d,_,T,N,E],A=[0,2,3,0,3,4,0,4,1,1,5,6,1,6,7,1,7,0,7,9,8,7,8,2,7,2,0,7,6,10,7,10,11,7,11,9,11,13,12,11,12,8,11,8,9,11,10,14,11,14,15,11,15,13,15,17,16,15,16,12,15,12,13,15,14,18,15,18,19,15,19,17,19,4,3,19,3,16,19,16,17,19,18,5,19,5,1,19,1,4,18,14,10,18,10,6,18,6,5,3,2,8,3,8,12,3,12,16],L=`0.5 0.999501, 0.5 0.999501, 0.191292 0.808708, 0.5 0.690792,
2
7
  0.191292 0.808708, 0.191292 0.808708, 0.5 0.690792,
3
8
  0.808708 0.808708, 0.000499517 0.5, 0.309208 0.5, 0.5 0.309208,
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-3d v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var __defProp = Object.defineProperty;
2
7
  var __export = (target, all) => {
3
8
  for (var name in all)