@epigraph/solutions 1.1.8-alpha → 1.1.9

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.
@@ -12992,7 +12992,7 @@ void main() {
12992
12992
  center = quatVec(quat, center) + translate;
12993
12993
  quaternion = quatQuat(quat, quaternion);
12994
12994
  }
12995
- `);new Tn(new Q(-1,-1,-1),new Q(1,1,1)),new Q(-1,-3,1).normalize(),new we(1,1,1),new we(.5,.5,1),new Q(1,1,1);new Tn(new Q(-2,-1,-2),new Q(2,5,2)),new Q(0,-1,0),new we(1,1,1),new we(.25,.25,.5),new Q(.1,1,.1);const N2=class nb{static createButton(e,t={}){const n=navigator.xr;if(!n)return null;const s=n,r=document.createElement("button");e.xr.enabled=!0,e.xr.setReferenceSpaceType("local");function a(){let h=null;async function A(g){console.log("onSessionStarted"),g.addEventListener("end",d),await e.xr.setSession(g),r.textContent="EXIT VR",h=g}function d(){console.log("onSessionEnded"),h?.removeEventListener("end",d),r.textContent="ENTER VR",h=null}r.style.display="",r.style.cursor="pointer",r.style.left="calc(50% - 100px)",r.style.width="200px",r.style.height="100px",r.textContent="ENTER VR";const p={...t,optionalFeatures:[...t.optionalFeatures||[]]};r.onmouseenter=()=>{r.style.opacity="1.0"},r.onmouseleave=()=>{r.style.opacity="0.5"},r.onclick=()=>{h===null?(console.log("requesting session"),s.requestSession("immersive-vr",p).then(A)):(console.log("ending session"),h.end())}}function o(){r.style.display="none",r.style.cursor="auto",r.style.left="calc(50% - 75px)",r.style.width="150px",r.onmouseenter=null,r.onmouseleave=null,r.onclick=null}function l(){o(),r.textContent="VR NOT SUPPORTED"}function c(h){o(),console.warn("Exception when trying to call xr.isSessionSupported",h),r.textContent="VR NOT ALLOWED"}function u(h){h.style.position="absolute",h.style.bottom="20px",h.style.padding="12px 6px",h.style.border="1px solid #fff",h.style.borderRadius="4px",h.style.background="rgba(0,0,0,0.1)",h.style.color="#fff",h.style.font="normal 13px sans-serif",h.style.textAlign="center",h.style.opacity="0.5",h.style.outline="none",h.style.zIndex="999"}return r.id="VRButton",r.style.display="none",u(r),s.isSessionSupported("immersive-vr").then(h=>{h?a():l(),h&&nb.xrSessionIsGranted&&r.click()}).catch(c),r}static registerSessionGrantedListener(){const e=navigator.xr;if(!e)return null;const t=e;/WebXRViewer\//i.test(navigator.userAgent)||t.addEventListener("sessiongranted",()=>{nb.xrSessionIsGranted=!0})}};N2.xrSessionIsGranted=!1;let X8=N2;X8.registerSessionGrantedListener();var P2=(i=>(i.w="wrist",i.t0="thumb-metacarpal",i.t1="thumb-phalanx-proximal",i.t2="thumb-phalanx-distal",i.t3="thumb-tip",i.i0="index-finger-metacarpal",i.i1="index-finger-phalanx-proximal",i.i2="index-finger-phalanx-intermediate",i.i3="index-finger-phalanx-distal",i.i4="index-finger-tip",i.m0="middle-finger-metacarpal",i.m1="middle-finger-phalanx-proximal",i.m2="middle-finger-phalanx-intermediate",i.m3="middle-finger-phalanx-distal",i.m4="middle-finger-tip",i.r0="ring-finger-metacarpal",i.r1="ring-finger-phalanx-proximal",i.r2="ring-finger-phalanx-intermediate",i.r3="ring-finger-phalanx-distal",i.r4="ring-finger-tip",i.p0="pinky-finger-metacarpal",i.p1="pinky-finger-phalanx-proximal",i.p2="pinky-finger-phalanx-intermediate",i.p3="pinky-finger-phalanx-distal",i.p4="pinky-finger-tip",i))(P2||{});const J8=Object.keys(P2);J8.length;new Q(0,0,-1),new Q(0,0,1),new Q(-1,0,0),new Q(1,0,0),new Q(0,1,0),new Q(0,-1,0);new Q(0,0,-1),new Q(0,0,1),new Q(-1,0,0),new Q(1,0,0),new Q(0,1,0),new Q(0,-1,0);new Q(0,0,1),new Q(0,0,-1);new Q(0,-1,0),new Q(0,1,0),new Q(-1,0,0),new Q(1,0,0);class vt{static isTouchDevice(){try{return document.createEvent("TouchEvent"),!0}catch{return!1}}static async wait(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}static generateStylesDomElem(e,t=""){const n=document.createElement("style");return n.setAttribute("id",e),n.innerHTML=t,n}static generateHtmlDivElem(e,t=""){const n=document.createElement("div");return n.setAttribute("id",e),n.innerHTML=t,n}static getRandomIntegerInRange(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}static getUrlParameterByName(e,t=window.location.search){const n=new URLSearchParams(t);return Object.fromEntries(n.entries())[e]}static getBaseUrl(){const e=vt.getUrlParameterByName("parentUrl");return e||window.location.href}static normalizeRadian(e){return Math.atan2(Math.sin(e),Math.cos(e))}static isBetweenOnCircle(e,t,n){return e=vt.normalizeRadian(e),t=vt.normalizeRadian(t),n=vt.normalizeRadian(n),t<=n?e>=t&&e<=n:e>=t||e<=n}static getPointInBetweenByPercentage(e,t,n){let s=t.clone().sub(e);const r=s.length();return s=s.normalize().multiplyScalar(r*n),e.clone().add(s)}static clampAzimuth(e,t,n){if(Math.abs(t)==1/0||n==1/0)return e;const s=vt.normalizeRadian(e),r=vt.normalizeRadian(t),a=vt.normalizeRadian(n);if(vt.isBetweenOnCircle(s,r,a))return s;const o=Math.abs(vt.normalizeRadian(s-r)),l=Math.abs(vt.normalizeRadian(s-a));return o<l?r:a}static resolveNexusEndpoint(e){let t=If.PRODUCTION;return e=="local"?t=If.LOCAL:e==="staging"&&(t=If.STAGING),t}static parseUrlForEpigraphParams(e){const t=new Map,n=new kE(e);t.set(ti.epigraphSessionId,n.getParameterInUrl(ti.epigraphSessionId)),t.set(ti.identifier,n.getParameterInUrl(ti.identifier)),t.set(ti.identifierType,n.getParameterInUrl(ti.identifierType)),t.set(ti.type,n.getParameterInUrl(ti.type));const s=n.getParameterInUrl(ti.action);return s&&t.set(Rd.AR,JSON.parse(s)[Rd.AR]),t}static generateShareableUrl({baseUrl:e,identifier:t,identifierType:n,sharedConfig:s,arCompatible:r=!1}){const a=new Map;return a.set(ti.epigraphSessionId,window.epigraph.epigraphSessionId),a.set(ti.identifier,t),a.set(ti.identifierType,n),s&&a.set(ti.sharedConfig,s),r&&a.set(ti.action,`{"${Rd.AR}":true}`),new kE(e).generateQrCodeUrl(Object.fromEntries(a.entries()),!1)}static{this.__textureProperties=["map","normalMap","roughnessMap","metalnessMap","aoMap","emissiveMap","alphaMap","lightMap","bumpMap","displacementMap","envMap"]}static disposeMaterialTextures(e){for(const t of vt.__textureProperties){const n=e[t];n instanceof cn&&n.dispose()}}static _dispose3(e){if(e instanceof Ke&&e.geometry.dispose(),e instanceof Ke){const t=Array.isArray(e.material)?e.material:[e.material];for(const n of t)vt.disposeMaterialTextures(n),n.dispose()}}static dispose3(e){e.traverse(t=>{(t instanceof Ke||t instanceof Hh)&&vt._dispose3(t)}),(e instanceof Ke||e instanceof Hh||e instanceof gs)&&vt._dispose3(e)}static animateValue(e,t,n,s){const r=performance.now();function a(o){const l=o-r,c=Math.min(l/n,1),u=e+(t-e)*c;s(u),c<1&&requestAnimationFrame(a)}requestAnimationFrame(a)}static getCustomStylesTemplate(){const t=document.querySelector("#epigraphCustomStyles")?.content?.cloneNode(!0);return t||be}}class jd{constructor(e){this._success=e}get success(){return this._success}set success(e){this._success=e}get failed(){return!this._success}}class K8 extends jd{constructor(e=!1,t=void 0){super(e),this.__payload=t}get payload(){return this.__payload}set payload(e){this.__payload=e}}var F2=(i=>(i.Empty="entity-empty",i.Gltf="entity-mesh",i.Render="entity-render",i.Proxy="entity-proxy",i.Collider="entity-collider",i.Asset="entity-asset",i))(F2||{});class Z8 extends Dn{constructor(){super(),this._entityType=F2.Empty}get entityType(){return this._entityType}destroy(){let e;const t=new K8(!1,e);return e=void 0,t.success=!0,t.payload=e,t}}var Qa=(i=>(i.GEO="geo",i.SPLAT="splat",i))(Qa||{});class Up{constructor(e){this.__name=e}getName(){return this.__name}}var Zs=(i=>(i.declared="declared",i.Loading="loading",i.Loaded="loaded",i.Unloaded="unloaded",i.Failed="failed",i))(Zs||{}),xo=(i=>(i.None="epg-resource-none",i.Gltf="epg-resource-gltf",i.Proxy="epg-resource-gltf-proxy",i.Render="epg-resource-gltf-render",i.Splat="epg-resource-splat",i))(xo||{});class k2{constructor({id:e,uri:t,appWcRef:n}){this._loggerContext="EPG RESOURCE",this._type="epg-resource-none",this._id=crypto.randomUUID(),this._loadingProgress=0,this._state="declared",this._resource=null,e&&(this._id=e),this._appWcRef=n,this._uri=t}get id(){return this._id}get uri(){return this._uri}get loadingProgress(){return this._loadingProgress}get state(){return this._state}get isLoaded(){return this._state==="loaded"}get type(){return this._type}get resource(){return this._resource}highlight(){}updateLoadingProgress(e){this._loadingProgress=e,this._appWcRef.eventsManager.assetLoadProgress.fire({progress:e})}async load(){return window.epigraph.logger.info({title:"Loading EPG Resource. Override to define how a resource should be loaded.",contextOverride:this._loggerContext}),Promise.resolve(!0)}unload(){return this._resource={},Promise.resolve(!0)}}class Mo extends Dt{constructor(e){super(),this.epgType="PLUG",this.__connectionId="",this.__isPrimary=!1,this.__receiver=null,this.__debugGeo=null,this.__config=e,this.name=e.name,this.__connectionId=e.connectionId,this.__isPrimary=e.isPrimary;const t=e.position;this.position.set(t.x,t.y,t.z);const n=e.rotation;this.rotation.set(n.x,n.y,n.z)}get config(){return this.__config}get connectionId(){return this.__connectionId}get isPrimary(){return this.__isPrimary}get isOpen(){return this.__receiver===null}get receiver(){return this.__receiver}connect(e){this.__receiver=e.receiver}disconnect(){this.__receiver=null}clone(e){return new Mo(this.__config).copy(this,e)}showDebug(){const e=new Q().setFromEuler(this.rotation).normalize(),t=this.position,n=.2,s=16711680;this.__debugGeo=new FM(e,t,n,s,.06,.06);const r=document.createElement("div");r.textContent=this.name;const a=new Sv(r);r.style.pointerEvents="none";const o=new Q;this.getWorldDirection(o),o.normalize();const l=this.position.clone().addScaledVector(o,Math.random());a.position.set(l.x,l.y,l.z),this.__debugGeo.add(a),this.add(this.__debugGeo)}hideDebug(){this.__debugGeo&&(this.__debugGeo.clear(),this.__debugGeo?.removeFromParent(),vt.dispose3(this.__debugGeo))}}class ka extends Dt{constructor(e){super(),this.epgType="RECEIVER",this.__connectionId="",this.__plug=null,this.__debugGeo=null,this.__config=e,this.name=e.name,this.__connectionId=e.connectionId;const t=e.position;this.position.set(t.x,t.y,t.z);const n=e.rotation;this.rotation.set(n.x,n.y,n.z)}get config(){return this.__config}get connectionId(){return this.__connectionId}get isOpen(){return this.__plug===null}get plug(){return this.__plug}connect(e){this.__plug=e.plug}disconnect(){this.__plug=null}clone(e){return new ka(this.__config).copy(this,e)}showDebug(){const e=new Q().setFromEuler(this.rotation.clone()).normalize(),t=this.position,n=.1,s=65280;this.__debugGeo=new FM(e,t,n,s,.01,.08);const r=document.createElement("div");r.textContent=this.name,r.style.color="green";const a=new Sv(r);r.style.pointerEvents="none",this.__debugGeo.add(a),this.add(this.__debugGeo)}hideDebug(){this.__debugGeo&&(this.__debugGeo.clear(),this.__debugGeo?.removeFromParent(),vt.dispose3(this.__debugGeo))}}var ib=(i=>(i.Plug="plug",i.Receiver="receiver",i))(ib||{});class U2 extends k2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._type=xo.Gltf,this._resource=null,this._loggerContext="EPG RESOURCE GLTF"}get resource(){return this._resource}highlight(){}updateLoadingProgress(e){this._loadingProgress=e,this._appWcRef.eventsManager.assetLoadProgress.fire({progress:e})}async load(){if(this._state===Zs.Loaded||this._state===Zs.Loading)return Promise.resolve(!0);this._state=Zs.Loading;const e=await this._appWcRef.loaders.gltfLoader.loadAsync(this._uri,t=>{this.updateLoadingProgress(t.loaded/t.total*100)}).catch(t=>(window.epigraph.logger.groupCollapsed({title:"",contextOverride:this._loggerContext}),window.epigraph.logger.error({title:"An error occurred while trying to load an asset!",details:t,contextOverride:this._loggerContext}),this._state=Zs.Failed,Promise.reject()));return e===void 0?Promise.reject(!1):(this._resource=e,await this._parseLoadedGltf(),this._state=Zs.Loaded,Promise.resolve(!0))}async _parseLoadedGltf(){window.epigraph.logger.info({title:"Parsing GLTF data",details:this._resource,contextOverride:this._loggerContext})}unload(){return this._resource?.scene&&vt.dispose3(this._resource.scene),this._resource={},Promise.resolve(!0)}}class e6 extends U2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._loggerContext="EPG RESOURCE PROXY",this._type=xo.Proxy,this.__plugs=[],this.__receivers=[]}get plugs(){return this.__plugs}get receivers(){return this.__receivers}async _parseLoadedGltf(){if(!this._resource?.scene)return;const e=[];this._resource.scene.traverse(t=>{if(t.userData.epgType===ib.Receiver){const n=new ka({name:t.name,connectionId:t.userData.connectionId,position:t.position.clone(),rotation:t.rotation.clone()});this.__receivers.push(n),e.push(t)}else if(t.userData.epgType===ib.Plug){const n=new Mo({name:t.name,isPrimary:t.userData.isPrimary,connectionId:t.userData.connectionId,position:t.position.clone(),rotation:t.rotation.clone()});this.__plugs.push(n),e.push(t)}});for(const t of this.__receivers)this._resource.scene.add(t);for(const t of this.__plugs)this._resource.scene.add(t);for(const t of e)t.removeFromParent(),vt.dispose3(t)}unload(){return this._resource={},this.__plugs=[],this.__receivers=[],Promise.resolve(!0)}}class O2 extends U2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._loggerContext="EPG RESOURCE RENDER",this._type=xo.Render,this.__variantsExtensionName="KHR_materials_variants",this.__finishNamesFromAsset=[]}get khrVariantsExtensionName(){return this.__variantsExtensionName}get khrVariantsExtension(){return this.__variantsExtension}get finishNamesFromAsset(){return this.__finishNamesFromAsset}async _parseLoadedGltf(){this._resource?.scene.traverse(t=>{t instanceof Ke&&(t.castShadow=!0)});const e=this._resource?.userData?.gltfExtensions;if(!e){this.__variantsExtension=null,this.__finishNamesFromAsset=["default"];return}if(this.__variantsExtension=e[this.__variantsExtensionName],this.__variantsExtension?.variants)for(const t of this.__variantsExtension.variants)this.__finishNamesFromAsset.push(t.name)}unload(){return this._resource?.scene&&vt.dispose3(this._resource.scene),this._resource={},this.__variantsExtension={},this.__finishNamesFromAsset=[],Promise.resolve(!0)}}class t6 extends k2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._type=xo.Splat,this._resource=null,this.__splatMesh=null,this._loggerContext="EPG RESOURCE SPLAT",this._appWcRef.renderEngine.setupSparkRendererIfNotExists()}get resource(){return this._resource}get splatMesh(){return this.__splatMesh}__parseLoadedSplat(){this._resource&&(this.__splatMesh=new Hh({packedSplats:this._resource}),this.__splatMesh.quaternion.set(1,0,0,0))}async load(){if(this._state===Zs.Loaded||this._state===Zs.Loading)return Promise.resolve(!0);this._state=Zs.Loading;const e=await this._appWcRef.loaders.splatLoader.loadAsync(this._uri,t=>{this.updateLoadingProgress(t.loaded/t.total*100)}).catch(t=>(window.epigraph.logger.groupCollapsed({title:"",contextOverride:this._loggerContext}),window.epigraph.logger.error({title:"An error occurred while trying to load a render splat resource!",details:t,contextOverride:this._loggerContext}),this._state=Zs.Failed,Promise.reject()));return e===void 0?Promise.reject(!1):(this._resource=e,this.__parseLoadedSplat(),this._state=Zs.Loaded,Promise.resolve(!0))}}class G2{constructor(e,t){this._loggerContext="ASSET",this.__autoGenerateProxyEntity=!1,this.__finishes=new Map,this.__brandMaterialLibraries=new Map,this.__hotspots=[],this.__assetOverrides=null,this.__id=e.id,this.__name=e.name,this.__config=e,this.__appWcRef=t,this.__proxyGltf=new e6({id:`${String(e.id)}-${xo.Proxy}`,uri:e.proxyGeo,appWcRef:this.__appWcRef}),this.__autoGenerateProxyEntity=e.autoGenerateProxyEntity,!this.isRootAsset&&this.__appWcRef.experienceData.currentAssetVersion<=0&&(this.__autoGenerateProxyEntity=!0),this.__appWcRef.productSettings.render.mode===Qa.SPLAT?this.__renderSplat=new t6({id:`${String(e.id)}-${xo.Splat}`,uri:e.renderSplat,appWcRef:this.__appWcRef}):this.__renderGltf=new O2({id:`${String(e.id)}-${xo.Render}`,uri:e.renderGeo,appWcRef:this.__appWcRef});for(const n in e.finishes)this.__finishes.set(n,new Up(n));e.brandMaterialLibraries||(e.brandMaterialLibraries=[]),e.hotspots&&(this.__hotspots=e.hotspots)}get isRootAsset(){return this.__id===0}get id(){return this.__id}get name(){return this.__name}get assetRootDir(){const e=this.__appWcRef.productSettings.render.mode===Qa.SPLAT?this.__renderSplat?.uri:this.__renderGltf?.uri;return new URL(e+"/../../").href}get assetOverrides(){return this.__assetOverrides}get proxyGltf(){return this.__proxyGltf}get autoGenerateProxyEntity(){return this.__autoGenerateProxyEntity}get renderSplat(){return this.__renderSplat}get renderGltf(){return this.__renderGltf}get finishes(){return this.__finishes}get hotspots(){return this.__hotspots}get brandMaterialLibraries(){return this.__brandMaterialLibraries}get allFinishIds(){const e=[];for(const t of this.__finishes.keys())e.push(t);return e}async loadRenderSplat(){await this.__renderSplat?.load(),this.__finishes.set("default",new Up("default"))}async loadProxyGltf(){return!this.__proxyGltf||this.__proxyGltf.isLoaded?Promise.resolve(!0):await this.__proxyGltf.load()}pullFinishesFromRenderGltf(){this.__finishes.clear(),this.__renderGltf&&this.__renderGltf.finishNamesFromAsset.forEach(e=>{this.__finishes.has(e)||this.__finishes.set(e,new Up(e))})}async parseAssetOverrideJson(){if(!this.__renderGltf)return null;let e=this.__renderGltf.resource?.asset.extras?.epgOverrides;if(!e)return null;e=e.replace("./","");const t=new URL(e,this.assetRootDir),n=await fetch(t).catch(s=>{window.epigraph.logger.error({title:`Failed to load asset override file: ${t}`,details:s,contextOverride:this._loggerContext})});n&&(this.__assetOverrides=await n.json())}async loadRenderGltf(e=!1){if(this.__renderGltf===void 0||this.__renderGltf.uri==="")return Promise.resolve(!0);await this.__renderGltf.load().catch(t=>(window.epigraph.logger.error({title:`Failed to load asset: ${this.__id}`,details:t,contextOverride:this._loggerContext}),Promise.reject(!1)));for(const t of this.__config.brandMaterialLibraries){const n=this.__appWcRef.experienceData.materialLibraryCollection.materialLibraries.get(t);if(await n?.load(),!n){window.epigraph.logger.warn({title:`Material library ${t} not found in brand material libraries.`,contextOverride:this._loggerContext});continue}this.__brandMaterialLibraries.set(n.id,n);for(const s of n.finishNamesFromAsset)this.finishes.has(s)||this.__finishes.set(s,new Up(s))}return e&&this.pullFinishesFromRenderGltf(),await this.parseAssetOverrideJson(),Promise.resolve(!0)}async load(e=!1){return Promise.all([this.loadRenderSplat(),this.loadRenderGltf(e),this.loadProxyGltf()])}}var n6=Object.defineProperty,z2=(i,e,t,n)=>{for(var s=void 0,r=i.length-1,a;r>=0;r--)(a=i[r])&&(s=a(e,t,s)||s);return s&&n6(e,t,s),s};class H2{constructor({appWcRef:e}){this._loggerContext="SOLUTION MANAGER",this._appWcRef=e}initialize(){window.epigraph.logger.info({title:"Initializing...",contextOverride:this._loggerContext})}}const Nv=class Lf extends Ah{constructor(){super(),this._loggerContext="SOLUTION MANAGER",this.enabled=!1}static{this.webComponentName="solution-manager"}connectedCallback(){super.connectedCallback(),window.epigraph.logger.info({title:"Initializing...",contextOverride:this._loggerContext})}firstUpdated(e){super.firstUpdated(e)}static setupWebComponent(){window.customElements.get(Lf.webComponentName)||window.customElements.define(Lf.webComponentName,Lf)}render(){return oe`
12995
+ `);new Tn(new Q(-1,-1,-1),new Q(1,1,1)),new Q(-1,-3,1).normalize(),new we(1,1,1),new we(.5,.5,1),new Q(1,1,1);new Tn(new Q(-2,-1,-2),new Q(2,5,2)),new Q(0,-1,0),new we(1,1,1),new we(.25,.25,.5),new Q(.1,1,.1);const N2=class nb{static createButton(e,t={}){const n=navigator.xr;if(!n)return null;const s=n,r=document.createElement("button");e.xr.enabled=!0,e.xr.setReferenceSpaceType("local");function a(){let h=null;async function A(g){console.log("onSessionStarted"),g.addEventListener("end",d),await e.xr.setSession(g),r.textContent="EXIT VR",h=g}function d(){console.log("onSessionEnded"),h?.removeEventListener("end",d),r.textContent="ENTER VR",h=null}r.style.display="",r.style.cursor="pointer",r.style.left="calc(50% - 100px)",r.style.width="200px",r.style.height="100px",r.textContent="ENTER VR";const p={...t,optionalFeatures:[...t.optionalFeatures||[]]};r.onmouseenter=()=>{r.style.opacity="1.0"},r.onmouseleave=()=>{r.style.opacity="0.5"},r.onclick=()=>{h===null?(console.log("requesting session"),s.requestSession("immersive-vr",p).then(A)):(console.log("ending session"),h.end())}}function o(){r.style.display="none",r.style.cursor="auto",r.style.left="calc(50% - 75px)",r.style.width="150px",r.onmouseenter=null,r.onmouseleave=null,r.onclick=null}function l(){o(),r.textContent="VR NOT SUPPORTED"}function c(h){o(),console.warn("Exception when trying to call xr.isSessionSupported",h),r.textContent="VR NOT ALLOWED"}function u(h){h.style.position="absolute",h.style.bottom="20px",h.style.padding="12px 6px",h.style.border="1px solid #fff",h.style.borderRadius="4px",h.style.background="rgba(0,0,0,0.1)",h.style.color="#fff",h.style.font="normal 13px sans-serif",h.style.textAlign="center",h.style.opacity="0.5",h.style.outline="none",h.style.zIndex="999"}return r.id="VRButton",r.style.display="none",u(r),s.isSessionSupported("immersive-vr").then(h=>{h?a():l(),h&&nb.xrSessionIsGranted&&r.click()}).catch(c),r}static registerSessionGrantedListener(){const e=navigator.xr;if(!e)return null;const t=e;/WebXRViewer\//i.test(navigator.userAgent)||t.addEventListener("sessiongranted",()=>{nb.xrSessionIsGranted=!0})}};N2.xrSessionIsGranted=!1;let X8=N2;X8.registerSessionGrantedListener();var P2=(i=>(i.w="wrist",i.t0="thumb-metacarpal",i.t1="thumb-phalanx-proximal",i.t2="thumb-phalanx-distal",i.t3="thumb-tip",i.i0="index-finger-metacarpal",i.i1="index-finger-phalanx-proximal",i.i2="index-finger-phalanx-intermediate",i.i3="index-finger-phalanx-distal",i.i4="index-finger-tip",i.m0="middle-finger-metacarpal",i.m1="middle-finger-phalanx-proximal",i.m2="middle-finger-phalanx-intermediate",i.m3="middle-finger-phalanx-distal",i.m4="middle-finger-tip",i.r0="ring-finger-metacarpal",i.r1="ring-finger-phalanx-proximal",i.r2="ring-finger-phalanx-intermediate",i.r3="ring-finger-phalanx-distal",i.r4="ring-finger-tip",i.p0="pinky-finger-metacarpal",i.p1="pinky-finger-phalanx-proximal",i.p2="pinky-finger-phalanx-intermediate",i.p3="pinky-finger-phalanx-distal",i.p4="pinky-finger-tip",i))(P2||{});const J8=Object.keys(P2);J8.length;new Q(0,0,-1),new Q(0,0,1),new Q(-1,0,0),new Q(1,0,0),new Q(0,1,0),new Q(0,-1,0);new Q(0,0,-1),new Q(0,0,1),new Q(-1,0,0),new Q(1,0,0),new Q(0,1,0),new Q(0,-1,0);new Q(0,0,1),new Q(0,0,-1);new Q(0,-1,0),new Q(0,1,0),new Q(-1,0,0),new Q(1,0,0);class vt{static isTouchDevice(){try{return document.createEvent("TouchEvent"),!0}catch{return!1}}static async wait(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}static generateStylesDomElem(e,t=""){const n=document.createElement("style");return n.setAttribute("id",e),n.innerHTML=t,n}static generateHtmlDivElem(e,t=""){const n=document.createElement("div");return n.setAttribute("id",e),n.innerHTML=t,n}static getRandomIntegerInRange(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1))+e}static getUrlParameterByName(e,t=window.location.search){const n=new URLSearchParams(t);return Object.fromEntries(n.entries())[e]}static getBaseUrl(){const e=vt.getUrlParameterByName("parentUrl");return e||window.location.href}static normalizeRadian(e){return Math.atan2(Math.sin(e),Math.cos(e))}static isBetweenOnCircle(e,t,n){return e=vt.normalizeRadian(e),t=vt.normalizeRadian(t),n=vt.normalizeRadian(n),t<=n?e>=t&&e<=n:e>=t||e<=n}static getPointInBetweenByPercentage(e,t,n){let s=t.clone().sub(e);const r=s.length();return s=s.normalize().multiplyScalar(r*n),e.clone().add(s)}static clampAzimuth(e,t,n){if(Math.abs(t)==1/0||n==1/0)return e;const s=vt.normalizeRadian(e),r=vt.normalizeRadian(t),a=vt.normalizeRadian(n);if(vt.isBetweenOnCircle(s,r,a))return s;const o=Math.abs(vt.normalizeRadian(s-r)),l=Math.abs(vt.normalizeRadian(s-a));return o<l?r:a}static resolveNexusEndpoint(e){let t=If.PRODUCTION;return e=="local"?t=If.LOCAL:e==="staging"&&(t=If.STAGING),t}static parseUrlForEpigraphParams(e){const t=new Map,n=new kE(e);t.set(ti.epigraphSessionId,n.getParameterInUrl(ti.epigraphSessionId)),t.set(ti.identifier,n.getParameterInUrl(ti.identifier)),t.set(ti.identifierType,n.getParameterInUrl(ti.identifierType)),t.set(ti.type,n.getParameterInUrl(ti.type));const s=n.getParameterInUrl(ti.action);return s&&t.set(Rd.AR,JSON.parse(s)[Rd.AR]),t}static generateShareableUrl({baseUrl:e,identifier:t,identifierType:n,sharedConfig:s,arCompatible:r=!1}){const a=new Map;return a.set(ti.epigraphSessionId,window.epigraph.epigraphSessionId),a.set(ti.identifier,t),a.set(ti.identifierType,n),s&&a.set(ti.sharedConfig,s),r&&a.set(ti.action,`{"${Rd.AR}":true}`),new kE(e).generateQrCodeUrl(Object.fromEntries(a.entries()),!1)}static{this.__textureProperties=["map","normalMap","roughnessMap","metalnessMap","aoMap","emissiveMap","alphaMap","lightMap","bumpMap","displacementMap","envMap"]}static disposeMaterialTextures(e){for(const t of vt.__textureProperties){const n=e[t];n instanceof cn&&n.dispose()}}static _dispose3(e){if(e instanceof Ke&&e.geometry.dispose(),e instanceof Ke){const t=Array.isArray(e.material)?e.material:[e.material];for(const n of t)vt.disposeMaterialTextures(n),n.dispose()}}static dispose3(e){e.traverse(t=>{(t instanceof Ke||t instanceof Hh)&&vt._dispose3(t)}),(e instanceof Ke||e instanceof Hh||e instanceof gs)&&vt._dispose3(e)}static animateValue(e,t,n,s){const r=performance.now();function a(o){const l=o-r,c=Math.min(l/n,1),u=e+(t-e)*c;s(u),c<1&&requestAnimationFrame(a)}requestAnimationFrame(a)}static getCustomStylesTemplate(){const t=document.querySelector("#epigraphCustomStyles")?.content?.cloneNode(!0);return t||be}}class jd{constructor(e){this._success=e}get success(){return this._success}set success(e){this._success=e}get failed(){return!this._success}}class K8 extends jd{constructor(e=!1,t=void 0){super(e),this.__payload=t}get payload(){return this.__payload}set payload(e){this.__payload=e}}var F2=(i=>(i.Empty="entity-empty",i.Gltf="entity-mesh",i.Render="entity-render",i.Proxy="entity-proxy",i.Collider="entity-collider",i.Asset="entity-asset",i))(F2||{});class Z8 extends Dn{constructor(){super(),this._entityType=F2.Empty}get entityType(){return this._entityType}dispose(){let e;const t=new K8(!1,e);return e=void 0,t.success=!0,t.payload=e,t}}var Qa=(i=>(i.GEO="geo",i.SPLAT="splat",i))(Qa||{});class Up{constructor(e){this.__name=e}getName(){return this.__name}}var Zs=(i=>(i.declared="declared",i.Loading="loading",i.Loaded="loaded",i.Unloaded="unloaded",i.Failed="failed",i))(Zs||{}),xo=(i=>(i.None="epg-resource-none",i.Gltf="epg-resource-gltf",i.Proxy="epg-resource-gltf-proxy",i.Render="epg-resource-gltf-render",i.Splat="epg-resource-splat",i))(xo||{});class k2{constructor({id:e,uri:t,appWcRef:n}){this._loggerContext="EPG RESOURCE",this._type="epg-resource-none",this._id=crypto.randomUUID(),this._loadingProgress=0,this._state="declared",this._resource=null,e&&(this._id=e),this._appWcRef=n,this._uri=t}get id(){return this._id}get uri(){return this._uri}get loadingProgress(){return this._loadingProgress}get state(){return this._state}get isLoaded(){return this._state==="loaded"}get type(){return this._type}get resource(){return this._resource}highlight(){}updateLoadingProgress(e){this._loadingProgress=e,this._appWcRef.eventsManager.assetLoadProgress.fire({progress:e})}async load(){return window.epigraph.logger.info({title:"Loading EPG Resource. Override to define how a resource should be loaded.",contextOverride:this._loggerContext}),Promise.resolve(!0)}unload(){return this._resource={},Promise.resolve(!0)}}class Mo extends Dt{constructor(e){super(),this.epgType="PLUG",this.__connectionId="",this.__isPrimary=!1,this.__receiver=null,this.__debugGeo=null,this.__config=e,this.name=e.name,this.__connectionId=e.connectionId,this.__isPrimary=e.isPrimary;const t=e.position;this.position.set(t.x,t.y,t.z);const n=e.rotation;this.rotation.set(n.x,n.y,n.z)}get config(){return this.__config}get connectionId(){return this.__connectionId}get isPrimary(){return this.__isPrimary}get isOpen(){return this.__receiver===null}get receiver(){return this.__receiver}connect(e){this.__receiver=e.receiver}disconnect(){this.__receiver=null}clone(e){return new Mo(this.__config).copy(this,e)}showDebug(){const e=new Q().setFromEuler(this.rotation).normalize(),t=this.position,n=.2,s=16711680;this.__debugGeo=new FM(e,t,n,s,.06,.06);const r=document.createElement("div");r.textContent=this.name;const a=new Sv(r);r.style.pointerEvents="none";const o=new Q;this.getWorldDirection(o),o.normalize();const l=this.position.clone().addScaledVector(o,Math.random());a.position.set(l.x,l.y,l.z),this.__debugGeo.add(a),this.add(this.__debugGeo)}hideDebug(){this.__debugGeo&&(this.__debugGeo.clear(),this.__debugGeo?.removeFromParent(),vt.dispose3(this.__debugGeo))}}class ka extends Dt{constructor(e){super(),this.epgType="RECEIVER",this.__connectionId="",this.__plug=null,this.__debugGeo=null,this.__config=e,this.name=e.name,this.__connectionId=e.connectionId;const t=e.position;this.position.set(t.x,t.y,t.z);const n=e.rotation;this.rotation.set(n.x,n.y,n.z)}get config(){return this.__config}get connectionId(){return this.__connectionId}get isOpen(){return this.__plug===null}get plug(){return this.__plug}connect(e){this.__plug=e.plug}disconnect(){this.__plug=null}clone(e){return new ka(this.__config).copy(this,e)}showDebug(){const e=new Q().setFromEuler(this.rotation.clone()).normalize(),t=this.position,n=.1,s=65280;this.__debugGeo=new FM(e,t,n,s,.01,.08);const r=document.createElement("div");r.textContent=this.name,r.style.color="green";const a=new Sv(r);r.style.pointerEvents="none",this.__debugGeo.add(a),this.add(this.__debugGeo)}hideDebug(){this.__debugGeo&&(this.__debugGeo.clear(),this.__debugGeo?.removeFromParent(),vt.dispose3(this.__debugGeo))}}var ib=(i=>(i.Plug="plug",i.Receiver="receiver",i))(ib||{});class U2 extends k2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._type=xo.Gltf,this._resource=null,this._loggerContext="EPG RESOURCE GLTF"}get resource(){return this._resource}highlight(){}updateLoadingProgress(e){this._loadingProgress=e,this._appWcRef.eventsManager.assetLoadProgress.fire({progress:e})}async load(){if(this._state===Zs.Loaded||this._state===Zs.Loading)return Promise.resolve(!0);this._state=Zs.Loading;const e=await this._appWcRef.loaders.gltfLoader.loadAsync(this._uri,t=>{this.updateLoadingProgress(t.loaded/t.total*100)}).catch(t=>(window.epigraph.logger.groupCollapsed({title:"",contextOverride:this._loggerContext}),window.epigraph.logger.error({title:"An error occurred while trying to load an asset!",details:t,contextOverride:this._loggerContext}),this._state=Zs.Failed,Promise.reject()));return e===void 0?Promise.reject(!1):(this._resource=e,await this._parseLoadedGltf(),this._state=Zs.Loaded,Promise.resolve(!0))}async _parseLoadedGltf(){window.epigraph.logger.info({title:"Parsing GLTF data",details:this._resource,contextOverride:this._loggerContext})}unload(){return this._resource?.scene&&vt.dispose3(this._resource.scene),this._resource={},Promise.resolve(!0)}}class e6 extends U2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._loggerContext="EPG RESOURCE PROXY",this._type=xo.Proxy,this.__plugs=[],this.__receivers=[]}get plugs(){return this.__plugs}get receivers(){return this.__receivers}async _parseLoadedGltf(){if(!this._resource?.scene)return;const e=[];this._resource.scene.traverse(t=>{if(t.userData.epgType===ib.Receiver){const n=new ka({name:t.name,connectionId:t.userData.connectionId,position:t.position.clone(),rotation:t.rotation.clone()});this.__receivers.push(n),e.push(t)}else if(t.userData.epgType===ib.Plug){const n=new Mo({name:t.name,isPrimary:t.userData.isPrimary,connectionId:t.userData.connectionId,position:t.position.clone(),rotation:t.rotation.clone()});this.__plugs.push(n),e.push(t)}});for(const t of this.__receivers)this._resource.scene.add(t);for(const t of this.__plugs)this._resource.scene.add(t);for(const t of e)t.removeFromParent(),vt.dispose3(t)}unload(){return this._resource={},this.__plugs=[],this.__receivers=[],Promise.resolve(!0)}}class O2 extends U2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._loggerContext="EPG RESOURCE RENDER",this._type=xo.Render,this.__variantsExtensionName="KHR_materials_variants",this.__finishNamesFromAsset=[]}get khrVariantsExtensionName(){return this.__variantsExtensionName}get khrVariantsExtension(){return this.__variantsExtension}get finishNamesFromAsset(){return this.__finishNamesFromAsset}async _parseLoadedGltf(){this._resource?.scene.traverse(t=>{t instanceof Ke&&(t.castShadow=!0)});const e=this._resource?.userData?.gltfExtensions;if(!e){this.__variantsExtension=null,this.__finishNamesFromAsset=["default"];return}if(this.__variantsExtension=e[this.__variantsExtensionName],this.__variantsExtension?.variants)for(const t of this.__variantsExtension.variants)this.__finishNamesFromAsset.push(t.name)}unload(){return this._resource?.scene&&vt.dispose3(this._resource.scene),this._resource={},this.__variantsExtension={},this.__finishNamesFromAsset=[],Promise.resolve(!0)}}class t6 extends k2{constructor({id:e,uri:t,appWcRef:n}){super({id:e,uri:t,appWcRef:n}),this._type=xo.Splat,this._resource=null,this.__splatMesh=null,this._loggerContext="EPG RESOURCE SPLAT",this._appWcRef.renderEngine.setupSparkRendererIfNotExists()}get resource(){return this._resource}get splatMesh(){return this.__splatMesh}__parseLoadedSplat(){this._resource&&(this.__splatMesh=new Hh({packedSplats:this._resource}),this.__splatMesh.quaternion.set(1,0,0,0))}async load(){if(this._state===Zs.Loaded||this._state===Zs.Loading)return Promise.resolve(!0);this._state=Zs.Loading;const e=await this._appWcRef.loaders.splatLoader.loadAsync(this._uri,t=>{this.updateLoadingProgress(t.loaded/t.total*100)}).catch(t=>(window.epigraph.logger.groupCollapsed({title:"",contextOverride:this._loggerContext}),window.epigraph.logger.error({title:"An error occurred while trying to load a render splat resource!",details:t,contextOverride:this._loggerContext}),this._state=Zs.Failed,Promise.reject()));return e===void 0?Promise.reject(!1):(this._resource=e,this.__parseLoadedSplat(),this._state=Zs.Loaded,Promise.resolve(!0))}}class G2{constructor(e,t){this._loggerContext="ASSET",this.__autoGenerateProxyEntity=!1,this.__finishes=new Map,this.__brandMaterialLibraries=new Map,this.__hotspots=[],this.__assetOverrides=null,this.__id=e.id,this.__name=e.name,this.__config=e,this.__appWcRef=t,this.__proxyGltf=new e6({id:`${String(e.id)}-${xo.Proxy}`,uri:e.proxyGeo,appWcRef:this.__appWcRef}),this.__autoGenerateProxyEntity=e.autoGenerateProxyEntity,!this.isRootAsset&&this.__appWcRef.experienceData.currentAssetVersion<=0&&(this.__autoGenerateProxyEntity=!0),this.__appWcRef.productSettings.render.mode===Qa.SPLAT?this.__renderSplat=new t6({id:`${String(e.id)}-${xo.Splat}`,uri:e.renderSplat,appWcRef:this.__appWcRef}):this.__renderGltf=new O2({id:`${String(e.id)}-${xo.Render}`,uri:e.renderGeo,appWcRef:this.__appWcRef});for(const n in e.finishes)this.__finishes.set(n,new Up(n));e.brandMaterialLibraries||(e.brandMaterialLibraries=[]),e.hotspots&&(this.__hotspots=e.hotspots)}get isRootAsset(){return this.__id===0}get id(){return this.__id}get name(){return this.__name}get assetRootDir(){const e=this.__appWcRef.productSettings.render.mode===Qa.SPLAT?this.__renderSplat?.uri:this.__renderGltf?.uri;return new URL(e+"/../../").href}get assetOverrides(){return this.__assetOverrides}get proxyGltf(){return this.__proxyGltf}get autoGenerateProxyEntity(){return this.__autoGenerateProxyEntity}get renderSplat(){return this.__renderSplat}get renderGltf(){return this.__renderGltf}get finishes(){return this.__finishes}get hotspots(){return this.__hotspots}get brandMaterialLibraries(){return this.__brandMaterialLibraries}get allFinishIds(){const e=[];for(const t of this.__finishes.keys())e.push(t);return e}async loadRenderSplat(){await this.__renderSplat?.load(),this.__finishes.set("default",new Up("default"))}async loadProxyGltf(){return!this.__proxyGltf||this.__proxyGltf.isLoaded?Promise.resolve(!0):await this.__proxyGltf.load()}pullFinishesFromRenderGltf(){this.__finishes.clear(),this.__renderGltf&&this.__renderGltf.finishNamesFromAsset.forEach(e=>{this.__finishes.has(e)||this.__finishes.set(e,new Up(e))})}async parseAssetOverrideJson(){if(!this.__renderGltf)return null;let e=this.__renderGltf.resource?.asset.extras?.epgOverrides;if(!e)return null;e=e.replace("./","");const t=new URL(e,this.assetRootDir),n=await fetch(t).catch(s=>{window.epigraph.logger.error({title:`Failed to load asset override file: ${t}`,details:s,contextOverride:this._loggerContext})});n&&(this.__assetOverrides=await n.json())}async loadRenderGltf(e=!1){if(this.__renderGltf===void 0||this.__renderGltf.uri==="")return Promise.resolve(!0);await this.__renderGltf.load().catch(t=>(window.epigraph.logger.error({title:`Failed to load asset: ${this.__id}`,details:t,contextOverride:this._loggerContext}),Promise.reject(!1)));for(const t of this.__config.brandMaterialLibraries){const n=this.__appWcRef.experienceData.materialLibraryCollection.materialLibraries.get(t);if(await n?.load(),!n){window.epigraph.logger.warn({title:`Material library ${t} not found in brand material libraries.`,contextOverride:this._loggerContext});continue}this.__brandMaterialLibraries.set(n.id,n);for(const s of n.finishNamesFromAsset)this.finishes.has(s)||this.__finishes.set(s,new Up(s))}return e&&this.pullFinishesFromRenderGltf(),await this.parseAssetOverrideJson(),Promise.resolve(!0)}async load(e=!1){return Promise.all([this.loadRenderSplat(),this.loadRenderGltf(e),this.loadProxyGltf()])}}var n6=Object.defineProperty,z2=(i,e,t,n)=>{for(var s=void 0,r=i.length-1,a;r>=0;r--)(a=i[r])&&(s=a(e,t,s)||s);return s&&n6(e,t,s),s};class H2{constructor({appWcRef:e}){this._loggerContext="SOLUTION MANAGER",this._appWcRef=e}initialize(){window.epigraph.logger.info({title:"Initializing...",contextOverride:this._loggerContext})}}const Nv=class Lf extends Ah{constructor(){super(),this._loggerContext="SOLUTION MANAGER",this.enabled=!1}static{this.webComponentName="solution-manager"}connectedCallback(){super.connectedCallback(),window.epigraph.logger.info({title:"Initializing...",contextOverride:this._loggerContext})}firstUpdated(e){super.firstUpdated(e)}static setupWebComponent(){window.customElements.get(Lf.webComponentName)||window.customElements.define(Lf.webComponentName,Lf)}render(){return oe`
12996
12996
  ${vt.getCustomStylesTemplate()}
