@cognite/reveal 3.0.0 → 3.0.1

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.
@@ -5,6 +5,6 @@ export { CdfModelIdentifier, LocalModelIdentifier, ModelIdentifier, File3dFormat
5
5
  export { RevealManager } from './public/RevealManager';
6
6
  export { createLocalRevealManager, createCdfRevealManager } from './public/createRevealManager';
7
7
  export { CadModelSectorLoadStatistics, intersectCadNodes } from '../../packages/cad-model';
8
- export { PotreePointShape, PotreePointColorType, PotreePointSizeType, WellKnownAsprsPointClassCodes, PotreeNodeWrapper, PotreeGroupWrapper, PointCloudNode } from '../../packages/pointclouds';
8
+ export { PotreePointShape, PotreePointColorType, PotreePointSizeType, WellKnownAsprsPointClassCodes, PointCloudNode } from '../../packages/pointclouds';
9
9
  import * as utilities from './utilities';
10
10
  export { utilities };
package/index.js CHANGED
@@ -192,7 +192,7 @@ const s=(new a.Matrix4).set(1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1);function c(e,t){sw
192
192
  */class m{getModelUri(e){if(!(e instanceof p))throw new Error(`Model must be a ${p.name}, but got ${e.toString()}`);return Promise.resolve(`${location.origin}/${e.localPath}`)}async getModelMatrix(e){if(!(e instanceof p))throw new Error(`Model must be a ${p.name}, but got ${e.toString()}`);const t=new a.Matrix4;return c(t,o.RevealCadModel),t}getModelCamera(e){if(!(e instanceof p))throw new Error(`Model must be a ${p.name}, but got ${e.toString()}`);return Promise.resolve(void 0)}async getModelOutputs(e){var t;const r=await this.getModelUri(e),n=null!==(t=await async function(e){let t;try{t=(await(await f(e+"/scene.json")).json()).version}catch(e){return}switch(t){case 8:return Promise.resolve({blobId:-1,format:o.RevealCadModel,version:8});case 9:return Promise.resolve({blobId:-1,format:o.GltfCadModel,version:9});default:return}}(r))&&void 0!==t?t:await async function(e){let t;try{t=await(await f(e+"/ept.json")).json()}catch(e){return}return t?Promise.resolve({blobId:-1,format:o.EptPointCloud,version:-1}):void 0}(r);if(n)return[n];throw new Error("Only point cloud or CAD models (version 8 and 9) are supported)")}}
193
193
  /*!
194
194
  * Copyright 2021 Cognite AS
195
- */},function(e,t){e.exports=require("glslify")},function(e,t){e.exports=require("rxjs")},function(e,t,r){"use strict";r.d(t,"a",(function(){return c}));var n=r(13),i=r.n(n),o=r(11);const{VERSION:a,MIXPANEL_TOKEN:s}={VERSION:"3.0.0",WORKER_VERSION:"1.3.0",MIXPANEL_TOKEN:"8c900bdfe458e32b768450c20750853d",IS_DEVELOPMENT_MODE:!1};class c{constructor(e,t,r){i.a.init(s,{disable_cookie:!0,disable_persistence:!0,ip:!1,property_blacklist:["$city","$region","mp_country_code","$geo_source","$timezone","mp_lib","$lib_version","$device_id","$user_id","$current_url","$screen_width","$screen_height","$referrer","$referring_domain","$initial_referrer","$initial_referring_domain"]}),i.a.reset(),i.a.identify("reveal-single-user"),this._sessionProps={VERSION:a,project:"unknown",application:"unknown",sessionId:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},e&&(this._sessionProps.project=e),t&&(this._sessionProps.application=t),this.innerTrackEvent("init",r)}static init(e,t,r,n){if(void 0===globalThis.revealMetricsLogger&&e){const e=new c(t,r,n);globalThis.revealMetricsLogger={metricsLogger:e}}}innerTrackEvent(e,t){const r={...this._sessionProps,...t};i.a.track(e,r)}static trackEvent(e,t){globalThis.revealMetricsLogger&&globalThis.revealMetricsLogger.metricsLogger.innerTrackEvent(e,t)}static trackCreateTool(e){c.trackEvent("toolCreated",{toolName:e})}static trackLoadModel(e,t,r){c.trackEvent("loadModel",{...e,modelIdentifier:t,modelVersion:r})}static trackCadModelStyled(e,t){c.trackEvent("cadModelStyleAssigned",{nodeCollectionClassToken:e,style:t})}static trackError(e,t){o.a.error(e),void 0!==e?this.trackEvent("error",{message:e.message||e,name:e.name,stack:e.stack,...t}):this.trackEvent("error",{name:"unknown",...t})}static trackCameraNavigation(e){c.trackEvent("cameraNavigated",e)}}
195
+ */},function(e,t){e.exports=require("glslify")},function(e,t){e.exports=require("rxjs")},function(e,t,r){"use strict";r.d(t,"a",(function(){return c}));var n=r(13),i=r.n(n),o=r(11);const{VERSION:a,MIXPANEL_TOKEN:s}={VERSION:"3.0.1",WORKER_VERSION:"1.3.0",MIXPANEL_TOKEN:"8c900bdfe458e32b768450c20750853d",IS_DEVELOPMENT_MODE:!1};class c{constructor(e,t,r){i.a.init(s,{disable_cookie:!0,disable_persistence:!0,ip:!1,property_blacklist:["$city","$region","mp_country_code","$geo_source","$timezone","mp_lib","$lib_version","$device_id","$user_id","$current_url","$screen_width","$screen_height","$referrer","$referring_domain","$initial_referrer","$initial_referring_domain"]}),i.a.reset(),i.a.identify("reveal-single-user"),this._sessionProps={VERSION:a,project:"unknown",application:"unknown",sessionId:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))},e&&(this._sessionProps.project=e),t&&(this._sessionProps.application=t),this.innerTrackEvent("init",r)}static init(e,t,r,n){if(void 0===globalThis.revealMetricsLogger&&e){const e=new c(t,r,n);globalThis.revealMetricsLogger={metricsLogger:e}}}innerTrackEvent(e,t){const r={...this._sessionProps,...t};i.a.track(e,r)}static trackEvent(e,t){globalThis.revealMetricsLogger&&globalThis.revealMetricsLogger.metricsLogger.innerTrackEvent(e,t)}static trackCreateTool(e){c.trackEvent("toolCreated",{toolName:e})}static trackLoadModel(e,t,r){c.trackEvent("loadModel",{...e,modelIdentifier:t,modelVersion:r})}static trackCadModelStyled(e,t){c.trackEvent("cadModelStyleAssigned",{nodeCollectionClassToken:e,style:t})}static trackError(e,t){o.a.error(e),void 0!==e?this.trackEvent("error",{message:e.message||e,name:e.name,stack:e.stack,...t}):this.trackEvent("error",{name:"unknown",...t})}static trackCameraNavigation(e){c.trackEvent("cameraNavigated",e)}}
196
196
  /*!
197
197
  * Copyright 2021 Cognite AS
198
198
  */},function(e,t){e.exports=require("@cognite/potree-core")},function(e,t,r){"use strict";var n=r(26);
@@ -342,9 +342,6 @@ class Ge{constructor(e){this.materialManager=e}transformSimpleSector(e,t,r,n){co
342
342
  /*!
343
343
  * Copyright 2021 Cognite AS
344
344
  */class $e{constructor(e,t,r){this.modelId=e,this.revisionId=t,this.nodesApiClient=r,this.nodeIdToTreeIndexMap=new Map,this.treeIndexToNodeIdMap=new Map,this.treeIndexSubTreeSizeMap=new Map,this.nodeIdRequestObservable=new d.Subject,this.nodeIdResponse=this.nodeIdRequestObservable.pipe(Object(v.bufferTime)(50),Object(v.filter)(e=>e.length>0),Object(v.mergeMap)(async e=>{const t=await this.nodesApiClient.mapNodeIdsToTreeIndices(this.modelId,this.revisionId,e);return e.map((e,r)=>({nodeId:e,treeIndex:t[r]}))}),Object(v.mergeAll)(),Object(v.tap)(e=>{this.nodeIdToTreeIndexMap.set(e.nodeId,e.treeIndex),this.treeIndexToNodeIdMap.set(e.treeIndex,e.nodeId)}),Object(v.share)()),this.treeIndexRequestObservable=new d.Subject,this.treeIndexResponse=this.treeIndexRequestObservable.pipe(Object(v.bufferTime)(50),Object(v.filter)(e=>e.length>0),Object(v.mergeMap)(async e=>{const t=await this.nodesApiClient.mapTreeIndicesToNodeIds(this.modelId,this.revisionId,e);return e.map((e,r)=>({nodeId:t[r],treeIndex:e}))}),Object(v.mergeAll)(),Object(v.tap)(e=>{this.nodeIdToTreeIndexMap.set(e.nodeId,e.treeIndex),this.treeIndexToNodeIdMap.set(e.treeIndex,e.nodeId)}),Object(v.share)()),this.subtreeSizeObservable=new d.Subject,this.subtreeSizeResponse=this.subtreeSizeObservable.pipe(Object(v.bufferTime)(50),Object(v.filter)(e=>e.length>0),Object(v.mergeMap)(async e=>this.nodesApiClient.determineTreeIndexAndSubtreeSizesByNodeIds(this.modelId,this.revisionId,e)),Object(v.mergeAll)(),Object(v.tap)(e=>{this.treeIndexSubTreeSizeMap.set(e.treeIndex,e.subtreeSize)}),Object(v.share)())}async getTreeIndex(e){const t=this.nodeIdToTreeIndexMap.get(e);if(void 0!==t)return t;const r=this.nodeIdResponse.pipe(Object(v.first)(t=>t.nodeId===e),Object(v.map)(e=>e.treeIndex)).toPromise();return this.nodeIdRequestObservable.next(e),await r}async getNodeId(e){const t=this.treeIndexToNodeIdMap.get(e);if(void 0!==t)return t;const r=this.treeIndexResponse.pipe(Object(v.first)(t=>t.treeIndex===e),Object(v.map)(e=>e.nodeId)).toPromise();return this.treeIndexRequestObservable.next(e),await r}async getSubtreeSize(e){const t=this.treeIndexSubTreeSizeMap.get(e);if(t)return t;const r=await this.getNodeId(e),n=this.subtreeSizeResponse.pipe(Object(v.first)(t=>t.treeIndex===e),Object(v.map)(e=>e.subtreeSize)).toPromise();return this.subtreeSizeObservable.next(r),await n}async getTreeIndices(e){const t=e.map(e=>this.nodeIdToTreeIndexMap.get(e)||-1),r=e.filter((e,r)=>-1===t[r]);if(0===r.length)return t;const n=new Map(e.map((e,t)=>[e,t])),i=await this.nodesApiClient.mapNodeIdsToTreeIndices(this.modelId,this.revisionId,r);console.assert(r.length===i.length);for(let e=0;e<i.length;e++){const o=r[e],a=i[e],s=n.get(o);t[s]=a,this.add(o,a)}return t}async getNodeIds(e){const t=e.map(e=>this.treeIndexToNodeIdMap.get(e)||-1),r=e.filter((e,r)=>-1===t[r]);if(0===r.length)return t;const n=new Map(e.map((e,t)=>[e,t])),i=await this.nodesApiClient.mapTreeIndicesToNodeIds(this.modelId,this.revisionId,r);console.assert(i.length===r.length);for(let e=0;e<i.length;e++){const o=i[e],a=r[e],s=n.get(a);t[s]=o,this.add(o,a)}return t}add(e,t){this.nodeIdToTreeIndexMap.set(e,t),this.treeIndexToNodeIdMap.set(t,e)}}
345
- /*!
346
- * Copyright 2022 Cognite AS
347
- */
348
345
  /*!
349
346
  * Copyright 2021 Cognite AS
350
347
  */class et extends o.Object3D{constructor(e,t,r,n){super(),this.type="cad",this._styledNodeCollections=[],this.modelId=e,this.revisionId=t,this.cadModel=r.cadModelMetadata,this.nodesApiClient=n,this.nodeIdAndTreeIndexMaps=new $e(e,t,this.nodesApiClient),this.cadNode=r,this.add(this.cadNode),Object.defineProperty(this,"visible",{get:()=>this.cadNode.visible,set:e=>{this.cadNode.visible=e}})}get nodeTransformProvider(){return this.cadNode.nodeTransformProvider}get modelUnit(){return this.cadNode.cadModelMetadata.scene.unit}get modelUnitToMetersFactor(){return Object(m.q)(this.modelUnit)}setDefaultNodeAppearance(e){this.cadNode.defaultNodeAppearance=e}getDefaultNodeAppearance(){return this.cadNode.defaultNodeAppearance}get styledNodeCollections(){return[...this._styledNodeCollections]}assignStyledNodeCollection(e,t){p.a.trackCadModelStyled(e.classToken,t);const r=this._styledNodeCollections.findIndex(t=>t.nodeCollection===e);-1!==r?this._styledNodeCollections[r].appearance=t:this._styledNodeCollections.push({nodeCollection:e,appearance:t}),this.cadNode.nodeAppearanceProvider.assignStyledNodeCollection(e,t)}unassignStyledNodeCollection(e){const t=this._styledNodeCollections.findIndex(t=>t.nodeCollection===e);if(-1===t)throw new Error("Node collection has not been assigned to model");this._styledNodeCollections.splice(t,1),this.cadNode.nodeAppearanceProvider.unassignStyledNodeCollection(e)}removeAllStyledNodeCollections(){this._styledNodeCollections.splice(0),this.cadNode.nodeAppearanceProvider.clear()}setNodeTransform(e,t){this.nodeTransformProvider.setNodeTransform(e,t)}resetNodeTransform(e){this.nodeTransformProvider.resetNodeTransform(e)}mapFromCdfToModelCoordinates(e,t){return(t=void 0!==t?t:new o.Vector3)!==e&&t.copy(e),t.applyMatrix4(this.cadModel.modelMatrix),t}mapPositionFromModelToCdfCoordinates(e,t){return(t=void 0!==t?t:new o.Vector3)!==e&&t.copy(e),t.applyMatrix4(this.cadModel.inverseModelMatrix),t}mapBoxFromModelToCdfCoordinates(e,t){return(t=null!=t?t:new o.Box3)!==e&&t.copy(e),t.applyMatrix4(this.cadModel.inverseModelMatrix),t}mapBoxFromCdfToModelCoordinates(e,t){return(t=null!=t?t:new o.Box3)!==e&&t.copy(e),t.applyMatrix4(this.cadModel.modelMatrix),t}dispose(){this.children=[]}async getSubtreeTreeIndices(e){return this.determineTreeIndices(e,!0)}async getAncestorTreeIndices(e,t){const r=await this.mapTreeIndexToNodeId(e),n=await this.nodesApiClient.determineNodeAncestorsByNodeId(this.modelId,this.revisionId,r,t);return new u.j(n.treeIndex,n.subtreeSize)}getModelBoundingBox(e,t){const r=t?this.cadModel.scene.getBoundsOfMostGeometry():this.cadModel.scene.root.subtreeBoundingBox;return(e=e||new o.Box3).copy(r),e.applyMatrix4(this.cadModel.modelMatrix),e}getCameraConfiguration(){return this.cadModel.cameraConfiguration}setModelTransformation(e){this.cadNode.setModelTransformation(e)}getModelTransformation(e){return this.cadNode.getModelTransformation(e)}async getBoundingBoxByNodeId(e,t){try{return(t=(await this.nodesApiClient.getBoundingBoxesByNodeIds(this.modelId,this.revisionId,[e]))[0]).applyMatrix4(this.cadModel.modelMatrix),t}catch(e){throw p.a.trackError(e,{moduleName:"Cognite3DModel",methodName:"getBoundingBoxByNodeId"}),e}}async getBoundingBoxByTreeIndex(e,t){const r=await this.nodeIdAndTreeIndexMaps.getNodeId(e);return this.getBoundingBoxByNodeId(r,t)}iterateNodesByTreeIndex(e){return Ke(0,this.cadModel.scene.maxTreeIndex,e)}get nodeCount(){return this.cadModel.scene.maxTreeIndex+1}async iterateSubtreeByTreeIndex(e,t){const r=await this.determineTreeIndices(e,!0);return Ke(r.from,r.toInclusive,t)}async setNodeTransformByTreeIndex(e,t,r=!0){const n=await this.determineTreeIndices(e,r);return this.nodeTransformProvider.setNodeTransform(n,t),n.count}async resetNodeTransformByTreeIndex(e,t=!0){const r=await this.determineTreeIndices(e,t);return this.nodeTransformProvider.resetNodeTransform(r),r.count}async mapNodeIdsToTreeIndices(e){return this.nodeIdAndTreeIndexMaps.getTreeIndices(e)}async mapNodeIdToTreeIndex(e){return this.nodeIdAndTreeIndexMaps.getTreeIndex(e)}async mapTreeIndicesToNodeIds(e){return this.nodeIdAndTreeIndexMaps.getNodeIds(e)}async mapTreeIndexToNodeId(e){return this.nodeIdAndTreeIndexMaps.getNodeId(e)}async determineTreeIndices(e,t){let r=1;if(t){const t=await this.nodeIdAndTreeIndexMaps.getSubtreeSize(e);r=t||1}return new u.j(e,r)}}
@@ -391,7 +388,7 @@ class _t extends o.Object3D{constructor(e,t,r){super(),this.type="pointcloud",th
391
388
  /*!
392
389
  * Copyright 2021 Cognite AS
393
390
  */
394
- class kt{constructor(e){this._loading=!1,kt.loadStyles(),this.el=document.createElement("div"),this.el.title=kt.titles.idle,this.el.className=kt.classnames.base,this.el.classList.add(kt.classnames.topLeft),this.el.innerHTML='<svg fill="none" xmlns="http://www.w3.org/2000/svg" width="64" height="38" viewBox="0 0 64 38">\n <path id="reveal-spinner-top-1" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288c-28.2275 5.9674-28.7378 6.0661-29.2355 6.1624h-.0001c-1.3944.2698-2.6891.5203-3.9772.7036v-6.3583c-.0652-1.475-1.2799-2.6372-2.7563-2.6372s-2.6911 1.1622-2.7563 2.6372v7.1072z"/>\n <path id="reveal-spinner-top-2" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288c-16.8452 3.375-17.0189 3.4183-17.1711 3.506-1.7276.3694-3.3435.7389-4.9594 1.1083l-.0571.013V7.6106c-.0465-1.48876-1.2668-2.67155-2.7563-2.67155S22.8005 6.12184 22.754 7.6106v13.5866z"/>\n <path id="reveal-spinner-top-3" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288c-7.274 1.2593-9.1537 1.6344-11.0347 2.0095V2.74337c-.0338-1.54541-1.3116-2.7721267-2.8571-2.74285692h-.0134C35.0327.00556379 33.8015 1.2272 33.7846 2.74337V18.7098z"/>\n <path id="reveal-spinner-top-4" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288v-3.2274c0-1.5594-1.2642-2.82358-2.8236-2.82358s-2.8235 1.26418-2.8235 2.82358v4.4z"/>\n <path id="reveal-spinner-center" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288C5.46324 23.6926 1.83164 23.4439 1.45248 22.3172c-.773329-1.6548 3.63593-3.8942 5.79662-4.9915.28489-.1447.53068-.2695.72036-.3706v-.1237h-.12505c-1.62823.6226-8.646718 3.4958-7.768735 5.9832.875294 2.7456 11.653125 3.4958 34.086725-1.9939 18.7926-4.6145 27.4393-5.4925 28.3173-3.7446.6266 1.4952-4.0121 4.3644-8.5217 6.3597-.0966.0984-.1427.2357-.125.3724l.002.002c.1243.1244.2474.2475.3745.1231 1.6268-.6266 10.1499-4.238 9.7721-7.2323-.3738-1.9935-4.8842-2.6175-13.5274-1.3722z"/>\n <path id="reveal-spinner-bot-1" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.7557 30.5551v-2.0894c1.8291-.1048 3.6511-.3108 5.4575-.6171v2.7065c-.033 1.4835-1.245 2.6689-2.7288 2.6689s-2.6958-1.1854-2.7287-2.6689z"/>\n <path id="reveal-spinner-bot-2" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M22.7715 26.9222v7.602c-.0132 1.496 1.1804 2.7238 2.6762 2.7529 1.4957.0291 2.7362-1.1513 2.7813-2.6467v-8.8309c-1.7953.4821-3.6177.857-5.4575 1.1227z"/>\n <path id="reveal-spinner-bot-3" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M33.87 24.7193h-.3764v5.3419c.066 1.5151 1.3136 2.7095 2.8302 2.7095s2.7642-1.1944 2.8303-2.7095v-6.5883c-.3876.0886-.7821.1771-1.1838.2671l-.0007.0002c-1.2926.2897-2.6585.5959-4.0996.9764v.0027z"/>\n <path id="reveal-spinner-bot-4" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M44.5094 22.2377c2.1383-.3726 4.0242-.7438 5.6578-1.1137v4.3375c-.0249 1.5094-1.2534 2.7212-2.763 2.7254h-.0162c-.7432.0206-1.4641-.255-2.004-.7662-.54-.5112-.8546-1.216-.8746-1.9592v-3.2238z"/>\n</svg>\n',e.style.position="relative",e.appendChild(this.el)}static loadStyles(){if(document.getElementById(kt.stylesId))return;const e=document.createElement("style");e.id=kt.stylesId,e.appendChild(document.createTextNode(".reveal-viewer-spinner-top-left {\n top: 10px;\n left: 10px;\n}\n\n.reveal-viewer-spinner-top-right {\n top: 10px;\n right: 10px;\n}\n\n.reveal-viewer-spinner-bottom-left {\n bottom: 10px;\n left: 10px;\n}\n\n.reveal-viewer-spinner-bottom-right {\n bottom: 10px;\n right: 10px;\n}\n\n.reveal-viewer-spinner {\n position: absolute;\n color: white;\n}\n.reveal-viewer-spinner--dark {\n color: black;\n}\n\n.reveal-viewer-spinner--loading #reveal-spinner-bot-1,\n.reveal-viewer-spinner--loading #reveal-spinner-top-1 {\n animation: reveal-loading-opacity 0.8s ease-out infinite alternate;\n}\n.reveal-viewer-spinner--loading #reveal-spinner-bot-2,\n.reveal-viewer-spinner--loading #reveal-spinner-top-2 {\n animation: reveal-loading-opacity 0.8s ease-out 0.2s infinite alternate;\n}\n.reveal-viewer-spinner--loading #reveal-spinner-bot-3,\n.reveal-viewer-spinner--loading #reveal-spinner-top-3 {\n animation: reveal-loading-opacity 0.8s ease-out 0.4s infinite alternate;\n}\n.reveal-viewer-spinner--loading #reveal-spinner-bot-4,\n.reveal-viewer-spinner--loading #reveal-spinner-top-4 {\n animation: reveal-loading-opacity 0.8s ease-out 0.6s infinite alternate;\n}\n\n.reveal-viewer-spinner--loading #center {\n transform-origin: center;\n animation: reveal-loading-scale 1.6s ease-out infinite 0.8s alternate,\n reveal-loading-opacity 1.6s ease-out infinite alternate;\n}\n\n@keyframes reveal-loading-opacity {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0.2;\n }\n}\n\n@keyframes reveal-loading-scale {\n 100% {\n transform: scaleY(1.2) translateY(0.6px);\n }\n}\n")),document.head.appendChild(e)}set placement(e){switch(this.el.classList.remove(kt.classnames.bottomLeft,kt.classnames.bottomRight,kt.classnames.topLeft,kt.classnames.topRight),e){case"topLeft":this.el.classList.add(kt.classnames.topLeft);break;case"topRight":this.el.classList.add(kt.classnames.topRight);break;case"bottomLeft":this.el.classList.add(kt.classnames.bottomLeft);break;case"bottomRight":this.el.classList.add(kt.classnames.bottomRight);break;default:Object(u.m)(e,"Invalid placement: "+e)}}set opacity(e){this.el.style.opacity=""+e}get loading(){return this._loading}set loading(e){this._loading=e,e?(this.el.classList.add(kt.classnames.loading),this.el.title=kt.titles.loading):(this.el.classList.remove(kt.classnames.loading),this.el.title=kt.titles.idle)}updateBackgroundColor(e){const{l:t}=e.getHSL({h:0,s:0,l:0});t>.5?this.el.classList.add(kt.classnames.dark):this.el.classList.remove(kt.classnames.dark)}dispose(){this.el.remove();const e=document.getElementById(kt.stylesId);e&&e.remove()}}kt.stylesId="reveal-viewer-spinner-styles",kt.classnames={base:"reveal-viewer-spinner",topLeft:"reveal-viewer-spinner-top-left",topRight:"reveal-viewer-spinner-top-right",bottomLeft:"reveal-viewer-spinner-bottom-left",bottomRight:"reveal-viewer-spinner-bottom-right",loading:"reveal-viewer-spinner--loading",dark:"reveal-viewer-spinner--dark"},kt.titles={idle:"3.0.0",loading:"3.0.0 Loading..."};
391
+ class kt{constructor(e){this._loading=!1,kt.loadStyles(),this.el=document.createElement("div"),this.el.title=kt.titles.idle,this.el.className=kt.classnames.base,this.el.classList.add(kt.classnames.topLeft),this.el.innerHTML='<svg fill="none" xmlns="http://www.w3.org/2000/svg" width="64" height="38" viewBox="0 0 64 38">\n <path id="reveal-spinner-top-1" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288c-28.2275 5.9674-28.7378 6.0661-29.2355 6.1624h-.0001c-1.3944.2698-2.6891.5203-3.9772.7036v-6.3583c-.0652-1.475-1.2799-2.6372-2.7563-2.6372s-2.6911 1.1622-2.7563 2.6372v7.1072z"/>\n <path id="reveal-spinner-top-2" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288c-16.8452 3.375-17.0189 3.4183-17.1711 3.506-1.7276.3694-3.3435.7389-4.9594 1.1083l-.0571.013V7.6106c-.0465-1.48876-1.2668-2.67155-2.7563-2.67155S22.8005 6.12184 22.754 7.6106v13.5866z"/>\n <path id="reveal-spinner-top-3" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288c-7.274 1.2593-9.1537 1.6344-11.0347 2.0095V2.74337c-.0338-1.54541-1.3116-2.7721267-2.8571-2.74285692h-.0134C35.0327.00556379 33.8015 1.2272 33.7846 2.74337V18.7098z"/>\n <path id="reveal-spinner-top-4" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288v-3.2274c0-1.5594-1.2642-2.82358-2.8236-2.82358s-2.8235 1.26418-2.8235 2.82358v4.4z"/>\n <path id="reveal-spinner-center" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M50.4542 15.3288C5.46324 23.6926 1.83164 23.4439 1.45248 22.3172c-.773329-1.6548 3.63593-3.8942 5.79662-4.9915.28489-.1447.53068-.2695.72036-.3706v-.1237h-.12505c-1.62823.6226-8.646718 3.4958-7.768735 5.9832.875294 2.7456 11.653125 3.4958 34.086725-1.9939 18.7926-4.6145 27.4393-5.4925 28.3173-3.7446.6266 1.4952-4.0121 4.3644-8.5217 6.3597-.0966.0984-.1427.2357-.125.3724l.002.002c.1243.1244.2474.2475.3745.1231 1.6268-.6266 10.1499-4.238 9.7721-7.2323-.3738-1.9935-4.8842-2.6175-13.5274-1.3722z"/>\n <path id="reveal-spinner-bot-1" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.7557 30.5551v-2.0894c1.8291-.1048 3.6511-.3108 5.4575-.6171v2.7065c-.033 1.4835-1.245 2.6689-2.7288 2.6689s-2.6958-1.1854-2.7287-2.6689z"/>\n <path id="reveal-spinner-bot-2" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M22.7715 26.9222v7.602c-.0132 1.496 1.1804 2.7238 2.6762 2.7529 1.4957.0291 2.7362-1.1513 2.7813-2.6467v-8.8309c-1.7953.4821-3.6177.857-5.4575 1.1227z"/>\n <path id="reveal-spinner-bot-3" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M33.87 24.7193h-.3764v5.3419c.066 1.5151 1.3136 2.7095 2.8302 2.7095s2.7642-1.1944 2.8303-2.7095v-6.5883c-.3876.0886-.7821.1771-1.1838.2671l-.0007.0002c-1.2926.2897-2.6585.5959-4.0996.9764v.0027z"/>\n <path id="reveal-spinner-bot-4" fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M44.5094 22.2377c2.1383-.3726 4.0242-.7438 5.6578-1.1137v4.3375c-.0249 1.5094-1.2534 2.7212-2.763 2.7254h-.0162c-.7432.0206-1.4641-.255-2.004-.7662-.54-.5112-.8546-1.216-.8746-1.9592v-3.2238z"/>\n</svg>\n',e.style.position="relative",e.appendChild(this.el)}static loadStyles(){if(document.getElementById(kt.stylesId))return;const e=document.createElement("style");e.id=kt.stylesId,e.appendChild(document.createTextNode(".reveal-viewer-spinner-top-left {\n top: 10px;\n left: 10px;\n}\n\n.reveal-viewer-spinner-top-right {\n top: 10px;\n right: 10px;\n}\n\n.reveal-viewer-spinner-bottom-left {\n bottom: 10px;\n left: 10px;\n}\n\n.reveal-viewer-spinner-bottom-right {\n bottom: 10px;\n right: 10px;\n}\n\n.reveal-viewer-spinner {\n position: absolute;\n color: white;\n}\n.reveal-viewer-spinner--dark {\n color: black;\n}\n\n.reveal-viewer-spinner--loading #reveal-spinner-bot-1,\n.reveal-viewer-spinner--loading #reveal-spinner-top-1 {\n animation: reveal-loading-opacity 0.8s ease-out infinite alternate;\n}\n.reveal-viewer-spinner--loading #reveal-spinner-bot-2,\n.reveal-viewer-spinner--loading #reveal-spinner-top-2 {\n animation: reveal-loading-opacity 0.8s ease-out 0.2s infinite alternate;\n}\n.reveal-viewer-spinner--loading #reveal-spinner-bot-3,\n.reveal-viewer-spinner--loading #reveal-spinner-top-3 {\n animation: reveal-loading-opacity 0.8s ease-out 0.4s infinite alternate;\n}\n.reveal-viewer-spinner--loading #reveal-spinner-bot-4,\n.reveal-viewer-spinner--loading #reveal-spinner-top-4 {\n animation: reveal-loading-opacity 0.8s ease-out 0.6s infinite alternate;\n}\n\n.reveal-viewer-spinner--loading #center {\n transform-origin: center;\n animation: reveal-loading-scale 1.6s ease-out infinite 0.8s alternate,\n reveal-loading-opacity 1.6s ease-out infinite alternate;\n}\n\n@keyframes reveal-loading-opacity {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0.2;\n }\n}\n\n@keyframes reveal-loading-scale {\n 100% {\n transform: scaleY(1.2) translateY(0.6px);\n }\n}\n")),document.head.appendChild(e)}set placement(e){switch(this.el.classList.remove(kt.classnames.bottomLeft,kt.classnames.bottomRight,kt.classnames.topLeft,kt.classnames.topRight),e){case"topLeft":this.el.classList.add(kt.classnames.topLeft);break;case"topRight":this.el.classList.add(kt.classnames.topRight);break;case"bottomLeft":this.el.classList.add(kt.classnames.bottomLeft);break;case"bottomRight":this.el.classList.add(kt.classnames.bottomRight);break;default:Object(u.m)(e,"Invalid placement: "+e)}}set opacity(e){this.el.style.opacity=""+e}get loading(){return this._loading}set loading(e){this._loading=e,e?(this.el.classList.add(kt.classnames.loading),this.el.title=kt.titles.loading):(this.el.classList.remove(kt.classnames.loading),this.el.title=kt.titles.idle)}updateBackgroundColor(e){const{l:t}=e.getHSL({h:0,s:0,l:0});t>.5?this.el.classList.add(kt.classnames.dark):this.el.classList.remove(kt.classnames.dark)}dispose(){this.el.remove();const e=document.getElementById(kt.stylesId);e&&e.remove()}}kt.stylesId="reveal-viewer-spinner-styles",kt.classnames={base:"reveal-viewer-spinner",topLeft:"reveal-viewer-spinner-top-left",topRight:"reveal-viewer-spinner-top-right",bottomLeft:"reveal-viewer-spinner-bottom-left",bottomRight:"reveal-viewer-spinner-bottom-right",loading:"reveal-viewer-spinner--loading",dark:"reveal-viewer-spinner--dark"},kt.titles={idle:"3.0.1",loading:"3.0.1 Loading..."};
395
392
  /*!
396
393
  * Copyright 2021 Cognite AS
397
394
  */
@@ -522,7 +519,7 @@ var Rr=r(37);
522
519
  */
523
520
  /*!
524
521
  * Copyright 2021 Cognite AS
525
- */(e.ssaoQualityHint),c={enabled:null!==(t=e.enableEdges)&&void 0!==t?t:f.edgeDetectionParameters.enabled};return r.logMetrics=e.logMetrics,r.renderOptions={antiAliasing:o,multiSampleCountHint:a,ssaoRenderParameters:s,edgeDetectionParameters:c},r}(e);!0===e._localModels?(this._dataSource=new Or,this._cdfSdkClient=void 0,this._revealManagerHelper=_r.createLocalHelper(this._renderer,this.scene,g)):void 0!==e.customDataSource?(this._dataSource=e.customDataSource,this._revealManagerHelper=_r.createCustomDataSourceHelper(this._renderer,this.scene,g,e.customDataSource)):(this._dataSource=new Dr(e.sdk),this._cdfSdkClient=e.sdk,this._revealManagerHelper=_r.createCdfHelper(this._renderer,this.scene,g,e.sdk)),this.renderController=new yt(this.camera),this.startPointerEventListeners(),this.revealManager.setRenderTarget((null===(b=e.renderTargetOptions)||void 0===b?void 0:b.target)||null,null===(v=e.renderTargetOptions)||void 0===v?void 0:v.autoSetSize),this._subscription.add(Object(d.fromEventPattern)(e=>this.revealManager.on("loadingStateChanged",e),e=>this.revealManager.off("loadingStateChanged",e)).subscribe(t=>{this.spinner.loading=t.itemsLoaded!=t.itemsRequested,e.onLoading&&e.onLoading(t.itemsLoaded,t.itemsRequested,t.itemsCulled)},e=>p.a.trackError(e,{moduleName:"Cognite3DViewer",methodName:"constructor"}))),this.animate(0),p.a.trackEvent("construct3dViewer",{constructorOptions:l()(e,["sdk","domElement","renderer","renderTargetOptions","onLoading","_sectorCuller"])})}get canvas(){return this.renderer.domElement}static isBrowserSupported(){return!0}get domElement(){return this._domElement}get renderer(){return this._renderer}get revealManager(){return this._revealManagerHelper.revealManager}get cadBudget(){return this.revealManager.cadBudget}set cadBudget(e){this.revealManager.cadBudget=e}get pointCloudBudget(){return this.revealManager.pointCloudBudget}set pointCloudBudget(e){this.revealManager.pointCloudBudget=e}get models(){return this._models.slice()}get cadLoadedStatistics(){return this.revealManager.cadLoadedStatistics}getVersion(){return"3.0.0"}setLogLevel(e){switch(e){case"none":this.setLogLevel("silent");break;default:D.a.setLevel(e)}}dispose(){if(!this.isDisposed){this.isDisposed=!0,void 0!==this.latestRequestId&&cancelAnimationFrame(this.latestRequestId),this.renderController.dispose(),this._subscription.unsubscribe(),this._cameraManager.dispose(),this.revealManager.dispose(),this.domElement.removeChild(this.canvas),this.renderer.dispose();for(const e of this._models.values())e.dispose();this._models.splice(0),this.spinner.dispose(),this._events.disposed.fire(),Object(u.q)(this._events),this._mouseHandler.dispose()}}on(e,t){switch(e){case"click":this._events.click.subscribe(t);break;case"hover":this._events.hover.subscribe(t);break;case"cameraChange":this._events.cameraChange.subscribe(t);break;case"sceneRendered":this._events.sceneRendered.subscribe(t);break;case"disposed":this._events.disposed.subscribe(t);break;default:Object(u.m)(e)}}off(e,t){switch(e){case"click":this._events.click.unsubscribe(t);break;case"hover":this._events.hover.unsubscribe(t);break;case"cameraChange":this._events.cameraChange.unsubscribe(t);break;case"sceneRendered":this._events.sceneRendered.unsubscribe(t);break;case"disposed":this._events.disposed.unsubscribe(t);break;default:Object(u.m)(e)}}get cameraManager(){return this._cameraManager}getViewState(){return this.createViewStateHelper().getCurrentState()}setViewState(e){const t=this.createViewStateHelper();return this.models.filter(e=>e instanceof et).map(e=>e).forEach(e=>e.removeAllStyledNodeCollections()),t.setState(e)}async addModel(e){if(void 0!==e.localPath)throw new Error("addModel() only supports CDF hosted models. Use addCadModel() and addPointCloudModel() to use self-hosted models");switch(await this.determineModelType(e.modelId,e.revisionId)){case"cad":return this.addCadModel(e);case"pointcloud":return this.addPointCloudModel(e);default:throw new Error("Model is not supported")}}async addCadModel(e){const t=this._dataSource.getNodesApiClient(),{modelId:r,revisionId:n}=e,i=await this._revealManagerHelper.addCadModel(e),o=new et(r,n,i,t);return this._models.push(o),this.scene.add(o),o}async addPointCloudModel(e){if(e.geometryFilter)throw new xt("geometryFilter is not supported for point clouds");const{modelId:t,revisionId:r}=e,n=await this._revealManagerHelper.addPointCloudModel(e),i=new _t(t,r,n);return this._models.push(i),this.scene.add(i),i}removeModel(e){const t=this._models.indexOf(e);if(-1===t)throw new Error("Model is not added to viewer");switch(this._models.splice(t,1),e.type){case"cad":const t=e;this.scene.remove(t),e.dispose(),this.revealManager.removeModel(e.type,t.cadNode),this._renderer.renderLists.dispose();break;case"pointcloud":const r=e;this.scene.remove(r),this.revealManager.removeModel(e.type,r.pointCloudNode);break;default:Object(u.m)(e.type,`Model type ${e.type} cannot be removed`)}this.renderController.redraw()}async determineModelType(e,t){if(void 0===this._cdfSdkClient)throw new Error(this.determineModelType.name+"() is only supported when connecting to Cognite Data Fusion");const r=new L.b(e,t),n=(await this._dataSource.getModelMetadataProvider().getModelOutputs(r)).map(e=>e.format);return i(L.d.GltfCadModel)||i(L.d.RevealCadModel)?"cad":i(L.d.EptPointCloud)?"pointcloud":"";function i(e){return n.includes(e)}}addObject3D(e){this.isDisposed||(this.scene.add(e),e.updateMatrixWorld(!0),this._extraObjects.push(e),this.renderController.redraw(),this.recalculateBoundingBox())}removeObject3D(e){if(this.isDisposed)return;this.scene.remove(e);const t=this._extraObjects.indexOf(e);t>=0&&this._extraObjects.splice(t,1),this.renderController.redraw(),this.recalculateBoundingBox()}addUiObject(e,t,r){this.isDisposed||this.revealManager.addUiObject(e,t,r)}removeUiObject(e){this.isDisposed||this.revealManager.removeUiObject(e)}setBackgroundColor(e){this.isDisposed||(this.renderer.setClearColor(e),this.spinner.updateBackgroundColor(e),this.requestRedraw())}setClippingPlanes(e){this.revealManager.clippingPlanes=e,this._clippingNeedsUpdate=!0}getClippingPlanes(){return this.revealManager.clippingPlanes.map(e=>e.clone())}getCamera(){return this.camera}getScene(){return this.scene}loadCameraFromModel(e){const t=e.getCameraConfiguration();t?this._cameraManager.setCameraState({position:t.position,target:t.target}):this.fitCameraToModel(e,0)}fitCameraToModel(e,t){const r=e.getModelBoundingBox(new o.Box3,!0);this._cameraManager.fitCameraToBoundingBox(r,t)}fitCameraToBoundingBox(e,t,r=2){this._cameraManager.fitCameraToBoundingBox(e,t,r)}requestRedraw(){this.revealManager.requestRedraw()}worldToScreen(e,t){this.camera.updateMatrixWorld();const r=new o.Vector3;return t?Object(u.A)(this.camera,e,r):Object(u.B)(this.renderer,this.camera,e,r),r.x<0||r.x>1||r.y<0||r.y>1||r.z<0||r.z>1?null:new o.Vector2(r.x,r.y)}async getScreenshot(e=this.canvas.width,t=this.canvas.height){if(this.isDisposed)throw new Error("Viewer is disposed");const{width:r,height:n}=this.canvas,i=this.camera.clone();Fr(i,e,t),this.renderer.setSize(e,t),this.renderer.render(this.scene,i),this.revealManager.render(i);const o=this.renderer.domElement.toDataURL();return this.renderer.setSize(r,n),this.renderer.render(this.scene,this.camera),this.requestRedraw(),o}async getIntersectionFromPixel(e,t,r){const n=this.getModels("cad"),i=this.getModels("pointcloud"),o=n.map(e=>e.cadNode),a=i.map(e=>e.pointCloudNode),s={normalizedCoords:{x:e/this.renderer.domElement.clientWidth*2-1,y:t/this.renderer.domElement.clientHeight*-2+1},camera:this.camera,renderer:this.renderer,clippingPlanes:this.getClippingPlanes(),domElement:this.renderer.domElement},c=function(e,t){const r=[];for(const n of e){const e=ge(n,t);e&&r.push(e)}return r.sort((e,t)=>e.distance-t.distance)}(o,s),l=it(a,s,null==r?void 0:r.pointIntersectionThreshold),d=[];if(l.length>0){const e=l[0];for(const t of i)if(t.pointCloudNode===e.pointCloudNode){const r={type:"pointcloud",model:t,point:e.point,pointIndex:e.pointIndex,distanceToCamera:e.distance};d.push(r);break}}if(c.length>0){const e=c[0];for(const t of n)if(t.cadNode===e.cadNode){const r={type:"cad",model:t,treeIndex:e.treeIndex,point:e.point,distanceToCamera:e.distance};d.push(r)}}return d.sort((e,t)=>e.distanceToCamera-t.distanceToCamera),d.length>0?d[0]:null}getModels(e){return this._models.filter(t=>t.type===e)}createViewStateHelper(){if(void 0===this._cdfSdkClient)throw new Error(this.setViewState.name+"() is only supported when connecting to Cognite Data Fusion");return new Kt(this,this._cdfSdkClient)}async animate(e){if(this.isDisposed)return;this.latestRequestId=requestAnimationFrame(this._boundAnimate);const{display:t,visibility:r}=window.getComputedStyle(this.canvas);if("visible"===r&&"none"!==t){const{renderController:t}=this;s.a.update(e);if(this.resizeIfNecessary()&&this.requestRedraw(),this.recalculateBoundingBox(),this._cameraManager.update(this.clock.getDelta(),this._updateNearAndFarPlaneBuffers.combinedBbox),t.update(),this.revealManager.update(this.camera),t.needsRedraw||this.revealManager.needsRedraw||this._clippingNeedsUpdate){const e=this.renderer.info.render.frame,r=Date.now();this.revealManager.render(this.camera),t.clearNeedsRedraw(),this.revealManager.resetRedraw(),this._clippingNeedsUpdate=!1;const n=Date.now()-r;this._events.sceneRendered.fire({frameNumber:e,renderTime:n,renderer:this.renderer,camera:this.camera})}}}async modelIntersectionCallback(e,t){return{intersection:await this.getIntersectionFromPixel(e,t),modelsBoundingBox:this._updateNearAndFarPlaneBuffers.combinedBbox}}recalculateBoundingBox(){if(this.isDisposed)return;const{combinedBbox:e,bbox:t}=this._updateNearAndFarPlaneBuffers;e.makeEmpty(),this._models.forEach(r=>{r.getModelBoundingBox(t),t.isEmpty()||e.union(t)}),this._extraObjects.forEach(r=>{t.setFromObject(r),t.isEmpty()||e.union(t)})}resizeIfNecessary(){if(this.isDisposed)return!1;const e=this.renderer.getSize(new o.Vector2),t=e.width,r=e.height,n=0!==this.domElement.clientWidth?this.domElement.clientWidth:this.canvas.clientWidth,i=0!==this.domElement.clientHeight?this.domElement.clientHeight:this.canvas.clientHeight,a=n*i,s=a>14e5?Math.sqrt(14e5/a):1,c=n*s,l=i*s;return!(Math.abs(t-c)<.1&&Math.abs(r-l)<.1)&&(Fr(this.camera,c,l),this.renderer.setSize(c,l),!0)}}function Fr(e,t,r){e.aspect=t/r,e.updateProjectionMatrix()}const Gr="3.0.0";
522
+ */(e.ssaoQualityHint),c={enabled:null!==(t=e.enableEdges)&&void 0!==t?t:f.edgeDetectionParameters.enabled};return r.logMetrics=e.logMetrics,r.renderOptions={antiAliasing:o,multiSampleCountHint:a,ssaoRenderParameters:s,edgeDetectionParameters:c},r}(e);!0===e._localModels?(this._dataSource=new Or,this._cdfSdkClient=void 0,this._revealManagerHelper=_r.createLocalHelper(this._renderer,this.scene,g)):void 0!==e.customDataSource?(this._dataSource=e.customDataSource,this._revealManagerHelper=_r.createCustomDataSourceHelper(this._renderer,this.scene,g,e.customDataSource)):(this._dataSource=new Dr(e.sdk),this._cdfSdkClient=e.sdk,this._revealManagerHelper=_r.createCdfHelper(this._renderer,this.scene,g,e.sdk)),this.renderController=new yt(this.camera),this.startPointerEventListeners(),this.revealManager.setRenderTarget((null===(b=e.renderTargetOptions)||void 0===b?void 0:b.target)||null,null===(v=e.renderTargetOptions)||void 0===v?void 0:v.autoSetSize),this._subscription.add(Object(d.fromEventPattern)(e=>this.revealManager.on("loadingStateChanged",e),e=>this.revealManager.off("loadingStateChanged",e)).subscribe(t=>{this.spinner.loading=t.itemsLoaded!=t.itemsRequested,e.onLoading&&e.onLoading(t.itemsLoaded,t.itemsRequested,t.itemsCulled)},e=>p.a.trackError(e,{moduleName:"Cognite3DViewer",methodName:"constructor"}))),this.animate(0),p.a.trackEvent("construct3dViewer",{constructorOptions:l()(e,["sdk","domElement","renderer","renderTargetOptions","onLoading","_sectorCuller"])})}get canvas(){return this.renderer.domElement}static isBrowserSupported(){return!0}get domElement(){return this._domElement}get renderer(){return this._renderer}get revealManager(){return this._revealManagerHelper.revealManager}get cadBudget(){return this.revealManager.cadBudget}set cadBudget(e){this.revealManager.cadBudget=e}get pointCloudBudget(){return this.revealManager.pointCloudBudget}set pointCloudBudget(e){this.revealManager.pointCloudBudget=e}get models(){return this._models.slice()}get cadLoadedStatistics(){return this.revealManager.cadLoadedStatistics}getVersion(){return"3.0.1"}setLogLevel(e){switch(e){case"none":this.setLogLevel("silent");break;default:D.a.setLevel(e)}}dispose(){if(!this.isDisposed){this.isDisposed=!0,void 0!==this.latestRequestId&&cancelAnimationFrame(this.latestRequestId),this.renderController.dispose(),this._subscription.unsubscribe(),this._cameraManager.dispose(),this.revealManager.dispose(),this.domElement.removeChild(this.canvas),this.renderer.dispose();for(const e of this._models.values())e.dispose();this._models.splice(0),this.spinner.dispose(),this._events.disposed.fire(),Object(u.q)(this._events),this._mouseHandler.dispose()}}on(e,t){switch(e){case"click":this._events.click.subscribe(t);break;case"hover":this._events.hover.subscribe(t);break;case"cameraChange":this._events.cameraChange.subscribe(t);break;case"sceneRendered":this._events.sceneRendered.subscribe(t);break;case"disposed":this._events.disposed.subscribe(t);break;default:Object(u.m)(e)}}off(e,t){switch(e){case"click":this._events.click.unsubscribe(t);break;case"hover":this._events.hover.unsubscribe(t);break;case"cameraChange":this._events.cameraChange.unsubscribe(t);break;case"sceneRendered":this._events.sceneRendered.unsubscribe(t);break;case"disposed":this._events.disposed.unsubscribe(t);break;default:Object(u.m)(e)}}get cameraManager(){return this._cameraManager}getViewState(){return this.createViewStateHelper().getCurrentState()}setViewState(e){const t=this.createViewStateHelper();return this.models.filter(e=>e instanceof et).map(e=>e).forEach(e=>e.removeAllStyledNodeCollections()),t.setState(e)}async addModel(e){if(void 0!==e.localPath)throw new Error("addModel() only supports CDF hosted models. Use addCadModel() and addPointCloudModel() to use self-hosted models");switch(await this.determineModelType(e.modelId,e.revisionId)){case"cad":return this.addCadModel(e);case"pointcloud":return this.addPointCloudModel(e);default:throw new Error("Model is not supported")}}async addCadModel(e){const t=this._dataSource.getNodesApiClient(),{modelId:r,revisionId:n}=e,i=await this._revealManagerHelper.addCadModel(e),o=new et(r,n,i,t);return this._models.push(o),this.scene.add(o),o}async addPointCloudModel(e){if(e.geometryFilter)throw new xt("geometryFilter is not supported for point clouds");const{modelId:t,revisionId:r}=e,n=await this._revealManagerHelper.addPointCloudModel(e),i=new _t(t,r,n);return this._models.push(i),this.scene.add(i),i}removeModel(e){const t=this._models.indexOf(e);if(-1===t)throw new Error("Model is not added to viewer");switch(this._models.splice(t,1),e.type){case"cad":const t=e;this.scene.remove(t),e.dispose(),this.revealManager.removeModel(e.type,t.cadNode),this._renderer.renderLists.dispose();break;case"pointcloud":const r=e;this.scene.remove(r),this.revealManager.removeModel(e.type,r.pointCloudNode);break;default:Object(u.m)(e.type,`Model type ${e.type} cannot be removed`)}this.renderController.redraw()}async determineModelType(e,t){if(void 0===this._cdfSdkClient)throw new Error(this.determineModelType.name+"() is only supported when connecting to Cognite Data Fusion");const r=new L.b(e,t),n=(await this._dataSource.getModelMetadataProvider().getModelOutputs(r)).map(e=>e.format);return i(L.d.GltfCadModel)||i(L.d.RevealCadModel)?"cad":i(L.d.EptPointCloud)?"pointcloud":"";function i(e){return n.includes(e)}}addObject3D(e){this.isDisposed||(this.scene.add(e),e.updateMatrixWorld(!0),this._extraObjects.push(e),this.renderController.redraw(),this.recalculateBoundingBox())}removeObject3D(e){if(this.isDisposed)return;this.scene.remove(e);const t=this._extraObjects.indexOf(e);t>=0&&this._extraObjects.splice(t,1),this.renderController.redraw(),this.recalculateBoundingBox()}addUiObject(e,t,r){this.isDisposed||this.revealManager.addUiObject(e,t,r)}removeUiObject(e){this.isDisposed||this.revealManager.removeUiObject(e)}setBackgroundColor(e){this.isDisposed||(this.renderer.setClearColor(e),this.spinner.updateBackgroundColor(e),this.requestRedraw())}setClippingPlanes(e){this.revealManager.clippingPlanes=e,this._clippingNeedsUpdate=!0}getClippingPlanes(){return this.revealManager.clippingPlanes.map(e=>e.clone())}getCamera(){return this.camera}getScene(){return this.scene}loadCameraFromModel(e){const t=e.getCameraConfiguration();t?this._cameraManager.setCameraState({position:t.position,target:t.target}):this.fitCameraToModel(e,0)}fitCameraToModel(e,t){const r=e.getModelBoundingBox(new o.Box3,!0);this._cameraManager.fitCameraToBoundingBox(r,t)}fitCameraToBoundingBox(e,t,r=2){this._cameraManager.fitCameraToBoundingBox(e,t,r)}requestRedraw(){this.revealManager.requestRedraw()}worldToScreen(e,t){this.camera.updateMatrixWorld();const r=new o.Vector3;return t?Object(u.A)(this.camera,e,r):Object(u.B)(this.renderer,this.camera,e,r),r.x<0||r.x>1||r.y<0||r.y>1||r.z<0||r.z>1?null:new o.Vector2(r.x,r.y)}async getScreenshot(e=this.canvas.width,t=this.canvas.height){if(this.isDisposed)throw new Error("Viewer is disposed");const{width:r,height:n}=this.canvas,i=this.camera.clone();Fr(i,e,t),this.renderer.setSize(e,t),this.renderer.render(this.scene,i),this.revealManager.render(i);const o=this.renderer.domElement.toDataURL();return this.renderer.setSize(r,n),this.renderer.render(this.scene,this.camera),this.requestRedraw(),o}async getIntersectionFromPixel(e,t,r){const n=this.getModels("cad"),i=this.getModels("pointcloud"),o=n.map(e=>e.cadNode),a=i.map(e=>e.pointCloudNode),s={normalizedCoords:{x:e/this.renderer.domElement.clientWidth*2-1,y:t/this.renderer.domElement.clientHeight*-2+1},camera:this.camera,renderer:this.renderer,clippingPlanes:this.getClippingPlanes(),domElement:this.renderer.domElement},c=function(e,t){const r=[];for(const n of e){const e=ge(n,t);e&&r.push(e)}return r.sort((e,t)=>e.distance-t.distance)}(o,s),l=it(a,s,null==r?void 0:r.pointIntersectionThreshold),d=[];if(l.length>0){const e=l[0];for(const t of i)if(t.pointCloudNode===e.pointCloudNode){const r={type:"pointcloud",model:t,point:e.point,pointIndex:e.pointIndex,distanceToCamera:e.distance};d.push(r);break}}if(c.length>0){const e=c[0];for(const t of n)if(t.cadNode===e.cadNode){const r={type:"cad",model:t,treeIndex:e.treeIndex,point:e.point,distanceToCamera:e.distance};d.push(r)}}return d.sort((e,t)=>e.distanceToCamera-t.distanceToCamera),d.length>0?d[0]:null}getModels(e){return this._models.filter(t=>t.type===e)}createViewStateHelper(){if(void 0===this._cdfSdkClient)throw new Error(this.setViewState.name+"() is only supported when connecting to Cognite Data Fusion");return new Kt(this,this._cdfSdkClient)}async animate(e){if(this.isDisposed)return;this.latestRequestId=requestAnimationFrame(this._boundAnimate);const{display:t,visibility:r}=window.getComputedStyle(this.canvas);if("visible"===r&&"none"!==t){const{renderController:t}=this;s.a.update(e);if(this.resizeIfNecessary()&&this.requestRedraw(),this.recalculateBoundingBox(),this._cameraManager.update(this.clock.getDelta(),this._updateNearAndFarPlaneBuffers.combinedBbox),t.update(),this.revealManager.update(this.camera),t.needsRedraw||this.revealManager.needsRedraw||this._clippingNeedsUpdate){const e=this.renderer.info.render.frame,r=Date.now();this.revealManager.render(this.camera),t.clearNeedsRedraw(),this.revealManager.resetRedraw(),this._clippingNeedsUpdate=!1;const n=Date.now()-r;this._events.sceneRendered.fire({frameNumber:e,renderTime:n,renderer:this.renderer,camera:this.camera})}}}async modelIntersectionCallback(e,t){return{intersection:await this.getIntersectionFromPixel(e,t),modelsBoundingBox:this._updateNearAndFarPlaneBuffers.combinedBbox}}recalculateBoundingBox(){if(this.isDisposed)return;const{combinedBbox:e,bbox:t}=this._updateNearAndFarPlaneBuffers;e.makeEmpty(),this._models.forEach(r=>{r.getModelBoundingBox(t),t.isEmpty()||e.union(t)}),this._extraObjects.forEach(r=>{t.setFromObject(r),t.isEmpty()||e.union(t)})}resizeIfNecessary(){if(this.isDisposed)return!1;const e=this.renderer.getSize(new o.Vector2),t=e.width,r=e.height,n=0!==this.domElement.clientWidth?this.domElement.clientWidth:this.canvas.clientWidth,i=0!==this.domElement.clientHeight?this.domElement.clientHeight:this.canvas.clientHeight,a=n*i,s=a>14e5?Math.sqrt(14e5/a):1,c=n*s,l=i*s;return!(Math.abs(t-c)<.1&&Math.abs(r-l)<.1)&&(Fr(this.camera,c,l),this.renderer.setSize(c,l),!0)}}function Fr(e,t,r){e.aspect=t/r,e.updateProjectionMatrix()}const Gr="3.0.1";
526
523
  /*!
527
524
  * Copyright 2021 Cognite AS
528
525
  */}])}));