@vertexvis/viewer 0.13.1 → 0.13.2-canary.2
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.
- package/dist/cjs/{browser.esm-31b03292.js → browser.esm-c51162f8.js} +1 -1
- package/dist/cjs/{bundle.esm-dc0a8361.js → bundle.esm-1b8b1f36.js} +34 -0
- package/dist/cjs/{config-90ee43d5.js → config-91efd353.js} +2 -2
- package/dist/cjs/{cursors-ad2fd395.js → cursors-14827f58.js} +1 -1
- package/dist/cjs/{dom-dd265f48.js → dom-c697cf99.js} +1 -1
- package/dist/cjs/{entities-aa59890e.js → entities-0829b4a4.js} +3 -3
- package/dist/cjs/index.cjs.js +13 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{mapper-f6e6cafe.js → mapper-67af470b.js} +2 -2
- package/dist/cjs/{markup-fb1553b1.js → markup-835f2e83.js} +2 -2
- package/dist/cjs/{measurement-aba1e0e8.js → measurement-8e0ce89a.js} +2 -2
- package/dist/cjs/{model-4ec0c36e.js → model-78241d4f.js} +1 -1
- package/dist/cjs/{overlays-40c6cbc7.js → overlays-06786e52.js} +2 -2
- package/dist/cjs/{png-decoder-27d25eed.js → png-decoder-01b76242.js} +1 -1
- package/dist/cjs/{results-bc325974.js → results-7a694238.js} +1 -1
- package/dist/cjs/{scene-d420fd26.js → scene-23535fc0.js} +176 -85
- package/dist/cjs/{streamAttributes-d6236448.js → streamAttributes-f13c1a96.js} +1431 -41
- package/dist/cjs/{utils-f80be307.js → utils-4a02e54b.js} +1 -1
- package/dist/cjs/{utils-545b1865.js → utils-5cc32a26.js} +1 -1
- package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +11 -11
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +6 -6
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +10 -10
- package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +5 -5
- package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +8 -8
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer.cjs.entry.js +198 -79
- package/dist/cjs/viewer.cjs.js +1 -1
- package/dist/cjs/{viewport-8c39089f.js → viewport-052809c7.js} +1 -1
- package/dist/collection/components/viewer/viewer.js +68 -4
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +3 -3
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +3 -3
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +3 -3
- package/dist/collection/index.js +2 -2
- package/dist/collection/lib/errors.js +8 -1
- package/dist/collection/lib/interactions/index.js +3 -1
- package/dist/collection/lib/interactions/interactionApi.js +4 -25
- package/dist/collection/lib/interactions/interactionApiOrthographic.js +50 -0
- package/dist/collection/lib/interactions/interactionApiPerspective.js +50 -0
- package/dist/collection/lib/mappers/frameStreaming.js +27 -5
- package/dist/collection/lib/rendering/matrices.js +13 -4
- package/dist/collection/lib/scenes/__mocks__/mocks.js +2 -2
- package/dist/collection/lib/scenes/camera.js +149 -77
- package/dist/collection/lib/scenes/mapper.js +3 -2
- package/dist/collection/lib/scenes/scene.js +23 -9
- package/dist/collection/lib/types/clippingPlanes.js +54 -17
- package/dist/collection/lib/types/depthBuffer.js +1 -1
- package/dist/collection/lib/types/frame.js +88 -23
- package/dist/collection/lib/types/frameCamera.js +81 -6
- package/dist/collection/lib/types/viewport.js +1 -1
- package/dist/collection/testing/fixtures.js +23 -10
- package/dist/collection/testing/viewer.js +5 -3
- package/dist/custom-elements/index.js +1821 -194
- package/dist/esm/{browser.esm-59e914f6.js → browser.esm-48f051a3.js} +1 -1
- package/dist/esm/{bundle.esm-d899b2d5.js → bundle.esm-df3a8a42.js} +35 -1
- package/dist/esm/{config-604c644e.js → config-3a5d3ea3.js} +2 -2
- package/dist/esm/{cursors-a7ec4adb.js → cursors-45f23dfe.js} +1 -1
- package/dist/esm/{dom-780d25be.js → dom-18d9ac79.js} +1 -1
- package/dist/esm/{entities-759d97cd.js → entities-60dfd79d.js} +3 -3
- package/dist/esm/index.js +12 -12
- package/dist/esm/index.mjs +12 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loader.mjs +1 -1
- package/dist/esm/{mapper-4b815e31.js → mapper-adf23dc4.js} +2 -2
- package/dist/esm/{markup-1d177b4a.js → markup-accb6b5c.js} +2 -2
- package/dist/esm/{measurement-12cdbf5c.js → measurement-6cd457a6.js} +2 -2
- package/dist/esm/{model-e5a4f00f.js → model-4982c15d.js} +1 -1
- package/dist/esm/{overlays-1919b192.js → overlays-1783a61a.js} +2 -2
- package/dist/esm/{png-decoder-3f1fa486.js → png-decoder-f35def4c.js} +1 -1
- package/dist/esm/{results-994bdb50.js → results-93d45acc.js} +1 -1
- package/dist/esm/{scene-2c2460d5.js → scene-2d8bdccc.js} +176 -85
- package/dist/esm/{streamAttributes-d623bb60.js → streamAttributes-87a3605c.js} +1426 -43
- package/dist/esm/{utils-5e57bf24.js → utils-9f4b25ec.js} +1 -1
- package/dist/esm/{utils-83a19677.js → utils-ed2346c0.js} +1 -1
- package/dist/esm/vertex-scene-tree-search_3.entry.js +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +4 -4
- package/dist/esm/vertex-viewer-dom-element_3.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
- package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup.entry.js +4 -4
- package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
- package/dist/esm/vertex-viewer-measurement-distance.entry.js +11 -11
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +6 -6
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +10 -10
- package/dist/esm/vertex-viewer-measurement-tool.entry.js +5 -5
- package/dist/esm/vertex-viewer-measurements.entry.js +8 -8
- package/dist/esm/vertex-viewer-view-cube.entry.js +3 -3
- package/dist/esm/vertex-viewer.entry.js +198 -79
- package/dist/esm/viewer.js +1 -1
- package/dist/esm/{viewport-01c886ea.js → viewport-6d4c0af0.js} +1 -1
- package/dist/types/components/viewer/viewer.d.ts +8 -0
- package/dist/types/components/viewer-dom-renderer/renderer2d.d.ts +2 -2
- package/dist/types/components/viewer-dom-renderer/renderer3d.d.ts +3 -3
- package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/utils.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +2 -2
- package/dist/types/components.d.ts +15 -7
- package/dist/types/index.d.ts +1 -1
- package/dist/types/lib/errors.d.ts +3 -0
- package/dist/types/lib/interactions/index.d.ts +2 -0
- package/dist/types/lib/interactions/interactionApi.d.ts +20 -21
- package/dist/types/lib/interactions/interactionApiOrthographic.d.ts +21 -0
- package/dist/types/lib/interactions/interactionApiPerspective.d.ts +21 -0
- package/dist/types/lib/mappers/frameStreaming.d.ts +2 -0
- package/dist/types/lib/scenes/__mocks__/mocks.d.ts +2 -2
- package/dist/types/lib/scenes/camera.d.ts +100 -37
- package/dist/types/lib/scenes/scene.d.ts +1 -1
- package/dist/types/lib/types/clippingPlanes.d.ts +3 -1
- package/dist/types/lib/types/depthBuffer.d.ts +4 -4
- package/dist/types/lib/types/frame.d.ts +54 -11
- package/dist/types/lib/types/frameCamera.d.ts +21 -2
- package/dist/types/lib/types/viewport.d.ts +2 -3
- package/dist/types/testing/fixtures.d.ts +4 -2
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/{p-3f6ac74f.js → p-014561cd.js} +1 -1
- package/dist/viewer/p-121f2b40.js +18 -0
- package/dist/viewer/p-18ec4fed.js +4 -0
- package/dist/viewer/{p-e2297df2.entry.js → p-1acd0e56.entry.js} +1 -1
- package/dist/viewer/{p-da2f4a56.js → p-25dfee48.js} +1 -1
- package/dist/viewer/p-2e75198d.js +4 -0
- package/dist/viewer/p-38c06c25.js +4 -0
- package/dist/viewer/{p-67446e35.js → p-463151e0.js} +1 -1
- package/dist/viewer/{p-301660cf.js → p-546ae240.js} +1 -1
- package/dist/viewer/{p-d00e9203.js → p-6120a219.js} +1 -1
- package/dist/viewer/p-61db972b.js +4 -0
- package/dist/viewer/{p-a0df0e0c.js → p-6d9d3553.js} +1 -1
- package/dist/viewer/{p-f8d01b8a.entry.js → p-7c5bee8e.entry.js} +1 -1
- package/dist/viewer/{p-8decee06.entry.js → p-8de749a5.entry.js} +1 -1
- package/dist/viewer/{p-081e6873.js → p-8df35eee.js} +1 -1
- package/dist/viewer/{p-671c113c.entry.js → p-923b616f.entry.js} +1 -1
- package/dist/viewer/p-9b1ecc71.js +4 -0
- package/dist/viewer/{p-3810c24d.js → p-9fd5fc8e.js} +1 -1
- package/dist/viewer/p-b2d4c0cf.entry.js +4 -0
- package/dist/viewer/{p-364ce21c.js → p-b8bc15ec.js} +1 -1
- package/dist/viewer/{p-439220c6.js → p-b8f027eb.js} +1 -1
- package/dist/viewer/p-bc7f0ad6.entry.js +4 -0
- package/dist/viewer/{p-2cefb1b0.js → p-ce0fe8be.js} +1 -1
- package/dist/viewer/p-d939ecd3.entry.js +4 -0
- package/dist/viewer/{p-25eaab00.entry.js → p-de7eecce.entry.js} +1 -1
- package/dist/viewer/{p-4985fad5.js → p-e3fff448.js} +1 -1
- package/dist/viewer/{p-6e80f8b0.entry.js → p-e4934f47.entry.js} +1 -1
- package/dist/viewer/{p-df292b56.entry.js → p-e8f6cba6.entry.js} +1 -1
- package/dist/viewer/{p-353cfc7a.entry.js → p-ee86bed2.entry.js} +1 -1
- package/dist/viewer/{p-c62cb926.entry.js → p-f359a9ac.entry.js} +1 -1
- package/dist/viewer/{p-e07377fa.entry.js → p-fa7f2d0c.entry.js} +1 -1
- package/dist/viewer/{p-915d95ad.entry.js → p-ffde162f.entry.js} +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +8 -8
- package/dist/viewer/p-085e908a.js +0 -4
- package/dist/viewer/p-0aba71fd.js +0 -18
- package/dist/viewer/p-423410be.js +0 -4
- package/dist/viewer/p-432267bc.entry.js +0 -4
- package/dist/viewer/p-7cad9bf4.js +0 -4
- package/dist/viewer/p-d90f2f6d.entry.js +0 -4
- package/dist/viewer/p-f755af5a.entry.js +0 -4
- package/dist/viewer/p-f7cb7e59.js +0 -4
- package/dist/viewer/p-fe11d694.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as e,c as t,h as i,H as s,g as n}from"./p-cafa57a6.js";import{M as a}from"./p-849bd025.js";import{s as h}from"./p-c738296e.js";import"./p-
|
|
4
|
+
import{r as e,c as t,h as i,H as s,g as n}from"./p-cafa57a6.js";import{M as a}from"./p-849bd025.js";import{s as h}from"./p-c738296e.js";import"./p-18ec4fed.js";import{D as l}from"./p-9b1ecc71.js";import{i as d}from"./p-ce0fe8be.js";import"./p-121f2b40.js";import"./p-546ae240.js";import"./p-112455b1.js";let o=class{constructor(i){e(this,i),this.measureBegin=t(this,"measureBegin",7),this.measureEnd=t(this,"measureEnd",7),this.tool="distance",this.units="millimeters",this.fractionalDigits=2,this.disabled=!1,this.isMeasuring=!1,this.snapDistance=a,this.stateMap={},this.handleMeasurementEditBegin=()=>{this.isMeasuring=!0,this.measureBegin.emit()},this.handleMeasurementEditEnd=()=>{const{measurementElement:e}=this.stateMap;if(d(e)){const{start:t,end:i,invalid:s}=e;this.isMeasuring=!1,e.start=void 0,e.end=void 0,e.invalid=!1,null!=t&&null!=i&&this.measureEnd.emit(new l({start:t,end:i,invalid:s}))}}}handleViewerChanged(){null!=this.stateMap.measurementElement&&(this.stateMap.measurementElement.viewer=this.viewer)}handleToolChanged(){this.updateMeasurementElement()}handleDistanceTemplateIdChanged(){this.updateMeasurementElement()}handleDisabledChanged(){this.updateMeasurementElement()}handleUnitsChanged(){this.updateMeasurementElement()}handleFractionalDigitsChanged(){this.updateMeasurementElement()}handleSnapDistanceChanged(){this.updateMeasurementElement()}componentDidLoad(){this.updateMeasurementElement()}render(){return this.disabled?i(s,null):i(s,null,"distance"===this.tool?i("vertex-viewer-layer",null,i("slot",null)):`Unsupported tool type '${this.tool}'.`)}createDistanceMeasurementElement(){if(null!=this.distanceTemplateId){const e=h(window.document.body,this.distanceTemplateId,d,(()=>console.warn(`Distance template with ID ${this.distanceTemplateId} not found. Using default distance element.`)),(()=>console.warn("Distance template does not contain a vertex-viewer-measurement-distance. Using default distance element.")));if(null!=e)return e}return document.createElement("vertex-viewer-measurement-distance")}updateMeasurementElement(){const{measurementElement:e}=this.stateMap;if(null!=e&&(e.remove(),e.viewer=void 0,e.removeEventListener("editBegin",this.handleMeasurementEditBegin),e.removeEventListener("editEnd",this.handleMeasurementEditEnd)),!this.disabled){const e=this.createDistanceMeasurementElement();e.mode="replace",e.units=this.units,e.snapDistance=this.snapDistance,e.fractionalDigits=this.fractionalDigits,e.viewer=this.viewer,e.addEventListener("editBegin",this.handleMeasurementEditBegin),e.addEventListener("editEnd",this.handleMeasurementEditEnd),this.stateMap.measurementElement=e,this.hostEl.append(e)}}get hostEl(){return n(this)}static get watchers(){return{viewer:["handleViewerChanged"],tool:["handleToolChanged"],distanceTemplateId:["handleDistanceTemplateIdChanged"],disabled:["handleDisabledChanged"],units:["handleUnitsChanged"],fractionalDigits:["handleFractionalDigitsChanged"],snapDistance:["handleSnapDistanceChanged"]}}};o.style=":host{position:absolute;top:0;bottom:0;left:0;right:0}";export{o as vertex_viewer_measurement_tool}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as e,c as t,h as r,H as n,g as i}from"./p-cafa57a6.js";import{s}from"./p-c738296e.js";import{F as
|
|
4
|
+
import{r as e,c as t,h as r,H as n,g as i}from"./p-cafa57a6.js";import{s}from"./p-c738296e.js";import{F as o,C as a,A as l}from"./p-8df35eee.js";import{b as h,a as d,i as m}from"./p-38c06c25.js";import"./p-121f2b40.js";import"./p-546ae240.js";let c=class{constructor(r){e(this,r),this.markupBegin=t(this,"markupBegin",7),this.markupEnd=t(this,"markupEnd",7),this.tool="arrow",this.disabled=!1,this.stateMap={},this.handleMarkupEditBegin=()=>{this.markupBegin.emit()},this.handleMarkupEditEnd=()=>{const{markupElement:e}=this.stateMap;if(h(e)){const{points:t,bounds:r}=e;null!=t&&t.length>0&&null!=r&&this.markupEnd.emit(new o({points:t,bounds:r}))}else if(d(e)){const{bounds:t}=e;null!=t&&this.markupEnd.emit(new a({bounds:t}))}else if(m(e)){const{start:t,end:r}=e;null!=t&&null!=r&&this.markupEnd.emit(new l({start:t,end:r}))}}}async handleViewerChanged(){null!=this.stateMap.markupElement&&(this.stateMap.markupElement.viewer=this.viewer)}handleToolChanged(){this.updateMarkupElement()}handleArrowTemplateIdChanged(){this.updateMarkupElement()}handleCircleTemplateIdChanged(){this.updateMarkupElement()}handleFreeformTemplateIdChanged(){this.updateMarkupElement()}handleDisabledChanged(){this.updateMarkupElement()}componentDidLoad(){this.updateMarkupElement()}async reset(){const{markupElement:e}=this.stateMap;h(e)?(e.points=void 0,e.bounds=void 0,e.mode="create"):d(e)?(e.bounds=void 0,e.mode="create"):m(e)&&(e.start=void 0,e.end=void 0,e.mode="create")}render(){return this.disabled?r(n,null):r(n,null,"arrow"===this.tool||"circle"===this.tool||"freeform"===this.tool?r("slot",null):`Unsupported tool type '${this.tool}'.`)}createArrowMarkupElement(){if(null!=this.arrowTemplateId){const e=s(window.document.body,this.arrowTemplateId,m,(()=>console.warn(`Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`)),(()=>console.warn("Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.")));if(null!=e)return e}return document.createElement("vertex-viewer-markup-arrow")}createCircleMarkupElement(){if(null!=this.circleTemplateId){const e=s(window.document.body,this.circleTemplateId,d,(()=>console.warn(`Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`)),(()=>console.warn("Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.")));if(null!=e)return e}return document.createElement("vertex-viewer-markup-circle")}createFreeformMarkupElement(){if(null!=this.freeformTemplateId){const e=s(window.document.body,this.freeformTemplateId,h,(()=>console.warn(`Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`)),(()=>console.warn("Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.")));if(null!=e)return e}return document.createElement("vertex-viewer-markup-freeform")}createNewMarkupElement(){switch(this.tool){case"arrow":return this.createArrowMarkupElement();case"circle":return this.createCircleMarkupElement();case"freeform":return this.createFreeformMarkupElement()}}updateMarkupElement(){const{markupElement:e}=this.stateMap;if(null!=e&&(e.remove(),e.dispose(),e.viewer=void 0,e.removeEventListener("editBegin",this.handleMarkupEditBegin),e.removeEventListener("editEnd",this.handleMarkupEditEnd)),!this.disabled){const e=this.createNewMarkupElement();e.mode="create",e.viewer=this.viewer,e.addEventListener("editBegin",this.handleMarkupEditBegin),e.addEventListener("editEnd",this.handleMarkupEditEnd),this.stateMap.markupElement=e,this.hostEl.append(e)}}get hostEl(){return i(this)}static get watchers(){return{viewer:["handleViewerChanged"],tool:["handleToolChanged"],arrowTemplateId:["handleArrowTemplateIdChanged"],circleTemplateId:["handleCircleTemplateIdChanged"],freeformTemplateId:["handleFreeformTemplateIdChanged"],disabled:["handleDisabledChanged"]}}};c.style=':host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}:host([elevated=""]){z-index:100}';export{c as vertex_viewer_markup_tool}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{p as s,
|
|
4
|
+
import{p as s,h as r}from"./p-121f2b40.js";import{b as o}from"./p-546ae240.js";class l{constructor(r){var l,i,a;this.start=null!==(l=r.start)&&void 0!==l?l:s.create(),this.end=null!==(i=r.end)&&void 0!==i?i:s.create(),this.id=null!==(a=r.id)&&void 0!==a?a:`arrow-markup--${o.create()}`}}class i{constructor(s){var l,i;this.bounds=null!==(l=s.bounds)&&void 0!==l?l:r.create(0,0,0,0),this.id=null!==(i=s.id)&&void 0!==i?i:`circle-markup--${o.create()}`}}class a{constructor(s){var l,i,a;this.bounds=null!==(l=s.bounds)&&void 0!==l?l:r.create(0,0,0,0),this.points=null!==(i=s.points)&&void 0!==i?i:[],this.id=null!==(a=s.id)&&void 0!==a?a:`freeform-markup--${o.create()}`}}export{l as A,i as C,a as F}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as e,c as t,h as s,H as n,g as a}from"./p-cafa57a6.js";import{M as i}from"./p-849bd025.js";import"./p-
|
|
4
|
+
import{r as e,c as t,h as s,H as n,g as a}from"./p-cafa57a6.js";import{M as i}from"./p-849bd025.js";import"./p-61db972b.js";import"./p-3a20a038.js";import"./p-18ec4fed.js";import{M as r}from"./p-25dfee48.js";import{m as h}from"./p-463151e0.js";import{s as o}from"./p-c738296e.js";import{D as d}from"./p-9b1ecc71.js";import{i as m}from"./p-ce0fe8be.js";import"./p-112455b1.js";import"./p-546ae240.js";import"./p-121f2b40.js";let l=class{constructor(s){e(this,s),this.measurementAdded=t(this,"measurementAdded",7),this.measurementRemoved=t(this,"measurementRemoved",7),this.tool="distance",this.units="millimeters",this.fractionalDigits=2,this.disabled=!1,this.snapDistance=i,this.showAxisReferenceLines=!1,this.measurementModel=new r}async addMeasurement(e){if(e instanceof d){const{start:t,end:s,invalid:n,id:a}=e,i=this.createDistanceMeasurementElement();return i.id=a,i.start=t,i.end=s,i.invalid=n,this.updatePropsOnMeasurement(i),this.hostEl.appendChild(i),this.measurementAdded.emit(i),i}throw new Error(`Cannot add measurement. Unknown type '${e}'.`)}async removeMeasurement(e){const t=(await this.getMeasurementElements()).find((t=>t.id===e));return null!=t&&(t.remove(),this.measurementRemoved.emit(t)),t}async getMeasurementElement(e){return(await this.getMeasurementElements()).find((t=>t.id===e))}async getMeasurementElements(){return Array.from(this.hostEl.children).filter(m)}async handleSelectedMeasurementIdChanged(){this.measurementModel.clearOutcome(),(await this.getMeasurementElements()).forEach((e=>{e.id===this.selectedMeasurementId?(e.mode="edit",e.showAxisReferenceLines=this.showAxisReferenceLines,null!=e.start&&null!=e.end&&this.measurementModel.setOutcome({isApproximate:!0,results:[h(e.start,e.end)]})):(e.mode="",e.showAxisReferenceLines=!1)}))}handleToolChanged(){this.updatePropsOnMeasurementTool()}async handleViewerChanged(e){this.updatePropsOnMeasurementTool(),this.updatePropsOnMeasurements()}handleDisabledChanged(){this.updatePropsOnMeasurementTool()}handleDistanceTemplateIdChanged(){this.updatePropsOnMeasurementTool()}handleUnitsChanged(){this.updatePropsOnMeasurementTool(),this.updatePropsOnMeasurements()}handleFractionalDigitsChanged(){this.updatePropsOnMeasurementTool(),this.updatePropsOnMeasurements()}handleSnapDistanceChanged(){this.updatePropsOnMeasurementTool(),this.updatePropsOnMeasurements()}async handleMeasureEnd(e){const t=e;await this.addMeasurement(t.detail),this.selectedMeasurementId=t.detail.id}async handleMeasurementPointerDown(e){if(!this.disabled){const t=e.target,s=(await this.getMeasurementElements()).find((e=>e===t));null!=(null==s?void 0:s.id)&&""!==(null==s?void 0:s.id)&&(this.selectedMeasurementId=t.id)}}componentDidLoad(){this.updatePropsOnMeasurementTool()}render(){return s(n,null,s("slot",null))}createDistanceMeasurementElement(){if(null!=this.distanceTemplateId){const e=o(window.document.body,this.distanceTemplateId,m,(()=>console.warn(`Distance template with ID ${this.distanceTemplateId} not found. Using default distance element.`)),(()=>console.warn("Distance template does not contain a vertex-viewer-measurement-distance. Using default distance element.")));if(null!=e)return e}return document.createElement("vertex-viewer-measurement-distance")}async updatePropsOnMeasurements(){(await this.getMeasurementElements()).forEach((e=>this.updatePropsOnMeasurement(e)))}updatePropsOnMeasurement(e){e.fractionalDigits=this.fractionalDigits,e.units=this.units,e.snapDistance=this.snapDistance,e.viewer=this.viewer,e.classList.add("viewer-measurements__measurement")}updatePropsOnMeasurementTool(){const e=this.getMeasurementTool();null!=e&&(e.disabled=this.disabled,e.distanceTemplateId=this.distanceTemplateId,e.tool=this.tool,e.fractionalDigits=this.fractionalDigits,e.units=this.units,e.snapDistance=this.snapDistance,e.viewer=this.viewer)}getMeasurementTool(){return this.hostEl.querySelector("vertex-viewer-measurement-tool")}get hostEl(){return a(this)}static get watchers(){return{selectedMeasurementId:["handleSelectedMeasurementIdChanged"],tool:["handleToolChanged"],viewer:["handleViewerChanged"],disabled:["handleDisabledChanged"],distanceTemplateId:["handleDistanceTemplateIdChanged"],units:["handleUnitsChanged"],fractionalDigits:["handleFractionalDigitsChanged"],snapDistance:["handleSnapDistanceChanged"]}}};l.style=":host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}::slotted(.viewer-measurements__measurement[mode='']){cursor:pointer}::slotted(.viewer-measurements__measurement[mode='edit']){z-index:1}::slotted(.viewer-measurements__measurement[interacting-anchor='start']),::slotted(.viewer-measurements__measurement[interacting-anchor='end']),::slotted(vertex-viewer-measurement-tool[is-measuring]){z-index:2}";export{l as vertex_viewer_measurements}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{v as t}from"./p-121f2b40.js";import{b as s}from"./p-546ae240.js";class i{constructor(i){var r,e,o,l;this.start=null!==(r=i.start)&&void 0!==r?r:t.origin(),this.end=null!==(e=i.end)&&void 0!==e?e:t.origin(),this.invalid=null!==(o=i.invalid)&&void 0!==o&&o,this.id=null!==(l=i.id)&&void 0!==l?l:`measurement--${s.create()}`}getWorldDistance(){return t.distance(this.start,this.end)}getRealDistance(t){return t.convertRealValueToWorld(this.getWorldDistance())}}export{i as D}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{v as t}from"./p-
|
|
4
|
+
import{v as t}from"./p-121f2b40.js";import{E as s,b as e}from"./p-546ae240.js";class r{constructor(){this.overlays=new Map,this.overlaysChanged=new s}addLineFromResult(t){return this.addLine(t.point1,t.point2)}addLine(t,s){const r=e.create(),i={type:"line",id:r,start:t,end:s,dispose:()=>this.remove(r)};return this.addOverlay(i),i}addDistanceVectorFromResult(t){return this.addDistanceVector(t.point1,t.point2)}addDistanceVector(s,r){const i=e.create(),a=t.subtract(s,r),n=t.add(s,t.create(0,-a.y,0)),d={start:s,end:n},h=t.add(n,t.create(0,0,-a.z)),o={start:n,end:h},c=t.add(h,t.create(-a.x,0,0)),p={type:"distance-vector",id:i,x:{start:h,end:c},y:d,z:o,dispose:()=>this.remove(i)};return this.addOverlay(p),p}addOverlay(t){this.overlays.has(t.id)||(this.overlays.set(t.id,t),this.overlaysChanged.emit(this.getOverlays()))}getOverlays(){return Array.from(this.overlays.values())}remove(t){return!!this.overlays.has(t)&&(this.overlays.delete(t),this.overlaysChanged.emit(this.getOverlays()),!0)}onOverlaysChanged(t){return this.overlaysChanged.on(t)}}export{r as M}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{r as t,c as i,h as s,H as n,g as e}from"./p-cafa57a6.js";import{p as h,v as o,g as r,i as a,r as l,b as c,o as d,d as u}from"./p-121f2b40.js";import{j as v,k as w,l as f,t as p,E as m,p as g,m as y,n as b,S as C,o as I,q as T,r as P,s as x,u as D,x as S,y as E,W as k,z as M,f as O,B as j,C as A,G as R}from"./p-18ec4fed.js";import{E as F,m as B,c as z,o as N,u as $,a as L,b as K}from"./p-546ae240.js";import{c as W}from"./p-f482325b.js";import{p as V}from"./p-6d9d3553.js";import{C as q}from"./p-6120a219.js";import{g as U,c as H}from"./p-b8f027eb.js";import{I as G,f as J,C as _,W as X,a as Y,b as Q,d as Z,V as tt,e as it,g as st,h as nt,i as et,S as ht}from"./p-2e75198d.js";import{V as ot}from"./p-e3fff448.js";import"./p-112455b1.js";class rt{constructor(t){this.viewer=t,this.handleInteractionStarted=()=>{this.invalidateStencilBuffer(),this.pendingInteractionFinished=new Promise((t=>{this.pendingInteractionFinishedResolver=t}))},this.handleInteractionFinished=()=>{var t;null===(t=this.pendingInteractionFinishedResolver)||void 0===t||t.call(this),this.pendingInteractionFinished=void 0,this.pendingInteractionFinishedResolver=void 0},this.invalidateStencilBuffer=()=>{this.pendingStencilBuffer=void 0},t.addEventListener("interactionStarted",this.handleInteractionStarted),t.addEventListener("interactionFinished",this.handleInteractionFinished),t.addEventListener("frameReceived",(()=>{this.invalidateStencilBuffer()}))}async fetch(){var t;const i=await this.viewer.isSceneReady()?await this.viewer.scene():void 0,s=null!=i&&(i.crossSectioning().current().sectionPlanes.length>0||null!=this.viewer.featureLines),n=null===(t=this.viewer.frame)||void 0===t?void 0:t.scene.camera;if(s&&null!=this.viewer.stream&&null!=n){const t=await this.viewer.stream.getStencilBuffer({includeDepthBuffer:!0}),{stencilBuffer:i,depthBuffer:s,imageAttributes:e}=v(t),[h,o]=await Promise.all([w(new Uint8Array(i)),w(new Uint8Array(s))]);return at.fromPng(h,e,i,f.fromPng(o,n,e))}}latest(){return null==this.pendingStencilBuffer&&(this.pendingStencilBuffer=this.fetch()),this.pendingStencilBuffer}async latestAfterInteraction(){return await this.pendingInteractionFinished,this.latest()}}class at{constructor(t,i,s,n,e){this.imageAttr=t,this.imageBytes=i,this.pixelBytes=s,this.imageChannels=n,this.depthBuffer=e}static fromPng(t,i,s,n){if(t.data instanceof Uint8Array){if(1!==t.channels)throw new Error("Expected stencil PNG to have 1 color channel");return new at(i,s,t.data,t.channels,n)}throw new Error("Expected stencil PNG to have depth of 8-bit")}getValue(t){const{width:i,height:s}=this.imageAttr.imageRect,n=h.subtract(t,this.imageAttr.imageRect),e=1/this.imageAttr.imageScale,o=h.scale(n,e,e);if(o.x>=0&&o.y>=0&&o.x<i&&o.y<s){const t=Math.floor(o.x)+Math.floor(o.y)*i;return this.pixelBytes[t]}return 0}hitTest(t){return 0!==this.getValue(t)}snapToNearestPixel(t,i,s=(()=>!0)){const n=2*i,e=h.create(t.x-i,t.y-i),o=[];for(let r=0;r<n*n;r++){const a=r%n,l=Math.floor(r/n),c=h.add(e,{x:a,y:l});if(h.distance(c,t)<=i){const t=this.getValue(c);255===t&&s(t)&&o.push(c)}}const r=o.sort(((i,s)=>h.distance(i,t)-h.distance(s,t)))[0];return null!=r?h.create(Math.floor(r.x)+.5,Math.floor(r.y)+.5):t}}class lt{constructor(t,i,s){this.stream=t,this.configProvider=i,this.imageScaleProvider=s}predicate(t){return t.altKey&&!t.shiftKey}async fn(t){var i;const s=this.imageScaleProvider(),n=await this.stream.hitItems({point:h.scale(t.position,(null==s?void 0:s.x)||1,(null==s?void 0:s.y)||1)},!0);null!=(null===(i=n.hitItems)||void 0===i?void 0:i.hits)&&n.hitItems.hits.length>0?await this.stream.flyTo({itemId:n.hitItems.hits[0].itemId,animation:{duration:p(this.configProvider().animation.durationMs)}}):console.debug(`No hit results found for fly to part [position={x: ${t.position.x}, y: ${t.position.y}}]`)}}class ct{constructor(t,i,s,n,e,h,o,r,a,l,c){this.stream=t,this.cursors=i,this.getConfig=s,this.getScene=n,this.getFrame=e,this.getViewport=h,this.tapEmitter=o,this.doubleTapEmitter=r,this.longPressEmitter=a,this.interactionStartedEmitter=l,this.interactionFinishedEmitter=c,this.tap=this.tap.bind(this),this.doubleTap=this.doubleTap.bind(this),this.longPress=this.longPress.bind(this),this.emitTapEvent=this.emitTapEvent.bind(this)}addCursor(t,i){return this.cursors.add(t,i)}async getWorldPointFromViewport(t){const i=this.getViewport(),s=this.getFrame();if(null==s)throw new Error("Cannot get world point. Frame is undefined.");const n=await s.depthBuffer();return null!=n?i.transformPointToWorldSpace(t,n,.5):void 0}async getEntityTypeAtPoint(t){var i;const s=this.getViewport(),n=await(null===(i=this.getFrame())||void 0===i?void 0:i.featureMap());if(null!=n){const i=s.transformPointToFrame(t,n);return n.getEntityType(i)}return m.NO_GEOMETRY}getRayFromPoint(t){const i=this.getViewport(),s=this.getFrame();if(null!=s)return i.transformPointToRay(t,s.image,s.scene.camera);throw new Error("Cannot get camera. Frame is undefined.")}async tap(t,i={},s=0){this.emitTapEvent(this.tapEmitter.emit,t,i,s)}async doubleTap(t,i={},s=0){this.emitTapEvent(this.doubleTapEmitter.emit,t,i,s)}async longPress(t,i={},s=0){this.emitTapEvent(this.longPressEmitter.emit,t,i,s)}async beginInteraction(){this.isInteracting()||(this.interactionStartedEmitter.emit(),this.currentCamera=this.getScene().camera(),await this.stream.beginInteraction())}async transformCamera(t){var i;if(this.isInteracting()){const s=this.getScene(),n=this.getViewport(),e=this.getFrame(),h=await(null==e?void 0:e.depthBuffer());this.currentCamera=null!=this.currentCamera&&null!=n&&null!=e?t({camera:this.currentCamera,viewport:n,scale:s.scale(),boundingBox:s.boundingBox(),frame:e,depthBuffer:h}):void 0,await(null===(i=this.currentCamera)||void 0===i?void 0:i.render())}}async twistCamera(...t){return this.transformCamera((({camera:i,viewport:s})=>{const n=o.normalize(o.subtract(i.lookAt,i.position));if(1===t.length&&"number"==typeof t[0]){const s=r.toRadians(-t[0]);return i.rotateAroundAxis(s,n)}if(1===t.length){const n=h.create(s.width/2,s.height/2),e=r.toDegrees(r.fromPoints(n,t[0])),a=null!=this.lastAngle?e-this.lastAngle:0;this.lastAngle=e;const l=o.normalize(o.subtract(i.lookAt,i.position)),c=r.toRadians(-a);return i.rotateAroundAxis(c,l)}return i}))}async panCameraToScreenPoint(t){return this.transformCamera((({camera:i,frame:s,viewport:n,depthBuffer:e})=>{if(null==this.panData){const h=i.toFrameCamera(),o=h.direction,r=n.transformPointToRay(t,s.image,h),c=a.fromNormalAndCoplanarPoint(o,i.lookAt),d=l.intersectPlane(r,c);if(null==d)return console.warn("Cannot determine fallback for pan. Ray does not intersect plane."),i;const u=null!=e?this.getWorldPoint(t,e,d):d,v=a.fromNormalAndCoplanarPoint(o,u);this.panData={hitPt:u,hitPlane:v,startingCamera:h}}if(null!=this.panData){const{hitPt:e,hitPlane:h,startingCamera:r}=this.panData,a=n.transformPointToRay(t,s.image,r),c=l.intersectPlane(a,h);if(null!=c){const t=o.subtract(e,c);return i.update(r).moveBy(t)}}return i}))}async viewAll(){await this.getScene().camera().viewAll().render()}async rotateCamera(t){return this.transformCamera((({camera:i,viewport:s})=>{const n=o.normalize(i.up),e=o.normalize(o.subtract(i.lookAt,i.position)),h=o.cross(n,e),r=o.cross(e,h),a=o.normalize({x:t.x*h.x+t.y*r.x,y:t.x*h.y+t.y*r.y,z:t.x*h.z+t.y*r.z}),l=o.cross(a,e),c=3*Math.PI*t.x/s.width,d=3*Math.PI*t.y/s.height,u=Math.abs(c)+Math.abs(d);return i.rotateAroundAxis(u,l)}))}async rotateCameraAtPoint(t,i){return this.transformCamera((({camera:s,viewport:n,boundingBox:e,depthBuffer:h})=>{if(null==this.worldRotationPoint){const t=c.center(e);this.worldRotationPoint=null!=h?this.getWorldPoint(i,h,t):s.lookAt}const r=o.normalize(s.up),a=o.normalize(o.subtract(s.lookAt,s.position)),l=o.cross(r,a),d=o.cross(a,l),u=o.normalize({x:t.x*l.x+t.y*d.x,y:t.x*l.y+t.y*d.y,z:t.x*l.z+t.y*d.z}),v=o.cross(u,a),w=3*Math.PI*t.x/n.width,f=3*Math.PI*t.y/n.height,p=Math.abs(w)+Math.abs(f),m=s.rotateAroundAxisAtPoint(p,this.worldRotationPoint,v);return m.update({lookAt:o.add(o.scale(Math.abs(s.signedDistanceToBoundingBoxCenter())/o.magnitude(m.viewVector),m.viewVector),m.position)})}))}async zoomCamera(t){return this.transformCamera((({camera:i,viewport:s})=>{const n=i.viewVector,e=o.normalize(n),h=o.magnitude(n),r=o.add(i.position,o.scale(3*h*t/s.height,e));return i.update({position:r})}))}async zoomCameraToPoint(t,i){return this.transformCamera((({camera:s,viewport:n,frame:e,depthBuffer:h})=>{const r=e.scene.camera,c=r.direction,d=s.toFrameCamera(),u=n.transformPointToRay(t,e.image,d);if(null==this.zoomData){const i=a.fromNormalAndCoplanarPoint(c,r.lookAt),n=l.intersectPlane(u,i);if(null==n)return console.warn("Cannot determine fallback point for zoom. Ray does not intersect plane."),s;const e=null!=h?this.getWorldPoint(t,h,n):n,o=a.fromNormalAndCoplanarPoint(c,e);this.zoomData={hitPt:e,hitPlane:o}}if(null!=this.zoomData){const{hitPt:t,hitPlane:e}=this.zoomData,h=o.distance(s.position,t),r=l.at(u,6*h*i/n.height),c=a.projectPoint(e,r),d=s.update({position:r,lookAt:c});if(o.distance(r,c)>=d.near)return d}return s}))}async endInteraction(){this.isInteracting()&&(this.currentCamera=void 0,this.worldRotationPoint=void 0,this.panData=void 0,this.zoomData=void 0,this.resetLastAngle(),this.interactionFinishedEmitter.emit(),await this.stream.endInteraction())}resetLastAngle(){this.lastAngle=void 0}isInteracting(){return null!=this.currentCamera}pixelThreshold(t){return(this.isCoarseInputDevice(t)?this.getConfig().coarsePointerThreshold:this.getConfig().finePointerThreshold)*window.devicePixelRatio}async hitItems(t){var i;const s=await this.getScene().raycaster().hitItems(t);return null!==(i=null==s?void 0:s.hits)&&void 0!==i?i:[]}emitTapEvent(t,i,s={},n=0){const{altKey:e=!1,ctrlKey:h=!1,metaKey:o=!1,shiftKey:r=!1}=s;t({position:i,altKey:e,ctrlKey:h,metaKey:o,shiftKey:r,buttons:n})}isCoarseInputDevice(t){return t||window.matchMedia("(pointer: coarse)").matches}getWorldPoint(t,i,s){const n=this.getViewport(),e=n.transformPointToFrame(t,i);return i.hitTest(e)?n.transformPointToWorldSpace(t,i):s}}class dt extends ct{constructor(t,i,s,n,e,h,o,r,a,l,c){super(t,i,s,n,e,h,o,r,a,l,c)}async panCameraByDelta(t){return this.transformCamera((({camera:i,viewport:s})=>{const n=i.viewVector,e=o.normalize(i.up),h=o.normalize(n),r=o.magnitude(n)*Math.tan(i.fovHeight),a=t.x*r/s.width,l=t.y/s.width*r,c=o.cross(e,h),d=o.cross(h,c),u=o.add(o.scale(a,c),o.scale(l,d));return i.moveBy(u)}))}async transformCamera(t){var i;if(this.isInteracting()){const s=this.getScene(),n=this.getViewport(),e=this.getFrame(),h=await(null==e?void 0:e.depthBuffer());this.currentCamera=null!=this.currentCamera&&null!=n&&null!=e?t({camera:this.currentCamera,viewport:n,scale:s.scale(),boundingBox:s.boundingBox(),frame:e,depthBuffer:h}):void 0,await(null===(i=this.currentCamera)||void 0===i?void 0:i.render())}}}class ut extends ct{constructor(t,i,s,n,e,h,o,r,a,l,c){super(t,i,s,n,e,h,o,r,a,l,c)}async panCameraByDelta(t){return this.transformCamera((({camera:i,viewport:s})=>{const n=i.viewVector,e=o.normalize(i.up),h=o.normalize(n),r=o.magnitude(n)*Math.tan(i.fovY),a=t.x*r/s.width,l=t.y/s.width*r,c=o.cross(e,h),d=o.cross(h,c),u=o.add(o.scale(a,c),o.scale(l,d));return i.moveBy(u)}))}async transformCamera(t){var i;if(this.isInteracting()){const s=this.getScene(),n=this.getViewport(),e=this.getFrame(),h=await(null==e?void 0:e.depthBuffer());this.currentCamera=null!=this.currentCamera&&null!=n&&null!=e?t({camera:this.currentCamera,viewport:n,scale:s.scale(),boundingBox:s.boundingBox(),frame:e,depthBuffer:h}):void 0,await(null===(i=this.currentCamera)||void 0===i?void 0:i.render())}}}class vt{constructor(t,i,s,n){this.stream=t,this.configProvider=i,this.imageScaleProvider=s,this.sceneProvider=n}predicate(t){return t.altKey&&t.shiftKey}async fn(t){var i,s;const n=this.imageScaleProvider(),e=await this.stream.hitItems({point:h.scale(t.position,(null==n?void 0:n.x)||1,(null==n?void 0:n.y)||1)},!0);if(null!=(null===(i=e.hitItems)||void 0===i?void 0:i.hits)&&e.hitItems.hits.length>0&&null!=e.hitItems.hits[0].hitPoint){const i=this.sceneProvider().camera(),n=e.hitItems.hits[0];null!=n.hitPoint&&null!=n.hitPoint.x&&null!=n.hitPoint.y&&null!=n.hitPoint.z?await this.stream.flyTo({camera:i.update({lookAt:o.create(n.hitPoint.x,n.hitPoint.y,n.hitPoint.z)}).toFrameCamera(),animation:{duration:p(this.configProvider().animation.durationMs)}}):console.debug(`No hit position found for fly to position [position={x: ${t.position.x}, y: ${t.position.y}}, hit-id={${null===(s=n.itemId)||void 0===s?void 0:s.hex}}]`)}else console.debug(`No hit results found for fly to position [position={x: ${t.position.x}, y: ${t.position.y}}]`)}}const wt=[.2,.15,.25,.25,.15];class ft{constructor(t,i,s,n,e,h,o,r,a){this.downEvent=t,this.upEvent=i,this.moveEvent=s,this.rotateInteraction=n,this.rotatePointInteraction=e,this.zoomInteraction=h,this.panInteraction=o,this.twistInteraction=r,this.getConfig=a,this.primaryInteraction=this.rotateInteraction,this.isDragging=!1,this.keyboardControls=!1,this.disableIndividualInteractions=!1,this.primaryInteractionTypeChange=new F,this.handleDownEvent=this.handleDownEvent.bind(this),this.handleMouseWheel=this.handleMouseWheel.bind(this),this.handleWindowMove=this.handleWindowMove.bind(this),this.handleWindowUp=this.handleWindowUp.bind(this),this.handleDoubleClick=this.handleDoubleClick.bind(this)}initialize(t,i){this.element=t,this.interactionApi=i,t.addEventListener(this.downEvent,this.handleDownEvent),t.addEventListener("mousedown",this.handleDoubleClick),t.addEventListener("wheel",this.handleMouseWheel)}dispose(){var t,i,s;null===(t=this.element)||void 0===t||t.removeEventListener(this.downEvent,this.handleDownEvent),null===(i=this.element)||void 0===i||i.removeEventListener("mousedown",this.handleDoubleClick),null===(s=this.element)||void 0===s||s.removeEventListener("wheel",this.handleMouseWheel),this.element=void 0}onPrimaryInteractionTypeChange(t){return this.primaryInteractionTypeChange.on(t)}setCurrentInteractionType(t){var i;switch(t){case"rotate":this.currentInteraction=this.rotateInteraction;break;case"zoom":this.currentInteraction=this.zoomInteraction;break;case"pan":this.currentInteraction=this.panInteraction;break;case"twist":this.currentInteraction=this.twistInteraction;break;case"rotate-point":this.currentInteraction=this.rotatePointInteraction;break;default:this.currentInteraction=void 0}if(this.draggingInteraction){const t=this.draggingInteraction.getPosition();this.draggingInteraction=this.currentInteraction||this.primaryInteraction,null===(i=this.interactionApi)||void 0===i||i.resetLastAngle(),this.draggingInteraction.setPosition(t)}}getPrimaryInteractionType(){return this.primaryInteraction.getType()}getCurrentInteractionType(){return(this.currentInteraction||this.primaryInteraction).getType()}setPrimaryInteractionType(t){switch(t){case"rotate":this.primaryInteraction=this.rotateInteraction;break;case"rotate-point":this.primaryInteraction=this.rotatePointInteraction;break;case"zoom":this.primaryInteraction=this.zoomInteraction;break;case"pan":this.primaryInteraction=this.panInteraction}this.primaryInteractionTypeChange.emit()}setDefaultKeyboardControls(t){this.keyboardControls=t}handleDownEvent(t){this.interactionTimer=window.setTimeout((()=>{this.downPosition=h.create(t.screenX,t.screenY),this.downPositionCanvas=this.getCanvasPosition(t),this.interactionTimer=void 0,null!=this.lastMoveEvent&&this.handleWindowMove(this.lastMoveEvent)}),this.getConfig().interactions.interactionDelay),window.addEventListener(this.moveEvent,this.handleWindowMove),window.addEventListener(this.upEvent,this.handleWindowUp)}handleWindowMove(t){if(null==this.interactionTimer){if(this.disableIndividualInteractions)return;const i=h.create(t.screenX,t.screenY),s=null!=this.interactionApi?this.interactionApi.pixelThreshold(this.isTouch(t)):2;null!=this.downPosition&&h.distance(i,this.downPosition)>=s&&!this.isDragging&&(this.beginDrag(t),this.isDragging=!0),this.isDragging&&this.drag(t)}this.lastMoveEvent=t}async handleWindowUp(t){this.isDragging&&(this.endDrag(t),this.isDragging=!1),null!=this.interactionTimer&&(window.clearTimeout(this.interactionTimer),this.interactionTimer=void 0),window.removeEventListener(this.moveEvent,this.handleWindowMove),window.removeEventListener(this.upEvent,this.handleWindowUp),this.lastMoveEvent=void 0}async handleDoubleClick(t){2===t.detail&&4===t.buttons&&null!=this.interactionApi&&this.interactionApi.viewAll()}beginDrag(t){this.keyboardControls&&t.metaKey&&t.shiftKey?this.currentInteraction=this.rotatePointInteraction:this.keyboardControls&&t.shiftKey?this.currentInteraction=this.zoomInteraction:this.keyboardControls&&(t.metaKey||t.ctrlKey)?this.currentInteraction=this.panInteraction:this.keyboardControls&&t.altKey&&(this.currentInteraction=this.rotateInteraction),1===t.buttons||4===t.buttons?this.draggingInteraction=this.currentInteraction||this.primaryInteraction:2===t.buttons&&(this.draggingInteraction=this.panInteraction),null!=this.draggingInteraction&&null!=this.interactionApi&&null!=this.element&&(this.zoomInteraction.endDrag(t,this.interactionApi),this.draggingInteraction.beginDrag(t,this.downPositionCanvas||h.create(t.clientX,t.clientY),this.interactionApi,this.element))}drag(t){this.currentInteraction=this.keyboardControls&&t.altKey&&t.shiftKey?this.twistInteraction:void 0,this.draggingInteraction=this.currentInteraction||this.draggingInteraction||this.primaryInteraction,null!=this.draggingInteraction&&null!=this.interactionApi&&this.draggingInteraction.drag(t,this.interactionApi)}endDrag(t){this.keyboardControls&&this.currentInteraction===this.twistInteraction&&(this.currentInteraction=void 0),null!=this.draggingInteraction&&null!=this.interactionApi&&(this.draggingInteraction.endDrag(t,this.interactionApi),this.draggingInteraction=void 0)}handleMouseWheel(t){if(t.preventDefault(),null!=this.element&&null!=this.interactionApi&&4!==t.buttons){const i=-this.wheelDeltaToPixels(t.deltaY,t.deltaMode)/10,s=this.element.getBoundingClientRect(),n=U(t,s);wt.forEach(((t,s)=>{window.setTimeout((()=>{null!=this.interactionApi&&this.zoomInteraction.zoomToPoint(n,i*t,this.interactionApi)}),2*s)}))}}wheelDeltaToPixels(t,i){null==this.computedBodyStyle&&(this.computedBodyStyle=window.getComputedStyle(document.body));const s=null==this.computedBodyStyle.fontSize||""===this.computedBodyStyle.fontSize||isNaN(parseFloat(this.computedBodyStyle.fontSize))?19.2:1.2*parseFloat(this.computedBodyStyle.fontSize);return 1===i?null==this.computedBodyStyle.lineHeight||""===this.computedBodyStyle.lineHeight||isNaN(parseFloat(this.computedBodyStyle.lineHeight))?t*s:t*parseFloat(this.computedBodyStyle.lineHeight):2===i?null==this.computedBodyStyle.height||""===this.computedBodyStyle.height||isNaN(parseFloat(this.computedBodyStyle.height))?t*window.innerHeight:t*parseFloat(this.computedBodyStyle.height):t}getCanvasPosition(t){var i;const s=null===(i=this.element)||void 0===i?void 0:i.getBoundingClientRect(),n=null!=s?h.create(s.left,s.top):void 0;return null!=n?h.subtract(h.create(t.clientX,t.clientY),n):void 0}isTouch(t){return null!=window.PointerEvent&&t instanceof PointerEvent&&"touch"===t.pointerType}}class pt{setPosition(t){this.currentPosition=t}getPosition(){return this.currentPosition}getType(){return this.type}beginDrag(t,i,s,n){}drag(t,i){}endDrag(t,i){null!=this.currentPosition&&(i.endInteraction(),this.currentPosition=void 0)}zoom(t,i){}}class mt extends pt{constructor(){super(...arguments),this.type="rotate"}beginDrag(t,i,s){null==this.currentPosition&&(this.currentPosition=h.create(t.screenX,t.screenY),s.beginInteraction())}drag(t,i){if(null!=this.currentPosition){const s=h.create(t.screenX,t.screenY),n=h.subtract(s,this.currentPosition);i.rotateCamera(n),this.currentPosition=s}}endDrag(t,i){super.endDrag(t,i)}}class gt extends pt{constructor(){super(...arguments),this.type="rotate-point"}beginDrag(t,i,s){null==this.currentPosition&&(this.currentPosition=h.create(t.screenX,t.screenY),this.startingPosition=i,s.beginInteraction())}drag(t,i){if(null!=this.currentPosition&&null!=this.startingPosition){const s=h.create(t.screenX,t.screenY),n=h.subtract(s,this.currentPosition);i.rotateCameraAtPoint(n,this.startingPosition),this.currentPosition=s}}endDrag(t,i){super.endDrag(t,i)}}class yt extends pt{constructor(t=1e3){super(),this.interactionTimeout=t,this.type="zoom",this.didTransformBegin=!1}beginDrag(t,i,s,n){if(null==this.currentPosition){this.currentPosition=h.create(t.clientX,t.clientY);const i=n.getBoundingClientRect(),e=U(t,i);this.startPt=e,s.beginInteraction()}}drag(t,i){if(null!=this.currentPosition){const s=h.create(t.clientX,t.clientY),n=h.subtract(s,this.currentPosition);null!=this.startPt&&(i.zoomCameraToPoint(this.startPt,n.y),this.currentPosition=s)}}endDrag(t,i){super.endDrag(t,i),this.stopInteractionTimer(),this.didTransformBegin=!1,this.startPt=void 0}zoom(t,i){this.operateWithTimer(i,(()=>i.zoomCamera(t)))}zoomToPoint(t,i,s){this.operateWithTimer(s,(()=>s.zoomCameraToPoint(t,i)))}beginInteraction(t){this.didTransformBegin=!0,t.beginInteraction()}endInteraction(t){this.didTransformBegin=!1,t.endInteraction()}resetInteractionTimer(t){this.stopInteractionTimer(),this.startInteractionTimer(t)}startInteractionTimer(t){this.interactionTimer=window.setTimeout((()=>{this.interactionTimer=void 0,this.endInteraction(t)}),this.interactionTimeout)}stopInteractionTimer(){null!=this.interactionTimer&&(window.clearTimeout(this.interactionTimer),this.interactionTimer=void 0)}operateWithTimer(t,i){this.didTransformBegin||this.beginInteraction(t),this.resetInteractionTimer(t),i()}}class bt extends pt{constructor(){super(...arguments),this.type="pan"}beginDrag(t,i,s,n){null==this.currentPosition&&(this.currentPosition=h.create(t.screenX,t.screenY),this.canvasRect=n.getBoundingClientRect(),s.beginInteraction())}drag(t,i){if(null!=this.currentPosition&&null!=this.canvasRect){const s=U(t,this.canvasRect);i.panCameraToScreenPoint(s),this.currentPosition=s}}endDrag(t,i){super.endDrag(t,i)}}class Ct extends pt{constructor(){super(...arguments),this.type="twist"}beginDrag(t,i,s){this.currentPosition=h.create(t.clientX,t.clientY),s.beginInteraction()}drag(t,i){const s=h.create(t.clientX,t.clientY);this.currentPosition=s,i.twistCamera(s)}endDrag(t,i){super.endDrag(t,i)}}class It extends ft{constructor(t,i=new mt,s=new gt,n=new yt,e=new bt,h=new Ct){super("mousedown","mouseup","mousemove",i,s,n,e,h,t)}}class Tt{initialize(t,i){this.element=t,this.interactionApi=i}dispose(){this.element=void 0}handleTwoPointTouchMove(t,i){var s,n,e,o;if(null!=this.currentPosition1&&null!=this.currentPosition2){const a=h.scale(h.add(h.subtract(t,this.currentPosition1),h.subtract(i,this.currentPosition2)),.25,.25),l=.5*(h.distance(t,i)-h.distance(this.currentPosition1,this.currentPosition2)),c=d.create(h.subtract(this.currentPosition1,this.currentPosition2),h.subtract(t,i)),u=r.toDegrees(Math.atan2(d.determinant(c),d.dot(c)));null===(s=this.interactionApi)||void 0===s||s.beginInteraction(),null===(n=this.interactionApi)||void 0===n||n.zoomCamera(l),null===(e=this.interactionApi)||void 0===e||e.panCameraByDelta(a),Math.abs(u)>.2&&(null===(o=this.interactionApi)||void 0===o||o.twistCamera(u))}this.currentPosition1=t,this.currentPosition2=i}}class Pt extends Tt{constructor(){super(),this.touchPoints={},this.handlePointerDown=this.handlePointerDown.bind(this),this.handlePointerMove=this.handlePointerMove.bind(this),this.handlePointerUp=this.handlePointerUp.bind(this)}dispose(){var t;null===(t=this.element)||void 0===t||t.removeEventListener("pointerdown",this.handlePointerDown),super.dispose()}initialize(t,i){super.initialize(t,i),t.addEventListener("pointerdown",this.handlePointerDown)}handlePointerDown(t){const i=h.create(t.screenX,t.screenY);this.touchPoints=Object.assign(Object.assign({},this.touchPoints),{[t.pointerId]:i}),1===Object.keys(this.touchPoints).length&&(window.addEventListener("pointermove",this.handlePointerMove),window.addEventListener("pointerup",this.handlePointerUp))}handlePointerMove(t){null!=this.touchPoints[t.pointerId]&&(this.touchPoints[t.pointerId]=h.create(t.screenX,t.screenY));const i=Object.keys(this.touchPoints);2===i.length&&this.handleTwoPointTouchMove(this.touchPoints[i[0]],this.touchPoints[i[1]])}handlePointerUp(t){var i;delete this.touchPoints[t.pointerId];const s=Object.keys(this.touchPoints);1===s.length&&(null===(i=this.interactionApi)||void 0===i||i.endInteraction(),this.currentPosition1=void 0,this.currentPosition2=void 0),0===s.length&&(window.removeEventListener("pointermove",this.handlePointerMove),window.removeEventListener("pointerup",this.handlePointerUp))}}class xt extends ft{constructor(t){super("pointerdown","pointerup","pointermove",new mt,new gt,new yt,new bt,new Ct,t),this.touchPoints=new Set,this.handlePointerDown=this.handlePointerDown.bind(this),this.handlePointerUp=this.handlePointerUp.bind(this)}initialize(t,i){super.initialize(t,i),t.addEventListener("pointerdown",this.handlePointerDown)}handlePointerDown(t){this.downPosition=h.create(t.screenX,t.screenY),this.touchPoints.add(t.pointerId),1===this.touchPoints.size&&window.addEventListener("pointerup",this.handlePointerUp),2===this.touchPoints.size&&(this.disableIndividualInteractions=!0)}handlePointerUp(t){this.touchPoints.delete(t.pointerId),this.touchPoints.size<2&&(this.disableIndividualInteractions=!1),0===this.touchPoints.size&&window.removeEventListener("pointerup",this.handlePointerUp)}}class Dt{constructor(t,i,s,n){this.downEvent=t,this.upEvent=i,this.moveEvent=s,this.getConfig=n,this.handleDown=this.handleDown.bind(this),this.handleUp=this.handleUp.bind(this),this.handleMove=this.handleMove.bind(this),this.handleTouchStart=this.handleTouchStart.bind(this),this.handleTouchMove=this.handleTouchMove.bind(this),this.handleTouchEnd=this.handleTouchEnd.bind(this),this.handlePointerMove=this.handlePointerMove.bind(this),this.handlePointerEnd=this.handlePointerEnd.bind(this),this.clearPositions=this.clearPositions.bind(this),this.restartDoubleTapTimer=this.restartDoubleTapTimer.bind(this),this.clearDoubleTapTimer=this.clearDoubleTapTimer.bind(this),this.restartLongPressTimer=this.restartLongPressTimer.bind(this),this.clearLongPressTimer=this.clearLongPressTimer.bind(this),this.setPointerPositions=this.setPointerPositions.bind(this),this.emit=this.emit.bind(this)}dispose(){var t,i;null===(t=this.element)||void 0===t||t.removeEventListener(this.downEvent,this.handleDown),null===(i=this.element)||void 0===i||i.removeEventListener("touchstart",this.handleTouchStart),this.element=void 0,this.clearDoubleTapTimer(),this.clearLongPressTimer()}initialize(t,i){this.element=t,this.interactionApi=i,t.addEventListener(this.downEvent,this.handleDown),t.addEventListener("touchstart",this.handleTouchStart)}handleTouchStart(t){1===t.touches.length&&(this.setPointerPositions(h.create(t.touches[0].clientX,t.touches[0].clientY)),this.restartLongPressTimer(),window.addEventListener("touchend",this.handleTouchEnd),window.addEventListener("touchmove",this.handleTouchMove))}handleTouchMove(t){t.touches.length>0&&this.handlePointerMove(h.create(t.touches[0].clientX,t.touches[0].clientY),!0)}handleTouchEnd(t){null!=this.pointerDownPosition&&(window.removeEventListener("touchend",this.handleTouchEnd),window.removeEventListener("touchmove",this.handleTouchMove)),this.handlePointerEnd(this.pointerDownPosition)}handleDown(t){this.setPointerPositions(h.create(t.clientX,t.clientY)),this.buttons=t.buttons,this.restartLongPressTimer({altKey:t.altKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,shiftKey:t.shiftKey}),window.addEventListener(this.upEvent,this.handleUp),window.addEventListener(this.moveEvent,this.handleMove)}handleMove(t){this.handlePointerMove(h.create(t.clientX,t.clientY),this.isTouch(t))}handleUp(t){null!=this.pointerDownPosition&&(window.removeEventListener(this.upEvent,this.handleUp),window.removeEventListener(this.moveEvent,this.handleMove)),this.handlePointerEnd(h.create(t.clientX,t.clientY),{altKey:t.altKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,shiftKey:t.shiftKey},this.buttons,this.isTouch(t)),this.buttons=void 0}handlePointerMove(t,i){var s;const n=(null===(s=this.interactionApi)||void 0===s?void 0:s.pixelThreshold(i))||2;null!=this.pointerDownPosition&&h.distance(t,this.pointerDownPosition)>=n&&null==this.interactionTimer&&this.clearPositions()}handlePointerEnd(t,i={},s=0,n=!1){var e,h;null!=t&&(null!=this.longPressTimer&&this.emit(null===(e=this.interactionApi)||void 0===e?void 0:e.tap)(t,i,s),null!=this.doubleTapTimer&&null!=this.secondPointerDownPosition&&(this.emit(null===(h=this.interactionApi)||void 0===h?void 0:h.doubleTap)(t,i,s,this.secondPointerDownPosition),this.clearDoubleTapTimer())),this.pointerDownPosition=void 0,this.clearLongPressTimer()}emit(t){return(i,s={},n=0,e,o=!1)=>{var r;const a=e||this.pointerDownPosition,l=(null===(r=this.interactionApi)||void 0===r?void 0:r.pixelThreshold(o))||1;let c;null!=this.interactionTimer?c=this.getCanvasPosition(a||i):null!=a&&h.distance(a,i)<=l&&(c=this.getCanvasPosition(i)),null!=c&&null!=t&&t(c,s,n)}}getCanvasPosition(t){var i;const s=null===(i=this.element)||void 0===i?void 0:i.getBoundingClientRect(),n=null!=s?h.create(s.left,s.top):void 0;return null!=n?h.subtract(h.create(t.x,t.y),n):void 0}clearPositions(){this.pointerDownPosition=void 0,this.firstPointerDownPosition=void 0,this.secondPointerDownPosition=void 0,this.clearDoubleTapTimer(),this.clearLongPressTimer(),this.clearInteractionTimer()}clearDoubleTapTimer(){null!=this.doubleTapTimer&&window.clearTimeout(this.doubleTapTimer),this.doubleTapTimer=void 0,this.firstPointerDownPosition=void 0,this.secondPointerDownPosition=void 0}restartDoubleTapTimer(){this.clearDoubleTapTimer(),this.doubleTapTimer=window.setTimeout((()=>this.clearDoubleTapTimer()),this.getConfig().events.doubleTapThreshold)}clearLongPressTimer(){null!=this.longPressTimer&&window.clearTimeout(this.longPressTimer),this.longPressTimer=void 0}restartLongPressTimer(t={}){this.clearLongPressTimer(),this.longPressTimer=window.setTimeout((()=>{var i;this.pointerDownPosition&&this.emit(null===(i=this.interactionApi)||void 0===i?void 0:i.longPress)(this.pointerDownPosition,t,this.buttons),this.clearLongPressTimer()}),this.getConfig().events.longPressThreshold)}restartInteractionTimer(){this.clearInteractionTimer(),this.interactionTimer=window.setTimeout((()=>{this.interactionTimer=void 0}),this.getConfig().interactions.interactionDelay)}clearInteractionTimer(){null!=this.interactionTimer&&(window.clearTimeout(this.interactionTimer),this.interactionTimer=void 0)}setPointerPositions(t){this.pointerDownPosition=t,this.restartInteractionTimer(),null==this.firstPointerDownPosition?(this.restartDoubleTapTimer(),this.firstPointerDownPosition=t):this.secondPointerDownPosition=t}isTouch(t){return null!=window.PointerEvent&&t instanceof PointerEvent&&"touch"===t.pointerType}}class St extends Tt{constructor(){super(),this.handleTouchStart=this.handleTouchStart.bind(this),this.handleTouchMove=this.handleTouchMove.bind(this),this.handleTouchEnd=this.handleTouchEnd.bind(this)}dispose(){var t;null===(t=this.element)||void 0===t||t.removeEventListener("touchstart",this.handleTouchStart),super.dispose()}initialize(t,i){super.initialize(t,i),t.addEventListener("touchstart",this.handleTouchStart)}handleTouchStart(t){if(t.touches.length>=1){const i=t.touches[0],s=t.touches[1];this.currentPosition1=h.create(i.screenX,i.screenY),this.currentPosition2=null!=s?h.create(s.screenX,s.screenY):void 0,window.addEventListener("touchmove",this.handleTouchMove,{passive:!1}),window.addEventListener("touchend",this.handleTouchEnd)}}handleTouchMove(t){if(1===t.touches.length)this.handleOnePointTouchMove(t.touches[0]);else if(2===t.touches.length){const i=h.create(t.touches[0].clientX,t.touches[0].clientY),s=h.create(t.touches[1].clientX,t.touches[1].clientY);this.handleTwoPointTouchMove(i,s)}}handleTouchEnd(t){var i;null===(i=this.interactionApi)||void 0===i||i.endInteraction(),this.isInteracting=!1,window.removeEventListener("touchmove",this.handleTouchMove),window.removeEventListener("touchend",this.handleTouchEnd)}handleOnePointTouchMove(t){var i,s,n;const e=h.create(t.screenX,t.screenY);if(null!=this.currentPosition1){const t=h.subtract(e,this.currentPosition1),o=(null===(i=this.interactionApi)||void 0===i?void 0:i.pixelThreshold(!0))||2;(h.distance(e,this.currentPosition1)>=o||this.isInteracting)&&(null===(s=this.interactionApi)||void 0===s||s.beginInteraction(),null===(n=this.interactionApi)||void 0===n||n.rotateCamera(t),this.isInteracting=!0)}this.currentPosition1=e}}const Et=new class{constructor(t,i=window.performance){this.name=t,this.perf=i,this.measures=new Set,this.nextId=0}clearMeasurements(){this.perf.clearMeasures(this.name)}measure(t){if(null!=(i=t)&&i.then instanceof Function&&i.catch instanceof Function&&i.finally instanceof Function){const i=this.begin();return t.finally((()=>this.end(i)))}if("function"==typeof t){const i=this.begin(),s=t();return this.end(i),s}throw new Error("Input must be a function or Promise");var i}takeMeasurements(){const t=this.perf.getEntriesByName(this.name);return this.clearMeasurements(),t}takeLastMeasurement(){const t=this.takeMeasurements();return t[t.length-1]}begin(){const t=`${this.name}-${this.nextId++}`;return this.measures.add(t),this.perf.mark(t),t}end(t){this.perf.measure(this.name,t),this.perf.clearMarks(t),this.measures.delete(t)}}("paint_time");function kt(t){return null!=window.createImageBitmap?async function(t){const i=new Blob([t]),s=await window.createImageBitmap(i);return{image:s,dispose:()=>s.close()}}(t):(i=t,new Promise(((t,s)=>{const n=new Blob([i]),e=URL.createObjectURL(n),h=new Image;h.addEventListener("load",(()=>{t({image:h,dispose:()=>{}}),URL.revokeObjectURL(e)})),h.addEventListener("error",(()=>{s(new G("Failed to load image data")),URL.revokeObjectURL(e)})),h.src=e})));var i}function Mt(t,i){const s=i.viewport.calculateDrawRect(i.frame.image);i.canvas.clearRect(0,0,i.canvasDimensions.width,i.canvasDimensions.height),i.canvas.drawImage(t.image,s.x,s.y,s.width,s.height)}function Ot(t,i,s,n,e=1e3){let h,o,r=0,a=[];return s&&setInterval((()=>{if(null!=o){5===a.length?a=[...a.slice(1),o]:a.push(o);const t=a.reduce(((t,i)=>t+i))/a.length;console.debug(`Paint rate: ${o}fps`),console.debug(`Paint rate (avg): ${t}`),o=void 0}}),1e3),s=>(r++,null==h&&(h=setInterval((()=>{!function(t,i){const s=t.takeMeasurements();s.length>0&&i(s)}(t,n),0===r&&null!=h&&(clearInterval(h),h=void 0)}),e)),t.measure((async()=>{const t=await i(s);return o=null==o?1:o+1,t})).finally((()=>{r--})))}var jt;!function(t){t.DEVICE_ID="vertexvis:device-id"}(jt||(jt={}));class At extends C{constructor(t,i={}){var s,n,e;super(t,{loggingEnabled:i.loggingEnabled}),this.state={type:"disconnected"},this.stateChanged=new F,this.dimensions=u.create(0,0),this.streamAttributes={},this.frameBgColor=z.create(255,255,255),this.config=V("platprod"),this.options={tokenRefreshOffsetInSeconds:null!==(s=i.tokenRefreshOffsetInSeconds)&&void 0!==s?s:30,offlineThresholdInSeconds:null!==(n=i.offlineThresholdInSeconds)&&void 0!==n?n:30,loadTimeoutInSeconds:null!==(e=i.loadTimeoutInSeconds)&&void 0!==e?e:15}}getState(){return this.state}disconnect(){"disconnected"!==this.state.type&&"connection-failed"!==this.state.type&&(console.debug("Disconnecting websocket"),this.state.connection.dispose(),this.updateState({type:"disconnected"}))}async load(t,i,s,n=V("platprod")){return this.clientId=i,this.deviceId=s,this.config=n,"disconnected"===this.state.type||"connection-failed"===this.state.type?this.loadIfDisconnected(t):this.loadIfConnectingOrConnected(t,this.state)}update(t){this.frameBgColor=t.frameBgColor?t.frameBgColor:this.frameBgColor,null!=t.dimensions&&t.dimensions!==this.dimensions&&(this.dimensions=t.dimensions,this.ifState("connected",(()=>this.updateDimensions({dimensions:this.dimensions})))),null!=t.streamAttributes&&this.streamAttributes!==t.streamAttributes&&(this.streamAttributes=t.streamAttributes,this.ifState("connected",(()=>this.updateStream({streamAttributes:Rt(this.streamAttributes)}))))}async loadIfConnectingOrConnected(t,i){const{resource:s,queries:n}=i.resource,e=J(t),h=!N.isEqual(s,e.resource),o=!N.isEqual(n,e.queries),r=null!=e.queries[0],a="connected"===i.type;if(h||("connecting"===i.type||"reconnecting"===i.type)&&o)return this.disconnect(),this.loadIfDisconnected(t);a&&r&&o&&(await this.loadSceneViewState({sceneViewStateId:{hex:e.queries[0].id}}),this.updateState(Object.assign(Object.assign({},i),{resource:e})))}async loadIfDisconnected(t){try{await this.connectWithNewStream(J(t))}catch(t){throw this.updateState(t instanceof _?{type:"connection-failed",message:`Cannot load scene. ${t.message}`,error:t}:t instanceof I?{type:"connection-failed",message:"Cannot load scene. Stream request failed to start stream.",error:t}:{type:"connection-failed",message:"Cannot load scene for unknown reason. See console logs.",error:t}),t}}connectWithNewStream(t){return this.openWebsocketStream(t,"connecting",(()=>this.requestNewStream(t)))}connectToExistingStream(t){return this.openWebsocketStream(t.resource,"reconnecting",(()=>this.requestReconnectStream(t)),{maxRetries:Number.POSITIVE_INFINITY})}async openWebsocketStream(t,i,s,{maxRetries:n=3}={}){const e=(h=function(t,i,s,n){return $.appendPath(null!=s?$.toString($.parseAndAddParams("/ws",{clientId:s,deviceId:n})):`/stream-keys/${i.id}/session`,$.parse(t.network.renderingHost))}(this.config,t.resource,this.clientId,this.deviceId),{url:$.toString(h),protocols:["ws.vertexvis.com"]});var h;console.debug(`Initiating WS connection [uri=${e.url}]`);const o=new AbortController,r=(a=this.config,{EXPERIMENTAL_frameDelivery:Object.assign(Object.assign({},a.EXPERIMENTAL_frameDelivery),{rateLimitingEnabled:a.flags.throttleFrameDelivery}),EXPERIMENTAL_adaptiveRendering:Object.assign(Object.assign({},a.EXPERIMENTAL_adaptiveRendering),{enabled:a.flags.adaptiveRendering}),EXPERIMENTAL_qualityOfService:Object.assign({},a.EXPERIMENTAL_qualityOfService)});var a;this.updateState({type:i,resource:t,connection:{dispose:()=>{this.dispose(),o.abort()}}});const l=await L.abort(o.signal,L.retry((()=>this.connect(e,r)),{maxRetries:n,delaysInMs:At.WS_RECONNECT_DELAYS})).catch((t=>{throw new X("Websocket connection failed.",t instanceof Error?t:void 0)}));if(!l.aborted)return this.requestNewOrExistingStream(t,l.result,s);this.updateState({type:"disconnected"})}async requestNewOrExistingStream(t,i,s){const n=this.requestClock(),e=await s();console.debug(`Stream connected [stream-id=${e.streamId}, scene-view-id=${e.sceneViewId}]`);const h=this.onRequest((t=>{const i=t.request.drawFrame;if(null!=i){const t=T(e.worldOrientation)(i);"connected"===this.state.type&&this.updateState(Object.assign(Object.assign({},this.state),{frame:t}))}})),o=this.reconnectWhenNeeded(),r=this.refreshTokenWhenExpired(e.token),a=this.acknowledgeFrameRequests(),l=null==e.frame?await this.waitForFrame(e.worldOrientation,this.options.loadTimeoutInSeconds):e.frame,c=await n;console.debug(`Synchronized clocks [local-time=${c.knownLocalTime.toISOString()}, remote-time=${c.knownRemoteTime.toISOString()}]`),this.updateState({type:"connected",connection:{dispose:()=>{o.dispose(),h.dispose(),r.dispose(),a.dispose(),i.dispose()}},resource:t,streamId:e.streamId,deviceId:e.deviceId,sceneViewId:e.sceneViewId,worldOrientation:e.worldOrientation,token:e.token,frame:l,clock:c})}async requestNewStream(t){var i;const s=P(await this.startStream({streamKey:{value:t.resource.id},dimensions:this.dimensions,frameBackgroundColor:Ft(this.frameBgColor),streamAttributes:Rt(this.streamAttributes),sceneViewStateId:"scene-view-state"===(null===(i=t.queries[0])||void 0===i?void 0:i.type)?{hex:t.queries[0].id}:void 0}));return{resource:t,streamId:s.streamId,sceneViewId:s.sceneViewId,deviceId:s.sessionId,token:s.token,worldOrientation:s.worldOrientation,frame:void 0}}async requestReconnectStream(t){const i=x(await this.reconnect({streamId:{hex:t.streamId},dimensions:this.dimensions,frameBackgroundColor:Ft(this.frameBgColor),streamAttributes:Rt(this.streamAttributes)}));return Object.assign(Object.assign({},t),{token:i.token})}async requestClock(){const t=D(await this.syncTime({requestTime:S()}));return new Y(t)}reconnectWhenNeeded(){const t=this.onClose((()=>{"connected"===this.state.type&&this.closeAndReconnect(this.state)})),i=this.onRequest((t=>{null!=t.request.gracefulReconnection&&"connected"===this.state.type&&(console.debug("Received request for graceful reconnect. Closing connection and attempting reconnect."),this.closeAndReconnect(this.state))})),s=this.reconnectWhenOffline();return{dispose:()=>{t.dispose(),i.dispose(),s.dispose()}}}refreshTokenWhenExpired(t){let i;const s=t=>{const{tokenRefreshOffsetInSeconds:n}=this.options,e=t.remainingTimeInMs(n);i=window.setTimeout((async()=>{const t=await this.refreshToken(),i=E(t);s(i),"connected"===this.state.type&&this.updateState(Object.assign(Object.assign({},this.state),{token:i}))}),e)};return s(t),{dispose:()=>clearTimeout(i)}}reconnectWhenOffline(){let t;const i=()=>window.clearTimeout(t),s=()=>{i();const s=this.options.offlineThresholdInSeconds;console.debug(`Detected that host is offline. Will attempt reconnect in ${s}s.`),t=window.setTimeout((()=>{"connected"===this.state.type&&this.closeAndReconnect(this.state)}),1e3*s)};return window.addEventListener("offline",(()=>s())),window.addEventListener("online",(()=>{console.debug("Detected that host is online."),i()})),{dispose:()=>{i(),window.removeEventListener("offline",s),window.removeEventListener("online",i)}}}closeAndReconnect(t){return t.connection.dispose(),this.connectToExistingStream(t)}async waitForFrame(t,i){let s;try{return await L.timeout(1e3*i,new Promise((i=>{s=this.onRequest((n=>{try{const e=n.request.drawFrame;if(null!=e){const s=T(t)(e);i(s)}}finally{null==s||s.dispose()}}))})))}catch(t){throw new Q(`Frame timed out after ${i/1e3}s`,t instanceof Error?t:void 0)}finally{null==s||s.dispose()}}acknowledgeFrameRequests(){return this.onRequest(function(t,i){const s=function(t){let i=!1;return s=>{const n=t();if(null!=n){const t=n.remoteTime(new Date(Date.now())),e=p(s,t);return g(e).getTime()>=0?e:void(i||(console.warn(`Possible erroneous send to receive timing. Muting for 60s. [sent-at=${s.toISOString()}, received-at=${t.toISOString()}, remote-time=${n.knownRemoteTime.toISOString()}]`),i=!0,setTimeout((()=>i=!1),6e4)))}}}(i);return n=i=>{return n=()=>n=>{const e=g(n.sentAtTime);null!=e&&t.replyResult(i,{drawFrame:{sendToReceiveDuration:s(e)}})},t=>{const{drawFrame:i}=t.request;null!=i&&n()(t)};var n},t=>{var i;const s=null===(i=t.request.requestId)||void 0===i?void 0:i.value;null!=s&&n(s)(t)};var n}(this,(()=>"connected"===this.state.type?this.state.clock:void 0)))}updateState(t){this.state!==t&&(this.state=t,this.stateChanged.emit(this.state))}ifState(t,i){if(this.state.type===t)return i()}onStateChanged(t){return this.stateChanged.on(t)}}At.WS_RECONNECT_DELAYS=[0,1e3,1e3,5e3];const Rt=B.ifInvalidThrow(y),Ft=B.ifInvalidThrow(b);let Bt=class{constructor(s){t(this,s),this.tap=i(this,"tap",7),this.doubletap=i(this,"doubletap",7),this.longpress=i(this,"longpress",7),this.frameReceived=i(this,"frameReceived",7),this.frameDrawn=i(this,"frameDrawn",7),this.tokenExpired=i(this,"tokenExpired",7),this.connectionChange=i(this,"connectionChange",7),this.sceneReady=i(this,"sceneReady",7),this.sceneChanged=i(this,"sceneChanged",7),this.interactionStarted=i(this,"interactionStarted",7),this.interactionFinished=i(this,"interactionFinished",7),this.deviceIdChange=i(this,"deviceIdChange",7),this.dimensionschange=i(this,"dimensionschange",7),this.configEnv="platprod",this.cameraControls=!0,this.cameraType="perspective",this.keyboardControls=!0,this.rotateAroundTapPoint=!0,this.experimentalGhostingOpacity=0,this.selectionMaterial=Z,this.resizeDebounce=100,this.stencilBuffer=new rt(this.hostElement),this.viewport=ot.fromDimensions(u.create(0,0)),this.stateMap={cursorManager:new q,streamState:{type:"disconnected"}},this.interactionHandlers=[],this.tapKeyInteractions=[],this.internalFrameDrawnDispatcher=new F,this.handleElementResize=this.handleElementResize.bind(this)}componentWillLoad(){var t;this.updateResolvedConfig(),this.calculateComponentDimensions(),this.resizeObserver=new ResizeObserver(this.handleElementResize),this.registerSlotChangeListeners(),this.stream=null!==(t=this.stream)&&void 0!==t?t:new At(new k,{loggingEnabled:this.getResolvedConfig().flags.logWsMessages}),this.addStreamListeners(),this.updateStreamAttributes(),this.stateMap.cursorManager.onChanged.on((()=>this.handleCursorChanged()))}componentDidLoad(){var t,i,s;if(this.interactionApi=this.createInteractionApi(),null!=this.containerElement&&(null===(t=this.resizeObserver)||void 0===t||t.observe(this.containerElement)),null!=this.src)try{this.load(this.src)}catch(t){console.error("Error loading scene",t)}if(this.cameraControls)if(null!=window.PointerEvent){const t=new Dt("pointerdown","pointerup","pointermove",(()=>this.getResolvedConfig()));this.baseInteractionHandler=new xt((()=>this.getResolvedConfig())),this.registerInteractionHandler(this.baseInteractionHandler),this.registerInteractionHandler(new Pt),this.registerInteractionHandler(t)}else{const t=new Dt("mousedown","mouseup","mousemove",(()=>this.getResolvedConfig()));this.baseInteractionHandler=new It((()=>this.getResolvedConfig())),this.registerInteractionHandler(this.baseInteractionHandler),this.registerInteractionHandler(new St),this.registerInteractionHandler(t)}this.keyboardControls&&null!=this.stream&&(null===(i=this.baseInteractionHandler)||void 0===i||i.setDefaultKeyboardControls(this.keyboardControls),this.registerTapKeyInteraction(new lt(this.stream,(()=>this.getResolvedConfig()),(()=>this.getImageScale()))),this.registerTapKeyInteraction(new vt(this.stream,(()=>this.getResolvedConfig()),(()=>this.getImageScale()),(()=>this.createScene())))),this.rotateAroundTapPoint&&(null===(s=this.baseInteractionHandler)||void 0===s||s.setPrimaryInteractionType("rotate-point")),this.injectViewerApi()}render(){var t;return s(n,null,s("div",{class:"viewer-container",style:{cursor:H(null!==(t=this.cursor)&&void 0!==t?t:"")},onContextMenu:t=>t.preventDefault()},s("div",{ref:t=>this.containerElement=t,class:W("canvas-container",{"enable-pointer-events ":null!=window.PointerEvent})},s("canvas",{ref:t=>{this.canvasElement=t,this.stateMap.interactionTarget=t},class:"canvas"}),null!=this.errorMessage?s("div",{class:"error-message"},this.errorMessage):null),s("slot",null)))}async dispatchFrameDrawn(t){this.frame=t,this.internalFrameDrawnDispatcher.emit(t),this.frameDrawn.emit(t)}async registerInteractionHandler(t){return this.interactionHandlers.push(t),this.initializeInteractionHandler(t),{dispose:()=>{const i=this.interactionHandlers.indexOf(t);-1!==i&&(this.interactionHandlers[i].dispose(),this.interactionHandlers.splice(i,1))}}}async registerTapKeyInteraction(t){this.tapKeyInteractions=[...this.tapKeyInteractions,t]}async getInteractionTarget(){if(null!=this.stateMap.interactionTarget)return this.stateMap.interactionTarget;throw new Error("Interaction target is undefined.")}async addCursor(t,i){return this.stateMap.cursorManager.add(t,i)}async getInteractionHandlers(){return this.interactionHandlers}async getBaseInteractionHandler(){return this.baseInteractionHandler}async getJwt(){return this.token}handleSrcChanged(t){null!=t?this.load(t):this.unload()}handleRotateAboutTapPointChanged(){var t,i;this.updateStreamAttributes(),this.rotateAroundTapPoint?null===(t=this.baseInteractionHandler)||void 0===t||t.setPrimaryInteractionType("rotate-point"):null===(i=this.baseInteractionHandler)||void 0===i||i.setPrimaryInteractionType("rotate")}handleCameraTypeChanged(t,i){t!==i&&this.updateCameraType()}handleDepthBuffersChanged(){this.updateStreamAttributes()}handleExperimentalGhostingOpacityChanged(){this.updateStreamAttributes()}handleFeatureLinesChanged(){this.updateStreamAttributes()}handleFeatureHighlightingChanged(){this.updateStreamAttributes()}handleFeatureMapsChanged(){this.updateStreamAttributes()}handleConfigChanged(){this.updateResolvedConfig()}handleConfigEnvChanged(){this.updateResolvedConfig()}async load(t){var i;if(null==this.stream||null==this.dimensions)throw new tt("Cannot load scene. Viewer has not been initialized.");this.calculateComponentDimensions(),this.stream.update({streamAttributes:this.getStreamAttributes(),config:V(this.configEnv,this.config),dimensions:this.dimensions,frameBgColor:this.getBackgroundColor()}),await(null===(i=this.stream)||void 0===i?void 0:i.load(t,this.clientId,this.getDeviceId(),this.getResolvedConfig())),this.sceneReady.emit()}async unload(){if(null!=this.stream&&(this.stream.disconnect(),this.frame=void 0,this.errorMessage=void 0),null!=this.canvasElement){const t=this.canvasElement.getContext("2d");null!=t&&t.clearRect(0,0,this.canvasElement.width,this.canvasElement.height)}}async scene(){return this.createScene()}async isSceneReady(){return"connected"===this.stateMap.streamState.type}async handleTapEvent(t){this.tapKeyInteractions.filter((i=>i.predicate(t.detail))).forEach((i=>i.fn(t.detail)))}emitConnectionChange(t){this.connectionChange.emit(t)}handleElementResize(t){t.length>=0&&null!=this.dimensions&&!u.isEqual(t[0].contentRect,this.viewport)&&(null!=this.resizeTimer&&(clearTimeout(this.resizeTimer),this.resizeTimer=void 0),this.isResizing||(this.resizeTimer=setTimeout((()=>{this.isResizing=!0,this.isResizeUpdate=!0,this.recalculateComponentDimensions()}),this.resizeDebounce)))}registerSlotChangeListeners(){this.mutationObserver=new MutationObserver((()=>this.injectViewerApi())),this.mutationObserver.observe(this.hostElement,{childList:!0,subtree:!0})}injectViewerApi(){function t(t){return Array.from(t.querySelectorAll("*"))}t(this.hostElement).filter((t=>t.nodeName.startsWith("VERTEX-"))).reduce(((i,s)=>[...i,s,...t(s)]),[]).forEach((t=>{t.viewer=this.hostElement}))}calculateComponentDimensions(){var t;const i=this.getBounds();if(null!=(null==i?void 0:i.width)&&null!=(null==i?void 0:i.height)){const s=u.create(i.width,i.height),n=u.scaleFit(2073600,s);this.hostDimensions=s,this.dimensions=null!=n?u.create(n.width,n.height):void 0,this.viewport=ot.fromDimensions(null!==(t=this.getCanvasDimensions())&&void 0!==t?t:u.create(0,0))}}recalculateComponentDimensions(){var t;this.isResizing&&(this.calculateComponentDimensions(),this.isResizing=!1,null===(t=this.stream)||void 0===t||t.update({dimensions:this.dimensions}),this.dimensionschange.emit(this.dimensions))}reportPerformance(t){if("connected"===this.stateMap.streamState.type){const i={timings:t.map((t=>({receiveToPaintDuration:p(t.duration)})))};this.getStream().recordPerformance(i,!1)}}addStreamListeners(){this.stateMap.streamListeners=this.getStream().stateChanged.on((t=>{this.handleStreamStateChanged(this.stateMap.streamState,t)}))}handleStreamStateChanged(t,i){this.stateMap.streamState=i,"connecting"===i.type?this.handleConnecting(t,i):"connected"===i.type?this.handleConnected(t,i):"connection-failed"===i.type?this.handleConnectionFailed(t,i):"disconnected"===i.type&&this.handleDisconnected(t,i)}handleConnecting(t,i){"connecting"!==t.type&&(this.token=void 0,this.errorMessage=void 0,this.emitConnectionChange({status:"connecting"}))}handleConnected(t,i){this.token=i.token.token,"connected"!==t.type&&(this.errorMessage=void 0,this.canvasRenderer=Ot(Et,function(){let t;return async i=>{var s;const n=i.frame.sequenceNumber,e=await kt(i.frame.image.imageBytes);return(null==t||n>t)&&(t=n,null===(s=i.beforeDraw)||void 0===s||s.call(i),Mt(e,i)),e.dispose(),i.frame}}(),this.getResolvedConfig().flags.logFrameRate,(t=>this.reportPerformance(t))),this.resizeRenderer=Ot(Et,function(){const t=document.createElement("canvas");let i;return async s=>{var n;const e=s.frame.sequenceNumber,h=null==i||e>i,o=null==s.dimensions||u.isEqual(s.dimensions,s.frame.image.imageAttr.frameDimensions),r=await kt(s.frame.image.imageBytes);t.width=s.canvasDimensions.width,t.height=s.canvasDimensions.height;const a=t.getContext("2d");return null!=a&&h&&o&&(i=e,Mt(r,Object.assign(Object.assign({},s),{canvas:a})),null===(n=s.beforeDraw)||void 0===n||n.call(s),s.canvas.drawImage(t,0,0)),r.dispose(),s.frame}}(),this.getResolvedConfig().flags.logFrameRate,(t=>this.reportPerformance(t))),this.emitConnectionChange({status:"connected",jwt:i.token.token}),this.deviceIdChange.emit(i.deviceId)),this.frame!==i.frame&&this.updateFrame(i.frame)}handleConnectionFailed(t,i){"connection-failed"!==t.type&&(this.token=void 0,this.errorMessage=i.message)}handleDisconnected(t,i){"disconnected"!==t.type&&(this.token=void 0,this.errorMessage=void 0,this.emitConnectionChange({status:"disconnected"}))}async updateFrame(t){const i=this.getCanvasDimensions();if(null!=this.canvasElement&&null!=i&&this.frame!==t){const s=this.canvasElement.getContext("2d");if(null!=s){const n=this.frame;this.frame=t,this.updateInteractionApi(n);const e={canvas:s,canvasDimensions:i,dimensions:this.dimensions,frame:this.frame,viewport:this.viewport,beforeDraw:()=>{this.updateCanvasDimensions(i),this.isResizeUpdate=!1}};this.frameReceived.emit(this.frame),this.frame.scene.hasChanged&&this.sceneChanged.emit();const h=this.isResizeUpdate?await this.resizeRenderer(e):await this.canvasRenderer(e);this.dispatchFrameDrawn(h)}}}initializeInteractionHandler(t){if(null==this.stateMap.interactionTarget)throw new it("Cannot initialize interaction handler. Interaction target is undefined.");if(null==this.interactionApi)throw new it("Cannot initialize interaction handler. Interaction APi is undefined.");t.initialize(this.stateMap.interactionTarget,this.interactionApi)}createInteractionApi(){if(null==this.stream)throw new st("Cannot create interaction API. Component has not been initialized.");return null==this.frame||M(this.frame.scene.camera)?new ut(this.stream,this.stateMap.cursorManager,(()=>this.getResolvedConfig().interactions),(()=>this.createScene()),(()=>this.frame),(()=>this.viewport),this.tap,this.doubletap,this.longpress,this.interactionStarted,this.interactionFinished):new dt(this.stream,this.stateMap.cursorManager,(()=>this.getResolvedConfig().interactions),(()=>this.createScene()),(()=>this.frame),(()=>this.viewport),this.tap,this.doubletap,this.longpress,this.interactionStarted,this.interactionFinished)}handleCursorChanged(){window.requestAnimationFrame((()=>{this.cursor=this.stateMap.cursorManager.getActiveCursor()}))}createScene(){if("connected"!==this.stateMap.streamState.type)throw new nt("Cannot create scene. Viewer stream is not connected.");const{frame:t,sceneViewId:i,worldOrientation:s}=this.stateMap.streamState,n="string"==typeof this.selectionMaterial?et(this.selectionMaterial):this.selectionMaterial;return new ht(this.getStream(),t,T(s),(()=>this.getImageScale()),this.viewport,i,n)}getBackgroundColor(){if(null!=this.containerElement)return function(t){const i=window.getComputedStyle(t);return z.fromCss(i.backgroundColor)}(this.containerElement)}getBounds(){return this.hostElement.getBoundingClientRect()}getCanvasDimensions(){return this.getResolvedConfig().flags.letterboxFrames?this.dimensions:this.hostDimensions}getImageScale(){const t=this.getCanvasDimensions();if(null!=this.dimensions&&null!=t)return h.create(this.dimensions.width/t.width,this.dimensions.height/t.height)}getStreamAttributes(){return{depthBuffers:this.getDepthBufferStreamAttributesValue(),experimentalGhosting:this.experimentalGhostingOpacity,featureLines:this.featureLines,featureHighlighting:this.featureHighlighting,featureMaps:this.featureMaps}}updateCanvasDimensions(t){null!=this.canvasElement&&(this.canvasElement.width=t.width,this.canvasElement.height=t.height)}updateStreamAttributes(){var t;null===(t=this.stream)||void 0===t||t.update({streamAttributes:this.getStreamAttributes()})}updateInteractionApi(t){if(null!=t&&null!=this.frame){const i=M(t.scene.camera)&&M(this.frame.scene.camera),s=A(t.scene.camera)&&A(this.frame.scene.camera);(i||s)&&(this.interactionApi=this.createInteractionApi())}}updateCameraType(){var t,i;null!=this.frame&&("orthographic"===this.cameraType&&M(this.frame.scene.camera)?null===(t=this.stream)||void 0===t||t.replaceCamera({camera:O(j(this.frame.scene.camera))}):"perspective"===this.cameraType&&A(this.frame.scene.camera)&&(null===(i=this.stream)||void 0===i||i.replaceCamera({camera:O(R(this.frame.scene.camera))})))}getDepthBufferStreamAttributesValue(){var t;return null!==(t=this.depthBuffers)&&void 0!==t?t:this.rotateAroundTapPoint?"final":void 0}updateResolvedConfig(){this.resolvedConfig=V(this.configEnv,this.config)}getResolvedConfig(){return zt("Resolved config is undefined",(()=>this.resolvedConfig))}getStream(){return zt("Stream is undefined",(()=>this.stream))}getDeviceId(){if(null==this.deviceId){try{this.deviceId=function(t,i,s=window.localStorage){const n=s.getItem(jt.DEVICE_ID);if(null!=n)return i(JSON.parse(n))}(0,(t=>t["device-id"]))}catch(t){console.warn("Cannot read device ID. Local storage is not supported.")}if(null==this.deviceId){this.deviceId=K.create();try{!function(t,i,s=window.localStorage){const n=s.getItem(t);if(null!=n){const e=Object.assign(Object.assign({},JSON.parse(n)),i);s.setItem(t,JSON.stringify(e))}else s.setItem(t,JSON.stringify(i))}(jt.DEVICE_ID,{"device-id":this.deviceId})}catch(t){console.warn("Cannot write device ID. Local storage is not supported.")}}}return this.deviceId}get hostElement(){return e(this)}static get watchers(){return{src:["handleSrcChanged"],rotateAroundTapPoint:["handleRotateAboutTapPointChanged"],cameraType:["handleCameraTypeChanged"],depthBuffers:["handleDepthBuffersChanged"],experimentalGhostingOpacity:["handleExperimentalGhostingOpacityChanged"],featureLines:["handleFeatureLinesChanged"],featureHighlighting:["handleFeatureHighlightingChanged"],featureMaps:["handleFeatureMapsChanged"],config:["handleConfigChanged"],configEnv:["handleConfigEnvChanged"]}}};function zt(t,i){const s=i();if(null!=s)return s;throw new Error(t)}Bt.style=":host{--image-background:var(--image-background);--viewer-background:var(--viewer-background);display:block;position:relative;width:300px;height:300px;min-width:1px;min-height:1px}.canvas-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;position:relative;background:var(--image-background, var(--viewer-background, #ffffff))}.enable-pointer-events{touch-action:none}.viewer-container{width:100%;height:100%;overflow:hidden;background:var(--viewer-background, #ffffff)}.error-message{position:absolute;top:50%;width:100%;transform:translateY(-50%);text-align:center}";export{Bt as vertex_viewer}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{m as t,s,a as i,g as n}from"./p-
|
|
4
|
+
import{m as t,s,a as i,g as n}from"./p-61db972b.js";import{g as e,w as r}from"./p-3a20a038.js";import{h as a,v as o}from"./p-18ec4fed.js";import{m as h}from"./p-546ae240.js";function c(t){return new Promise(((s,i)=>{t(((t,n)=>{null!=t?i(t):null!=n?s(n):i(new Error("Invalid gRPC response. Error and result are empty."))}))}))}async function m(t,s){const i=await t();return new e.grpc.Metadata({"jwt-context":JSON.stringify({jwt:i,metadata:{"x-device-id":s||""}})})}class u{constructor(t,s,i,n){this.model=t,this.client=s,this.jwtProvider=i,this.deviceId=n,this.outcome=Promise.resolve(void 0)}addEntity(t){return this.performMeasurement((()=>this.model.addEntity(t)))}clearEntities(){return this.performMeasurement((()=>(this.model.clearEntities(),this.model.clearOutcome(),!0)))}removeEntity(t){return this.performMeasurement((()=>this.model.removeEntity(t)))}setEntities(t){return this.performMeasurement((()=>this.model.setEntities(t)))}performMeasurement(t){const s=this.model.getEntities(),i=t(),n=this.model.getEntities();return i&&(this.measureAndUpdateModel(n),this.highlightEntities(s,n)),this.outcome}measureAndUpdateModel(t){this.outcome=t.length>0?this.measureEntities(t).then((t=>(this.model.setOutcome(t),this.model.getOutcome()))):Promise.resolve(void 0)}async measureEntities(i){if(i.length>0){const n=await c((async t=>{const n=await m(this.jwtProvider,this.deviceId),e=new s.MeasureRequest;e.setEntitiesList(i.map((t=>t.toProto()))),this.client.measure(e,n,t)}));return t(n.toObject())}}async highlightEntities(t,n){await c((async e=>{const a=await m(this.jwtProvider,this.deviceId),o=new Set(n),h=t.filter((t=>!o.has(t))).map((t=>{const n=new s.ModelEntityUpdate;return n.setModelEntity(i.ModelEntity.deserializeBinary(t.modelEntity)),n.setHighlight((new r.BoolValue).setValue(!1)),n})),c=n.map((t=>{const n=new s.ModelEntityUpdate;return n.setModelEntity(i.ModelEntity.deserializeBinary(t.modelEntity)),n.setHighlight((new r.BoolValue).setValue(!0)),n})),u=new s.UpdateModelEntitiesRequest;u.setUpdatesList([...h,...c]),this.client.updateModelEntities(u,a,e)}))}}class w{constructor(t,s){this.point=t,this.modelEntity=s}static fromHit(t){if(null!=t.hitPoint&&null!=t.modelEntity){const s=h.ifInvalidThrow(a)(t.hitPoint),i=o.protobuf.core.ModelEntity.encode(t.modelEntity).finish();return new w(s,i)}throw new Error("Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity")}toProto(){const t=new s.MeasureEntity,e=new n.Vector3f;e.setX(this.point.x),e.setY(this.point.y),e.setZ(this.point.z),t.setPoint(e);const r=i.ModelEntity.deserializeBinary(this.modelEntity);return t.setModelEntity(r),t}}export{u as M,w as a}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{p as n}from"./p-
|
|
4
|
+
import{p as n}from"./p-121f2b40.js";function t(t,r){const o=n.create(t.clientX,t.clientY);return null==r?o:n.subtract(o,n.create(r.left,r.top))}function r(n){const{x:t,y:r}=n;return`translate(-50%, -50%) translate(${t}px, ${r}px)`}function o(n){var t,r;return"string"==typeof n?n:[`url("${n.url}")`,null!==(t=n.offsetX)&&void 0!==t?t:0,null!==(r=n.offsetY)&&void 0!==r?r:0,", auto"].join(" ")}export{r as a,o as c,t as g}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{h as e,F as i,r as t,H as o}from"./p-cafa57a6.js";import{v as r,s as a,t as n}from"./p-121f2b40.js";import{r as c}from"./p-fad9693e.js";import{O as s,d,H as l}from"./p-18ec4fed.js";import{c as h}from"./p-f482325b.js";import"./p-546ae240.js";import"./p-112455b1.js";const b={front:{direction:r.back(),quaternion:a.create()},back:{direction:r.forward(),quaternion:a.fromAxisAngle(r.up(),Math.PI)},left:{direction:r.left(),quaternion:a.fromAxisAngle(r.down(),Math.PI/2)},right:{direction:r.right(),quaternion:a.fromAxisAngle(r.up(),Math.PI/2)},top:{direction:r.up(),quaternion:a.fromAxisAngle(r.right(),-Math.PI/2)},bottom:{direction:r.down(),quaternion:a.fromAxisAngle(r.left(),-Math.PI/2)}},f=({label:t,length:o,rotationAxis:c})=>{const s={width:`${o+5}px`},d=a.fromAxisAngle(c,Math.PI/2),l=r.scale(o+15,r.right());return e(i,null,e("vertex-viewer-dom-group",{quaternion:d},e("vertex-viewer-dom-element",{style:s,billboardOff:!0,interactionsOff:!0},e("div",{class:`triad-axis triad-axis-${t.toLowerCase()}`})),e("vertex-viewer-dom-element",{rotation:n.create({x:Math.PI/2,y:0,z:0}),style:s,billboardOff:!0,interactionsOff:!0},e("div",{class:`triad-axis triad-axis-${t.toLowerCase()}`})),e("vertex-viewer-dom-element",{position:l,interactionsOff:!0},e("div",{class:`triad-label triad-label-${t.toLowerCase()}`},t))))},g=({label:i,length:t,side:o,disabled:a,onPointerDown:n})=>{const{direction:c,quaternion:s}=b[o],d=r.scale(t/2-.1,c);return e("vertex-viewer-dom-element",{class:h("cube-side",{disabled:a}),position:d,quaternion:s,style:{width:`${t}px`,height:`${t}px`},onPointerDown:n,billboardOff:!0},e("div",{class:`cube-side-face cube-side-face-${i.toLowerCase()}`},i))},v=({length:i,face1Side:t,face1Corner:o,face2Side:a,face2Corner:n,face3Side:c,face3Corner:s,disabled:d,onPointerDown:l})=>{const{direction:f,quaternion:g}=b[t],{direction:v,quaternion:u}=b[a],{direction:w,quaternion:p}=b[c],m=r.scale(i/2,f),x=r.scale(i/2,v),S=r.scale(i/2,w),y={width:`${i}px`,height:`${i}px`};return e("vertex-viewer-dom-group",{class:h("cube-corner",{disabled:d}),onPointerDown:l},e("vertex-viewer-dom-element",{position:m,quaternion:g,style:y,billboardOff:!0},e("div",{class:`cube-corner-face ${o}`})),e("vertex-viewer-dom-element",{position:x,quaternion:u,style:y,billboardOff:!0},e("div",{class:`cube-corner-face ${n}`})),e("vertex-viewer-dom-element",{position:S,quaternion:p,style:y,billboardOff:!0},e("div",{class:`cube-corner-face ${s}`})))},u=({length:i,face1Side:t,face2Side:o,face1Edge:a,face2Edge:n,disabled:c,onPointerDown:s})=>{const{direction:d,quaternion:l}=b[t],{direction:f,quaternion:g}=b[o],v=r.scale(i/2,d),u=r.scale(i/2,f),w={width:`${i}px`,height:`${i}px`};return e("vertex-viewer-dom-group",{class:h("cube-edge",{disabled:c}),onPointerDown:s},e("vertex-viewer-dom-element",{position:v,quaternion:l,style:w,billboardOff:!0},e("div",{class:`cube-edge-face ${a}`})),e("vertex-viewer-dom-element",{position:u,quaternion:g,style:w,billboardOff:!0},e("div",{class:`cube-edge-face ${n}`})))},w=({length:i})=>{const{direction:t,quaternion:o}=b.top,a=r.scale(-i/2,t);return e("vertex-viewer-dom-element",{class:"cube-shadow",position:a,quaternion:o,style:{width:`${i}px`,height:`${i}px`},billboardOff:!0,interactionsOff:!0},e("div",{class:"cube-shadow-face"}))};let p=class{constructor(e){t(this,e),this.boxLength=80,this.triadPosition=r.origin(),this.xPositiveLabel="Left",this.xNegativeLabel="Right",this.yPositiveLabel="Top",this.yNegativeLabel="Bottom",this.zPositiveLabel="Front",this.zNegativeLabel="Back",this.standardViewsOff=!1,this.animationDuration=500,this.triadOff=!1,this.worldOrientation=s.DEFAULT,this.updateMatrices=()=>{var e;if(null!=(null===(e=this.viewer)||void 0===e?void 0:e.frame)){const{camera:e}=this.viewer.frame.scene,i=this.boxLength/2;this.triadPosition=r.create(-i-5,-i-5,-i-5);const t=21.5;this.camera=new d(r.scale(3.125*this.boxLength,r.negate(e.direction)),r.origin(),e.up,.1,100,1,t),this.worldOrientation=this.viewer.frame.scene.worldOrientation}}}handleViewerChanged(e,i){null==i||i.removeEventListener("frameDrawn",this.updateMatrices),null==e||e.addEventListener("frameDrawn",this.updateMatrices),this.updateMatrices()}handleStandardView(e){return this.standardViewsOff?async()=>{}:async()=>{if(null!=this.viewer){const i=await this.viewer.scene(),t=this.animationDuration>0?{animation:{milliseconds:this.animationDuration}}:{},o=e.transformMatrix(this.worldOrientation.matrix);i.camera().standardView(o).viewAll().render(t)}}}componentWillLoad(){this.handleViewerChanged(this.viewer)}componentDidLoad(){null!=this.rendererEl&&(new ResizeObserver((()=>this.handleRendererResized())).observe(this.rendererEl),this.handleRendererResized())}handleRendererResized(){c((()=>{if(null!=this.rendererEl){const e=this.rendererEl.getBoundingClientRect();this.boxLength=Math.min(e.width,e.height)}}))}render(){return e(o,null,e("vertex-viewer-dom-renderer",{ref:e=>this.rendererEl=e,class:"renderer",camera:this.camera},!this.triadOff&&e("vertex-viewer-dom-group",{class:"triad",position:this.triadPosition},e(f,{label:"X",length:this.boxLength,rotationAxis:r.origin()}),e(f,{label:"Y",length:this.boxLength,rotationAxis:r.back()}),e(f,{label:"Z",length:this.boxLength,rotationAxis:r.down()})),e("vertex-viewer-dom-group",{class:"cube",matrix:this.worldOrientation.matrix},e(w,{length:this.boxLength+10}),e(g,{label:this.zPositiveLabel,length:this.boxLength,side:"front",onPointerDown:this.handleStandardView(l.FRONT),disabled:this.standardViewsOff}),e(g,{label:this.zNegativeLabel,length:this.boxLength,side:"back",onPointerDown:this.handleStandardView(l.BACK),disabled:this.standardViewsOff}),e(g,{label:this.xNegativeLabel,length:this.boxLength,side:"left",onPointerDown:this.handleStandardView(l.RIGHT),disabled:this.standardViewsOff}),e(g,{label:this.xPositiveLabel,length:this.boxLength,side:"right",onPointerDown:this.handleStandardView(l.LEFT),disabled:this.standardViewsOff}),e(g,{label:this.yPositiveLabel,length:this.boxLength,side:"top",onPointerDown:this.handleStandardView(l.TOP),disabled:this.standardViewsOff}),e(g,{label:this.yNegativeLabel,length:this.boxLength,side:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"top",face1Edge:"bottom",face2Side:"front",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_FRONT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"front",face1Edge:"right",face2Side:"right",face2Edge:"left",onPointerDown:this.handleStandardView(l.FRONT_LEFT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"bottom",face1Edge:"top",face2Side:"front",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"front",face1Edge:"left",face2Side:"left",face2Edge:"right",onPointerDown:this.handleStandardView(l.FRONT_RIGHT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"top",face1Edge:"right",face2Side:"right",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_LEFT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"back",face1Edge:"left",face2Side:"right",face2Edge:"right",onPointerDown:this.handleStandardView(l.BACK_LEFT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"bottom",face1Edge:"right",face2Side:"right",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_LEFT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"top",face1Edge:"top",face2Side:"back",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_BACK),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"back",face1Edge:"right",face2Side:"left",face2Edge:"left",onPointerDown:this.handleStandardView(l.BACK_RIGHT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"bottom",face1Edge:"bottom",face2Side:"back",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_BACK),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"top",face1Edge:"left",face2Side:"left",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_RIGHT),disabled:this.standardViewsOff}),e(u,{length:this.boxLength,face1Side:"bottom",face1Edge:"left",face2Side:"left",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_RIGHT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"top",face1Corner:"bottom-left",face2Side:"front",face2Corner:"top-left",face3Side:"left",face3Corner:"top-right",onPointerDown:this.handleStandardView(l.TOP_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"top",face1Corner:"bottom-right",face2Side:"front",face2Corner:"top-right",face3Side:"right",face3Corner:"top-left",onPointerDown:this.handleStandardView(l.TOP_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"bottom",face1Corner:"top-right",face2Side:"front",face2Corner:"bottom-right",face3Side:"right",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"bottom",face1Corner:"top-left",face2Side:"front",face2Corner:"bottom-left",face3Side:"left",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"top",face1Corner:"top-right",face2Side:"back",face2Corner:"top-left",face3Side:"right",face3Corner:"top-right",onPointerDown:this.handleStandardView(l.TOP_BACK_LEFT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"top",face1Corner:"top-left",face2Side:"back",face2Corner:"top-right",face3Side:"left",face3Corner:"top-left",onPointerDown:this.handleStandardView(l.TOP_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-left",face2Side:"back",face2Corner:"bottom-right",face3Side:"left",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(l.BOTTOM_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-right",face2Side:"back",face2Corner:"bottom-left",face3Side:"right",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(l.BOTTOM_BACK_LEFT),disabled:this.standardViewsOff}))))}static get watchers(){return{viewer:["handleViewerChanged"]}}};p.style=":host{--viewer-view-cube-side-background:var(--white);--viewer-view-cube-side-background-hover:var(--blue-500);--viewer-view-cube-side-background-hover-opacity:0.25;--viewer-view-cube-side-border:1.5px solid var(--neutral-500);--viewer-view-cube-edge-length:12px;--viewer-view-cube-opacity:0.8;--viewer-view-cube-triad-x-axis-color:var(--x-axis-color);--viewer-view-cube-triad-y-axis-color:var(--y-axis-color);--viewer-view-cube-triad-z-axis-color:var(--z-axis-color);display:block;color:var(--neutral-700);width:80px;height:80px;margin:20px;position:relative;display:flex;align-items:center;justify-content:center;user-select:none}.renderer{position:unset;width:100%;height:100%;overflow:visible}.reference-point{width:5px;height:5px;border-radius:50%;background-color:black}.triad{pointer-events:none}.triad-axis{width:100%;height:1.5px;outline:1px solid transparent;transform:translateX(50%)}.triad-axis-x{background-color:#ea3324}.triad-axis-y{background-color:#4faf32}.triad-axis-z{background-color:#0000ff}.triad-label{font-family:Arial, Helvetica, sans-serif;font-size:0.6875rem}.triad-label-x{color:var(--viewer-view-cube-triad-x-axis-color)}.triad-label-y{color:var(--viewer-view-cube-triad-y-axis-color)}.triad-label-z{color:var(--viewer-view-cube-triad-z-axis-color)}.cube{pointer-events:initial}.cube:hover .cube-side-face{opacity:1}.cube-side{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-side-face{box-sizing:border-box;font-size:0.875rem;text-transform:uppercase;width:100%;height:100%;background-color:var(--viewer-view-cube-side-background);border:var(--viewer-view-cube-side-border);display:flex;align-items:center;justify-content:center;outline:1px solid transparent;opacity:var(--viewer-view-cube-opacity);transition:opacity 0.2s ease-in-out}.cube-side-face::before{content:'';position:absolute;left:calc(var(--viewer-view-cube-edge-length) - 4px);right:calc(var(--viewer-view-cube-edge-length) - 4px);top:calc(var(--viewer-view-cube-edge-length) - 4px);bottom:calc(var(--viewer-view-cube-edge-length) - 4px)}.cube-corner,.cube-edge{position:relative}.cube-corner-face,.cube-edge-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-edge-face.top{top:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.bottom{bottom:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.left{left:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-edge-face.right{right:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-corner-face{width:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-corner-face.top-left{top:0;left:0}.cube-corner-face.top-right{top:0;right:0}.cube-corner-face.bottom-right{bottom:0;right:0}.cube-corner-face.bottom-left{bottom:0;left:0}.cube-shadow{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-shadow-face{position:absolute;left:4px;right:4px;top:4px;bottom:4px;background-color:black;opacity:0.12;filter:blur(4px)}.cube-corner .cube-corner-face,.cube-edge .cube-edge-face,.cube-side .cube-side-face::before{background:var(--viewer-view-cube-side-background-hover);opacity:0}.cube-corner:hover .cube-corner-face,.cube-edge:hover .cube-edge-face,.cube-side:hover .cube-side-face::before{opacity:var(--viewer-view-cube-side-background-hover-opacity)}.cube-corner.disabled,.cube-edge.disabled,.cube-side.disabled{pointer-events:none}";export{p as vertex_viewer_view_cube}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{p as t,l as n}from"./p-
|
|
4
|
+
import{p as t,l as n}from"./p-121f2b40.js";function e(t,e){const{camera:r,viewport:a}=e,i=r.isPointBehindNear(t.start),d=r.isPointBehindNear(t.end);if(i||d){const e=r.intersectLineWithNear(t),s=n.create({start:i&&null!=e?e:t.start,end:d&&null!=e?e:t.end}),o=n.transformMatrix(s,r.projectionViewMatrix);return{start:a.transformVectorToViewport(o.start),end:a.transformVectorToViewport(o.end),hideStart:i,hideEnd:d}}{const e=n.transformMatrix(t,r.projectionViewMatrix);return{start:a.transformVectorToViewport(e.start),end:a.transformVectorToViewport(e.end),hideStart:!1,hideEnd:!1}}}function r(n,r,a){const{start:i,end:d,hideStart:s,hideEnd:o}=e(n,a);return{startPt:i,endPt:d,labelPt:t.lerp(i,d,.5),indicatorPt:"none"!==r?function(t,n,e){return e.viewport.transformWorldToViewport("start"===n?t.start:t.end,e.camera.projectionViewMatrix)}(n,r,a):void 0,hideStart:s,hideEnd:o}}function a(t){return t instanceof HTMLElement&&"VERTEX-VIEWER-MEASUREMENT-DISTANCE"===t.nodeName}export{r as g,a as i,e as t}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{h as o,r as t,c as e,H as r,g as i}from"./p-cafa57a6.js";import{p as n,d as s,h,g as a}from"./p-121f2b40.js";import{g as d}from"./p-b8f027eb.js";import{i as c,a as l,b as u,p as w,c as p,d as b,e as v,f as m}from"./p-38c06c25.js";import{c as f}from"./p-f482325b.js";import"./p-112455b1.js";function g(o){return o.getBoundingClientRect()}function k(o,t){switch(t){case"top-left":return n.create(o.x,o.y);case"top":return n.create(o.x+o.width/2,o.y);case"top-right":return n.create(o.x+o.width,o.y);case"right":return n.create(o.x+o.width,o.y+o.height/2);case"bottom-right":return n.create(o.x+o.width,o.y+o.height);case"bottom":return n.create(o.x+o.width/2,o.y+o.height);case"bottom-left":return n.create(o.x,o.y+o.height);case"left":return n.create(o.x,o.y+o.height/2);case"center":return h.center(o)}}function x(o){return Math.min(o.width,o.height)}function D(o,t){const e=x(t);return n.add(n.scale(o,e,e),s.center(t))}function P(o,t){const e=x(t);return s.scale(e,e,o)}function y(o,t){const e=D(o,t),r=P(o,t);return h.fromPointAndDimensions(e,r)}function A(o,t){const e=function(o){return 1/x(o)}(t);return n.scale(n.subtract(o,s.center(t)),e,e)}function C(o,t,e){const r=h.fromPoints(o,t);if(e){const e=Math.max(r.width,r.height),i=r.height>r.width;return h.create(t.x<=o.x?i?o.x-e:t.x:o.x,t.y<=o.y?i?t.y:o.y-e:o.y,e,e)}return r}function L(o,t,e,r,i){const s=n.subtract(e,t),{x:a,y:d,width:c,height:l}=o,u=a+c,w=d+l,p=n.create(a,d),b=n.create(a,w),v=n.create(u,d),m=n.create(u,w);switch(r){case"top-left":return C(m,e,!!i);case"top":return C(m,n.create(a,e.y),!!i);case"top-right":return C(b,e,!!i);case"right":return C(b,n.create(e.x,d),!!i);case"bottom-right":return C(p,e,!!i);case"bottom":return C(p,n.create(u,e.y),!!i);case"bottom-left":return C(v,e,!!i);case"left":return C(m,n.create(e.x,d),!!i);case"center":return h.create(o.x+s.x,o.y+s.y,o.width,o.height)}}function T(o){const t=o.target;return function(o){return c(o)||l(o)||u(o)}(t)&&"edit"!==t.mode}const B=({id:t,rotation:e,name:r,point:i,onPointerDown:n},s)=>o("div",{id:t,class:"bounds-anchor-position",style:{top:`${i.y}px`,left:`${i.x}px`},onTouchStart:o=>o.preventDefault(),onPointerDown:n},o("div",{class:"bounds-anchor",style:{transform:`rotateZ(${null!=e?e:0}deg)`}},o("slot",{name:r},s))),M=({id:t})=>o("filter",{id:t,filterUnits:"userSpaceOnUse"},o("feGaussianBlur",{in:"SourceAlpha",stdDeviation:"2"}),o("feOffset",{dx:"0",dy:"1",result:"offsetblur"}),o("feFlood",{"flood-color":"#000000","flood-opacity":"0.25"}),o("feComposite",{in2:"offsetblur",operator:"in"}),o("feMerge",null,o("feMergeNode",null),o("feMergeNode",{in:"SourceGraphic"}))),R=({start:t,end:e,onStartAnchorPointerDown:r,onCenterAnchorPointerDown:i,onEndAnchorPointerDown:s})=>{const h=a.normalize(a.toDegrees(a.fromPoints(t,e))-270),d=n.create((t.x+e.x)/2,(t.y+e.y)/2);return o("div",{class:"bounds-container"},o(B,{id:"bounding-box-1d-start-anchor",name:"start-anchor",rotation:h,point:t,onPointerDown:r},o("div",{class:f("bounds-default-anchor","bounds-cap-anchor")})),o(B,{id:"bounding-box-1d-end-anchor",name:"end-anchor",rotation:h,point:e,onPointerDown:s},o("div",{class:f("bounds-default-anchor","bounds-cap-anchor")})),o(B,{id:"bounding-box-1d-center-anchor",name:"center-anchor",point:d,onPointerDown:i},o("div",{class:f("bounds-default-anchor","bounds-center-anchor")})))};let S=class{constructor(o){t(this,o),this.editBegin=e(this,"editBegin",7),this.editEnd=e(this,"editEnd",7),this.viewRendered=e(this,"viewRendered",7),this.mode="",this.editAnchor="end",this.editStartPoint=o=>{this.editAnchor="start",this.startMarkup(o)},this.editCenterPoint=o=>{this.editAnchor="center",this.startMarkup(o)},this.editEndPoint=o=>{this.editAnchor="end",this.startMarkup(o)},this.updatePoints=o=>{if(null!=this.elementBounds&&this.pointerId===o.pointerId){const t=A(d(o,this.elementBounds),this.elementBounds);if("start"===this.editAnchor)this.start=t;else if("end"===this.editAnchor)this.end=t;else if(null!=this.start&&null!=this.end){const o=n.create((this.start.x+this.end.x)/2,(this.start.y+this.end.y)/2),e=o.x-t.x,r=o.y-t.y;this.start=n.create(this.start.x-e,this.start.y-r),this.end=n.create(this.end.x-e,this.end.y-r)}}},this.handleWindowPointerDown=o=>{T(o)&&this.startMarkup(o)},this.handleTouchStart=o=>{o.preventDefault()},this.startMarkup=o=>{var t;""!==this.mode&&null!=this.elementBounds&&null==this.pointerId&&(this.pointerId=o.pointerId,this.start=null!==(t=this.start)&&void 0!==t?t:A(d(o,this.elementBounds),this.elementBounds),this.editBegin.emit(),this.addDrawingInteractionListeners())},this.endMarkup=o=>{if(this.pointerId===o.pointerId){const o=null!=this.start&&null!=this.elementBounds?D(this.start,this.elementBounds):void 0,t=null!=this.end&&null!=this.elementBounds?D(this.end,this.elementBounds):void 0;""!==this.mode&&null!=o&&null!=t&&n.distance(o,t)>=2?this.editEnd.emit():(this.start=void 0,this.end=void 0),this.pointerId=void 0,this.removeDrawingInteractionListeners()}}}componentWillLoad(){this.updateViewport(),this.handleViewerChanged(this.viewer),this.updatePointsFromProps()}componentDidLoad(){this.updatePointsFromProps(),new ResizeObserver((()=>this.updateViewport())).observe(this.hostEl),"create"===this.mode&&window.addEventListener("pointerdown",this.handleWindowPointerDown)}componentDidRender(){""===this.mode&&this.viewRendered.emit()}disconnectedCallback(){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async dispose(){null!=this.viewer&&this.removeInteractionListeners(this.viewer),this.removeDrawingInteractionListeners(),window.removeEventListener("pointerdown",this.handleWindowPointerDown)}handleViewerChanged(o,t){null!=t&&this.removeInteractionListeners(t),null!=o&&this.addInteractionListeners(o)}handleStartJsonChange(){this.updatePointsFromProps()}handleEndJsonChange(){this.updatePointsFromProps()}handleModeChange(){"create"!==this.mode&&window.removeEventListener("pointerdown",this.handleWindowPointerDown)}updateViewport(){const o=g(this.hostEl);this.elementBounds=o}updatePointsFromProps(){this.start=this.start||w(this.startJson),this.end=this.end||w(this.endJson)}render(){if(null!=this.start&&null!=this.end&&null!=this.elementBounds){const t=D(this.start,this.elementBounds),e=D(this.end,this.elementBounds),i=p(t,e);return function(...o){return o.every((o=>!isNaN(o.x)&&!isNaN(o.y)))}(t,e)?o(r,null,o("svg",{class:"svg",onTouchStart:this.handleTouchStart},o("defs",null,o(M,{id:"arrow-shadow"})),o("g",{filter:"url(#arrow-shadow)"},o("polygon",{id:"arrow-head",class:"head",points:b(i)}),o("line",{id:"arrow-line",class:"line",x1:t.x,y1:t.y,x2:i.base.x,y2:i.base.y}),"edit"===this.mode&&o("line",{id:"bounding-box-1d-line",class:"bounds-line",x1:t.x,y1:t.y,x2:e.x,y2:e.y}))),"edit"===this.mode&&o(R,{start:t,end:e,onStartAnchorPointerDown:this.editStartPoint,onCenterAnchorPointerDown:this.editCenterPoint,onEndAnchorPointerDown:this.editEndPoint}),"create"===this.mode&&o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart})):o(r,null)}return o(r,null,o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}async addInteractionListeners(o){const t=await o.getInteractionTarget();"create"===this.mode&&t.addEventListener("pointerdown",this.startMarkup)}async addDrawingInteractionListeners(){""!==this.mode&&(window.addEventListener("pointermove",this.updatePoints),window.addEventListener("pointerup",this.endMarkup))}async removeInteractionListeners(o){(await o.getInteractionTarget()).removeEventListener("pointerdown",this.startMarkup)}async removeDrawingInteractionListeners(){window.removeEventListener("pointermove",this.updatePoints),window.removeEventListener("pointerup",this.endMarkup)}get hostEl(){return i(this)}static get watchers(){return{viewer:["handleViewerChanged"],start:["handleStartJsonChange"],end:["handleEndJsonChange"],mode:["handleModeChange"]}}};S.style=":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-arrow-line-stroke-color:var(--red-800);--viewer-markup-arrow-line-stroke-width:4;--viewer-markup-arrow-head-stroke-color:var(--red-800);--viewer-markup-arrow-head-stroke-width:4;--viewer-markup-arrow-head-fill-color:var(--red-800);--viewer-markup-arrow-head-fill-opacity:1;--viewer-markup-arrow-bounds-cap-border-color:var(--blue-400);--viewer-markup-arrow-bounds-cap-border-width:1px;--viewer-markup-arrow-bounds-cap-background-color:white;--viewer-markup-arrow-bounds-center-anchor-border-color:white;--viewer-markup-arrow-bounds-center-anchor-border-width:1px;--viewer-markup-arrow-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-arrow-bounds-outline-width:1px;--viewer-markup-arrow-bounds-outline-color:var(--blue-400);--viewer-markup-arrow-bounds-anchor-width:9px;--viewer-markup-arrow-bounds-anchor-height:9px}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.line{pointer-events:auto;stroke:var(--viewer-markup-arrow-line-stroke-color);stroke-width:var(--viewer-markup-arrow-line-stroke-width);cursor:default}.head{pointer-events:auto;stroke:var(--viewer-markup-arrow-head-stroke-color);stroke-width:var(--viewer-markup-arrow-head-stroke-width);fill:var(--viewer-markup-arrow-head-fill-color);fill-opacity:var(--viewer-markup-arrow-head-fill-opacity);cursor:default}.bounds-line{pointer-events:auto;stroke:var(--viewer-markup-arrow-bounds-outline-color);stroke-width:var(--viewer-markup-arrow-bounds-outline-width)}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-arrow-bounds-anchor-width);height:var(--viewer-markup-arrow-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-arrow-bounds-center-anchor-border-width);border-color:var(--viewer-markup-arrow-bounds-center-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-arrow-bounds-center-anchor-background-color)}.bounds-cap-anchor{border-width:var(--viewer-markup-arrow-bounds-cap-border-width);border-color:var(--viewer-markup-arrow-bounds-cap-border-color);border-style:solid;background-color:var(--viewer-markup-arrow-bounds-cap-background-color)}";const I=({bounds:t,onTopLeftAnchorPointerDown:e,onLeftAnchorPointerDown:r,onTopRightAnchorPointerDown:i,onRightAnchorPointerDown:n,onBottomLeftAnchorPointerDown:s,onBottomAnchorPointerDown:a,onBottomRightAnchorPointerDown:d,onTopAnchorPointerDown:c,onCenterAnchorPointerDown:l})=>{const u=h.pad(t,6),w=h.center(u);return o("div",{class:"bounds-container"},o("div",{class:"bounds-outline",style:{top:`${u.y}px`,left:`${u.x}px`,width:`${u.width}px`,height:`${u.height}px`}}),o(B,{id:"bounding-box-2d-top-left-anchor",name:"top-left-anchor",point:k(u,"top-left"),onPointerDown:e},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-left-anchor",name:"left-anchor",point:k(u,"left"),onPointerDown:r},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-top-right-anchor",name:"top-right-anchor",point:k(u,"top-right"),onPointerDown:i},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-right-anchor",name:"right-anchor",point:k(u,"right"),onPointerDown:n},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-bottom-left-anchor",name:"bottom-left-anchor",point:k(u,"bottom-left"),onPointerDown:s},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-bottom-anchor",name:"bottom-anchor",point:k(u,"bottom"),onPointerDown:a},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-bottom-right-anchor",name:"bottom-right-anchor",point:k(u,"bottom-right"),onPointerDown:d},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-top-anchor",name:"top-anchor",point:k(u,"top"),onPointerDown:c},o("div",{class:f("bounds-default-anchor","bounds-edge-anchor")})),o(B,{id:"bounding-box-2d-center-anchor",name:"center-anchor",point:w,onPointerDown:l},o("div",{class:f("bounds-default-anchor","bounds-center-anchor")})))};let E=class{constructor(o){t(this,o),this.editBegin=e(this,"editBegin",7),this.editEnd=e(this,"editEnd",7),this.viewRendered=e(this,"viewRendered",7),this.mode="",this.editAnchor="bottom-right",this.updateEditAnchor=(o,t)=>{this.resizeBounds=this.bounds,this.editAnchor=t,this.startMarkup(o)},this.updatePoints=o=>{var t;if(null!=this.bounds&&null!=this.startPosition&&null!=this.elementBounds&&this.pointerId===o.pointerId){const e=A(d(o,this.elementBounds),this.elementBounds);this.bounds=L(null!==(t=this.resizeBounds)&&void 0!==t?t:this.bounds,this.startPosition,e,this.editAnchor,o.shiftKey)}},this.handleWindowPointerDown=o=>{T(o)&&this.startMarkup(o)},this.handleTouchStart=o=>{o.preventDefault()},this.startMarkup=o=>{var t;if(""!==this.mode&&null!=this.elementBounds&&null==this.pointerId){const e=A(d(o,this.elementBounds),this.elementBounds);this.pointerId=o.pointerId,this.startPosition=e,this.bounds=null!==(t=this.bounds)&&void 0!==t?t:h.create(e.x,e.y,0,0),this.resizeBounds=this.bounds,this.editBegin.emit(),this.addDrawingInteractionListeners()}},this.endMarkup=o=>{var t,e;this.pointerId===o.pointerId&&(""!==this.mode&&null!=this.bounds&&(null===(t=this.bounds)||void 0===t?void 0:t.width)>0&&(null===(e=this.bounds)||void 0===e?void 0:e.height)>0?(this.editAnchor="bottom-right",this.editEnd.emit()):this.bounds=void 0,this.pointerId=void 0,this.removeDrawingInteractionListeners())}}componentWillLoad(){this.updateViewport(),this.handleViewerChanged(this.viewer),this.updateBoundsFromProps()}componentDidLoad(){this.updateBoundsFromProps(),new ResizeObserver((()=>this.updateViewport())).observe(this.hostEl),"create"===this.mode&&window.addEventListener("pointerdown",this.handleWindowPointerDown)}componentDidRender(){""===this.mode&&this.viewRendered.emit()}disconnectedCallback(){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async dispose(){null!=this.viewer&&this.removeInteractionListeners(this.viewer),this.removeDrawingInteractionListeners(),window.removeEventListener("pointerdown",this.handleWindowPointerDown)}handleViewerChanged(o,t){null!=t&&this.removeInteractionListeners(t),null!=o&&this.addInteractionListeners(o)}handleBoundsJsonChange(){this.updateBoundsFromProps()}handleModeChange(){"create"!==this.mode&&window.removeEventListener("pointerdown",this.handleWindowPointerDown)}updateViewport(){const o=g(this.hostEl);this.elementBounds=o}updateBoundsFromProps(){var o;this.bounds=null!==(o=this.bounds)&&void 0!==o?o:v(this.boundsJson)}render(){if(null!=this.bounds&&null!=this.elementBounds){const t=y(this.bounds,this.elementBounds),e=h.center(t);return o(r,null,o("svg",{class:"svg",onTouchStart:this.handleTouchStart},o("defs",null,o(M,{id:"circle-shadow"})),o("g",{filter:"url(#circle-shadow)"},o("ellipse",{class:"ellipse",cx:e.x,cy:e.y,rx:t.width/2,ry:t.height/2,stroke:"#000ff0","stroke-width":4,fill:"none"}))),"edit"===this.mode&&o(I,{bounds:t,onTopLeftAnchorPointerDown:o=>this.updateEditAnchor(o,"top-left"),onTopRightAnchorPointerDown:o=>this.updateEditAnchor(o,"top-right"),onTopAnchorPointerDown:o=>this.updateEditAnchor(o,"top"),onBottomLeftAnchorPointerDown:o=>this.updateEditAnchor(o,"bottom-left"),onBottomRightAnchorPointerDown:o=>this.updateEditAnchor(o,"bottom-right"),onBottomAnchorPointerDown:o=>this.updateEditAnchor(o,"bottom"),onLeftAnchorPointerDown:o=>this.updateEditAnchor(o,"left"),onRightAnchorPointerDown:o=>this.updateEditAnchor(o,"right"),onCenterAnchorPointerDown:o=>this.updateEditAnchor(o,"center")}),"create"===this.mode&&o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}return o(r,null,o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}async addInteractionListeners(o){const t=await o.getInteractionTarget();"create"===this.mode&&t.addEventListener("pointerdown",this.startMarkup)}async addDrawingInteractionListeners(){""!==this.mode&&(window.addEventListener("pointermove",this.updatePoints),window.addEventListener("pointerup",this.endMarkup))}async removeInteractionListeners(o){(await o.getInteractionTarget()).removeEventListener("pointerdown",this.startMarkup)}async removeDrawingInteractionListeners(){window.removeEventListener("pointermove",this.updatePoints),window.removeEventListener("pointerup",this.endMarkup)}get hostEl(){return i(this)}static get watchers(){return{viewer:["handleViewerChanged"],bounds:["handleBoundsJsonChange"],mode:["handleModeChange"]}}};E.style=":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-circle-ellipse-stroke-color:var(--red-700);--viewer-markup-circle-ellipse-stroke-width:4;--viewer-markup-circle-ellipse-fill-color:none;--viewer-markup-circle-ellipse-fill-opacity:0;--viewer-markup-circle-bounds-outline-border-color:var(--blue-400);--viewer-markup-circle-bounds-outline-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-circle-bounds-edge-anchor-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-background-color:white;--viewer-markup-circle-bounds-center-anchor-border-color:white;--viewer-markup-circle-bounds-center-anchor-border-width:1px;--viewer-markup-circle-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-circle-bounds-anchor-width:9px;--viewer-markup-circle-bounds-anchor-height:9px}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.ellipse{pointer-events:auto;stroke:var(--viewer-markup-circle-ellipse-stroke-color);stroke-width:var(--viewer-markup-circle-ellipse-stroke-width);fill:var(--viewer-markup-circle-ellipse-fill-color);fill-opacity:var(--viewer-markup-circle-ellipse-fill-opacity);cursor:default}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-circle-bounds-outline-border-width);border-color:var(--viewer-markup-circle-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-circle-bounds-anchor-width);height:var(--viewer-markup-circle-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-circle-bounds-center-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-center-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-circle-bounds-center-anchor-background-color)}.bounds-edge-anchor{border-width:var(--viewer-markup-circle-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-edge-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-circle-bounds-edge-anchor-background-color)}";let $=class{constructor(o){t(this,o),this.editBegin=e(this,"editBegin",7),this.editEnd=e(this,"editEnd",7),this.viewRendered=e(this,"viewRendered",7),this.mode="",this.editAnchor="bottom-right",this.screenPoints=[],this.handleWindowPointerDown=o=>{T(o)&&this.startMarkup(o)},this.handleTouchStart=o=>{o.preventDefault()},this.updateEditAnchor=(o,t)=>{null!=this.elementBounds&&(this.resizeBounds=this.bounds,this.resizePoints=this.points,this.editAnchor=t,this.resizeStartPosition=A(d(o,this.elementBounds),this.elementBounds),this.addEditingInteractionListeners())},this.updateBounds=o=>{var t,e,r;if(null!=this.resizeStartPosition&&null!=this.elementBounds&&null!=this.resizeBounds&&null!=this.resizePoints){const i=A(d(o,this.elementBounds),this.elementBounds),s=L(this.resizeBounds,this.resizeStartPosition,i,this.editAnchor,o.shiftKey);this.points=(e=this.resizeBounds,r=s,this.resizePoints.map((o=>n.add(n.scale(n.subtract(o,e),r.width/(e.width||1),r.height/(e.height||1)),r)))),this.screenPoints=null!==(t=this.convertPointsToScreen())&&void 0!==t?t:this.screenPoints,this.bounds=s}},this.updatePoints=o=>{if(this.pointerId===o.pointerId&&null!=this.points&&null!=this.elementBounds){const t=d(o,this.elementBounds),e=A(t,this.elementBounds);this.updateMinAndMax(e),this.points=[...this.points,e],this.screenPoints=[...this.screenPoints,t]}},this.startMarkup=o=>{var t,e;if(null==this.pointerId&&""!==this.mode&&null!=this.elementBounds){this.pointerId=o.pointerId;const r=d(o,this.elementBounds),i=A(r,this.elementBounds);this.updateMinAndMax(i),this.points=null!==(t=this.points)&&void 0!==t?t:[i],this.screenPoints=null!==(e=this.screenPoints)&&void 0!==e?e:[r],this.editBegin.emit(),this.addDrawingInteractionListeners()}},this.endMarkup=o=>{if(this.pointerId===o.pointerId){if(""!==this.mode&&null!=this.points&&this.points.length>2&&null!=this.elementBounds){const t=d(o,this.elementBounds),e=A(t,this.elementBounds);this.updateMinAndMax(e),this.points=[...this.points,e],this.screenPoints=[...this.screenPoints,t],this.editEnd.emit()}else this.points=void 0;this.min=void 0,this.max=void 0,this.pointerId=void 0,this.removeDrawingInteractionListeners()}},this.endEdit=()=>{this.resizeBounds=void 0,this.removeEditingInteractionListeners(),this.editEnd.emit()}}componentWillLoad(){this.updateViewport(),this.handleViewerChanged(this.viewer),this.updatePointsFromProps()}componentDidLoad(){new ResizeObserver((()=>this.updateViewport())).observe(this.hostEl),"create"===this.mode&&window.addEventListener("pointerdown",this.handleWindowPointerDown)}componentDidRender(){""===this.mode&&this.viewRendered.emit()}disconnectedCallback(){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async dispose(){null!=this.viewer&&this.removeInteractionListeners(this.viewer),this.removeDrawingInteractionListeners(),window.removeEventListener("pointerdown",this.handleWindowPointerDown)}handleViewerChanged(o,t){null!=t&&this.removeInteractionListeners(t),null!=o&&this.addInteractionListeners(o)}handlePointsJsonChange(){this.updatePointsFromProps()}handleBoundsJsonChange(){this.updatePointsFromProps()}handleModeChange(){"create"!==this.mode&&window.removeEventListener("pointerdown",this.handleWindowPointerDown)}updateViewport(){var o;const t=g(this.hostEl);this.elementBounds=t,this.screenPoints=null!==(o=this.convertPointsToScreen())&&void 0!==o?o:this.screenPoints}updatePointsFromProps(){var o,t,e;this.points=null!==(o=this.points)&&void 0!==o?o:m(this.pointsJson),this.screenPoints=null!==(t=this.convertPointsToScreen())&&void 0!==t?t:[],this.bounds=null!==(e=this.bounds)&&void 0!==e?e:v(this.boundsJson)}render(){return this.screenPoints.length>0&&null!=this.elementBounds?o(r,null,o("svg",{class:"svg",onTouchStart:this.handleTouchStart},o("defs",null,o(M,{id:"freeform-markup-shadow"})),o("g",{filter:"url(#freeform-markup-shadow)"},o("path",{class:"path",d:this.screenPoints.reduce(((o,t)=>`${o}L${t.x},${t.y}`),`M${this.screenPoints[0].x},${this.screenPoints[0].y}`),fill:"none"}))),"edit"===this.mode&&null!=this.bounds&&o(I,{bounds:y(this.bounds,this.elementBounds),onTopLeftAnchorPointerDown:o=>this.updateEditAnchor(o,"top-left"),onTopRightAnchorPointerDown:o=>this.updateEditAnchor(o,"top-right"),onTopAnchorPointerDown:o=>this.updateEditAnchor(o,"top"),onBottomLeftAnchorPointerDown:o=>this.updateEditAnchor(o,"bottom-left"),onBottomRightAnchorPointerDown:o=>this.updateEditAnchor(o,"bottom-right"),onBottomAnchorPointerDown:o=>this.updateEditAnchor(o,"bottom"),onLeftAnchorPointerDown:o=>this.updateEditAnchor(o,"left"),onRightAnchorPointerDown:o=>this.updateEditAnchor(o,"right"),onCenterAnchorPointerDown:o=>this.updateEditAnchor(o,"center")}),"create"===this.mode&&o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart})):o(r,null,o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}async addInteractionListeners(o){const t=await o.getInteractionTarget();"create"===this.mode&&t.addEventListener("pointerdown",this.startMarkup)}async addDrawingInteractionListeners(){""!==this.mode&&(window.addEventListener("pointermove",this.updatePoints),window.addEventListener("pointerup",this.endMarkup))}async addEditingInteractionListeners(){"edit"===this.mode&&(window.addEventListener("pointermove",this.updateBounds),window.addEventListener("pointerup",this.endEdit))}async removeInteractionListeners(o){(await o.getInteractionTarget()).removeEventListener("pointerdown",this.startMarkup)}async removeDrawingInteractionListeners(){window.removeEventListener("pointermove",this.updatePoints),window.removeEventListener("pointerup",this.endMarkup)}async removeEditingInteractionListeners(){"edit"===this.mode&&(window.removeEventListener("pointermove",this.updateBounds),window.removeEventListener("pointerup",this.endEdit))}updateMinAndMax(o){this.min=null!=this.min?n.create(Math.min(this.min.x,o.x),Math.min(this.min.y,o.y)):o,this.max=null!=this.max?n.create(Math.max(this.max.x,o.x),Math.max(this.max.y,o.y)):o,this.bounds=h.create(this.min.x,this.min.y,this.max.x-this.min.x,this.max.y-this.min.y)}convertPointsToScreen(){var o;const t=this.elementBounds;if(null!=t)return null===(o=this.points)||void 0===o?void 0:o.map((o=>D(o,t)))}get hostEl(){return i(this)}static get watchers(){return{viewer:["handleViewerChanged"],points:["handlePointsJsonChange"],bounds:["handleBoundsJsonChange"],mode:["handleModeChange"]}}};$.style=":host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-freeform-stroke-color:var(--red-800);--viewer-markup-freeform-stroke-width:4;--viewer-markup-freeform-line-join:round;--viewer-markup-freeform-line-cap:round;--viewer-markup-freeform-bounds-outline-border-color:var(--blue-400);--viewer-markup-freeform-bounds-outline-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-freeform-bounds-edge-anchor-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-background-color:white;--viewer-markup-freeform-bounds-center-anchor-border-color:white;--viewer-markup-freeform-bounds-center-anchor-border-width:1px;--viewer-markup-freeform-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-freeform-bounds-anchor-width:9px;--viewer-markup-freeform-bounds-anchor-height:9px}.svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.path{pointer-events:auto;cursor:default;stroke:var(--viewer-markup-freeform-stroke-color);stroke-width:var(--viewer-markup-freeform-stroke-width);stroke-linejoin:var(--viewer-markup-freeform-line-join);stroke-linecap:var(--viewer-markup-freeform-line-cap)}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-freeform-bounds-outline-border-width);border-color:var(--viewer-markup-freeform-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-freeform-bounds-anchor-width);height:var(--viewer-markup-freeform-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-freeform-bounds-center-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-center-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-freeform-bounds-center-anchor-background-color)}.bounds-edge-anchor{border-width:var(--viewer-markup-freeform-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-edge-anchor-border-color);border-style:solid;background-color:var(--viewer-markup-freeform-bounds-edge-anchor-background-color)}";export{S as vertex_viewer_markup_arrow,E as vertex_viewer_markup_circle,$ as vertex_viewer_markup_freeform}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{h as e,F as t,r,H as s}from"./p-cafa57a6.js";import{D as i,A as n,
|
|
4
|
+
import{h as e,F as t,r,H as s}from"./p-cafa57a6.js";import{D as i,A as n,e as a}from"./p-18ec4fed.js";import{n as l,v as o}from"./p-121f2b40.js";import{c as h}from"./p-f482325b.js";import"./p-546ae240.js";import"./p-112455b1.js";
|
|
5
5
|
/*! *****************************************************************************
|
|
6
6
|
Copyright (c) Microsoft Corporation.
|
|
7
7
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{d as t,p as r,v as s,r as o,
|
|
4
|
+
import{d as t,p as r,v as s,r as o,h as n}from"./p-121f2b40.js";class i{constructor(r,s){this.width=r,this.height=s,this.center=t.center(this.dimensions)}static fromDimensions(t){return new i(t.width,t.height)}transformVectorToViewport(t){return r.create(t.x*this.center.x+this.center.x,-t.y*this.center.y+this.center.y)}transformWorldToViewport(t,r){const o=s.transformMatrix(t,r);return this.transformVectorToViewport(o)}transformPointToViewport(t,s){const{x:o,y:n}=this.calculateFrameScale(s);return r.scale(t,1*o,1*n)}transformPointToFrame(t,s){const{x:o,y:n}=this.calculateFrameScale(s);return r.scale(t,1/o,1/n)}transformPointToWorldSpace(t,r,s){const o=this.transformPointToFrame(t,r),n=this.transformPointToRay(t,r,r.camera);return r.getWorldPoint(o,n,s)}transformPointToRay(t,r,n){const i=this.transformScreenPointToNdc(t,r),e=s.fromMatrixPosition(n.worldMatrix),a=s.transformNdcToWorldSpace(s.create(i.x,i.y,.5),n.worldMatrix,n.projectionMatrixInverse),c=s.normalize(s.subtract(a,e));return o.create({origin:e,direction:c})}transformScreenPointToNdc(t,s){const o=this.transformPointToFrame(t,s);return r.create(o.x/s.imageAttr.frameDimensions.width*2-1,-o.y/s.imageAttr.frameDimensions.height*2+1)}calculateDrawRect(t){const{x:r,y:s}=this.calculateFrameScale(t);return n.scale(t.imageAttr.imageRect,r,s)}calculateFrameScale(t){const{frameDimensions:s}=t.imageAttr,o=n.fromDimensions(s),i=n.fromDimensions(this.dimensions),e=n.containFit(i,o);return r.create(e.width/o.width,e.height/o.height)}get dimensions(){return t.create(this.width,this.height)}}export{i as V}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as t,h as e,H as i}from"./p-cafa57a6.js";import{s}from"./p-
|
|
4
|
+
import{r as t,h as e,H as i}from"./p-cafa57a6.js";import{s}from"./p-61db972b.js";import{g as n}from"./p-3a20a038.js";import{p as r}from"./p-6d9d3553.js";import{a as o,M as a}from"./p-b8bc15ec.js";import{E as h}from"./p-18ec4fed.js";import{M as l}from"./p-25dfee48.js";import{M as d}from"./p-9fd5fc8e.js";import{p as u}from"./p-121f2b40.js";import{a as p}from"./p-6120a219.js";import{g as c}from"./p-b8f027eb.js";import"./p-112455b1.js";import"./p-546ae240.js";var m=n.grpc,v=function(){function t(){}return t.serviceName="vertexvis.protobuf.sceneview.v1.SceneViewAPI",t}();function f(t,e){this.serviceHost=t,this.options=e||{}}v.UpdateModelEntities={methodName:"UpdateModelEntities",service:v,requestStream:!1,responseStream:!1,requestType:s.UpdateModelEntitiesRequest,responseType:s.UpdateModelEntitiesResponse},v.Measure={methodName:"Measure",service:v,requestStream:!1,responseStream:!1,requestType:s.MeasureRequest,responseType:s.MeasureResponse},f.prototype.updateModelEntities=function(t,e,i){2===arguments.length&&(i=arguments[1]);var s=m.unary(v.UpdateModelEntities,{request:t,host:this.serviceHost,metadata:e,transport:this.options.transport,debug:this.options.debug,onEnd:function(t){if(i)if(t.status!==m.Code.OK){var e=new Error(t.statusMessage);e.code=t.status,e.metadata=t.trailers,i(e,null)}else i(null,t.message)}});return{cancel:function(){i=null,s.close()}}},f.prototype.measure=function(t,e,i){2===arguments.length&&(i=arguments[1]);var s=m.unary(v.Measure,{request:t,host:this.serviceHost,metadata:e,transport:this.options.transport,debug:this.options.debug,onEnd:function(t){if(i)if(t.status!==m.Code.OK){var e=new Error(t.statusMessage);e.code=t.status,e.metadata=t.trailers,i(e,null)}else i(null,t.message)}});return{cancel:function(){i=null,s.close()}}};var w=f;class b{constructor(){this.observer=new ResizeObserver((()=>this.measure()))}observe(t){this.element=t,this.observer.observe(t),this.measure()}disconnect(){this.element=void 0,this.observer.disconnect()}measure(){var t;this.rect=null===(t=this.element)||void 0===t?void 0:t.getBoundingClientRect()}}class y{constructor(t,e){this.rectObserver=new b,this.handlePointerMove=async t=>{await this.isMeasurableEntityUnderPointer(t)?(this.clearCursor(),this.addCursor(p)):this.clearCursor()},this.handlePointerDown=t=>{this.ifNoInteraction(t,(async()=>{await this.isMeasurableEntityUnderPointer(t)?this.measureEntityUnderPointer(t):this.controller.clearEntities()}))},this.controller=t,this.measurableEntityTypes=e}get elementRect(){return this.rectObserver.rect}initialize(t,e){this.element=t,this.api=e,this.rectObserver.observe(t),t.addEventListener("pointermove",this.handlePointerMove),t.addEventListener("pointerdown",this.handlePointerDown)}dispose(){var t,e,i;this.rectObserver.disconnect(),null===(t=this.measurementInteraction)||void 0===t||t.dispose(),this.clearCursor(),null===(e=this.element)||void 0===e||e.removeEventListener("pointermove",this.handlePointerMove),null===(i=this.element)||void 0===i||i.removeEventListener("pointerdown",this.handlePointerDown),this.element=void 0,this.api=void 0}addCursor(t){this.cursor=this.ifInitialized((({api:e})=>e.addCursor(t)))}clearCursor(){var t;null===(t=this.cursor)||void 0===t||t.dispose(),this.cursor=void 0}async isMeasurableEntityUnderPointer(t){var e;const i=c(t,this.elementRect),s=await(null===(e=this.api)||void 0===e?void 0:e.getEntityTypeAtPoint(i));return null!=s&&this.measurableEntityTypes.includes(s)}measureEntityUnderPointer(t){this.ifInitialized((async({api:e})=>{const i=c(t,this.elementRect),[s]=await e.hitItems(i);null!=s?this.controller.addEntity(o.fromHit(s)):this.controller.clearEntities()}))}ifInitialized(t){if(null!=this.element&&null!=this.api)return t({element:this.element,api:this.api});throw new Error("Measurement interaction handler not initialized.")}ifNoInteraction(t,e){const i=u.create(t.clientX,t.clientY);let s=!1;const n=t=>{const e=u.create(t.clientX,t.clientY),n=u.distance(i,e);s=n>2},r=()=>{window.removeEventListener("pointermove",n),window.removeEventListener("pointerup",r),s||e()};window.addEventListener("pointermove",n),window.addEventListener("pointerup",r)}}let M=class{constructor(e){t(this,e),this.measurementModel=new l,this.measurementOverlays=new d,this.measurableEntityTypes=[h.PRECISE_SURFACE,h.IMPRECISE_SURFACE],this.configEnv="platprod",this.overlays=[]}connectedCallback(){this.setupInteractionHandler()}componentWillLoad(){this.setupController(),this.setupModelListeners(),this.setupInteractionHandler()}disconnectedCallback(){this.clearInteractionHandler(),this.clearModelListeners()}handleMeasurableEntityTypesChanged(){this.setupInteractionHandler()}handleMeasurementControllerChanged(){this.setupInteractionHandler()}handleMeasurementModelChanged(){this.setupController(),this.setupModelListeners()}handleViewerChanged(){this.setupInteractionHandler()}render(){return e(i,null,e("vertex-viewer-measurement-overlays",{viewer:this.viewer,measurementOverlays:this.measurementOverlays}))}setupController(){var t;const e=r(this.configEnv,this.config),i=new w(e.network.sceneViewHost);this.measurementController=new a(this.measurementModel,i,(()=>{var t;return null===(t=this.viewer)||void 0===t?void 0:t.token}),null===(t=this.viewer)||void 0===t?void 0:t.deviceId)}clearInteractionHandler(){var t;null===(t=this.registeredInteractionHandler)||void 0===t||t.then((t=>t.dispose())),this.registeredInteractionHandler=void 0}setupInteractionHandler(){var t;this.clearInteractionHandler(),null!=this.measurementController&&(this.registeredInteractionHandler=null===(t=this.viewer)||void 0===t?void 0:t.registerInteractionHandler(new y(this.measurementController,this.measurableEntityTypes)))}clearModelListeners(){var t,e;null===(t=this.onEntitiesChangedHandler)||void 0===t||t.dispose(),this.onEntitiesChangedHandler=void 0,null===(e=this.onOverlaysChangedHandler)||void 0===e||e.dispose(),this.onOverlaysChangedHandler=void 0}setupModelListeners(){this.onOverlaysChangedHandler=this.measurementOverlays.onOverlaysChanged((t=>{this.overlays=t}))}static get watchers(){return{measurableEntityTypes:["handleMeasurableEntityTypesChanged"],measurementController:["handleMeasurementControllerChanged"],measurementModel:["handleMeasurementModelChanged"],viewer:["handleViewerChanged"]}}};M.style=":host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}";export{M as vertex_viewer_measurement_precise}
|