12997
12997
  `}};z2([Y({type:Boolean,attribute:"enabled"})],Nv.prototype,"enabled");z2([Y({attribute:!1})],Nv.prototype,"appWcRef");let Jl=Nv;class i6{constructor({id:e,name:t,receiver:n,plug:s}){this.__name=t,this.__plug=s,this.__receiver=n,e?this.__id=e:this.__id=`${this.__receiver.uuid}-${this.__plug.uuid}`}get id(){return this.__id}get name(){return this.__name}get plug(){return this.__plug}isPrimary(){return this.__plug?.isPrimary}get receiver(){return this.__receiver}connect(){this.__receiver.connect(this),this.__plug.connect(this)}disconnect(){this.__plug&&this.__plug.disconnect(),this.__receiver&&this.__receiver.disconnect()}}class s6{constructor({id:e,receiver:t,plug:n}){this.__id=e,this.__plug=n,this.__receiver=t}get id(){return this.__id}get plug(){return this.__plug}set plug(e){this.__plug=e}get receiver(){return this.__receiver}set receiver(e){this.__receiver=e}disconnect(){this.__receiver.disconnect(),this.__plug.disconnect()}}class r6 extends Dn{constructor(e){super(),this.name="ENTITIES",this._loggerContext="SCENE STRUCTURE",this.__appWcRef=e,this.__eventsManager=this.__appWcRef.eventsManager}async setupRootEntity(e,t){const n=await new G2({id:0,name:"Root",proxyGeo:e??"https://asset.myepigraph.com/solutions-assets/__PIPELINE__/assets/3d-assets/proxyGeo/root-proxy.glb",autoGenerateProxyEntity:!1,renderGeo:t??"https://asset.myepigraph.com/solutions-assets/__PIPELINE__/assets/3d-assets/renderGeo/root-render.glb",renderSplat:"",finishes:{},hotspots:[],brandMaterialLibraries:[]},this.__appWcRef);await n.load().catch(()=>Promise.reject(!1));const s=new Nl(n,this.__appWcRef);await s.initialize(),this.add(s),this.__rootEntity=s}get rootEntity(){return this.__rootEntity}isEmpty(){return this.__rootEntity===void 0||this.__rootEntity.children.length===0}isNotEmpty(){return!this.isEmpty()}addEntity(e){this.__rootEntity.add(e),this.__eventsManager.structureNodeAddedEvent.fire({node:e})}getFirstEntity(){return this.isEmpty()?null:this.getSceneEntities()[0]}getEntityForAssetName(e){const t=this.getSceneEntities();let n;for(const s of t)if(s.asset.name===e){n=s;break}return n}getEntityForAssetId(e){const t=this.getSceneEntities();let n;for(const s of t)if(s.asset.id===e){n=s;break}return n}getSceneEntities(e=!1){const t=[];return this.__rootEntity.traverse(n=>{!e&&n.uuid===this.__rootEntity.uuid||n instanceof Nl&&t.push(n)}),t}getPossibleConnectionsForAssetInScene(e){const t=[];window.epigraph.logger.info({title:"Getting connections for asset in scene:",details:e,contextOverride:this._loggerContext});for(const n of this.getSceneEntities(!0)){const s=n.findPossibleConnectionsForAsset(e);s.length>0&&t.push(...s)}return window.epigraph.logger.table({title:"Possible Connections",details:t,contextOverride:this._loggerContext}),t}getAllConnectionsInScene(){const e=new Map;return this.traverse(t=>{if(t instanceof ka||t instanceof Mo){if(t.connectionId===""||e.has(t.connectionId))return;let s=null,r=null;if(t instanceof ka?(s=t,r=t.plug):t instanceof Mo&&(s=t.receiver,r=t),s!==null&&r!==null){const a=new s6({id:t.connectionId,receiver:s,plug:r});e.set(t.connectionId,a)}}}),e}}class a6 extends H2{constructor(e){super({appWcRef:e}),this._loggerContext="SCENE MANAGER",this.__sceneBounds=new Tn,this.__sceneCenter=new Q,this.__sceneSphericalBounds=new Ji,this.__sceneStructure=new r6(this._appWcRef)}get sceneStructure(){return this.__sceneStructure}get sceneBounds(){return this.__sceneBounds}get sceneBoundsCenter(){return this.__sceneCenter}get currentSceneSphericalBounds(){return this.__sceneSphericalBounds}recalculateSceneBounds(){this.__sceneBounds.makeEmpty(),this.__sceneStructure.isNotEmpty()&&this.__sceneStructure.rootEntity.traverse(e=>{e instanceof Ke&&e.userData.isProxyMesh&&this.__sceneBounds.expandByObject(e)}),this.__sceneBounds.getCenter(this.__sceneCenter),this.__sceneSphericalBounds.center=this.sceneBoundsCenter,this.__sceneBounds.getBoundingSphere(this.__sceneSphericalBounds),this._appWcRef.eventsManager.sceneBoundsChanged.fire()}}class o6 extends Dn{constructor(e,t){super(),this._loggerContext="RENDER ENTITY",this.__autoGeneratedBoundsBox=new Tn,this.__autoGeneratedBoundsSize=new Q,this.__activeFinish="",this.name="RENDER",this.__assetEntity=e,this.__textureLoader=t}get asset(){return this.__assetEntity.asset}get activeFinish(){return this.__activeFinish}get allAssetFinishes(){return this.asset.finishes}get allFinishIds(){return this.asset.allFinishIds}get autoGeneratedBoundsBox(){return this.__autoGeneratedBoundsBox}get autoGeneratedBoundsSize(){return this.__autoGeneratedBoundsSize}async initializeRenderGeoEntity(){const e=this.asset?.renderGltf?.resource?.scene?.clone(!0);if(!e)return Promise.reject();this.add(e),this.__autoGeneratedBoundsBox.setFromObject(e,!0),this.__autoGeneratedBoundsBox.getSize(this.__autoGeneratedBoundsSize);const t=new Q;if(this.__autoGeneratedBoundsBox.getCenter(t),this.asset.autoGenerateProxyEntity){window.epigraph.logger.group({title:"",contextOverride:this._loggerContext}),window.epigraph.logger.info({title:"Attempting to place render geo at the grid for AssetEntity...",details:this.asset,contextOverride:this._loggerContext});const n=new Dn;n.name="rendergeopivot";const s=new Gs(.01,.01,.01),r=new Rn({color:65280,depthTest:!1}),a=new Ke(s,r);n.add(a),this.add(n),n.position.set(t.x,this.__autoGeneratedBoundsBox.min.y,t.z),n.attach(e),n.position.set(0,0,0),this.attach(e),n.removeFromParent(),vt.dispose3(n),window.epigraph.logger.info({title:"Done!!",contextOverride:this._loggerContext}),window.epigraph.logger.groupEnd()}}async initializeSplatEntity(){const e=this.asset.renderSplat?.splatMesh;if(!e)return;this.add(e),this.__autoGeneratedBoundsBox.copy(e.getBoundingBox(!1)),this.__autoGeneratedBoundsBox.getSize(this.__autoGeneratedBoundsSize);const t=new Q;if(this.__autoGeneratedBoundsBox.getCenter(t),this.asset.autoGenerateProxyEntity){window.epigraph.logger.group({title:"",contextOverride:this._loggerContext}),window.epigraph.logger.info({title:"Attempting to place render geo at the grid for AssetEntity...",details:this.asset,contextOverride:"ASSET ENTITY"});const n=new Dn;n.name="splatmeshpivot",this.attach(n),n.position.set(t.x,this.__autoGeneratedBoundsBox.max.y,t.z),e.position.set(-t.x,this.__autoGeneratedBoundsBox.max.y,-t.z),n.add(e),n.position.set(0,0,0),this.add(e),n.removeFromParent(),vt.dispose3(n),window.epigraph.logger.info({title:"Done!!",contextOverride:this._loggerContext}),window.epigraph.logger.groupEnd()}}async selectAssetFinish(e){window.epigraph.logger.info({title:`Switching to asset finish: ${e}`,contextOverride:this._loggerContext});const t=new jd(!1);if(this.__assetEntity.isRenderingSplats())return t.success=!0,Promise.resolve(t);const n=this.asset.renderGltf;if(!n)return Promise.reject(t);const s=n.khrVariantsExtension,r=n.khrVariantsExtensionName;if(!s?.variants)return window.epigraph.logger.warn({title:"No KHR_Materials_Variants found in asset. Using default material.",contextOverride:this._loggerContext}),this.allFinishIds.length===1&&this.allFinishIds.includes(e)&&(this.__activeFinish=e),t.success=!0,Promise.resolve(t);let a=!0;if(await this.__selectFinishByKHRMaterialsVariantsExtension(s,r,e,n).catch(()=>{a=!1}),!a){const o=await this.__selectFinishByMaterialLibrary(s,r,e);t.success=o.success}return this.__activeFinish=e,Promise.resolve(t)}async __switchMaterial(e,t,n,s,r){const a=new jd(!1);if(!(e instanceof Ke)||!e.isMesh)return Promise.resolve(a);if(!e.userData.gltfExtensions)return Promise.reject(a);const o=e.userData.gltfExtensions[t];if(!o)return window.epigraph.logger.error({title:"No variants extension found in mesh.",details:o,contextOverride:this._loggerContext}),Promise.reject(a);e.userData.originalMaterial||(e.userData.originalMaterial=e.material);const l=o.mappings.find(c=>c.variants.includes(s));if(l&&n.resource){const c=n.resource.parser;e.material=await c.getDependency("material",l.material),c.assignFinalMaterial(e),a.success=!0}else window.epigraph.logger.info({title:"Variant has no effect on this Object.",details:{object:e,finishId:r},contextOverride:this._loggerContext}),e.material=e.userData.originalMaterial,a.success=!0;return e.material.needsUpdate=!0,Promise.resolve(a)}__selectFinishByKHRMaterialsVariantsExtension(e,t,n,s){window.epigraph.logger.info({title:"Attempting to load finish using KHR Materials Variants",details:n,contextOverride:this._loggerContext});const r=e.variants.findIndex(o=>o.name===n),a=[];return this.traverse(o=>{a.push(this.__switchMaterial(o,t,s,r,n))}),Promise.all(a)}async __selectFinishByMaterialLibrary(e,t,n){const s=new jd(!1);window.epigraph.logger.info({title:"Attempting to load finish by material library",details:n,contextOverride:this._loggerContext});for(const r of this.asset.brandMaterialLibraries.values()){const a=await r.getMaterialForFinishId(n);if(a===null)continue;const o=[];this.traverse(l=>{l instanceof Ke&&o.push((async()=>{l.material=a,await this.__processAnyOverridesForAsset(n,l),l.material.needsUpdate=!0})())}),await Promise.all(o)}return s.success=!1,s}async __processAnyOverridesForAsset(e,t){const n=this.asset.assetOverrides;if(!n)return;const s=n.brandMaterialLibrary;if(s){const r=s[e];if(r){r.sort((a,o)=>{const l=a.name.includes("."),c=o.name.includes(".");return l&&!c?1:!l&&c?-1:0});for(const a of r){const o=a.name,l=a.value,c=a.type,u=t.material;switch(window.epigraph.logger.info({title:`Override Property on asset: ${this.asset.id} MLIB: ${o} -> overrides[override]`,contextOverride:this._loggerContext}),c){case"image":await this.__processImageOverride(o,l,u);break;case"color":await this.__processColorOverride(o,l,u);break;case"number":await this.__processNumberOverride(o,l,u);break}}}}}__applyFinalPropertyValue(e,t,n){let s=n;const r=e.split(".");r.length===2&&(s=s[r[0]],e=r[1]),!(!s||!(e in s))&&(s[e]=t)}async __processImageOverride(e,t,n){const s=new URL(t,`${this.asset.assetRootDir}overrides/`).href,r=await this.__textureLoader.loadAsync(s).catch(a=>{window.epigraph.logger.error({title:`Couldn't load texture: ${s}`,details:a,contextOverride:"ASSET ENTITY"})});if(r){const a=e.split(".")[0],o=n[a];o?.userData?.__isOverrideTexture&&o.dispose(),r.flipY=!1,r.userData.__isOverrideTexture=!0,this.__applyFinalPropertyValue(e,r,n)}}__processColorOverride(e,t,n){const s=JSON.parse(t),r=new we(s[0],s[1],s[2]);this.__applyFinalPropertyValue(e,r,n)}__processNumberOverride(e,t,n){this.__applyFinalPropertyValue(e,parseFloat(t),n)}highlight(){this.traverseVisible(e=>{const t=e;if(t.isMesh){const n=t.material;if(!n.emissive)return;(n.emissive.r>0||n.emissive.g>0||n.emissive.b>0)&&(n.userData.epgData={orignalEmissive:n.emissive.clone(),originalEmissiveIntensity:n.emissiveIntensity}),n.emissive.r=1,n.emissive.g=1,n.emissive.b=1,n.emissiveIntensity=1}})}unhighlight(){this.traverseVisible(e=>{const t=e;if(t.isMesh){const n=t.material;if(!n.emissive)return;const s=n?.userData?.epgData?.orignalEmissive;s?(n.emissive.r=s.r,n.emissive.g=s.g,n.emissive.b=s.b):(n.emissive.r=0,n.emissive.g=0,n.emissive.b=0);const r=n?.userData?.epgData?.orignalEmissiveIntensity;n.emissiveIntensity=r!==void 0?r:0}})}}class l6 extends Dn{constructor(e){super(),this.name="PROXY",this.__assetEntity=e}get asset(){return this.__assetEntity.asset}}class c6 extends Dn{constructor(e){super(),this.name="HOTSPOTS",this.__assetEntity=e}get asset(){return this.__assetEntity.asset}}class Nl extends Z8{constructor(e,t){super(),this.epgType="ENTITY_ASSET",this._loggerContext="ASSET ENTITY",this.__autoGeneratedProxy=new Dn,this.__animationMixer=null,this.__animations=new Map,this.name=e.name,this.__appWcRef=t,this.__proxyEntity=new l6(this),this.add(this.__proxyEntity),this.__renderEntity=new o6(this,this.__appWcRef.loaders.textureLoader),this.add(this.__renderEntity),this.__hotspotsEntity=new c6(this),this.add(this.__hotspotsEntity),this.__asset=e}get asset(){return this.__asset}get isRoot(){return this.name.toLowerCase()==="root"}get proxyEntity(){return this.__proxyEntity}get renderEntity(){return this.__renderEntity}get activeFinish(){return this.__renderEntity.activeFinish}get allAssetFinishes(){return this.__renderEntity.allAssetFinishes}get allFinishIds(){return this.__renderEntity.allFinishIds}highlight(){this.__renderEntity.highlight()}unhighlight(){this.__renderEntity.unhighlight()}addHotspot(e){e.entity.name=`HOTSPOT-${this.asset.name}-${crypto.randomUUID()}`,e.entity.userData.epgId=e.hotspotId,e.entity.position.set(e.config.position.x,e.config.position.y,e.config.position.z),this.__hotspotsEntity.add(e.entity)}removeHotspot(e){let t;this.__hotspotsEntity.traverse(n=>{n.userData.epgId===e&&(t=n)}),t&&(t.removeFromParent(),vt.dispose3(t))}isRenderingMesh(){return this.__appWcRef.productSettings.render.mode===Qa.GEO}isRenderingSplats(){return this.__appWcRef.productSettings.render.mode===Qa.SPLAT}async selectAssetFinish(e){return this.__renderEntity.selectAssetFinish(e)}findPossibleConnectionsForAsset(e){const t=[];return window.epigraph.logger.info({title:"Getting connections for asset in scene:",details:e,contextOverride:this._loggerContext}),this.__proxyEntity.traverse(n=>{if(!(n instanceof ka))return;const s=n,r=e.proxyGltf?.plugs??[];for(const a of r)a.connectionId===s.connectionId&&t.push(new i6({name:a.connectionId,receiver:s,plug:a}))}),t}getAnimationMixer(){return this.__animationMixer}getAllAnimations(){return this.__animations}async initialize(){this.__asset.autoGenerateProxyEntity?(await this.__initializeRenderEntity(),await this.__initializeProxyEntity()):(await this.__initializeProxyEntity(),await this.__initializeRenderEntity())}async __initializeRenderEntity(){this.__appWcRef.productSettings.render.mode===Qa.GEO?(await this.__renderEntity.initializeRenderGeoEntity(),this.__updateAnimations()):await this.__renderEntity.initializeSplatEntity()}async __initializeProxyEntity(){let e=this.__asset.proxyGltf.resource?.scene.clone();if((!e||this.__asset.autoGenerateProxyEntity)&&(this.__autoGenerateProxyScene(),e=this.__autoGeneratedProxy),!e)return window.epigraph.logger.error({title:"Failed to load OR auto generate proxy asset",details:this.__asset,contextOverride:"ASSET ENTITY"}),Promise.reject();this.__proxyEntity.add(e),this.__proxyEntity.traverse(t=>{t instanceof Ke&&(t.userData.isProxyMesh=!0,t.visible=!1)})}__autoGenerateProxyScene(){window.epigraph.logger.info({title:"Attempting to auto generate proxy for asset...",details:this.__asset,contextOverride:"ASSET ENTITY"});const e=new Gs,t=new Rn({color:65280,opacity:.5,transparent:!0}),n=new Ke(e,t);n.name="AutoGeneratedProxyMesh",n.scale.set(this.__renderEntity.autoGeneratedBoundsSize.x,this.__renderEntity.autoGeneratedBoundsSize.y,this.__renderEntity.autoGeneratedBoundsSize.z);const s=new Dn;s.name="proxygeopivot";const r=new Lh(.01,10,10),a=new Rn({color:255,depthTest:!1}),o=new Ke(r,a);s.add(o),this.__proxyEntity.add(s),s.translateY(-this.__renderEntity.autoGeneratedBoundsSize.y*.5),s.attach(n),s.position.set(0,0,0),this.__proxyEntity.add(n),s.removeFromParent(),vt.dispose3(s),this.__autoGeneratedProxy.add(n)}__updateAnimations(){if(this.__asset.renderGltf&&(this.__animationMixer=null,this.__animations.clear(),this.__renderEntity.animations&&this.__asset.renderGltf.resource&&this.__asset.renderGltf.resource.animations.length>0)){this.__animationMixer=new NM(this.__renderEntity.children[0]);for(const e of this.__asset.renderGltf.resource.animations)this.__animations.set(e.name,this.__animationMixer.clipAction(e))}}}function $2(i,e,t,n){const s=Object.entries(i);class r extends Fn{static key=wr.generateUUID();constructor(o){super({uniforms:s.reduce((l,[c,u])=>{const h=ev.clone({[c]:{value:u}});return{...l,...h}},{}),vertexShader:e,fragmentShader:t});for(const[l]of s)Object.defineProperty(this,l,{get:()=>this.uniforms[l].value,set:c=>this.uniforms[l].value=c});Object.assign(this,o)}}return r}const h6=$2({},"void main() { }","void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }");function u6(i){return i.isLight}function d6(i){return!!i.geometry}const A6=$2({color:new we(0),blend:2,alphaTest:.75,opacity:0,map:null},`varying vec2 vUv;
12998
12998
  void main() {
@@ -13016,10 +13016,10 @@ void main() {
13016
13016
  `+r.fragmentShader.slice(a-1,-1)+`
13017
13017
  vec3 texelOld = texture2D(previousShadowMap, vUv).rgb;
13018
13018
  gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);
13019
- }`,r.uniforms.previousShadowMap=this.previousShadowMap,r.uniforms.averagingWindow=this.averagingWindow}}clear(){this.renderer.getClearColor(this.clearColor),this.clearAlpha=this.renderer.getClearAlpha(),this.renderer.setClearColor("black",1),this.renderer.setRenderTarget(this.progressiveLightMap1),this.renderer.clear(),this.renderer.setRenderTarget(this.progressiveLightMap2),this.renderer.clear(),this.renderer.setRenderTarget(null),this.renderer.setClearColor(this.clearColor,this.clearAlpha),this.lights=[],this.meshes=[],this.scene.traverse(e=>{d6(e)?this.meshes.push({object:e,material:e.material}):u6(e)&&this.lights.push({object:e,intensity:e.intensity})})}prepare(){this.lights.forEach(e=>e.object.intensity=0),this.meshes.forEach(e=>e.object.material=this.discardMat)}finish(){this.lights.forEach(e=>e.object.intensity=e.intensity),this.meshes.forEach(e=>e.object.material=e.material)}configure(e){this.object=e}update(e,t=100){if(!this.object)return;this.averagingWindow.value=t,this.object.material=this.targetMat;const n=this.buffer1Active?this.progressiveLightMap1:this.progressiveLightMap2,s=this.buffer1Active?this.progressiveLightMap2:this.progressiveLightMap1,r=this.scene.background;this.scene.background=null,this.renderer.setRenderTarget(n),this.previousShadowMap.value=s.texture,this.buffer1Active=!this.buffer1Active,this.renderer.render(this.scene,e),this.renderer.setRenderTarget(null),this.scene.background=r}}class f6{constructor({scene:e,targetRenderer:t,settings:n,appWcRef:s}){this.enabled=!0,this._loggerContext="ACCUMULATIVE SHADOWS",this.__settings={},this.__shadowParams={temporal:!1,limit:1/0},this.__lightParams={amount:6,intensity:parseInt(Kh.replace(/\D+/g,""))>=155?Math.PI:1,bias:.001,mapSize:1024,size:8,near:.5,far:200},this.api={count:0},this.__gLights=new Dn,this.__scene=e,this.__targetRenderer=t,this.__settings=n,this.__appWcRef=s,this.setup()}get camera(){return this.__camera}set camera(e){this.__camera=e}enable(){window.epigraph.logger.info({title:"Enabling Accumulative Shadows!",contextOverride:this._loggerContext}),this.enabled=!0,this.__groundPlane.visible=!0}disable(){window.epigraph.logger.info({title:"Disabling Accumulative Shadows!",contextOverride:this._loggerContext}),this.enabled=!1,this.__groundPlane.visible=!1}reset(){this.__progressiveLightMap.clear(),this.__shadowMaterial.opacity=0,this.__shadowMaterial.alphaTest=0,this.api.count=0,!this.__shadowParams.temporal&&this.__settings.shadowParams.frames!==1/0&&this.reCalculate(this.__settings.shadowParams.frames)}__setupEventListeners(){this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.structureChangedEvent.name,this.reset.bind(this)),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,()=>{const e=this.__appWcRef.productSettings.shadows.accumulativeShadows;this.__settings=e,this.reset()})}get groundPlane(){return this.__groundPlane}setup(){this.__progressiveLightMap=new p6(this.__targetRenderer,this.__scene,1024),this.__shadowMaterial=new A6({map:this.__progressiveLightMap.progressiveLightMap2.texture,transparent:!0,depthWrite:!1,toneMapped:!0,blend:this.__settings.shadowMaterial.blend,alphaTest:0,color:new we(this.__settings.shadowMaterial.color)}),this.__groundPlane=new Ke(new ms(1,1).rotateX(-Math.PI/2),this.__shadowMaterial),this.__groundPlane.name="ACCUMULATIVE_SHADOW_GROUND_PLANE",this.__groundPlane.scale.setScalar(this.__settings.shadowParams.scale),this.__groundPlane.receiveShadow=!0,this.__scene.add(this.__groundPlane),this.__progressiveLightMap.configure(this.__groundPlane);for(let e=0;e<this.__lightParams.amount;e++){const t=new dv(16777215,this.__lightParams.intensity/this.__lightParams.amount);t.name="dir_light_"+e,t.castShadow=!0,t.shadow.bias=this.__lightParams.bias,t.shadow.camera.near=this.__lightParams.near,t.shadow.camera.far=this.__lightParams.far,t.shadow.camera.right=this.__lightParams.size/2,t.shadow.camera.left=-this.__lightParams.size/2,t.shadow.camera.top=this.__lightParams.size/2,t.shadow.camera.bottom=-this.__lightParams.size/2,t.shadow.mapSize.width=this.__lightParams.mapSize,t.shadow.mapSize.height=this.__lightParams.mapSize,this.__gLights.add(t)}this.__setupEventListeners()}temporalUpdate(){this.enabled!==!1&&(this.__shadowParams.temporal||this.__settings.shadowParams.frames===1/0)&&this.api.count<this.__settings.shadowParams.frames&&this.api.count<this.__shadowParams.limit&&(this.reCalculate(),this.api.count++)}__randomiseLightPositions(){const e=Object.keys(this.__settings.light.direction).length;for(let t=0;t<this.__gLights.children.length;t++){const n=this.__gLights.children[t];if(Math.random()>this.__settings.shadowParams.ambient)n.position.set(this.__settings.light.direction.x+wr.randFloatSpread(this.__settings.shadowParams.radius),this.__settings.light.direction.y+wr.randFloatSpread(this.__settings.shadowParams.radius),this.__settings.light.direction.z+wr.randFloatSpread(this.__settings.shadowParams.radius));else{const s=Math.acos(2*Math.random()-1)-Math.PI/2,r=2*Math.PI*Math.random();n.position.set(Math.cos(s)*Math.cos(r)*e,Math.abs(Math.cos(s)*Math.sin(r)*e),Math.sin(s)*e)}}}reCalculate(e=1){if(this.__camera){this.__settings.shadowMaterial.blend=Math.max(2,this.__settings.shadowParams.frames===1/0?this.__settings.shadowMaterial.blend:this.__settings.shadowParams.frames),this.__shadowParams.temporal?(this.__shadowMaterial.opacity=Math.min(this.__settings.shadowMaterial.opacity,this.__shadowMaterial.opacity+this.__settings.shadowMaterial.opacity/this.__settings.shadowMaterial.blend),this.__shadowMaterial.alphaTest=Math.min(this.__settings.shadowMaterial.alphaTest,this.__shadowMaterial.alphaTest+this.__settings.shadowMaterial.alphaTest/this.__settings.shadowMaterial.blend),this.__shadowMaterial.color.set(this.__settings.shadowMaterial.color)):(this.__shadowMaterial.opacity=this.__settings.shadowMaterial.opacity,this.__shadowMaterial.color.set(this.__settings.shadowMaterial.color),this.__shadowMaterial.alphaTest=this.__settings.shadowMaterial.alphaTest),this.__scene.add(this.__gLights),this.__progressiveLightMap.prepare();for(let t=0;t<e;t++)this.__randomiseLightPositions(),this.__progressiveLightMap.update(this.__camera,this.__settings.shadowMaterial.blend);this.__scene.remove(this.__gLights),this.__progressiveLightMap.finish()}}}class g6{constructor({scene:e,sceneHierarchyToCastShadow:t,targetRenderer:n,settings:s,appWcRef:r}){this._loggerContext="CONTACT SHADOWS",this.__enabled=!0,this.__settings={},this.__shadowState={shadow:{blur:4,darkness:.6,opacity:1},plane:{color:"#ffffff",opacity:0},showWireframe:!1},this.__shadowGroup=new Dn,this.__blurPlane={},this.__renderTarget={},this.__renderTargetBlur={},this.__shadowCamera={},this.__depthMaterial={},this.__horizontalBlurMaterial={},this.__verticalBlurMaterial={},this.__planeMaterial={},this.__appWcRef=r,this.__scene=e,this.__sceneHierarchyToCastShadow=t,this.__targetRenderer=n,this.__settings=s,this.__shadowState.shadow.opacity=this.__settings.intensity,this.__shadowState.shadow.blur=this.__settings.softness,this.__planeMaterial.opacity=this.__settings.intensity,this.__planeMaterial.needsUpdate=!0,this.setup()}isEnabled(){return this.__enabled}enable(){window.epigraph.logger.info({title:"Enabling Contact Shadows!",contextOverride:this._loggerContext}),this.__enabled=!0,this.__shadowGroup.visible=!0}disable(){window.epigraph.logger.info({title:"Disabling Contact Shadows!",contextOverride:this._loggerContext}),this.__enabled=!1,this.__shadowGroup.visible=!1}updateSettings(e){this.__settings=e,this.updateShadowIntensity(),this.updateShadowSoftness()}updateShadowSoftness(){this.__shadowState.shadow.blur=this.__settings.softness}updateShadowIntensity(){this.__shadowState.shadow.opacity=this.__settings.intensity,this.__planeMaterial.opacity=this.__settings.intensity,this.__planeMaterial.needsUpdate=!0}dispose(){this.__renderTarget?.dispose(),this.__renderTargetBlur?.dispose(),this.__shadowGroup?.removeFromParent()}__blurShadow(e){this.__blurPlane.visible=!0,this.__blurPlane.material=this.__horizontalBlurMaterial,this.__blurPlane.material.uniforms.tDiffuse.value=this.__renderTarget.texture,this.__horizontalBlurMaterial.uniforms.h.value=e*1/256,this.__targetRenderer.setRenderTarget(this.__renderTargetBlur),this.__targetRenderer.render(this.__blurPlane,this.__shadowCamera),this.__blurPlane.material=this.__verticalBlurMaterial,this.__blurPlane.material.uniforms.tDiffuse.value=this.__renderTargetBlur.texture,this.__verticalBlurMaterial.uniforms.v.value=e*1/256,this.__targetRenderer.setRenderTarget(this.__renderTarget),this.__targetRenderer.render(this.__blurPlane,this.__shadowCamera),this.__blurPlane.visible=!1}__setupEventListeners(){this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,()=>{const e=this.__appWcRef.productSettings.shadows.contactShadows;this.updateSettings(e)})}setup(){if(!this.__enabled)return;const{planeLength:e,planeWidth:t,cameraHeight:n}=this.__settings,s=e,r=t,a=n;this.__shadowGroup.position.y=0,this.__scene.add(this.__shadowGroup),this.__renderTarget=new Qn(512,512),this.__renderTarget.texture.generateMipmaps=!1,this.__renderTargetBlur=new Qn(512,512),this.__renderTargetBlur.texture.generateMipmaps=!1;const o=new ms(r,s).rotateX(Math.PI/2);this.__planeMaterial=new Rn({map:this.__renderTarget.texture,opacity:this.__shadowState.shadow.opacity,transparent:!0,depthWrite:!1});const l=new Ke(o,this.__planeMaterial);l.renderOrder=1,this.__shadowGroup.add(l),l.scale.y=-1,this.__blurPlane=new Ke(o),this.__blurPlane.visible=!1,this.__shadowGroup.add(this.__blurPlane);const c=new Rn({color:this.__shadowState.plane.color,opacity:this.__shadowState.plane.opacity,transparent:!0,depthWrite:!1}),u=new Ke(o,c);u.rotateX(Math.PI),this.__shadowGroup.add(u),this.__shadowCamera=new Fr(-r/2,r/2,s/2,-s/2,0,a),this.__shadowCamera.rotation.x=Math.PI/2,this.__shadowGroup.add(this.__shadowCamera),this.__depthMaterial=new cv,this.__depthMaterial.userData.darkness={value:this.__shadowState.shadow.darkness},this.__depthMaterial.onBeforeCompile=h=>{h.uniforms.darkness=this.__depthMaterial.userData.darkness,h.fragmentShader=`
13019
+ }`,r.uniforms.previousShadowMap=this.previousShadowMap,r.uniforms.averagingWindow=this.averagingWindow}}clear(){this.renderer.getClearColor(this.clearColor),this.clearAlpha=this.renderer.getClearAlpha(),this.renderer.setClearColor("black",1),this.renderer.setRenderTarget(this.progressiveLightMap1),this.renderer.clear(),this.renderer.setRenderTarget(this.progressiveLightMap2),this.renderer.clear(),this.renderer.setRenderTarget(null),this.renderer.setClearColor(this.clearColor,this.clearAlpha),this.lights=[],this.meshes=[],this.scene.traverse(e=>{d6(e)?this.meshes.push({object:e,material:e.material}):u6(e)&&this.lights.push({object:e,intensity:e.intensity})})}prepare(){this.lights.forEach(e=>e.object.intensity=0),this.meshes.forEach(e=>e.object.material=this.discardMat)}finish(){this.lights.forEach(e=>e.object.intensity=e.intensity),this.meshes.forEach(e=>e.object.material=e.material)}configure(e){this.object=e}update(e,t=100){if(!this.object)return;this.averagingWindow.value=t,this.object.material=this.targetMat;const n=this.buffer1Active?this.progressiveLightMap1:this.progressiveLightMap2,s=this.buffer1Active?this.progressiveLightMap2:this.progressiveLightMap1,r=this.scene.background;this.scene.background=null,this.renderer.setRenderTarget(n),this.previousShadowMap.value=s.texture,this.buffer1Active=!this.buffer1Active,this.renderer.render(this.scene,e),this.renderer.setRenderTarget(null),this.scene.background=r}}class f6{constructor({scene:e,targetRenderer:t,settings:n,appWcRef:s}){this.enabled=!0,this._loggerContext="ACCUMULATIVE SHADOWS",this.__settings={},this.__shadowParams={temporal:!1,limit:1/0},this.__lightParams={amount:6,intensity:parseInt(Kh.replace(/\D+/g,""))>=155?Math.PI:1,bias:.001,mapSize:1024,size:8,near:.5,far:200},this.api={count:0},this.__gLights=new Dn,this.__scene=e,this.__targetRenderer=t,this.__settings=n,this.__appWcRef=s,this.setup()}get camera(){return this.__camera}set camera(e){this.__camera=e}enable(){window.epigraph.logger.info({title:"Enabling Accumulative Shadows!",contextOverride:this._loggerContext}),this.enabled=!0,this.__groundPlane.visible=!0}disable(){window.epigraph.logger.info({title:"Disabling Accumulative Shadows!",contextOverride:this._loggerContext}),this.enabled=!1,this.__groundPlane.visible=!1}reset(){this.__progressiveLightMap.clear(),this.__shadowMaterial.opacity=0,this.__shadowMaterial.alphaTest=0,this.api.count=0,!this.__shadowParams.temporal&&this.__settings.shadowParams.frames!==1/0&&this.reCalculate(this.__settings.shadowParams.frames)}__setupEventListeners(){this.__onStructureChanged=this.reset.bind(this),this.__onProductSettingUpdated=()=>{const e=this.__appWcRef.productSettings.shadows.accumulativeShadows;this.__settings=e,this.reset()},this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.structureChangedEvent.name,this.__onStructureChanged),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,this.__onProductSettingUpdated)}dispose(){window.epigraph.logger.info({title:"Disposing Accumulative Shadows!",contextOverride:this._loggerContext}),this.__onStructureChanged&&this.__appWcRef.removeEventListener(this.__appWcRef.eventsManager.structureChangedEvent.name,this.__onStructureChanged),this.__onProductSettingUpdated&&this.__appWcRef.removeEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,this.__onProductSettingUpdated),this.__groundPlane&&(this.__scene.remove(this.__groundPlane),this.__groundPlane.geometry.dispose()),this.__shadowMaterial&&this.__shadowMaterial.dispose(),this.__scene.remove(this.__gLights);for(const e of[...this.__gLights.children]){const t=e;t.shadow&&(t.shadow.map&&(t.shadow.map.dispose(),t.shadow.map=null),t.shadow.dispose?.()),t.dispose?.(),this.__gLights.remove(t)}this.__progressiveLightMap&&(this.__progressiveLightMap.progressiveLightMap1?.dispose(),this.__progressiveLightMap.progressiveLightMap2?.dispose(),this.__progressiveLightMap.discardMat?.dispose(),this.__progressiveLightMap.targetMat?.dispose()),this.gui&&this.gui.destroy()}get groundPlane(){return this.__groundPlane}setup(){this.__progressiveLightMap=new p6(this.__targetRenderer,this.__scene,1024),this.__shadowMaterial=new A6({map:this.__progressiveLightMap.progressiveLightMap2.texture,transparent:!0,depthWrite:!1,toneMapped:!0,blend:this.__settings.shadowMaterial.blend,alphaTest:0,color:new we(this.__settings.shadowMaterial.color)}),this.__groundPlane=new Ke(new ms(1,1).rotateX(-Math.PI/2),this.__shadowMaterial),this.__groundPlane.name="ACCUMULATIVE_SHADOW_GROUND_PLANE",this.__groundPlane.scale.setScalar(this.__settings.shadowParams.scale),this.__groundPlane.receiveShadow=!0,this.__scene.add(this.__groundPlane),this.__progressiveLightMap.configure(this.__groundPlane);for(let e=0;e<this.__lightParams.amount;e++){const t=new dv(16777215,this.__lightParams.intensity/this.__lightParams.amount);t.name="dir_light_"+e,t.castShadow=!0,t.shadow.bias=this.__lightParams.bias,t.shadow.camera.near=this.__lightParams.near,t.shadow.camera.far=this.__lightParams.far,t.shadow.camera.right=this.__lightParams.size/2,t.shadow.camera.left=-this.__lightParams.size/2,t.shadow.camera.top=this.__lightParams.size/2,t.shadow.camera.bottom=-this.__lightParams.size/2,t.shadow.mapSize.width=this.__lightParams.mapSize,t.shadow.mapSize.height=this.__lightParams.mapSize,this.__gLights.add(t)}this.__setupEventListeners()}temporalUpdate(){this.enabled!==!1&&(this.__shadowParams.temporal||this.__settings.shadowParams.frames===1/0)&&this.api.count<this.__settings.shadowParams.frames&&this.api.count<this.__shadowParams.limit&&(this.reCalculate(),this.api.count++)}__randomiseLightPositions(){const e=Object.keys(this.__settings.light.direction).length;for(let t=0;t<this.__gLights.children.length;t++){const n=this.__gLights.children[t];if(Math.random()>this.__settings.shadowParams.ambient)n.position.set(this.__settings.light.direction.x+wr.randFloatSpread(this.__settings.shadowParams.radius),this.__settings.light.direction.y+wr.randFloatSpread(this.__settings.shadowParams.radius),this.__settings.light.direction.z+wr.randFloatSpread(this.__settings.shadowParams.radius));else{const s=Math.acos(2*Math.random()-1)-Math.PI/2,r=2*Math.PI*Math.random();n.position.set(Math.cos(s)*Math.cos(r)*e,Math.abs(Math.cos(s)*Math.sin(r)*e),Math.sin(s)*e)}}}reCalculate(e=1){if(this.__camera){this.__settings.shadowMaterial.blend=Math.max(2,this.__settings.shadowParams.frames===1/0?this.__settings.shadowMaterial.blend:this.__settings.shadowParams.frames),this.__shadowParams.temporal?(this.__shadowMaterial.opacity=Math.min(this.__settings.shadowMaterial.opacity,this.__shadowMaterial.opacity+this.__settings.shadowMaterial.opacity/this.__settings.shadowMaterial.blend),this.__shadowMaterial.alphaTest=Math.min(this.__settings.shadowMaterial.alphaTest,this.__shadowMaterial.alphaTest+this.__settings.shadowMaterial.alphaTest/this.__settings.shadowMaterial.blend),this.__shadowMaterial.color.set(this.__settings.shadowMaterial.color)):(this.__shadowMaterial.opacity=this.__settings.shadowMaterial.opacity,this.__shadowMaterial.color.set(this.__settings.shadowMaterial.color),this.__shadowMaterial.alphaTest=this.__settings.shadowMaterial.alphaTest),this.__scene.add(this.__gLights),this.__progressiveLightMap.prepare();for(let t=0;t<e;t++)this.__randomiseLightPositions(),this.__progressiveLightMap.update(this.__camera,this.__settings.shadowMaterial.blend);this.__scene.remove(this.__gLights),this.__progressiveLightMap.finish()}}}class g6{constructor({scene:e,sceneHierarchyToCastShadow:t,targetRenderer:n,settings:s,appWcRef:r}){this._loggerContext="CONTACT SHADOWS",this.__enabled=!0,this.__settings={},this.__shadowState={shadow:{blur:4,darkness:.6,opacity:1},plane:{color:"#ffffff",opacity:0},showWireframe:!1},this.__shadowGroup=new Dn,this.__blurPlane={},this.__renderTarget={},this.__renderTargetBlur={},this.__shadowCamera={},this.__depthMaterial={},this.__horizontalBlurMaterial={},this.__verticalBlurMaterial={},this.__planeMaterial={},this.__appWcRef=r,this.__scene=e,this.__sceneHierarchyToCastShadow=t,this.__targetRenderer=n,this.__settings=s,this.__shadowState.shadow.opacity=this.__settings.intensity,this.__shadowState.shadow.blur=this.__settings.softness,this.__planeMaterial.opacity=this.__settings.intensity,this.__planeMaterial.needsUpdate=!0,this.setup()}isEnabled(){return this.__enabled}enable(){window.epigraph.logger.info({title:"Enabling Contact Shadows!",contextOverride:this._loggerContext}),this.__enabled=!0,this.__shadowGroup.visible=!0}disable(){window.epigraph.logger.info({title:"Disabling Contact Shadows!",contextOverride:this._loggerContext}),this.__enabled=!1,this.__shadowGroup.visible=!1}updateSettings(e){this.__settings=e,this.updateShadowIntensity(),this.updateShadowSoftness()}updateShadowSoftness(){this.__shadowState.shadow.blur=this.__settings.softness}updateShadowIntensity(){this.__shadowState.shadow.opacity=this.__settings.intensity,this.__planeMaterial.opacity=this.__settings.intensity,this.__planeMaterial.needsUpdate=!0}dispose(){window.epigraph.logger.info({title:"Disposing Contact Shadows!",contextOverride:this._loggerContext}),this.__onProductSettingUpdated&&this.__appWcRef.removeEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,this.__onProductSettingUpdated),this.__renderTarget?.dispose(),this.__renderTargetBlur?.dispose(),this.__planeGeometry?.dispose(),this.__planeMaterial?.dispose?.(),this.__fillPlaneMaterial?.dispose?.(),this.__depthMaterial?.dispose?.(),this.__horizontalBlurMaterial?.dispose?.(),this.__verticalBlurMaterial?.dispose?.(),this.__shadowGroup?.removeFromParent(),this.__shadowGroup?.clear()}__blurShadow(e){this.__blurPlane.visible=!0,this.__blurPlane.material=this.__horizontalBlurMaterial,this.__blurPlane.material.uniforms.tDiffuse.value=this.__renderTarget.texture,this.__horizontalBlurMaterial.uniforms.h.value=e*1/256,this.__targetRenderer.setRenderTarget(this.__renderTargetBlur),this.__targetRenderer.render(this.__blurPlane,this.__shadowCamera),this.__blurPlane.material=this.__verticalBlurMaterial,this.__blurPlane.material.uniforms.tDiffuse.value=this.__renderTargetBlur.texture,this.__verticalBlurMaterial.uniforms.v.value=e*1/256,this.__targetRenderer.setRenderTarget(this.__renderTarget),this.__targetRenderer.render(this.__blurPlane,this.__shadowCamera),this.__blurPlane.visible=!1}__setupEventListeners(){this.__onProductSettingUpdated=()=>{const e=this.__appWcRef.productSettings.shadows.contactShadows;this.updateSettings(e)},this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,this.__onProductSettingUpdated)}setup(){if(!this.__enabled)return;const{planeLength:e,planeWidth:t,cameraHeight:n}=this.__settings,s=e,r=t,a=n;this.__shadowGroup.position.y=0,this.__scene.add(this.__shadowGroup),this.__renderTarget=new Qn(512,512),this.__renderTarget.texture.generateMipmaps=!1,this.__renderTargetBlur=new Qn(512,512),this.__renderTargetBlur.texture.generateMipmaps=!1;const o=new ms(r,s).rotateX(Math.PI/2);this.__planeGeometry=o,this.__planeMaterial=new Rn({map:this.__renderTarget.texture,opacity:this.__shadowState.shadow.opacity,transparent:!0,depthWrite:!1});const l=new Ke(o,this.__planeMaterial);l.renderOrder=1,this.__shadowGroup.add(l),l.scale.y=-1,this.__blurPlane=new Ke(o),this.__blurPlane.visible=!1,this.__shadowGroup.add(this.__blurPlane),this.__fillPlaneMaterial=new Rn({color:this.__shadowState.plane.color,opacity:this.__shadowState.plane.opacity,transparent:!0,depthWrite:!1});const c=new Ke(o,this.__fillPlaneMaterial);c.rotateX(Math.PI),this.__shadowGroup.add(c),this.__shadowCamera=new Fr(-r/2,r/2,s/2,-s/2,0,a),this.__shadowCamera.rotation.x=Math.PI/2,this.__shadowGroup.add(this.__shadowCamera),this.__depthMaterial=new cv,this.__depthMaterial.userData.darkness={value:this.__shadowState.shadow.darkness},this.__depthMaterial.onBeforeCompile=u=>{u.uniforms.darkness=this.__depthMaterial.userData.darkness,u.fragmentShader=`
13020
13020
  uniform float darkness;
13021
- ${h.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );")}
13022
- `},this.__depthMaterial.depthTest=!1,this.__depthMaterial.depthWrite=!1,this.__horizontalBlurMaterial=new Fn(jR),this.__horizontalBlurMaterial.depthTest=!1,this.__verticalBlurMaterial=new Fn(XR),this.__verticalBlurMaterial.depthTest=!1,this.__setupEventListeners()}reCalculate(){const e=this.__scene.background;this.__scene.background=null,this.__scene.overrideMaterial=this.__depthMaterial;const t=this.__targetRenderer.getClearAlpha();this.__targetRenderer.setClearAlpha(0),this.__targetRenderer.setRenderTarget(this.__renderTarget),this.__targetRenderer.render(this.__sceneHierarchyToCastShadow,this.__shadowCamera),this.__scene.overrideMaterial=null,this.__blurShadow(this.__shadowState.shadow.blur),this.__blurShadow(this.__shadowState.shadow.blur*.4),this.__targetRenderer.setRenderTarget(null),this.__targetRenderer.setClearAlpha(t),this.__scene.background=e}}class m6{constructor(e,t,n,s,r){this.__appWcRef=e,this.__scene=t,this.__sceneHierarchyToCastShadow=n,this.__targetRenderer=s,this.__productSettings=r,this.init()}get accumulativeShadows(){return this.__accumulativeShadows}get contactShadows(){return this.__contactShadows}init(){this.updateShadowType(this.__productSettings.shadows.shadowType)}updateShadowType(e){switch(e){case"accumulative":this.__accumulativeShadows||(this.__accumulativeShadows=new f6({scene:this.__scene,targetRenderer:this.__targetRenderer,settings:this.__productSettings.shadows.accumulativeShadows,appWcRef:this.__appWcRef})),this.contactShadows?.disable(),this.accumulativeShadows?.enable();break;case"contact":this.__contactShadows||(this.__contactShadows=new g6({scene:this.__scene,sceneHierarchyToCastShadow:this.__sceneHierarchyToCastShadow,targetRenderer:this.__targetRenderer,settings:this.__productSettings.shadows.contactShadows,appWcRef:this.__appWcRef})),this.accumulativeShadows?.disable(),this.contactShadows?.enable();break;case"none":this.accumulativeShadows?.disable(),this.contactShadows?.disable();break}}}class y6{constructor(){this.textureUtils=null}setTextureUtils(e){this.textureUtils=e}parse(e,t,n,s){this.parseAsync(e,s).then(t).catch(n)}async parseAsync(e,t={}){t=Object.assign({ar:{anchoring:{type:"plane"},planeAnchoring:{alignment:"horizontal"}},includeAnchoringProperties:!0,quickLookCompatible:!1,maxTextureSize:1024},t);const n={},s="model.usda";n[s]=null;let r=V2();r+=_6(t);const a={},o={};e.traverseVisible(c=>{if(c.isMesh){const u=c.geometry,h=c.material;if(h.isMeshStandardMaterial){const A="geometries/Geometry_"+u.id+".usda";if(!(A in n)){const d=I6(u);n[A]=v6(d)}h.uuid in a||(a[h.uuid]=h),r+=x6(c,u,h)}else console.warn("THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)",c)}else c.isCamera&&(r+=Q6(c))}),r+=b6(),r+=M6(a,o,t.quickLookCompatible),n[s]=zh(r),r=null;for(const c in o){let u=o[c];if(u.isCompressedTexture===!0){if(this.textureUtils===null)throw new Error("THREE.USDZExporter: setTextureUtils() must be called to process compressed textures.");u=await this.textureUtils.decompress(u)}const h=E6(u.image,u.flipY,t.maxTextureSize),A=await new Promise(d=>h.toBlob(d,"image/png",1));n[`textures/Texture_${c}.png`]=new Uint8Array(await A.arrayBuffer())}let l=0;for(const c in n){const u=n[c],h=34+c.length;l+=h;const A=l&63;if(A!==4){const d=64-A,p=new Uint8Array(d);n[c]=[u,{extra:{12345:p}}]}l=u.length}return K1(n,{level:0})}}function E6(i,e,t){if(typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&i instanceof ImageBitmap){const n=t/Math.max(i.width,i.height),s=document.createElement("canvas");s.width=i.width*Math.min(1,n),s.height=i.height*Math.min(1,n);const r=s.getContext("2d");return e===!0&&(r.translate(0,s.height),r.scale(1,-1)),r.drawImage(i,0,0,s.width,s.height),s}else throw new Error("THREE.USDZExporter: No valid image data found. Unable to process texture.")}const xi=7;function V2(){return`#usda 1.0
13021
+ ${u.fragmentShader.replace("gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );","gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * darkness );")}
13022
+ `},this.__depthMaterial.depthTest=!1,this.__depthMaterial.depthWrite=!1,this.__horizontalBlurMaterial=new Fn(jR),this.__horizontalBlurMaterial.depthTest=!1,this.__verticalBlurMaterial=new Fn(XR),this.__verticalBlurMaterial.depthTest=!1,this.__setupEventListeners()}reCalculate(){const e=this.__scene.background;this.__scene.background=null,this.__scene.overrideMaterial=this.__depthMaterial;const t=this.__targetRenderer.getClearAlpha();this.__targetRenderer.setClearAlpha(0),this.__targetRenderer.setRenderTarget(this.__renderTarget),this.__targetRenderer.render(this.__sceneHierarchyToCastShadow,this.__shadowCamera),this.__scene.overrideMaterial=null,this.__blurShadow(this.__shadowState.shadow.blur),this.__blurShadow(this.__shadowState.shadow.blur*.4),this.__targetRenderer.setRenderTarget(null),this.__targetRenderer.setClearAlpha(t),this.__scene.background=e}}class m6{constructor(e,t,n,s,r){this.__appWcRef=e,this.__scene=t,this.__sceneHierarchyToCastShadow=n,this.__targetRenderer=s,this.__productSettings=r,this.init()}get accumulativeShadows(){return this.__accumulativeShadows}get contactShadows(){return this.__contactShadows}init(){this.updateShadowType(this.__productSettings.shadows.shadowType)}dispose(){this.__accumulativeShadows&&(this.__accumulativeShadows.dispose(),this.__accumulativeShadows=void 0),this.__contactShadows&&(this.__contactShadows.dispose(),this.__contactShadows=void 0)}updateShadowType(e){switch(e){case"accumulative":this.__accumulativeShadows||(this.__accumulativeShadows=new f6({scene:this.__scene,targetRenderer:this.__targetRenderer,settings:this.__productSettings.shadows.accumulativeShadows,appWcRef:this.__appWcRef})),this.contactShadows?.disable(),this.accumulativeShadows?.enable();break;case"contact":this.__contactShadows||(this.__contactShadows=new g6({scene:this.__scene,sceneHierarchyToCastShadow:this.__sceneHierarchyToCastShadow,targetRenderer:this.__targetRenderer,settings:this.__productSettings.shadows.contactShadows,appWcRef:this.__appWcRef})),this.accumulativeShadows?.disable(),this.contactShadows?.enable();break;case"none":this.accumulativeShadows?.disable(),this.contactShadows?.disable();break}}}class y6{constructor(){this.textureUtils=null}setTextureUtils(e){this.textureUtils=e}parse(e,t,n,s){this.parseAsync(e,s).then(t).catch(n)}async parseAsync(e,t={}){t=Object.assign({ar:{anchoring:{type:"plane"},planeAnchoring:{alignment:"horizontal"}},includeAnchoringProperties:!0,quickLookCompatible:!1,maxTextureSize:1024},t);const n={},s="model.usda";n[s]=null;let r=V2();r+=_6(t);const a={},o={};e.traverseVisible(c=>{if(c.isMesh){const u=c.geometry,h=c.material;if(h.isMeshStandardMaterial){const A="geometries/Geometry_"+u.id+".usda";if(!(A in n)){const d=I6(u);n[A]=v6(d)}h.uuid in a||(a[h.uuid]=h),r+=x6(c,u,h)}else console.warn("THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)",c)}else c.isCamera&&(r+=Q6(c))}),r+=b6(),r+=M6(a,o,t.quickLookCompatible),n[s]=zh(r),r=null;for(const c in o){let u=o[c];if(u.isCompressedTexture===!0){if(this.textureUtils===null)throw new Error("THREE.USDZExporter: setTextureUtils() must be called to process compressed textures.");u=await this.textureUtils.decompress(u)}const h=E6(u.image,u.flipY,t.maxTextureSize),A=await new Promise(d=>h.toBlob(d,"image/png",1));n[`textures/Texture_${c}.png`]=new Uint8Array(await A.arrayBuffer())}let l=0;for(const c in n){const u=n[c],h=34+c.length;l+=h;const A=l&63;if(A!==4){const d=64-A,p=new Uint8Array(d);n[c]=[u,{extra:{12345:p}}]}l=u.length}return K1(n,{level:0})}}function E6(i,e,t){if(typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas||typeof ImageBitmap<"u"&&i instanceof ImageBitmap){const n=t/Math.max(i.width,i.height),s=document.createElement("canvas");s.width=i.width*Math.min(1,n),s.height=i.height*Math.min(1,n);const r=s.getContext("2d");return e===!0&&(r.translate(0,s.height),r.scale(1,-1)),r.drawImage(i,0,0,s.width,s.height),s}else throw new Error("THREE.USDZExporter: No valid image data found. Unable to process texture.")}const xi=7;function V2(){return`#usda 1.0
13023
13023
  (
13024
13024
  customLayerData = {
13025
13025
  string creator = "Three.js USDZExporter"
@@ -13165,7 +13165,7 @@ ${r.join(`
13165
13165
  float verticalAperture = ${i.getFilmHeight().toPrecision(xi)}
13166
13166
  }
13167
13167
 
13168
- `}const L6=Math.PI/180;function uw(i,e,t){return(1-t)*i+t*e}function Mc(i){return i*L6}var El=(i=>(i.NONE="none",i.CONTACT="contact",i.ACCUMULATIVE="accumulative",i))(El||{});class N6{constructor(){this.frameCount=0,this.startTime=performance.now(),this.lastInterval=performance.now(),this.averageFps=0,this.isTracking=!0}update(){if(!this.isTracking)return;this.frameCount++;const t=(performance.now()-this.lastInterval)/1e3;return this.averageFps=this.frameCount/t,this.averageFps}reset(){this.lastInterval=performance.now(),this.averageFps=0,this.frameCount=0}getReport(){return{averageFps:Math.round(this.averageFps),totalFrames:this.frameCount,duration:((performance.now()-this.lastInterval)/1e3).toFixed(2)+"s"}}stop(){this.isTracking=!1}}class P6 extends EventTarget{constructor(e){super(),this._loggerContext="THREEJS ENGINE",this.__performanceTracker=new N6,this.__scene=new wo,this.__tweenGroup=new jM,this.__clock=new rm,this.__effectsComposer={},this.__canvas={},this.__mainRenderer={},this.__sparkRenderer=void 0,this.__textRenderer={},this.__screenshotRenderer={},this.__currentEnvMapUrl="",this.__sceneHierarchy={baseSceneGrp:new Dn,lightsGrp:new Dn,sceneStructure:{},dimensionLinesGrp:new Dn,miscGrp:new Dn},this.__lengthLine={},this.__depthLine={},this.__heightLine={},this.__textureAnisotropyToUse=4,this.__pauseRendering=!1,this.__currentDpr=Math.min(window.devicePixelRatio,2),this.__clampedDpr=Math.min(window.devicePixelRatio,2),this.__boundPerFrameUpdate=this.__perFrameUpdate.bind(this),this.__appWcRef=e,this.__sceneHierarchy.sceneStructure=this.__appWcRef.sceneManager.sceneStructure}get canvas(){return this.__canvas}get scene(){return this.__scene}get productSettings(){return this.__appWcRef.productSettings}get mainRenderer(){return this.__mainRenderer}get sparkRenderer(){return this.__sparkRenderer}get textRenderer(){return this.__textRenderer}get effectsComposer(){return this.__effectsComposer}get screenshotRenderer(){return this.__screenshotRenderer}get sceneHierarchy(){return this.__sceneHierarchy}get contactShadows(){return this.__shadowManager.contactShadows}get accumulativeShadows(){return this.__shadowManager.accumulativeShadows}getClockDelta(){return this.__clock.getDelta()}get tweenGroup(){return this.__tweenGroup}pauseRendering(e=!1){e||this.__appWcRef.showTransitionScreen(),this.__pauseRendering=!0}unpauseRendering(){this.__appWcRef.hideTransitionScreen(),this.__pauseRendering=!1}updateAllTextureAnisotropy(){this.__scene.traverse(e=>{const n=e.material;n?.map&&(n.map.anisotropy=this.__textureAnisotropyToUse,n.needsUpdate=!0)})}printSceneHierarchy(e=!1){(function t(n){if(e===!0)console.group(`------ ${n.name} ------`),console.log(n);else{const s="epgType"in n?n.epgType:n.type;console.group(" <"+s+"> "+n.name)}n.children.forEach(t),console.groupEnd()})(this.__scene)}printSceneStructure(){let e="--";(function t(n){if(n instanceof Nl||n instanceof ka){const s=n.epgType;console.group(`${e} < ${s} > ${n.name} || ${n.uuid}`),e+="--|"}n.children.forEach(t),console.groupEnd()})(this.__sceneHierarchy.sceneStructure)}async emptyScene(){vt.dispose3(this.scene),this.__sceneHierarchy.baseSceneGrp.clear(),this.__sceneHierarchy.lightsGrp.clear();const e=[];this.__sceneHierarchy.sceneStructure.rootEntity.traverse(t=>{t.uuid!==this.__sceneHierarchy.sceneStructure.rootEntity.uuid&&(t instanceof Nl&&e.push(t),t instanceof Hh&&e.push(t))});for(const t of e)t.removeFromParent(),vt.dispose3(t)}async destroy(){cancelAnimationFrame(this.__rafId),await this.emptyScene(),this.__scene.environment?.dispose(),this.__scene.environment=null,this.contactShadows?.dispose(),this.__mainRenderer?.dispose(),this.__screenshotRenderer&&"dispose"in this.__screenshotRenderer&&this.__screenshotRenderer?.dispose(),this.__effectsComposer&&this.__effectsComposer.dispose()}async _setupSceneHierarchy(){this.__sceneHierarchy.baseSceneGrp.name="GRP_BASE_SCENE",this.__scene.add(this.__sceneHierarchy.baseSceneGrp),this.__sceneHierarchy.lightsGrp.name="GRP_LIGHTS",this.__scene.add(this.__sceneHierarchy.lightsGrp),this.__scene.add(this.__sceneHierarchy.sceneStructure),this.__sceneHierarchy.dimensionLinesGrp.name="GRP_DIMENSIONS_LINES",this.__scene.add(this.__sceneHierarchy.dimensionLinesGrp),this.__sceneHierarchy.miscGrp.name="GRP_MISC",this.__scene.add(this.__sceneHierarchy.miscGrp)}async updateEnvMap(e=this.__appWcRef.productSettings.render.envMap,t=this.__appWcRef.productSettings.render.envMapRotation){if(e===this.__currentEnvMapUrl){this.__scene.environmentRotation.x=Mc(t.x),this.__scene.environmentRotation.y=Mc(t.y),this.__scene.environmentRotation.z=Mc(t.z);return}const n=this.__scene.environment,s=await this.__appWcRef.loaders.rgbeLoader.loadAsync(e);s.mapping=iA,this.__scene.environment=s,n?.dispose(),this.__currentEnvMapUrl=e,this.__scene.environmentRotation.x=Mc(t.x),this.__scene.environmentRotation.y=Mc(t.y),this.__scene.environmentRotation.z=Mc(t.z)}async _setupLights(){this.__mainRenderer.outputColorSpace=jt,this.__mainRenderer.toneMapping=jg,await this.updateEnvMap()}__setupEffectComposer(){this.__effectsComposer=new p5(this.__mainRenderer),window.epigraph.logger.info({title:"Effects to enable",details:this.productSettings.postEffect,contextOverride:this._loggerContext})}__constructLineSegment(e,t,n){const s=[e,t],r=new gn().setFromPoints(s),a=new Gl(r,n);return a.castShadow=!1,a}__setupDimensionLines(){const e={color:new we().setHex(11776947).convertSRGBToLinear(),scale:1,dashSize:.02,gapSize:.02},t=new A0(e),n=new A0(e),s=new A0(e),r=new Q;this.__lengthLine=this.__constructLineSegment(r,r,t),this.__depthLine=this.__constructLineSegment(r,r,n),this.__heightLine=this.__constructLineSegment(r,r,s),this.__sceneHierarchy.dimensionLinesGrp.add(this.__lengthLine),this.__sceneHierarchy.dimensionLinesGrp.add(this.__depthLine),this.__sceneHierarchy.dimensionLinesGrp.add(this.__heightLine),this.setDimensionsVisibility(!1)}updateDimensionLines(e){this.__lengthLine.geometry?.setFromPoints([e.length.begin.worldPos,e.length.end.worldPos]),this.__depthLine.geometry?.setFromPoints([e.width.begin.worldPos,e.width.end.worldPos]),this.__heightLine.geometry?.setFromPoints([e.height.begin.worldPos,e.height.end.worldPos]),this.__lengthLine?.computeLineDistances(),this.__depthLine?.computeLineDistances(),this.__heightLine?.computeLineDistances()}frameUpdate(){this.__appWcRef.eventsManager.frameUpdated.fire()}repopulateHotspotIndicators(){this.__appWcRef.eventsManager.hotspotsUpdatedEvent.fire()}setDimensionsVisibility(e){this.__lengthLine.visible=e,this.__depthLine.visible=e,this.__heightLine.visible=e}async getSceneAsUsdzUrl(){const e=this.__sceneHierarchy.sceneStructure;this.printSceneHierarchy();const n=await new y6().parseAsync(e,{quickLookCompatible:!0}),s=new Blob([n],{type:"model/vnd.usdz+zip"});return URL.createObjectURL(s)}async getSceneAsGlbUrl(){const e=new nz;e.registerExtensions([Q1]);const t=new vA,s=this.__sceneHierarchy.sceneStructure;this.printSceneHierarchy();const r={binary:!0,forceIndices:!0,trs:!1,onlyVisible:!0,embedImages:!0,maxTextureSize:1024},a=await t.parseAsync(s,r),o=await e.readBinary(new Uint8Array(a)),l=await this.optimizeGlb(o),c=await e.writeBinary(l);return await this.saveArrayBufferAsURL(c)}async optimizeGlb(e){const n=e.getRoot().listNodes();for(const s of n){s.setExtras({});const r=s.getName();(r==="GRP_ProxyMesh"||r==="GRP_LoadingPlaceholder")&&s.dispose()}return await e.transform(H4(),rH()),e}async saveArrayBufferAsURL(e){const t=new Blob([e],{type:"application/gltf-buffer"});return window.epigraph.logger.info({title:"Approx scene GLB size: "+t.size/1e6,contextOverride:this._loggerContext}),URL.createObjectURL(t)}__perFrameUpdate(){if(this.__pauseRendering){this.__rafId=requestAnimationFrame(this.__boundPerFrameUpdate);return}const e=this.__clock.getDelta();this.contactShadows?.isEnabled()&&this.contactShadows.reCalculate(),this.__appWcRef.postRenderFrameUpdateInEngine(e),this.__effectsComposer.render(),this.__tweenGroup.update(),this.__appWcRef.featuresToEnable.dimensions&&this.__appWcRef.dimensionsManager.repopulateDimensionIndicators(),this.__performanceTracker.update(),this.__rafId=requestAnimationFrame(this.__boundPerFrameUpdate)}setupSparkRendererIfNotExists(){this.__sparkRenderer||(this.__sparkRenderer=new tb({renderer:this.__mainRenderer,preBlurAmount:.3,blurAmount:0}),this.scene.add(this.__sparkRenderer))}__setupRenderers(){this.__mainRenderer=new vg({antialias:this.productSettings.renderQuality.antiAlias,alpha:this.__appWcRef.transparentBackground});const e=this.__appWcRef.canvasSize.width||this.__appWcRef.getBoundingClientRect().width||300,t=this.__appWcRef.canvasSize.height||this.__appWcRef.getBoundingClientRect().height||150;this.__mainRenderer.setSize(e,t),this.__appWcRef.transparentBackground||this.__mainRenderer.setClearColor(this.productSettings.camera.backgroundColor),this.productSettings.screenshots.enabled&&(this.__screenshotRenderer=new vg({antialias:this.productSettings.renderQuality.antiAlias,preserveDrawingBuffer:!0}),this.__screenshotRenderer.domElement.style.display="none"),this.__textRenderer=new WR,this.__textRenderer.setSize(e,t),this.__textRenderer.domElement.style.position="absolute",this.__textRenderer.domElement.style.top="0px",this.__textRenderer.domElement.style.pointerEvents="none"}showTextRenderer(){this.__textRenderer.domElement.style.display="block"}hideTextRenderer(){this.__textRenderer.domElement.style.display="none"}__setupShadows(){this.__mainRenderer.shadowMap.enabled=!0,this.__shadowManager||(this.__shadowManager=new m6(this.__appWcRef,this.__scene,this.__sceneHierarchy.sceneStructure,this.__mainRenderer,this.productSettings)),this.__shadowManager.updateShadowType(this.productSettings.shadows.shadowType)}__registerAdaptiveDprCalculations(e=6){const t=Math.min(window.devicePixelRatio,2);this.__clampedDpr=t,this.__currentDpr=t;let n=0;const s=setInterval(()=>{n++,this.__performanceTracker.averageFps<50&&(this.__currentDpr-=.2,this.__clampedDpr=parseFloat(Math.max(Math.min(this.__currentDpr,t),1).toFixed(2))),this.mainRenderer.setPixelRatio(this.__clampedDpr),this.effectsComposer.setPixelRatio(this.__clampedDpr),this.__performanceTracker.reset(),n>=e&&(clearInterval(s),this.__performanceTracker.stop())},2e3)}async setup(){this.__setupRenderers(),this.__canvas=this.__mainRenderer.domElement,await this._setupSceneHierarchy(),await this._setupLights(),this.__setupShadows(),this.__setupDimensionLines(),this.__setupEffectComposer();const e=this.__mainRenderer.capabilities.getMaxAnisotropy();e<this.__textureAnisotropyToUse&&(this.__textureAnisotropyToUse=e),this.__perFrameUpdate(),this.__registerAdaptiveDprCalculations();const t={canvasHtmlElem:this.__canvas,renderer:this.__mainRenderer,screenshotRenderer:this.__screenshotRenderer??void 0,textRendererElem:this.__textRenderer.domElement};return this.mainRenderer.setPixelRatio(this.__currentDpr),this.effectsComposer.setPixelRatio(this.__currentDpr),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,()=>{this.updateEnvMap()}),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.experienceUpdatedEvent.name,()=>{this.__setupShadows()}),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingsShadowTypeUpdatedEvent.name,(n=>{this.__shadowManager.updateShadowType(n.detail.shadowType)})),Promise.resolve(t)}}/*!
13168
+ `}const L6=Math.PI/180;function uw(i,e,t){return(1-t)*i+t*e}function Mc(i){return i*L6}var El=(i=>(i.NONE="none",i.CONTACT="contact",i.ACCUMULATIVE="accumulative",i))(El||{});class N6{constructor(){this.frameCount=0,this.startTime=performance.now(),this.lastInterval=performance.now(),this.averageFps=0,this.isTracking=!0}update(){if(!this.isTracking)return;this.frameCount++;const t=(performance.now()-this.lastInterval)/1e3;return this.averageFps=this.frameCount/t,this.averageFps}reset(){this.lastInterval=performance.now(),this.averageFps=0,this.frameCount=0}getReport(){return{averageFps:Math.round(this.averageFps),totalFrames:this.frameCount,duration:((performance.now()-this.lastInterval)/1e3).toFixed(2)+"s"}}stop(){this.isTracking=!1}}class P6 extends EventTarget{constructor(e){super(),this._loggerContext="THREEJS ENGINE",this.__performanceTracker=new N6,this.__scene=new wo,this.__tweenGroup=new jM,this.__clock=new rm,this.__effectsComposer={},this.__canvas={},this.__mainRenderer={},this.__sparkRenderer=void 0,this.__textRenderer={},this.__screenshotRenderer={},this.__currentEnvMapUrl="",this.__sceneHierarchy={baseSceneGrp:new Dn,lightsGrp:new Dn,sceneStructure:{},dimensionLinesGrp:new Dn,miscGrp:new Dn},this.__lengthLine={},this.__depthLine={},this.__heightLine={},this.__textureAnisotropyToUse=4,this.__pauseRendering=!1,this.__currentDpr=Math.min(window.devicePixelRatio,2),this.__clampedDpr=Math.min(window.devicePixelRatio,2),this.__boundPerFrameUpdate=this.__perFrameUpdate.bind(this),this.__appWcRef=e,this.__sceneHierarchy.sceneStructure=this.__appWcRef.sceneManager.sceneStructure}get canvas(){return this.__canvas}get scene(){return this.__scene}get productSettings(){return this.__appWcRef.productSettings}get mainRenderer(){return this.__mainRenderer}get sparkRenderer(){return this.__sparkRenderer}get textRenderer(){return this.__textRenderer}get effectsComposer(){return this.__effectsComposer}get screenshotRenderer(){return this.__screenshotRenderer}get sceneHierarchy(){return this.__sceneHierarchy}get contactShadows(){return this.__shadowManager.contactShadows}get accumulativeShadows(){return this.__shadowManager.accumulativeShadows}getClockDelta(){return this.__clock.getDelta()}get tweenGroup(){return this.__tweenGroup}pauseRendering(e=!1){e||this.__appWcRef.showTransitionScreen(),this.__pauseRendering=!0}unpauseRendering(){this.__appWcRef.hideTransitionScreen(),this.__pauseRendering=!1}updateAllTextureAnisotropy(){this.__scene.traverse(e=>{const n=e.material;n?.map&&(n.map.anisotropy=this.__textureAnisotropyToUse,n.needsUpdate=!0)})}printSceneHierarchy(e=!1){(function t(n){if(e===!0)console.group(`------ ${n.name} ------`),console.log(n);else{const s="epgType"in n?n.epgType:n.type;console.group(" <"+s+"> "+n.name)}n.children.forEach(t),console.groupEnd()})(this.__scene)}printSceneStructure(){let e="--";(function t(n){if(n instanceof Nl||n instanceof ka){const s=n.epgType;console.group(`${e} < ${s} > ${n.name} || ${n.uuid}`),e+="--|"}n.children.forEach(t),console.groupEnd()})(this.__sceneHierarchy.sceneStructure)}async emptyScene(){vt.dispose3(this.scene),this.__sceneHierarchy.baseSceneGrp.clear(),this.__sceneHierarchy.lightsGrp.clear();const e=[];this.__sceneHierarchy.sceneStructure.rootEntity.traverse(t=>{t.uuid!==this.__sceneHierarchy.sceneStructure.rootEntity.uuid&&(t instanceof Nl&&e.push(t),t instanceof Hh&&e.push(t))});for(const t of e)t.removeFromParent(),vt.dispose3(t)}async dispose(){cancelAnimationFrame(this.__rafId),await this.__shadowManager.dispose(),await this.emptyScene(),this.__scene.environment?.dispose(),this.__scene.environment=null,this.contactShadows?.dispose(),this.__mainRenderer?.dispose(),this.__screenshotRenderer&&"dispose"in this.__screenshotRenderer&&this.__screenshotRenderer?.dispose(),this.__effectsComposer&&this.__effectsComposer.dispose()}async _setupSceneHierarchy(){this.__sceneHierarchy.baseSceneGrp.name="GRP_BASE_SCENE",this.__scene.add(this.__sceneHierarchy.baseSceneGrp),this.__sceneHierarchy.lightsGrp.name="GRP_LIGHTS",this.__scene.add(this.__sceneHierarchy.lightsGrp),this.__scene.add(this.__sceneHierarchy.sceneStructure),this.__sceneHierarchy.dimensionLinesGrp.name="GRP_DIMENSIONS_LINES",this.__scene.add(this.__sceneHierarchy.dimensionLinesGrp),this.__sceneHierarchy.miscGrp.name="GRP_MISC",this.__scene.add(this.__sceneHierarchy.miscGrp)}async updateEnvMap(e=this.__appWcRef.productSettings.render.envMap,t=this.__appWcRef.productSettings.render.envMapRotation){if(e===this.__currentEnvMapUrl){this.__scene.environmentRotation.x=Mc(t.x),this.__scene.environmentRotation.y=Mc(t.y),this.__scene.environmentRotation.z=Mc(t.z);return}const n=this.__scene.environment,s=await this.__appWcRef.loaders.rgbeLoader.loadAsync(e);s.mapping=iA,this.__scene.environment=s,n?.dispose(),this.__currentEnvMapUrl=e,this.__scene.environmentRotation.x=Mc(t.x),this.__scene.environmentRotation.y=Mc(t.y),this.__scene.environmentRotation.z=Mc(t.z)}async _setupLights(){this.__mainRenderer.outputColorSpace=jt,this.__mainRenderer.toneMapping=jg,await this.updateEnvMap()}__setupEffectComposer(){this.__effectsComposer=new p5(this.__mainRenderer),window.epigraph.logger.info({title:"Effects to enable",details:this.productSettings.postEffect,contextOverride:this._loggerContext})}__constructLineSegment(e,t,n){const s=[e,t],r=new gn().setFromPoints(s),a=new Gl(r,n);return a.castShadow=!1,a}__setupDimensionLines(){const e={color:new we().setHex(11776947).convertSRGBToLinear(),scale:1,dashSize:.02,gapSize:.02},t=new A0(e),n=new A0(e),s=new A0(e),r=new Q;this.__lengthLine=this.__constructLineSegment(r,r,t),this.__depthLine=this.__constructLineSegment(r,r,n),this.__heightLine=this.__constructLineSegment(r,r,s),this.__sceneHierarchy.dimensionLinesGrp.add(this.__lengthLine),this.__sceneHierarchy.dimensionLinesGrp.add(this.__depthLine),this.__sceneHierarchy.dimensionLinesGrp.add(this.__heightLine),this.setDimensionsVisibility(!1)}updateDimensionLines(e){this.__lengthLine.geometry?.setFromPoints([e.length.begin.worldPos,e.length.end.worldPos]),this.__depthLine.geometry?.setFromPoints([e.width.begin.worldPos,e.width.end.worldPos]),this.__heightLine.geometry?.setFromPoints([e.height.begin.worldPos,e.height.end.worldPos]),this.__lengthLine?.computeLineDistances(),this.__depthLine?.computeLineDistances(),this.__heightLine?.computeLineDistances()}frameUpdate(){this.__appWcRef.eventsManager.frameUpdated.fire()}repopulateHotspotIndicators(){this.__appWcRef.eventsManager.hotspotsUpdatedEvent.fire()}setDimensionsVisibility(e){this.__lengthLine.visible=e,this.__depthLine.visible=e,this.__heightLine.visible=e}async getSceneAsUsdzUrl(){const e=this.__sceneHierarchy.sceneStructure;this.printSceneHierarchy();const n=await new y6().parseAsync(e,{quickLookCompatible:!0}),s=new Blob([n],{type:"model/vnd.usdz+zip"});return URL.createObjectURL(s)}async getSceneAsGlbUrl(){const e=new nz;e.registerExtensions([Q1]);const t=new vA,s=this.__sceneHierarchy.sceneStructure;this.printSceneHierarchy();const r={binary:!0,forceIndices:!0,trs:!1,onlyVisible:!0,embedImages:!0,maxTextureSize:1024},a=await t.parseAsync(s,r),o=await e.readBinary(new Uint8Array(a)),l=await this.optimizeGlb(o),c=await e.writeBinary(l);return await this.saveArrayBufferAsURL(c)}async optimizeGlb(e){const n=e.getRoot().listNodes();for(const s of n){s.setExtras({});const r=s.getName();(r==="GRP_ProxyMesh"||r==="GRP_LoadingPlaceholder")&&s.dispose()}return await e.transform(H4(),rH()),e}async saveArrayBufferAsURL(e){const t=new Blob([e],{type:"application/gltf-buffer"});return window.epigraph.logger.info({title:"Approx scene GLB size: "+t.size/1e6,contextOverride:this._loggerContext}),URL.createObjectURL(t)}__perFrameUpdate(){if(this.__pauseRendering){this.__rafId=requestAnimationFrame(this.__boundPerFrameUpdate);return}const e=this.__clock.getDelta();this.contactShadows?.isEnabled()&&this.contactShadows.reCalculate(),this.__appWcRef.postRenderFrameUpdateInEngine(e),this.__effectsComposer.render(),this.__tweenGroup.update(),this.__appWcRef.featuresToEnable.dimensions&&this.__appWcRef.dimensionsManager.repopulateDimensionIndicators(),this.__performanceTracker.update(),this.__rafId=requestAnimationFrame(this.__boundPerFrameUpdate)}setupSparkRendererIfNotExists(){this.__sparkRenderer||(this.__sparkRenderer=new tb({renderer:this.__mainRenderer,preBlurAmount:.3,blurAmount:0}),this.scene.add(this.__sparkRenderer))}__setupRenderers(){this.__mainRenderer=new vg({antialias:this.productSettings.renderQuality.antiAlias,alpha:this.__appWcRef.transparentBackground});const e=this.__appWcRef.canvasSize.width||this.__appWcRef.getBoundingClientRect().width||300,t=this.__appWcRef.canvasSize.height||this.__appWcRef.getBoundingClientRect().height||150;this.__mainRenderer.setSize(e,t),this.__appWcRef.transparentBackground||this.__mainRenderer.setClearColor(this.productSettings.camera.backgroundColor),this.productSettings.screenshots.enabled&&(this.__screenshotRenderer=new vg({antialias:this.productSettings.renderQuality.antiAlias,preserveDrawingBuffer:!0}),this.__screenshotRenderer.domElement.style.display="none"),this.__textRenderer=new WR,this.__textRenderer.setSize(e,t),this.__textRenderer.domElement.style.position="absolute",this.__textRenderer.domElement.style.top="0px",this.__textRenderer.domElement.style.pointerEvents="none"}showTextRenderer(){this.__textRenderer.domElement.style.display="block"}hideTextRenderer(){this.__textRenderer.domElement.style.display="none"}__setupShadows(){this.__mainRenderer.shadowMap.enabled=!0,this.__shadowManager||(this.__shadowManager=new m6(this.__appWcRef,this.__scene,this.__sceneHierarchy.sceneStructure,this.__mainRenderer,this.productSettings)),this.__shadowManager.updateShadowType(this.productSettings.shadows.shadowType)}__registerAdaptiveDprCalculations(e=6){const t=Math.min(window.devicePixelRatio,2);this.__clampedDpr=t,this.__currentDpr=t;let n=0;const s=setInterval(()=>{n++,this.__performanceTracker.averageFps<50&&(this.__currentDpr-=.2,this.__clampedDpr=parseFloat(Math.max(Math.min(this.__currentDpr,t),1).toFixed(2))),this.mainRenderer.setPixelRatio(this.__clampedDpr),this.effectsComposer.setPixelRatio(this.__clampedDpr),this.__performanceTracker.reset(),n>=e&&(clearInterval(s),this.__performanceTracker.stop())},2e3)}async setup(){this.__setupRenderers(),this.__canvas=this.__mainRenderer.domElement,await this._setupSceneHierarchy(),await this._setupLights(),this.__setupShadows(),this.__setupDimensionLines(),this.__setupEffectComposer();const e=this.__mainRenderer.capabilities.getMaxAnisotropy();e<this.__textureAnisotropyToUse&&(this.__textureAnisotropyToUse=e),this.__perFrameUpdate(),this.__registerAdaptiveDprCalculations();const t={canvasHtmlElem:this.__canvas,renderer:this.__mainRenderer,screenshotRenderer:this.__screenshotRenderer??void 0,textRendererElem:this.__textRenderer.domElement};return this.mainRenderer.setPixelRatio(this.__currentDpr),this.effectsComposer.setPixelRatio(this.__currentDpr),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingUpdatedEvent.name,()=>{this.updateEnvMap()}),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.experienceUpdatedEvent.name,()=>{this.__setupShadows()}),this.__appWcRef.addEventListener(this.__appWcRef.eventsManager.productSettingsShadowTypeUpdatedEvent.name,(n=>{this.__shadowManager.updateShadowType(n.detail.shadowType)})),Promise.resolve(t)}}/*!
13169
13169
  * camera-controls
13170
13170
  * https://github.com/yomotsu/camera-controls
13171
13171
  * (c) 2017 @yomotsu
@@ -17398,7 +17398,7 @@ void main() {
17398
17398
  .model-viewer.hide {
17399
17399
  visibility: hidden;
17400
17400
  }
17401
- `]}__registerModelViewerWebComponent(){window.customElements.get("model-viewer")||window.customElements.define("model-viewer",lJ)}static setupWebComponent(){window.customElements.get(Kf.webComponentName)||window.customElements.define(Kf.webComponentName,Kf)}get arLink(){return this.__arLink}showArModal(){this.arModalElem.showModal();const e=new sa(!0,sa.PANEL_TYPE.AR,sa.TRIGGER_SOURCE.BUTTON,[]);this.appWcRef.epigraphAnalytics.sendEvent(e)}showQr(){this.qrModalElem.showModal();const e=new sa(!0,sa.PANEL_TYPE.QR,sa.TRIGGER_SOURCE.BUTTON,[]);this.appWcRef.epigraphAnalytics.sendEvent(e)}async resolveSrcUrl(){if(this.glbSrc="",this.usdzSrc="",Wv){const e=await this.appWcRef.getGlbUrlForAr();if(e===null){window.epigraph.logger.error({title:"Error getting the GLB for AR session",contextOverride:this._loggerContext});return}this.glbSrc=e}else pb&&(this.usdzSrc=await this.appWcRef.getUsdzUrlForAr(),this.glbSrc="https://asset.myepigraph.com/solutions-assets/__PIPELINE__/assets/3d-assets/proxyGeo/null-proxy.glb")}async launchAR(){if(this.canLaunchAr()){const e=new WQ([]);this.appWcRef.epigraphAnalytics.sendEvent(e),this.showArModal(),await this.resolveSrcUrl()}else{const e=vt.generateShareableUrl({baseUrl:this.appWcRef.baseUrlOverride,identifier:this.appWcRef.identifier,identifierType:this.appWcRef.identifierType,arCompatible:!0}),t=await this.appWcRef.qrCodeGenerator.generateQrCode({text:e.href});this.qrModalElem.qrCodeImage=t,this.showQr()}return Promise.resolve(!0)}canLaunchAr(){return this.modelViewerElem.canActivateAR}async presentAr(){return this.modelViewerElem.activateAR()}isARSessionActive(){return this.modelViewerElem.getAttribute("ar-status")==="presenting"}getMinimumRequirementsString(){let e="";return vW&&(SD?e="iOS 16 and above":wD&&(e="Android 12 and above")),e}onArModalClose(){const e=new ra(!0,ra.PANEL_TYPE.AR,ra.TRIGGER_SOURCE.BUTTON,[]);this.appWcRef.epigraphAnalytics.sendEvent(e)}__renderArModal(){return oe`<epg-modal-ar
17401
+ `]}__registerModelViewerWebComponent(){window.customElements.get("model-viewer")||window.customElements.define("model-viewer",lJ)}static setupWebComponent(){window.customElements.get(Kf.webComponentName)||window.customElements.define(Kf.webComponentName,Kf)}get arLink(){return this.__arLink}showArModal(){this.arModalElem.showModal();const e=new sa(!0,sa.PANEL_TYPE.AR,sa.TRIGGER_SOURCE.BUTTON,[]);this.appWcRef.epigraphAnalytics.sendEvent(e)}showQr(){this.qrModalElem.showModal();const e=new sa(!0,sa.PANEL_TYPE.QR,sa.TRIGGER_SOURCE.BUTTON,[]);this.appWcRef.epigraphAnalytics.sendEvent(e)}async resolveSrcUrl(){if(this.glbSrc="",this.usdzSrc="",Wv){const e=await this.appWcRef.getGlbUrlForAr();if(e===null){window.epigraph.logger.error({title:"Error getting the GLB for AR session",contextOverride:this._loggerContext});return}this.glbSrc=e}else pb&&(this.usdzSrc=await this.appWcRef.getUsdzUrlForAr(),this.glbSrc="https://asset.myepigraph.com/solutions-assets/__PIPELINE__/assets/3d-assets/proxyGeo/null-proxy.glb")}getViewInYourSpaceUrl(){return vt.generateShareableUrl({baseUrl:this.appWcRef.baseUrlOverride,identifier:this.appWcRef.identifier,identifierType:this.appWcRef.identifierType,arCompatible:!0})}async getViewInYourSpaceQR(){const e=this.getViewInYourSpaceUrl();return this.appWcRef.qrCodeGenerator.generateQrCode({text:e.href})}async launchAR(){if(this.canLaunchAr()){const e=new WQ([]);this.appWcRef.epigraphAnalytics.sendEvent(e),this.showArModal(),await this.resolveSrcUrl()}else{const e=await this.getViewInYourSpaceQR();this.qrModalElem.qrCodeImage=e,this.showQr()}return Promise.resolve(!0)}canLaunchAr(){return this.modelViewerElem.canActivateAR}async presentAr(){return this.modelViewerElem.activateAR()}isARSessionActive(){return this.modelViewerElem.getAttribute("ar-status")==="presenting"}getMinimumRequirementsString(){let e="";return vW&&(SD?e="iOS 16 and above":wD&&(e="Android 12 and above")),e}onArModalClose(){const e=new ra(!0,ra.PANEL_TYPE.AR,ra.TRIGGER_SOURCE.BUTTON,[]);this.appWcRef.epigraphAnalytics.sendEvent(e)}__renderArModal(){return oe`<epg-modal-ar
17402
17402
  id="arModal"
17403
17403
  powered-by-epigraph
17404
17404
  @epgOnLaunchArClicked=${this.presentAr.bind(this)}
@@ -18179,7 +18179,7 @@ void main() {
18179
18179
  pointer-events: auto;
18180
18180
  }
18181
18181
  }
18182
- `]}get timeElapsedSinceLoadBegin(){return parseFloat((performance.now()-this._loadTimeBegin).toFixed(2))}get epigraphAnalytics(){return this._epigraphAnalytics}get identifier(){return this._identifier}get identifierType(){return this._identifierType}get eventsManager(){return this._eventsManager}get canvasSize(){return this.__canvasSize}get loaders(){return this._loaders}get experienceData(){return this._experienceData}get sceneManager(){return this._sceneManager}get cameraManager(){return this._cameraManager}get hasSceneChanged(){return this.__hasSceneChanged}set hasSceneChanged(e){this.__hasSceneChanged=e}get renderEngine(){return this._renderEngine}get isDevEnv(){return this._isDevEnv}__showViewStateGrid(){this.renderEngine.scene.add(this.__viewStateGrid)}__hideViewStateGrid(){this.renderEngine.scene.remove(this.__viewStateGrid)}enterPickerState(){this.sessionState="picker",this.style.cursor="crosshair",this._isSceneInteractedWith=!0,this.playInteractionPrompt=!1,this.__hideViewStateGrid(),this.cameraManager.enableRotationControls(),this.cameraManager.enableZoomControls(),this.cameraManager.enablePanControls(),this.cameraManager.disableCameraZoomLimits(),this.cameraManager.disableCameraRotationLimits(),this.requestUpdate()}enterViewState(){this.sessionState="view",this.style.cursor="grab",this._isSceneInteractedWith=!0,this.playInteractionPrompt=!1,this.hotspotsManager.style.opacity="0.25",this.__showViewStateGrid(),this.cameraManager.enableRotationControls(),this.cameraManager.enableZoomControls(),this.cameraManager.enablePanControls(),this.cameraManager.disableCameraZoomLimits(),this.cameraManager.disableCameraRotationLimits(),this.hotspotsManager.activeHotspot&&this.hotspotsManager.activeHotspot&&this.cameraManager.moveCameraToLocation({newCameraTransforms:this.hotspotsManager.activeHotspot.camera}),this.requestUpdate()}enterDefaultState(){const e=this.sessionState;this.sessionState="default",this.style.cursor="grab",this.hotspotsManager.style.opacity="1",this.__hideViewStateGrid(),e==="picker"&&this.cameraManager.updateCameraSettings(this.productSettings.camera),this.requestUpdate()}renderScreenshotCanvasFrame(){this.renderEngine.screenshotRenderer.render(this.renderEngine.scene,this.cameraManager.getCameras().screenshot)}onLoadFailed(e,t){this._eventsManager.appFailedEvent.fire(t);const n=this.timeElapsedSinceLoadBegin,s=new ux(!0,n,e);this._epigraphAnalytics.sendEvent(s),this.splashScreenElem.loadingLabel="Experience Failed to load!!",this.splashScreenElem.loadingLogoSrc="https://asset.myepigraph.com/design-assets/icons/warning-triangle.svg",this.showSplashScreen(),window.epigraph.logger.error({title:"Experience Load Failed. Expand for details...",details:{error:e,failedEventDetails:t},contextOverride:this._loggerContext})}getFirstNonProxyFromIntersections(e){let t=null;for(const n of e)if(!(!n?.object||n.object.userData.isProxyMesh===!0)){t=n;break}return t}__getIntersectionsWithScene(e,t){return this.__pointer.x=e/this.canvasSize.width*2-1,this.__pointer.y=-(t/this.canvasSize.height)*2+1,this.__raycaster.setFromCamera(this.__pointer,this.cameraManager.getCameras().main),this.__raycaster.intersectObjects(this.renderEngine.sceneHierarchy.sceneStructure.rootEntity.children,!0)}getPositionOnMeshFromPoint(e,t){const n=this.__getIntersectionsWithScene(e,t);if(n.length>0){const s=this.getFirstNonProxyFromIntersections(n);return s===null?null:s.point}else return null}getIntersectionOnProductFromPoint(e,t){const n=this.__getIntersectionsWithScene(e,t);let s=null;if(n.length>0){const r=this.getFirstNonProxyFromIntersections(n);if(!r?.object)return null;r.object.traverseAncestors(a=>{if(a instanceof Nl&&a.isRoot===!1){if(s!==null)return;s={asset:{id:a.asset.id,name:a.asset.name},intersection:{point:r.point,normals:r.normal??null}};return}})}return s}get aspectRatio(){return this.canvasSize.width/this.canvasSize.height}getSceneBounds(){return this.sceneManager.sceneBounds}getSceneBoundsCenter(){return this.sceneManager.sceneBoundsCenter}getSceneSphericalBounds(){return this.sceneManager?.currentSceneSphericalBounds}async getUsdzUrlForAr(){return this.__usdzBlobUrl=await this.renderEngine.getSceneAsUsdzUrl(),this.eventsManager.arModelReadyEvent.fire(this.__usdzBlobUrl),this.__usdzBlobUrl}async getGlbUrlForAr(){return this.__glbBlobUrl=await this.renderEngine.getSceneAsGlbUrl(),this.eventsManager.arModelReadyEvent.fire(this.__glbBlobUrl),this.__glbBlobUrl}async presentAr(){return this.viewInYourSpaceManager.presentAr()}async launchAR(){if(this.isLoading){this.addEventListener(this.eventsManager.appReadyEvent.name,()=>void this.viewInYourSpaceManager.launchAR());return}return await this.viewInYourSpaceManager.launchAR()}highlightEntityByAssetId(e){const t=this.sceneManager.sceneStructure.getEntityForAssetId(e);if(!t){window.epigraph.logger.error({title:`No asset found for ID: ${e}`,contextOverride:this._loggerContext});return}t.highlight()}unhighlightAllEntities(){for(const e of this.sceneManager.sceneStructure.getSceneEntities())e.unhighlight()}async spawnAssetInScene(e){const t=this.sceneManager.sceneStructure.getPossibleConnectionsForAssetInScene(e);if(t.length<=0)return Promise.resolve(void 0);const n=t[0];n.connect();const s=new Nl(e,this);await s.initialize();const r=n.receiver,a=n.plug.clone();this.sceneManager.sceneStructure.add(a);const o=new Q;r.getWorldPosition(o),a.position.set(o.x,o.y,o.z),a.attach(s);const l=new Yt;return r.getWorldQuaternion(l),a.setRotationFromQuaternion(l),r.attach(s),a.removeFromParent(),vt.dispose3(a),this.eventsManager.structureChangedEvent.fire(),Promise.resolve(s)}async selectFinishForAssetName(e,t){const n=this._sceneManager.sceneStructure.getEntityForAssetName(t);return!n||!n.allFinishIds.includes(e)?!1:(await n.selectAssetFinish(e).catch(r=>(window.epigraph.logger.error({title:`Failed to select Finish: ${e} in Asset: ${t}`,details:r,contextOverride:this._loggerContext}),new jd(!1)))).success}showDimensions(){this.dimensionsManager.enabled=!0,this.areDimensionsActive=!0,this.renderEngine.setDimensionsVisibility(this.dimensionsManager.enabled),this.cameraManager.fitCameraToSceneBounds()}hideDimensions(e=!1){this.dimensionsManager.enabled=!1,this.areDimensionsActive=!1,this.renderEngine.setDimensionsVisibility(this.dimensionsManager.enabled),e||this.cameraManager.fitCameraToSceneBounds()}getDimensions(){const e=this.dimensionsManager.getCurrentDimensionsInDisplayUnit(),t=this.dimensionsManager.dimensionsUnit;return{length:e.length,width:e.width,height:e.height,unit:t}}printSceneHierarchy(){this.renderEngine.printSceneHierarchy()}showCameraAim(){this.cameraAimElemRef.classList.remove("hide")}hideCameraAim(){this.cameraAimElemRef.classList.add("hide")}showHelp(){this.isHelpVisible=!0}hideHelp(){this.isHelpVisible=!1}toggleHelp(){this.isHelpVisible=!this.isHelpVisible}showHotspots(){window.epigraph.logger.info({title:"Showing Hotspots",contextOverride:this._loggerContext}),this.areHotspotsActive=!0,this.eventsManager.hotspotsVisibilityChanged.fire({visible:!0})}hideHotspots(){window.epigraph.logger.info({title:"Hiding Hotspots",contextOverride:this._loggerContext}),this.areHotspotsActive=!1,this.eventsManager.hotspotsVisibilityChanged.fire({visible:!1})}toggleHotspots(){this.hotspotsManager.enabled?this.hideHotspots():this.showHotspots()}updateHotspotsOrder(e){this.hotspotsManager.updateHotspotsOrder(e)}openHotspot({hotspotId:e,state:t,skipHotspotOpenEvent:n=!1}){this.hotspotsManager.openHotspot({hotspotId:e,state:t,skipHotspotOpenEvent:n})}closeActiveHotspot(){this.hotspotsManager.closeActiveHotspot()}setActiveHotspotState(e){this.hotspotsManager.setActiveHotspotState(e)}nextHotspot(){return this.hotspotsManager.nextHotspot()}previousHotspot(){return this.hotspotsManager.previousHotspot()}getActiveHotspot(){return this.hotspotsManager.activeHotspot}areHotspotsVisible(){return this.hotspotsManager.enabled}getAllHotspots(){return Array.from(this.hotspotsManager.hotspots.values())}getAllHotspotIds(){return Array.from(this.hotspotsManager.hotspots.keys())}getHotspotById(e){return this.hotspotsManager.hotspots.get(e)}getInteractionPromptRepeat(){const e=this.productSettings.camera.interactionPromptRepeat.split(":");return[parseInt(e[0]),parseInt(e[1])]}shouldContinuePlayingInteractionPrompt(){return(this.getInteractionPromptRepeat()[1]===0||this.__interactionPlayCount<this.getInteractionPromptRepeat()[1])&&!this._isSceneInteractedWith}async __onPlayInteractionPrompt(e=2){if(!(e<=0)){this.__interactionPlayCount++,this.showCameraInteractionPromptIndicator(),await vt.wait(800),this.cameraInteractionPromptIndicatorElemRef.style.animationIterationCount=String(e);for(let t=0;t<e;t++)this.cameraInteractionPromptIndicatorElemRef.classList.add("play-wiggle-animation"),await this.cameraManager.wiggleCamera();this.cameraInteractionPromptIndicatorElemRef.classList.remove("play-wiggle-animation"),this.hideCameraInteractionPromptIndicator(),this.shouldContinuePlayingInteractionPrompt()&&setTimeout(()=>{this.__onPlayInteractionPrompt(this.getInteractionPromptRepeat()[0])},3e3)}}getSceneAnimations(){const e={},t=this.sceneManager.sceneStructure.getSceneEntities();for(const n of t)e[n.asset.id]=n.getAllAnimations();return e}playAnimationByNameAndAssetId({animationName:e,assetId:t,clampWhenFinished:n=!1,loop:s=!1,repetitions:r=1/0,reverse:a=!1}){if(!e)return;const l=this.getSceneAnimations()[t],c=l.get(e);if(!c){window.epigraph.logger.warn({title:`Invalid animation name: ${e}. Expand for a list of valid names`,details:l.keys(),contextOverride:this._loggerContext});return}return a?(c.timeScale=-1,c.fadeOut(this._animationFadeDurationInMiliseconds*.001)):(c.timeScale=1,c.fadeIn(this._animationFadeDurationInMiliseconds*.001)),c.setLoop(s?Ql:Bh,r),c.clampWhenFinished=n,c.enabled=!0,c.play(),this._activeAnimations.set(e,c),{animationName:e,targetAnimationAction:c}}stopAnimationByNameAndAssetId(e,t){if(!e)return;const s=this.getSceneAnimations()[t],r=s.get(e);if(!r){window.epigraph.logger.warn({title:`Invalid animation name: ${e}. Expand for a list of valid names`,details:s.keys(),contextOverride:this._loggerContext});return}r.fadeOut(this._animationFadeDurationInMiliseconds*.001),setTimeout(()=>{r.stop()},this._animationFadeDurationInMiliseconds),this._activeAnimations.delete(e)}pauseActiveAnimations(e){for(const t of this._activeAnimations.values())t.paused=!0,e!==void 0&&(t.weight=e)}resumeActiveAnimations(){for(const e of this._activeAnimations.values())e.paused=!1,e.weight=1}stopAllAnimations(){for(const[e,t]of this._activeAnimations.entries())t.fadeOut(this._animationFadeDurationInMiliseconds*.001),setTimeout(()=>{t.stop(),this._activeAnimations.delete(e)},this._animationFadeDurationInMiliseconds)}postRenderFrameUpdateInEngine(e){try{this.cameraManager.mainCameraControls.update(e);const t=this.sceneManager.sceneStructure.getSceneEntities();for(const n of t)n.getAnimationMixer()?.update(e);this.debugManager&&this.debugManager.stats.update(),this.renderEngine.mainRenderer.render(this.renderEngine.scene,this.cameraManager.getCameras().main),this.renderEngine.textRenderer.render(this.renderEngine.scene,this.cameraManager.getCameras().main)}catch(t){return t}}getScreenPositionFromWorld(e){const t=new Ae,n=this.cameraManager.getCameras().main,s=this.canvasSize.width*.5,r=this.canvasSize.height*.5,o=e.clone().project(n);return t.x=(o.x+1)*s,t.y=-(o.y-1)*r,t}_renderAppCanvasContainer(){return this.featuresToEnable.viewer?oe`
18182
+ `]}get timeElapsedSinceLoadBegin(){return parseFloat((performance.now()-this._loadTimeBegin).toFixed(2))}get epigraphAnalytics(){return this._epigraphAnalytics}get identifier(){return this._identifier}get identifierType(){return this._identifierType}get eventsManager(){return this._eventsManager}get canvasSize(){return this.__canvasSize}get loaders(){return this._loaders}get experienceData(){return this._experienceData}get sceneManager(){return this._sceneManager}get cameraManager(){return this._cameraManager}get hasSceneChanged(){return this.__hasSceneChanged}set hasSceneChanged(e){this.__hasSceneChanged=e}get renderEngine(){return this._renderEngine}get isDevEnv(){return this._isDevEnv}__showViewStateGrid(){this.renderEngine.scene.add(this.__viewStateGrid)}__hideViewStateGrid(){this.renderEngine.scene.remove(this.__viewStateGrid)}enterPickerState(){this.sessionState="picker",this.style.cursor="crosshair",this._isSceneInteractedWith=!0,this.playInteractionPrompt=!1,this.__hideViewStateGrid(),this.cameraManager.enableRotationControls(),this.cameraManager.enableZoomControls(),this.cameraManager.enablePanControls(),this.cameraManager.disableCameraZoomLimits(),this.cameraManager.disableCameraRotationLimits(),this.requestUpdate()}enterViewState(){this.sessionState="view",this.style.cursor="grab",this._isSceneInteractedWith=!0,this.playInteractionPrompt=!1,this.hotspotsManager.style.opacity="0.25",this.__showViewStateGrid(),this.cameraManager.enableRotationControls(),this.cameraManager.enableZoomControls(),this.cameraManager.enablePanControls(),this.cameraManager.disableCameraZoomLimits(),this.cameraManager.disableCameraRotationLimits(),this.hotspotsManager.activeHotspot&&this.hotspotsManager.activeHotspot&&this.cameraManager.moveCameraToLocation({newCameraTransforms:this.hotspotsManager.activeHotspot.camera}),this.requestUpdate()}enterDefaultState(){const e=this.sessionState;this.sessionState="default",this.style.cursor="grab",this.hotspotsManager.style.opacity="1",this.__hideViewStateGrid(),e==="picker"&&this.cameraManager.updateCameraSettings(this.productSettings.camera),this.requestUpdate()}renderScreenshotCanvasFrame(){this.renderEngine.screenshotRenderer.render(this.renderEngine.scene,this.cameraManager.getCameras().screenshot)}onLoadFailed(e,t){this._eventsManager.appFailedEvent.fire(t);const n=this.timeElapsedSinceLoadBegin,s=new ux(!0,n,e);this._epigraphAnalytics.sendEvent(s),this.splashScreenElem.loadingLabel="Experience Failed to load!!",this.splashScreenElem.loadingLogoSrc="https://asset.myepigraph.com/design-assets/icons/warning-triangle.svg",this.showSplashScreen(),window.epigraph.logger.error({title:"Experience Load Failed. Expand for details...",details:{error:e,failedEventDetails:t},contextOverride:this._loggerContext})}getFirstNonProxyFromIntersections(e){let t=null;for(const n of e)if(!(!n?.object||n.object.userData.isProxyMesh===!0)){t=n;break}return t}__getIntersectionsWithScene(e,t){return this.__pointer.x=e/this.canvasSize.width*2-1,this.__pointer.y=-(t/this.canvasSize.height)*2+1,this.__raycaster.setFromCamera(this.__pointer,this.cameraManager.getCameras().main),this.__raycaster.intersectObjects(this.renderEngine.sceneHierarchy.sceneStructure.rootEntity.children,!0)}getPositionOnMeshFromPoint(e,t){const n=this.__getIntersectionsWithScene(e,t);if(n.length>0){const s=this.getFirstNonProxyFromIntersections(n);return s===null?null:s.point}else return null}getIntersectionOnProductFromPoint(e,t){const n=this.__getIntersectionsWithScene(e,t);let s=null;if(n.length>0){const r=this.getFirstNonProxyFromIntersections(n);if(!r?.object)return null;r.object.traverseAncestors(a=>{if(a instanceof Nl&&a.isRoot===!1){if(s!==null)return;s={asset:{id:a.asset.id,name:a.asset.name},intersection:{point:r.point,normals:r.normal??null}};return}})}return s}get aspectRatio(){return this.canvasSize.width/this.canvasSize.height}getSceneBounds(){return this.sceneManager.sceneBounds}getSceneBoundsCenter(){return this.sceneManager.sceneBoundsCenter}getSceneSphericalBounds(){return this.sceneManager?.currentSceneSphericalBounds}async getUsdzUrlForAr(){return this.__usdzBlobUrl=await this.renderEngine.getSceneAsUsdzUrl(),this.eventsManager.arModelReadyEvent.fire(this.__usdzBlobUrl),this.__usdzBlobUrl}async getGlbUrlForAr(){return this.__glbBlobUrl=await this.renderEngine.getSceneAsGlbUrl(),this.eventsManager.arModelReadyEvent.fire(this.__glbBlobUrl),this.__glbBlobUrl}async presentAr(){return this.viewInYourSpaceManager.presentAr()}getViewInYourSpaceUrl(){return this.viewInYourSpaceManager.getViewInYourSpaceUrl()}async getViewInYourSpaceQR(){return this.viewInYourSpaceManager.getViewInYourSpaceQR()}async launchAR(){if(this.isLoading){this.addEventListener(this.eventsManager.appReadyEvent.name,()=>void this.viewInYourSpaceManager.launchAR());return}return await this.viewInYourSpaceManager.launchAR()}highlightEntityByAssetId(e){const t=this.sceneManager.sceneStructure.getEntityForAssetId(e);if(!t){window.epigraph.logger.error({title:`No asset found for ID: ${e}`,contextOverride:this._loggerContext});return}t.highlight()}unhighlightAllEntities(){for(const e of this.sceneManager.sceneStructure.getSceneEntities())e.unhighlight()}async spawnAssetInScene(e){const t=this.sceneManager.sceneStructure.getPossibleConnectionsForAssetInScene(e);if(t.length<=0)return Promise.resolve(void 0);const n=t[0];n.connect();const s=new Nl(e,this);await s.initialize();const r=n.receiver,a=n.plug.clone();this.sceneManager.sceneStructure.add(a);const o=new Q;r.getWorldPosition(o),a.position.set(o.x,o.y,o.z),a.attach(s);const l=new Yt;return r.getWorldQuaternion(l),a.setRotationFromQuaternion(l),r.attach(s),a.removeFromParent(),vt.dispose3(a),this.eventsManager.structureChangedEvent.fire(),Promise.resolve(s)}async selectFinishForAssetName(e,t){const n=this._sceneManager.sceneStructure.getEntityForAssetName(t);return!n||!n.allFinishIds.includes(e)?!1:(await n.selectAssetFinish(e).catch(r=>(window.epigraph.logger.error({title:`Failed to select Finish: ${e} in Asset: ${t}`,details:r,contextOverride:this._loggerContext}),new jd(!1)))).success}showDimensions(){this.dimensionsManager.enabled=!0,this.areDimensionsActive=!0,this.renderEngine.setDimensionsVisibility(this.dimensionsManager.enabled),this.cameraManager.fitCameraToSceneBounds()}hideDimensions(e=!1){this.dimensionsManager.enabled=!1,this.areDimensionsActive=!1,this.renderEngine.setDimensionsVisibility(this.dimensionsManager.enabled),e||this.cameraManager.fitCameraToSceneBounds()}getDimensions(){const e=this.dimensionsManager.getCurrentDimensionsInDisplayUnit(),t=this.dimensionsManager.dimensionsUnit;return{length:e.length,width:e.width,height:e.height,unit:t}}printSceneHierarchy(){this.renderEngine.printSceneHierarchy()}showCameraAim(){this.cameraAimElemRef.classList.remove("hide")}hideCameraAim(){this.cameraAimElemRef.classList.add("hide")}showHelp(){this.isHelpVisible=!0}hideHelp(){this.isHelpVisible=!1}toggleHelp(){this.isHelpVisible=!this.isHelpVisible}showHotspots(){window.epigraph.logger.info({title:"Showing Hotspots",contextOverride:this._loggerContext}),this.areHotspotsActive=!0,this.eventsManager.hotspotsVisibilityChanged.fire({visible:!0})}hideHotspots(){window.epigraph.logger.info({title:"Hiding Hotspots",contextOverride:this._loggerContext}),this.areHotspotsActive=!1,this.eventsManager.hotspotsVisibilityChanged.fire({visible:!1})}toggleHotspots(){this.hotspotsManager.enabled?this.hideHotspots():this.showHotspots()}updateHotspotsOrder(e){this.hotspotsManager.updateHotspotsOrder(e)}openHotspot({hotspotId:e,state:t,skipHotspotOpenEvent:n=!1}){this.hotspotsManager.openHotspot({hotspotId:e,state:t,skipHotspotOpenEvent:n})}closeActiveHotspot(){this.hotspotsManager.closeActiveHotspot()}setActiveHotspotState(e){this.hotspotsManager.setActiveHotspotState(e)}nextHotspot(){return this.hotspotsManager.nextHotspot()}previousHotspot(){return this.hotspotsManager.previousHotspot()}getActiveHotspot(){return this.hotspotsManager.activeHotspot}areHotspotsVisible(){return this.hotspotsManager.enabled}getAllHotspots(){return Array.from(this.hotspotsManager.hotspots.values())}getAllHotspotIds(){return Array.from(this.hotspotsManager.hotspots.keys())}getHotspotById(e){return this.hotspotsManager.hotspots.get(e)}getInteractionPromptRepeat(){const e=this.productSettings.camera.interactionPromptRepeat.split(":");return[parseInt(e[0]),parseInt(e[1])]}shouldContinuePlayingInteractionPrompt(){return(this.getInteractionPromptRepeat()[1]===0||this.__interactionPlayCount<this.getInteractionPromptRepeat()[1])&&!this._isSceneInteractedWith}async __onPlayInteractionPrompt(e=2){if(!(e<=0)){this.__interactionPlayCount++,this.showCameraInteractionPromptIndicator(),await vt.wait(800),this.cameraInteractionPromptIndicatorElemRef.style.animationIterationCount=String(e);for(let t=0;t<e;t++)this.cameraInteractionPromptIndicatorElemRef.classList.add("play-wiggle-animation"),await this.cameraManager.wiggleCamera();this.cameraInteractionPromptIndicatorElemRef.classList.remove("play-wiggle-animation"),this.hideCameraInteractionPromptIndicator(),this.shouldContinuePlayingInteractionPrompt()&&setTimeout(()=>{this.__onPlayInteractionPrompt(this.getInteractionPromptRepeat()[0])},3e3)}}getSceneAnimations(){const e={},t=this.sceneManager.sceneStructure.getSceneEntities();for(const n of t)e[n.asset.id]=n.getAllAnimations();return e}playAnimationByNameAndAssetId({animationName:e,assetId:t,clampWhenFinished:n=!1,loop:s=!1,repetitions:r=1/0,reverse:a=!1}){if(!e)return;const l=this.getSceneAnimations()[t],c=l.get(e);if(!c){window.epigraph.logger.warn({title:`Invalid animation name: ${e}. Expand for a list of valid names`,details:l.keys(),contextOverride:this._loggerContext});return}return a?(c.timeScale=-1,c.fadeOut(this._animationFadeDurationInMiliseconds*.001)):(c.timeScale=1,c.fadeIn(this._animationFadeDurationInMiliseconds*.001)),c.setLoop(s?Ql:Bh,r),c.clampWhenFinished=n,c.enabled=!0,c.play(),this._activeAnimations.set(e,c),{animationName:e,targetAnimationAction:c}}stopAnimationByNameAndAssetId(e,t){if(!e)return;const s=this.getSceneAnimations()[t],r=s.get(e);if(!r){window.epigraph.logger.warn({title:`Invalid animation name: ${e}. Expand for a list of valid names`,details:s.keys(),contextOverride:this._loggerContext});return}r.fadeOut(this._animationFadeDurationInMiliseconds*.001),setTimeout(()=>{r.stop()},this._animationFadeDurationInMiliseconds),this._activeAnimations.delete(e)}pauseActiveAnimations(e){for(const t of this._activeAnimations.values())t.paused=!0,e!==void 0&&(t.weight=e)}resumeActiveAnimations(){for(const e of this._activeAnimations.values())e.paused=!1,e.weight=1}stopAllAnimations(){for(const[e,t]of this._activeAnimations.entries())t.fadeOut(this._animationFadeDurationInMiliseconds*.001),setTimeout(()=>{t.stop(),this._activeAnimations.delete(e)},this._animationFadeDurationInMiliseconds)}postRenderFrameUpdateInEngine(e){try{this.cameraManager.mainCameraControls.update(e);const t=this.sceneManager.sceneStructure.getSceneEntities();for(const n of t)n.getAnimationMixer()?.update(e);this.debugManager&&this.debugManager.stats.update(),this.renderEngine.mainRenderer.render(this.renderEngine.scene,this.cameraManager.getCameras().main),this.renderEngine.textRenderer.render(this.renderEngine.scene,this.cameraManager.getCameras().main)}catch(t){return t}}getScreenPositionFromWorld(e){const t=new Ae,n=this.cameraManager.getCameras().main,s=this.canvasSize.width*.5,r=this.canvasSize.height*.5,o=e.clone().project(n);return t.x=(o.x+1)*s,t.y=-(o.y-1)*r,t}_renderAppCanvasContainer(){return this.featuresToEnable.viewer?oe`
18183
18183
  <div id="appCanvasContainer" class="app-canvas-container">
18184
18184
  <span id="cameraAimIndicator" class="camera-aim-indicator hide"></span>
18185
18185
  </div>
@@ -18373,7 +18373,7 @@ void main() {
18373
18373
  <div class="view-in-your-space-button ${this._shouldHideToolset()?"hide":""}">
18374
18374
  <slot name=${Vf.slotCustomViewInYourSpaceButton.name} @click=${this.launchAR}></slot>
18375
18375
  </div>
18376
- `}getAllHotspotsFromScene(){const e=[];return this.sceneManager.sceneStructure.traverse(t=>{if(t instanceof Nl)for(const n of t.asset.hotspots)this.hotspotsManager.addHotspot(n,!1)}),e}_repopulateHotspots(){window.epigraph.logger.info({title:"Override to repopulate hotspots in scene on identifier changes",contextOverride:this._loggerContext}),this.featuresToEnable.hotspots===!0&&this.hotspotsManager&&(this.hotspotsManager.removeAllHotspots(),this.getAllHotspotsFromScene(),this.updateHotspotsOrder(Array.from(this.hotspotsManager.hotspots.keys())))}_setupAnalytics(){this._isDevEnv||this._isStagingEnv||(this._nexusAnalyticsPlugin=new YQ({trackingID:this.gaMeasurementId,experienceID:"",solution:this.getWebComponentName(),sessionId:window.epigraph.epigraphSessionId,xPath:this.xPath,verboseLogging:this._isDevEnv,sendToStaging:this._isStagingEnv}),this._epigraphAnalytics.addEventPlugin(this._nexusAnalyticsPlugin),this.gaMeasurementId&&(this._ga4AnalyticsPlugin=new VQ({trackingID:this.gaMeasurementId,experienceID:"",solution:this.getWebComponentName(),verboseLogging:this._isDevEnv}),this._epigraphAnalytics.addEventPlugin(this._ga4AnalyticsPlugin)))}__onWebComponentResize(){if(!this.appCanvasContainerElemRef)return;const{width:e,height:t}=this.appCanvasContainerElemRef.getBoundingClientRect();if(e===0||t===0)return;this.__canvasSize.width=e,this.__canvasSize.height=t;const n=this.cameraManager?.getCameras()?.main,s=this.cameraManager?.getCameras().screenshot;n&&(n.aspect=this.aspectRatio,n.updateProjectionMatrix()),s&&(s.aspect=this.aspectRatio,s.updateProjectionMatrix()),this.dimensionsManager&&!this.hotspotsManager?.activeHotspot&&this.cameraManager.fitCameraToSceneBounds(!1),this.renderEngine.mainRenderer.setSize(e,t),this.renderEngine.textRenderer.setSize(e,t),this.renderEngine.effectsComposer.setSize(e,t),this.isPortraitOrientation=e<700;const r=e*.5,a=t*.5;if(r>230)this._isToolsetLargerThanTheLeftBottomQuadrant=!1;else{const o=this.toolsetElem?.getBoundingClientRect();if(o){const l=o.width>r,c=o.height>a;this._isToolsetLargerThanTheLeftBottomQuadrant=l||c}}this.postRenderFrameUpdateInEngine(this.renderEngine.getClockDelta()),this.eventsManager.webComponentResized.fire()}__onDimensionsPositionChanged(){this.renderEngine.updateDimensionLines(this.dimensionsManager.getCurrentDimensionsIndicatorState())}showSplashScreen(){this.splashScreenElem?.show()}hideSplashScreen(){this.splashScreenElem?.hide()}showTransitionScreen(){this.transitionScreenElem.classList.add("show")}hideTransitionScreen(){this.transitionScreenElem.classList.remove("show")}get isNewExperienceData(){return this.__isNewExperienceData}_setupVisibilityObserver(){new IntersectionObserver(()=>{this.isAppReady&&(window.epigraph.logger.info({title:"Component became visible, re-calculating scene hierarchy.",contextOverride:this._loggerContext}),this._onSceneHierarchyUpdate(),(this.__isNewExperienceData||this.variantSwitchMode==="default")&&this.productSettings.camera.initial&&this.cameraManager.moveCameraToLocation({newCameraTransforms:this.productSettings.camera.initial,transition:!1}).then(()=>{this.productSettings.camera.initial?.skipCameraFit||this.cameraManager.fitCameraToSceneBounds()}))}).observe(this)}async _postExperienceDataInitialization(){if(this.productSettings.render.mode===Qa.SPLAT&&this._renderEngine.sparkRenderer){const{preBlurAmount:s,blurAmount:r}=this.productSettings.render.splatMode;this._renderEngine.sparkRenderer.preBlurAmount=s,this._renderEngine.sparkRenderer.blurAmount=r}const e=this._experienceData.productVariantCollection.getProductVariantByIdentifierAndType(this._identifier,this._identifierType);if(!e)return Promise.reject(!1);const{envMap:t,envMapRotation:n}=this.productSettings.render;return await this.renderEngine.updateEnvMap(t,n),await this.spawnProductVariant(e)}async spawnProductVariant(e){if(!e.productParts)return Promise.reject(!1);const t=[];for(const n of e.productParts){const s=this._experienceData.getAssetCollection().getAssetByName(n.asset);s&&t.push(s)}await this.loadAllPartAssetSynchronously(t);for(const n of e.productParts)await this.spawnProductPart(n);return Promise.resolve(!0)}async loadAllPartAssetSynchronously(e){const t=[];for(const n of e)t.push(n.load());return Promise.all(t)}async spawnProductPart(e){if(!e.assetClass||!e.assetId)return Promise.resolve(!0);let t=this.sceneManager.sceneStructure.getEntityForAssetId(e.assetId);if(!t){const s=this._experienceData.getAssetCollection().getAssetByName(e.asset);if(!s||(t=await this.spawnAssetInScene(s),!t))return Promise.reject(!1)}const n=e.finish;return n?(await t.selectAssetFinish(n),Promise.resolve(!0)):Promise.resolve(!1)}async _fetchExperienceDataConfig(){return null}async _buildExperienceData(){const e=await this._fetchExperienceDataConfig();if(e===null)return await this._onAuthenticationFailed("Unable to retrieve experience data config."),Promise.reject();if(!e.success)return await this._onAuthenticationFailed(e.message),Promise.reject();this._experienceData=new yJ({nexusApiResultPayload:e.payload,appWcRef:this}),await this._experienceData.initialize();const t=this._experienceData.channelSettings.ga_measurement_id;!this.gaMeasurementId&&t&&(window.epigraph.logger.info({title:"GA Measurement ID set from experience data",details:t,contextOverride:this._loggerContext}),this.gaMeasurementId=t,this._setupAnalytics())}__checkIfCurrentExperienceHasIdentifier(e,t){let n=!1;switch(e){case"sku":this.experienceData?.productVariantCollection?.getProductVariantBySku(t)&&(n=!0);break;case"shopify_variant_id":this.experienceData?.productVariantCollection?.getProductVariantByShopifyVariantId(t)&&(n=!0);break;case"upc":this.experienceData?.productVariantCollection?.getProductVariantByUpc(t)&&(n=!0);break;case"asin":this.experienceData?.productVariantCollection?.getProductVariantByAsin(t)&&(n=!0);break;case"product_variant_uuid":this.experienceData?.productVariantCollection?.getProductVariantByUuid(t)&&(n=!0);break}return n}_guessesWhyTheExperienceFailed(){const e=[];return this._experienceData.getAssetCollection().hasAnyAssetWithSplat()&&this.productSettings.render.mode!==Qa.SPLAT&&e.push("Render Splat provided in one of the assets. Try switching the render mode to Splat in Render Settings."),e}async _clearAndLoadNewExperienceInScene(){this._onNewExperienceLoadStart();const e=this.__checkIfCurrentExperienceHasIdentifier(this.identifierType,this.identifier);e===!1&&await this._buildExperienceData().catch(t=>(window.epigraph.logger.error({title:`Couldn't build experience data for "${this.identifierType}" - "${this.identifier}"`,details:t,contextOverride:this._loggerContext}),Promise.reject(t))),await this._resetSession(),await this._postExperienceDataInitialization().catch(t=>Promise.reject(t)),this.parsedUrlParams.get(Rd.AR)&&!this.didARAutoLaunch&&(await this.launchAR(),this.didARAutoLaunch=!0),await this._onNewExperienceLoadFinish(e)}async _onIdentifierOrTypeChange(){if(this.isAppReady){if(await this._resolveIdentifierAndType(),!this._identifier||!this._identifierType)return Promise.reject("No valid Identifier Provided! Please provide on of the following: sku, shopify-variant-id, upc, asin, product-variant-uuid");window.epigraph.logger.info({title:"IDENTIFIER CHANGED",details:`${this._identifierType} = ${this._identifier}`,contextOverride:this._loggerContext}),this._nexusAnalyticsPlugin&&(this._nexusAnalyticsPlugin.experienceID=this._identifier),this._ga4AnalyticsPlugin&&(this._ga4AnalyticsPlugin.experienceID=this._identifier),await this._clearAndLoadNewExperienceInScene().catch(e=>(window.epigraph.logger.error({title:"Error while clearing the session and loading a new experience.",details:e,contextOverride:this._loggerContext}),window.epigraph.logger.warn({title:"BEST GUESSES FOR FAILURE BELOW:",details:this._guessesWhyTheExperienceFailed(),contextOverride:this._loggerContext}),Promise.reject(e)))}}showCameraInteractionPromptIndicator(){this.cameraInteractionPromptIndicatorElemRef?.classList.add("show")}hideCameraInteractionPromptIndicator(){this.cameraInteractionPromptIndicatorElemRef?.classList.remove("show")}_onPlayInteractionPromptChange(){this.playInteractionPrompt?this.__onPlayInteractionPrompt(this.getInteractionPromptRepeat()[0]):(this.hideCameraInteractionPromptIndicator(),this._cameraManager?.mainCameraControls?.stop&&this._cameraManager?.mainCameraControls?.stop())}connectedCallback(){super.connectedCallback(),this._loadTimeBegin=performance.now(),this.parsedUrlParams=vt.parseUrlForEpigraphParams(this.baseUrlOverride),this._setupAnalytics()}firstUpdated(){this.modalView&&(this.hide=!0),this._setup().then(()=>{window.epigraph.logger.info({title:"All Initializations Complete",contextOverride:this._loggerContext}),this.isAppReady=!0,this._onIdentifierOrTypeChange().catch(e=>{this.onLoadFailed(Ld.EXPERIENCE_CONFIG_ERROR,e)})}).catch(e=>{window.epigraph.logger.error({title:"Error while setup",details:e,contextOverride:this._loggerContext}),this.onLoadFailed(Ld.INITIAL_SCENE_LOAD_ERROR,e)})}updated(e){(e.has("sku")||e.has("shopify_variant_id")||e.has("upc")||e.has("asin")||e.has("product_variant_uuid")||e.has("customVersionId"))&&this._onIdentifierOrTypeChange(),e.has("playInteractionPrompt")&&this._onPlayInteractionPromptChange(),e.has("_hasActiveHotspot")&&(this._hasActiveHotspot?this._hideCustomViewInYourSpaceButton():this._showCustomViewInYourSpaceButton()),e.has("debug")&&this.eventsManager.debugChanged.fire({value:this.debug}),e.has("showSettings")&&this.eventsManager.showSettingsChanged.fire({value:this.showSettings}),e.has("modalView")&&(this.hide=this.modalView),e.has("cameraBoundsMultiplier")&&this.cameraManager.fitCameraToSceneBounds()}_getSlottedElements(e){if(!this.customViewInYourSpaceButtonSlotElem)return[];const t=e.assignedElements();return[...t.length>0?t:e.children]}disconnectedCallback(){this._renderEngine?.destroy(),super.disconnectedCallback()}showFullScreenModal(){this.hide=!1}hideFullScreenModal(){this.hide=!0}render(){return oe`
18376
+ `}getAllHotspotsFromScene(){const e=[];return this.sceneManager.sceneStructure.traverse(t=>{if(t instanceof Nl)for(const n of t.asset.hotspots)this.hotspotsManager.addHotspot(n,!1)}),e}_repopulateHotspots(){window.epigraph.logger.info({title:"Override to repopulate hotspots in scene on identifier changes",contextOverride:this._loggerContext}),this.featuresToEnable.hotspots===!0&&this.hotspotsManager&&(this.hotspotsManager.removeAllHotspots(),this.getAllHotspotsFromScene(),this.updateHotspotsOrder(Array.from(this.hotspotsManager.hotspots.keys())))}_setupAnalytics(){this._isDevEnv||this._isStagingEnv||(this._nexusAnalyticsPlugin=new YQ({trackingID:this.gaMeasurementId,experienceID:"",solution:this.getWebComponentName(),sessionId:window.epigraph.epigraphSessionId,xPath:this.xPath,verboseLogging:this._isDevEnv,sendToStaging:this._isStagingEnv}),this._epigraphAnalytics.addEventPlugin(this._nexusAnalyticsPlugin),this.gaMeasurementId&&(this._ga4AnalyticsPlugin=new VQ({trackingID:this.gaMeasurementId,experienceID:"",solution:this.getWebComponentName(),verboseLogging:this._isDevEnv}),this._epigraphAnalytics.addEventPlugin(this._ga4AnalyticsPlugin)))}__onWebComponentResize(){if(!this.appCanvasContainerElemRef)return;const{width:e,height:t}=this.appCanvasContainerElemRef.getBoundingClientRect();if(e===0||t===0)return;this.__canvasSize.width=e,this.__canvasSize.height=t;const n=this.cameraManager?.getCameras()?.main,s=this.cameraManager?.getCameras().screenshot;n&&(n.aspect=this.aspectRatio,n.updateProjectionMatrix()),s&&(s.aspect=this.aspectRatio,s.updateProjectionMatrix()),this.dimensionsManager&&!this.hotspotsManager?.activeHotspot&&this.cameraManager.fitCameraToSceneBounds(!1),this.renderEngine.mainRenderer.setSize(e,t),this.renderEngine.textRenderer.setSize(e,t),this.renderEngine.effectsComposer.setSize(e,t),this.isPortraitOrientation=e<700;const r=e*.5,a=t*.5;if(r>230)this._isToolsetLargerThanTheLeftBottomQuadrant=!1;else{const o=this.toolsetElem?.getBoundingClientRect();if(o){const l=o.width>r,c=o.height>a;this._isToolsetLargerThanTheLeftBottomQuadrant=l||c}}this.postRenderFrameUpdateInEngine(this.renderEngine.getClockDelta()),this.eventsManager.webComponentResized.fire()}__onDimensionsPositionChanged(){this.renderEngine.updateDimensionLines(this.dimensionsManager.getCurrentDimensionsIndicatorState())}showSplashScreen(){this.splashScreenElem?.show()}hideSplashScreen(){this.splashScreenElem?.hide()}showTransitionScreen(){this.transitionScreenElem.classList.add("show")}hideTransitionScreen(){this.transitionScreenElem.classList.remove("show")}get isNewExperienceData(){return this.__isNewExperienceData}_setupVisibilityObserver(){new IntersectionObserver(()=>{this.isAppReady&&(window.epigraph.logger.info({title:"Component became visible, re-calculating scene hierarchy.",contextOverride:this._loggerContext}),this._onSceneHierarchyUpdate(),(this.__isNewExperienceData||this.variantSwitchMode==="default")&&this.productSettings.camera.initial&&this.cameraManager.moveCameraToLocation({newCameraTransforms:this.productSettings.camera.initial,transition:!1}).then(()=>{this.productSettings.camera.initial?.skipCameraFit||this.cameraManager.fitCameraToSceneBounds()}))}).observe(this)}async _postExperienceDataInitialization(){if(this.productSettings.render.mode===Qa.SPLAT&&this._renderEngine.sparkRenderer){const{preBlurAmount:s,blurAmount:r}=this.productSettings.render.splatMode;this._renderEngine.sparkRenderer.preBlurAmount=s,this._renderEngine.sparkRenderer.blurAmount=r}const e=this._experienceData.productVariantCollection.getProductVariantByIdentifierAndType(this._identifier,this._identifierType);if(!e)return Promise.reject(!1);const{envMap:t,envMapRotation:n}=this.productSettings.render;return await this.renderEngine.updateEnvMap(t,n),await this.spawnProductVariant(e)}async spawnProductVariant(e){if(!e.productParts)return Promise.reject(!1);const t=[];for(const n of e.productParts){const s=this._experienceData.getAssetCollection().getAssetByName(n.asset);s&&t.push(s)}await this.loadAllPartAssetSynchronously(t);for(const n of e.productParts)await this.spawnProductPart(n);return Promise.resolve(!0)}async loadAllPartAssetSynchronously(e){const t=[];for(const n of e)t.push(n.load());return Promise.all(t)}async spawnProductPart(e){if(!e.assetClass||!e.assetId)return Promise.resolve(!0);let t=this.sceneManager.sceneStructure.getEntityForAssetId(e.assetId);if(!t){const s=this._experienceData.getAssetCollection().getAssetByName(e.asset);if(!s||(t=await this.spawnAssetInScene(s),!t))return Promise.reject(!1)}const n=e.finish;return n?(await t.selectAssetFinish(n),Promise.resolve(!0)):Promise.resolve(!1)}async _fetchExperienceDataConfig(){return null}async _buildExperienceData(){const e=await this._fetchExperienceDataConfig();if(e===null)return await this._onAuthenticationFailed("Unable to retrieve experience data config."),Promise.reject();if(!e.success)return await this._onAuthenticationFailed(e.message),Promise.reject();this._experienceData=new yJ({nexusApiResultPayload:e.payload,appWcRef:this}),await this._experienceData.initialize();const t=this._experienceData.channelSettings.ga_measurement_id;!this.gaMeasurementId&&t&&(window.epigraph.logger.info({title:"GA Measurement ID set from experience data",details:t,contextOverride:this._loggerContext}),this.gaMeasurementId=t,this._setupAnalytics())}__checkIfCurrentExperienceHasIdentifier(e,t){let n=!1;switch(e){case"sku":this.experienceData?.productVariantCollection?.getProductVariantBySku(t)&&(n=!0);break;case"shopify_variant_id":this.experienceData?.productVariantCollection?.getProductVariantByShopifyVariantId(t)&&(n=!0);break;case"upc":this.experienceData?.productVariantCollection?.getProductVariantByUpc(t)&&(n=!0);break;case"asin":this.experienceData?.productVariantCollection?.getProductVariantByAsin(t)&&(n=!0);break;case"product_variant_uuid":this.experienceData?.productVariantCollection?.getProductVariantByUuid(t)&&(n=!0);break}return n}_guessesWhyTheExperienceFailed(){const e=[];return this._experienceData.getAssetCollection().hasAnyAssetWithSplat()&&this.productSettings.render.mode!==Qa.SPLAT&&e.push("Render Splat provided in one of the assets. Try switching the render mode to Splat in Render Settings."),e}async _clearAndLoadNewExperienceInScene(){this._onNewExperienceLoadStart();const e=this.__checkIfCurrentExperienceHasIdentifier(this.identifierType,this.identifier);e===!1&&await this._buildExperienceData().catch(t=>(window.epigraph.logger.error({title:`Couldn't build experience data for "${this.identifierType}" - "${this.identifier}"`,details:t,contextOverride:this._loggerContext}),Promise.reject(t))),await this._resetSession(),await this._postExperienceDataInitialization().catch(t=>Promise.reject(t)),this.parsedUrlParams.get(Rd.AR)&&!this.didARAutoLaunch&&(await this.launchAR(),this.didARAutoLaunch=!0),await this._onNewExperienceLoadFinish(e)}async _onIdentifierOrTypeChange(){if(this.isAppReady){if(await this._resolveIdentifierAndType(),!this._identifier||!this._identifierType)return Promise.reject("No valid Identifier Provided! Please provide on of the following: sku, shopify-variant-id, upc, asin, product-variant-uuid");window.epigraph.logger.info({title:"IDENTIFIER CHANGED",details:`${this._identifierType} = ${this._identifier}`,contextOverride:this._loggerContext}),this._nexusAnalyticsPlugin&&(this._nexusAnalyticsPlugin.experienceID=this._identifier),this._ga4AnalyticsPlugin&&(this._ga4AnalyticsPlugin.experienceID=this._identifier),await this._clearAndLoadNewExperienceInScene().catch(e=>(window.epigraph.logger.error({title:"Error while clearing the session and loading a new experience.",details:e,contextOverride:this._loggerContext}),window.epigraph.logger.warn({title:"BEST GUESSES FOR FAILURE BELOW:",details:this._guessesWhyTheExperienceFailed(),contextOverride:this._loggerContext}),Promise.reject(e)))}}showCameraInteractionPromptIndicator(){this.cameraInteractionPromptIndicatorElemRef?.classList.add("show")}hideCameraInteractionPromptIndicator(){this.cameraInteractionPromptIndicatorElemRef?.classList.remove("show")}_onPlayInteractionPromptChange(){this.playInteractionPrompt?this.__onPlayInteractionPrompt(this.getInteractionPromptRepeat()[0]):(this.hideCameraInteractionPromptIndicator(),this._cameraManager?.mainCameraControls?.stop&&this._cameraManager?.mainCameraControls?.stop())}connectedCallback(){super.connectedCallback(),this._loadTimeBegin=performance.now(),this.parsedUrlParams=vt.parseUrlForEpigraphParams(this.baseUrlOverride),this._setupAnalytics()}firstUpdated(){this.modalView&&(this.hide=!0),this._setup().then(()=>{window.epigraph.logger.info({title:"All Initializations Complete",contextOverride:this._loggerContext}),this.isAppReady=!0,this._onIdentifierOrTypeChange().catch(e=>{this.onLoadFailed(Ld.EXPERIENCE_CONFIG_ERROR,e)})}).catch(e=>{window.epigraph.logger.error({title:"Error while setup",details:e,contextOverride:this._loggerContext}),this.onLoadFailed(Ld.INITIAL_SCENE_LOAD_ERROR,e)})}updated(e){(e.has("sku")||e.has("shopify_variant_id")||e.has("upc")||e.has("asin")||e.has("product_variant_uuid")||e.has("customVersionId"))&&this._onIdentifierOrTypeChange(),e.has("playInteractionPrompt")&&this._onPlayInteractionPromptChange(),e.has("_hasActiveHotspot")&&(this._hasActiveHotspot?this._hideCustomViewInYourSpaceButton():this._showCustomViewInYourSpaceButton()),e.has("debug")&&this.eventsManager.debugChanged.fire({value:this.debug}),e.has("showSettings")&&this.eventsManager.showSettingsChanged.fire({value:this.showSettings}),e.has("modalView")&&(this.hide=this.modalView),e.has("cameraBoundsMultiplier")&&this.cameraManager.fitCameraToSceneBounds()}_getSlottedElements(e){if(!this.customViewInYourSpaceButtonSlotElem)return[];const t=e.assignedElements();return[...t.length>0?t:e.children]}disconnectedCallback(){this._renderEngine?.dispose(),super.disconnectedCallback()}showFullScreenModal(){this.hide=!1}hideFullScreenModal(){this.hide=!0}render(){return oe`
18377
18377
  ${vt.getCustomStylesTemplate()}
18378
18378
 
18379
18379
  <epg-button-icon
@@ -18392,7 +18392,7 @@ void main() {
18392
18392
  </slot>
18393
18393
 
18394
18394
  ${this._renderTransitionScreen()}
18395
- `}};At([Y({type:String,attribute:Ht.sku.name})],ut.prototype,"sku");At([Y({type:String,attribute:Ht.shopifyVariantId.name})],ut.prototype,"shopify_variant_id");At([Y({type:String,attribute:Ht.upc.name})],ut.prototype,"upc");At([Y({type:String,attribute:Ht.asin.name})],ut.prototype,"asin");At([Y({type:String,attribute:Ht.productVariantUuid.name})],ut.prototype,"product_variant_uuid");At([Y({type:String,attribute:Ht.customVersionId.name})],ut.prototype,"customVersionId");At([Y({type:String,attribute:Ht.gaMeasurementId.name})],ut.prototype,"gaMeasurementId");At([Y({type:Boolean,attribute:Ht.modalView.name,reflect:!0})],ut.prototype,"modalView");At([Y({type:Boolean,attribute:Ht.hide.name,reflect:!0})],ut.prototype,"hide");At([Y({type:Boolean,attribute:!1})],ut.prototype,"isLoading");At([Y({type:String,attribute:Ht.apiMode.name})],ut.prototype,"apiMode");At([Y({type:Boolean,attribute:Ht.debug.name,reflect:!0})],ut.prototype,"debug");At([Y({type:Boolean,attribute:Ht.showSettings.name,reflect:!0})],ut.prototype,"showSettings");At([Y({type:String,attribute:Ht.dimensionsUnit.name})],ut.prototype,"dimensionsUnit");At([Y({type:String,attribute:Ht.dimensionsUnitSymbol.name})],ut.prototype,"dimensionsUnitSymbol");At([Y({type:Boolean,attribute:!1})],ut.prototype,"areDimensionsActive");At([Y({type:Boolean,attribute:!1})],ut.prototype,"areHotspotsActive");At([Y({type:String,attribute:Ht.variantSwitchMode.name})],ut.prototype,"variantSwitchMode");At([Y({type:Boolean,attribute:!1})],ut.prototype,"isHelpVisible");At([Y({type:String,attribute:Ht.baseUrlOverride.name})],ut.prototype,"baseUrlOverride");At([Y({attribute:Ht.cameraBoundsMultiplier.name,type:Number})],ut.prototype,"cameraBoundsMultiplier");At([Y({attribute:!1})],ut.prototype,"isPortraitOrientation");At([Y({attribute:!1})],ut.prototype,"didARAutoLaunch");At([Y({type:Boolean,attribute:Ht.transparentBackground.name})],ut.prototype,"transparentBackground");At([Y({type:String,attribute:Ht.splashScreenLogo.name})],ut.prototype,"splashScreenLogo");At([Y({type:String,attribute:Ht.splashScreenText.name})],ut.prototype,"splashScreenText");At([Y({type:Boolean,attribute:"hide-ui",reflect:!0})],ut.prototype,"hideUi");At([Y({attribute:!1})],ut.prototype,"playInteractionPrompt");At([Y({attribute:!1})],ut.prototype,"featuresToEnable");At([Ot("#appUiContainer")],ut.prototype,"appUiContainerElemRef");At([Ot("#appCanvasContainer")],ut.prototype,"appCanvasContainerElemRef");At([Ot("#cameraInteractionPromptIndicator")],ut.prototype,"cameraInteractionPromptIndicatorElemRef");At([Ot("#cameraAimIndicator")],ut.prototype,"cameraAimElemRef");At([Ot("#qrCodeGenerator")],ut.prototype,"qrCodeGenerator");At([Ot("#splashScreen")],ut.prototype,"splashScreenElem");At([Ot("#transitionScreen")],ut.prototype,"transitionScreenElem");At([Ot("#toolset")],ut.prototype,"toolsetElem");At([Ot("#customViewInYourSpaceButtonSlotElem")],ut.prototype,"customViewInYourSpaceButtonSlotElem");At([Ot("#viewInYourSpaceManager")],ut.prototype,"viewInYourSpaceManager");At([Ot("#dimensionsManager")],ut.prototype,"dimensionsManager");At([Ot("#helpOverlay")],ut.prototype,"helpOverlayElem");At([Ot("#hotspotsManager")],ut.prototype,"hotspotsManager");At([Ot("#debugManager")],ut.prototype,"debugManager");At([zn()],ut.prototype,"_hasActiveHotspot");At([zn()],ut.prototype,"_isToolsetLargerThanTheLeftBottomQuadrant");At([zn()],ut.prototype,"_loadingProgress");let Jv=ut;const lQ={label:{name:"label",defaultValue:"View In Your Space"}},TJ={...Vf};class cQ{constructor(e){this._appWcRef=e}async launchAR(){return await this._appWcRef.launchAR()}async viewInYourSpace(){return await this.launchAR()}async presentAr(){return this._appWcRef.presentAr()}async getViewInYourSpaceUrl(){return""}async getViewInYourSpaceQR(){return""}canLaunchAR(){return this._appWcRef.viewInYourSpaceManager.canLaunchAr()}isARSessionActive(){return this._appWcRef.viewInYourSpaceManager.isARSessionActive()}getMinimumRequirementsString(){return this._appWcRef.viewInYourSpaceManager.getMinimumRequirementsString()}async selectFinishForAsset(e,t){return this._appWcRef.selectFinishForAssetName(e,t)}}var MJ=Object.defineProperty,RJ=(i,e,t,n)=>{for(var s=void 0,r=i.length-1,a;r>=0;r--)(a=i[r])&&(s=a(e,t,s)||s);return s&&MJ(e,t,s),s};const hQ=class Kc extends Jv{constructor(){super(),this.featuresToEnable={viewer:!0,hotspots:!1,dimensions:!1,viewInYourSpace:!0,help:!1,sceneManager:!1,debugManager:!1},this.epigraphWebsiteRedirectUrls={icon:"https://www.epigraph.us/?utm_source=epigraph&utm_medium=experience&utm_campaign=powered-by&utm_id=powered-by-icon&utm_content=button",modal:"https://www.epigraph.us/?utm_source=epigraph&utm_medium=experience&utm_campaign=powered-by&utm_id=powered-by-modal&utm_content=button"},this.label=lQ.label.defaultValue.toString(),this._loggerContext="EPIGRAPH BUTTON",window.epigraph.logger.info({title:`Initializing ${Kc.webComponentName}...`,contextOverride:this._loggerContext}),this.api=new cQ(this)}static{this.webComponentName="epigraph-button"}static setupWebComponent(){window.customElements.get(Kc.webComponentName)||window.customElements.define(Kc.webComponentName,Kc)}static{this.styles=[super.styles,pt`
18395
+ `}};At([Y({type:String,attribute:Ht.sku.name})],ut.prototype,"sku");At([Y({type:String,attribute:Ht.shopifyVariantId.name})],ut.prototype,"shopify_variant_id");At([Y({type:String,attribute:Ht.upc.name})],ut.prototype,"upc");At([Y({type:String,attribute:Ht.asin.name})],ut.prototype,"asin");At([Y({type:String,attribute:Ht.productVariantUuid.name})],ut.prototype,"product_variant_uuid");At([Y({type:String,attribute:Ht.customVersionId.name})],ut.prototype,"customVersionId");At([Y({type:String,attribute:Ht.gaMeasurementId.name})],ut.prototype,"gaMeasurementId");At([Y({type:Boolean,attribute:Ht.modalView.name,reflect:!0})],ut.prototype,"modalView");At([Y({type:Boolean,attribute:Ht.hide.name,reflect:!0})],ut.prototype,"hide");At([Y({type:Boolean,attribute:!1})],ut.prototype,"isLoading");At([Y({type:String,attribute:Ht.apiMode.name})],ut.prototype,"apiMode");At([Y({type:Boolean,attribute:Ht.debug.name,reflect:!0})],ut.prototype,"debug");At([Y({type:Boolean,attribute:Ht.showSettings.name,reflect:!0})],ut.prototype,"showSettings");At([Y({type:String,attribute:Ht.dimensionsUnit.name})],ut.prototype,"dimensionsUnit");At([Y({type:String,attribute:Ht.dimensionsUnitSymbol.name})],ut.prototype,"dimensionsUnitSymbol");At([Y({type:Boolean,attribute:!1})],ut.prototype,"areDimensionsActive");At([Y({type:Boolean,attribute:!1})],ut.prototype,"areHotspotsActive");At([Y({type:String,attribute:Ht.variantSwitchMode.name})],ut.prototype,"variantSwitchMode");At([Y({type:Boolean,attribute:!1})],ut.prototype,"isHelpVisible");At([Y({type:String,attribute:Ht.baseUrlOverride.name})],ut.prototype,"baseUrlOverride");At([Y({attribute:Ht.cameraBoundsMultiplier.name,type:Number})],ut.prototype,"cameraBoundsMultiplier");At([Y({attribute:!1})],ut.prototype,"isPortraitOrientation");At([Y({attribute:!1})],ut.prototype,"didARAutoLaunch");At([Y({type:Boolean,attribute:Ht.transparentBackground.name})],ut.prototype,"transparentBackground");At([Y({type:String,attribute:Ht.splashScreenLogo.name})],ut.prototype,"splashScreenLogo");At([Y({type:String,attribute:Ht.splashScreenText.name})],ut.prototype,"splashScreenText");At([Y({type:Boolean,attribute:"hide-ui",reflect:!0})],ut.prototype,"hideUi");At([Y({attribute:!1})],ut.prototype,"playInteractionPrompt");At([Y({attribute:!1})],ut.prototype,"featuresToEnable");At([Ot("#appUiContainer")],ut.prototype,"appUiContainerElemRef");At([Ot("#appCanvasContainer")],ut.prototype,"appCanvasContainerElemRef");At([Ot("#cameraInteractionPromptIndicator")],ut.prototype,"cameraInteractionPromptIndicatorElemRef");At([Ot("#cameraAimIndicator")],ut.prototype,"cameraAimElemRef");At([Ot("#qrCodeGenerator")],ut.prototype,"qrCodeGenerator");At([Ot("#splashScreen")],ut.prototype,"splashScreenElem");At([Ot("#transitionScreen")],ut.prototype,"transitionScreenElem");At([Ot("#toolset")],ut.prototype,"toolsetElem");At([Ot("#customViewInYourSpaceButtonSlotElem")],ut.prototype,"customViewInYourSpaceButtonSlotElem");At([Ot("#viewInYourSpaceManager")],ut.prototype,"viewInYourSpaceManager");At([Ot("#dimensionsManager")],ut.prototype,"dimensionsManager");At([Ot("#helpOverlay")],ut.prototype,"helpOverlayElem");At([Ot("#hotspotsManager")],ut.prototype,"hotspotsManager");At([Ot("#debugManager")],ut.prototype,"debugManager");At([zn()],ut.prototype,"_hasActiveHotspot");At([zn()],ut.prototype,"_isToolsetLargerThanTheLeftBottomQuadrant");At([zn()],ut.prototype,"_loadingProgress");let Jv=ut;const lQ={label:{name:"label",defaultValue:"View In Your Space"}},TJ={...Vf};class cQ{constructor(e){this._appWcRef=e}async launchAR(){return await this._appWcRef.launchAR()}async viewInYourSpace(){return await this.launchAR()}async presentAr(){return this._appWcRef.presentAr()}async getViewInYourSpaceUrl(){return this._appWcRef.getViewInYourSpaceUrl()}async getViewInYourSpaceUrlString(){return this._appWcRef.getViewInYourSpaceUrl().href}async getViewInYourSpaceQR(){return this._appWcRef.getViewInYourSpaceQR()}canLaunchAR(){return this._appWcRef.viewInYourSpaceManager.canLaunchAr()}isARSessionActive(){return this._appWcRef.viewInYourSpaceManager.isARSessionActive()}getMinimumRequirementsString(){return this._appWcRef.viewInYourSpaceManager.getMinimumRequirementsString()}async selectFinishForAsset(e,t){return this._appWcRef.selectFinishForAssetName(e,t)}}var MJ=Object.defineProperty,RJ=(i,e,t,n)=>{for(var s=void 0,r=i.length-1,a;r>=0;r--)(a=i[r])&&(s=a(e,t,s)||s);return s&&MJ(e,t,s),s};const hQ=class Kc extends Jv{constructor(){super(),this.featuresToEnable={viewer:!0,hotspots:!1,dimensions:!1,viewInYourSpace:!0,help:!1,sceneManager:!1,debugManager:!1},this.epigraphWebsiteRedirectUrls={icon:"https://www.epigraph.us/?utm_source=epigraph&utm_medium=experience&utm_campaign=powered-by&utm_id=powered-by-icon&utm_content=button",modal:"https://www.epigraph.us/?utm_source=epigraph&utm_medium=experience&utm_campaign=powered-by&utm_id=powered-by-modal&utm_content=button"},this.label=lQ.label.defaultValue.toString(),this._loggerContext="EPIGRAPH BUTTON",window.epigraph.logger.info({title:`Initializing ${Kc.webComponentName}...`,contextOverride:this._loggerContext}),this.api=new cQ(this)}static{this.webComponentName="epigraph-button"}static setupWebComponent(){window.customElements.get(Kc.webComponentName)||window.customElements.define(Kc.webComponentName,Kc)}static{this.styles=[super.styles,pt`
18396
18396
  :host {
18397
18397
  --ar-button-display: none;
18398
18398
  position: relative;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epigraph/solutions",
3
- "version": "1.1.8-alpha",
3
+ "version": "1.1.9",
4
4
  "type": "module",
5
5
  "main": "./dist/epigraph-solutions.js",
6
6
  "files": [