@vertexvis/viewer 0.12.0 → 0.13.0-canary.0
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/{config-acd7cea9.js → config-90ee43d5.js} +1 -1
- package/dist/cjs/{cursors-399a9648.js → cursors-ad2fd395.js} +7 -0
- package/dist/cjs/{controller-8cbcdd8d.js → entities-aa59890e.js} +57 -22
- package/dist/cjs/{index-cc65325e.js → index-e100709a.js} +64 -3
- package/dist/cjs/index.cjs.js +21 -11
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{model-18ef3363.js → mapper-f6e6cafe.js} +37 -191
- package/dist/cjs/model-4ec0c36e.js +134 -0
- package/dist/cjs/overlays-8a582edf.js +76 -0
- package/dist/cjs/results-bc325974.js +24 -0
- package/dist/cjs/{scene-ffee07ee.js → scene-f4040800.js} +1 -1
- package/dist/cjs/{stencil-bd453a38.js → stencil-a664cd10.js} +1 -1
- package/dist/cjs/{streamAttributes-9d6226ac.js → streamAttributes-d6236448.js} +87 -30
- package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +2 -2
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-column.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-header.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-resize-divider.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-toolbar-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-button_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-icon.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-layer.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +221 -75
- package/dist/cjs/{vertex-viewer-measurement-distance_2.cjs.entry.js → vertex-viewer-measurement-distance.cjs.entry.js} +30 -69
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +170 -0
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +163 -55
- package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +33 -4
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer.cjs.entry.js +58 -10
- package/dist/cjs/viewer.cjs.js +2 -2
- package/dist/cjs/{viewport-51aa05ab.js → viewport-8c39089f.js} +11 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/viewer/viewer.js +2 -2
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +2 -2
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details-entry.js +14 -0
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details-results.js +22 -0
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.css +3 -10
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js +125 -188
- package/dist/collection/components/viewer-measurement-distance/interactions.js +3 -14
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +41 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays-components.js +30 -0
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.css +51 -0
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +149 -0
- package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js +118 -26
- package/dist/collection/components/viewer-measurements/viewer-measurements.js +67 -2
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.css +21 -3
- package/dist/collection/index.js +2 -2
- package/dist/collection/lib/cursors.js +7 -1
- package/dist/collection/lib/elementRectObserver.js +19 -0
- package/dist/collection/lib/interactions/interactionApi.js +53 -4
- package/dist/collection/lib/mappers/frameStreaming.js +2 -4
- package/dist/collection/lib/measurement/controller.js +21 -17
- package/dist/collection/lib/measurement/entities.js +34 -0
- package/dist/collection/lib/measurement/index.js +4 -2
- package/dist/collection/lib/measurement/interactions.js +74 -28
- package/dist/collection/lib/measurement/mapper.js +5 -5
- package/dist/collection/lib/measurement/model.js +24 -85
- package/dist/collection/lib/measurement/outcomes.js +2 -0
- package/dist/collection/lib/measurement/overlays.js +69 -0
- package/dist/collection/lib/measurement/results.js +17 -0
- package/dist/collection/lib/types/entities.js +5 -1
- package/dist/collection/lib/types/featureMap.js +14 -5
- package/dist/collection/lib/types/frame.js +3 -3
- package/dist/collection/lib/types/measurementUnits.js +7 -7
- package/dist/collection/lib/types/viewport.js +12 -1
- package/dist/collection/testing/eventually.js +30 -0
- package/dist/collection/testing/fixtures.js +11 -4
- package/dist/collection/testing/index.js +2 -1
- package/dist/custom-elements/index.d.ts +6 -0
- package/dist/custom-elements/index.js +851 -287
- package/dist/esm/{browser.esm-e6827921.js → browser.esm-59e914f6.js} +1 -1
- package/dist/esm/{bundle.esm-8f14ac60.js → bundle.esm-d899b2d5.js} +1 -1
- package/dist/esm/{config-a200c227.js → config-604c644e.js} +2 -2
- package/dist/esm/{cursors-5157d29d.js → cursors-a7ec4adb.js} +8 -2
- package/dist/esm/{dom-2d6a1e1e.js → dom-780d25be.js} +1 -1
- package/dist/esm/{controller-a756cf9c.js → entities-759d97cd.js} +52 -18
- package/dist/esm/{index-f0053642.js → index-10c1495a.js} +64 -3
- package/dist/esm/index.js +13 -11
- package/dist/esm/index.mjs +13 -11
- package/dist/esm/loader.js +2 -2
- package/dist/esm/loader.mjs +2 -2
- package/dist/esm/{model-f711a825.js → mapper-4b815e31.js} +37 -190
- package/dist/esm/{markup-e46623b3.js → markup-1d177b4a.js} +2 -2
- package/dist/esm/{measurement-702d6b8c.js → measurement-12cdbf5c.js} +2 -2
- package/dist/esm/model-e5a4f00f.js +132 -0
- package/dist/esm/overlays-dbe5d652.js +74 -0
- package/dist/esm/{png-decoder-59a0e9c2.js → png-decoder-3f1fa486.js} +1 -1
- package/dist/esm/results-994bdb50.js +22 -0
- package/dist/esm/{scene-16490983.js → scene-9ac8a484.js} +3 -3
- package/dist/esm/{stencil-7d04d41a.js → stencil-9bf7fb9e.js} +1 -1
- package/dist/esm/{streamAttributes-7aa486b2.js → streamAttributes-d623bb60.js} +77 -20
- package/dist/esm/{utils-8070900a.js → utils-01e4f587.js} +1 -1
- package/dist/esm/{utils-953a1619.js → utils-5e57bf24.js} +1 -1
- package/dist/esm/vertex-scene-tree-search_3.entry.js +3 -3
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-column.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-header.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-resize-divider.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-toolbar-group.entry.js +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +5 -5
- package/dist/esm/vertex-viewer-button_3.entry.js +1 -1
- package/dist/esm/vertex-viewer-default-toolbar.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-element_3.entry.js +6 -6
- package/dist/esm/vertex-viewer-icon.entry.js +1 -1
- package/dist/esm/vertex-viewer-layer.entry.js +1 -1
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup-tool.entry.js +5 -5
- package/dist/esm/vertex-viewer-markup.entry.js +5 -5
- package/dist/esm/vertex-viewer-measurement-details.entry.js +221 -75
- package/dist/esm/{vertex-viewer-measurement-distance_2.entry.js → vertex-viewer-measurement-distance.entry.js} +35 -73
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +165 -0
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +160 -52
- package/dist/esm/vertex-viewer-measurement-tool.entry.js +6 -6
- package/dist/esm/vertex-viewer-measurements.entry.js +36 -7
- package/dist/esm/vertex-viewer-view-cube.entry.js +6 -6
- package/dist/esm/vertex-viewer.entry.js +61 -13
- package/dist/esm/viewer.js +2 -2
- package/dist/esm/{viewport-bb7c46d9.js → viewport-01c886ea.js} +12 -1
- package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +1 -1
- package/dist/types/components/viewer-measurement-details/viewer-measurement-details-entry.d.ts +8 -0
- package/dist/types/components/viewer-measurement-details/viewer-measurement-details-results.d.ts +15 -0
- package/dist/types/components/viewer-measurement-details/viewer-measurement-details.d.ts +44 -42
- package/dist/types/components/viewer-measurement-distance/interactions.d.ts +23 -1
- package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +8 -0
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +10 -0
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +41 -0
- package/dist/types/components/viewer-measurement-precise/viewer-measurement-precise.d.ts +62 -6
- package/dist/types/components/viewer-measurements/viewer-measurements.d.ts +12 -0
- package/dist/types/components.d.ts +103 -40
- package/dist/types/index.d.ts +1 -1
- package/dist/types/lib/cursors.d.ts +5 -0
- package/dist/types/lib/elementRectObserver.d.ts +8 -0
- package/dist/types/lib/interactions/interactionApi.d.ts +32 -5
- package/dist/types/lib/measurement/controller.d.ts +8 -7
- package/dist/types/lib/measurement/entities.d.ts +10 -0
- package/dist/types/lib/measurement/index.d.ts +3 -1
- package/dist/types/lib/measurement/interactions.d.ts +19 -5
- package/dist/types/lib/measurement/mapper.d.ts +1 -1
- package/dist/types/lib/measurement/model.d.ts +18 -153
- package/dist/types/lib/measurement/outcomes.d.ts +8 -0
- package/dist/types/lib/measurement/overlays.d.ts +38 -0
- package/dist/types/lib/measurement/results.d.ts +90 -0
- package/dist/types/lib/types/entities.d.ts +5 -1
- package/dist/types/lib/types/featureMap.d.ts +2 -2
- package/dist/types/lib/types/measurementUnits.d.ts +1 -1
- package/dist/types/lib/types/viewport.d.ts +9 -1
- package/dist/types/testing/eventually.d.ts +15 -0
- package/dist/types/testing/fixtures.d.ts +2 -2
- package/dist/types/testing/index.d.ts +1 -0
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/p-081e6873.js +4 -0
- package/dist/viewer/{p-5d82c131.entry.js → p-099fe6ca.entry.js} +1 -1
- package/dist/viewer/{p-784914e4.js → p-0aba71fd.js} +1 -1
- package/dist/viewer/p-0aeab3fc.js +4 -0
- package/dist/viewer/p-0eb195dd.entry.js +4 -0
- package/dist/viewer/p-1a7df99a.entry.js +4 -0
- package/dist/viewer/{p-f70d8def.js → p-301660cf.js} +1 -1
- package/dist/viewer/{p-a0e49d10.entry.js → p-31658489.entry.js} +1 -1
- package/dist/viewer/{p-95f3a81c.entry.js → p-353cfc7a.entry.js} +1 -1
- package/dist/viewer/p-364ce21c.js +4 -0
- package/dist/viewer/{p-a5a0bf86.js → p-3f6ac74f.js} +1 -1
- package/dist/viewer/p-423410be.js +4 -0
- package/dist/viewer/{p-6f71f0f2.js → p-439220c6.js} +1 -1
- package/dist/viewer/{p-e84ed098.entry.js → p-46459921.entry.js} +1 -1
- package/dist/viewer/{p-c23a8b34.entry.js → p-4717c98e.entry.js} +1 -1
- package/dist/viewer/p-4985fad5.js +4 -0
- package/dist/viewer/{p-ba393340.entry.js → p-61b1097b.entry.js} +1 -1
- package/dist/viewer/{p-011eecd5.entry.js → p-6370098c.entry.js} +1 -1
- package/dist/viewer/p-67446e35.js +4 -0
- package/dist/viewer/p-7006fd4e.entry.js +4 -0
- package/dist/viewer/{p-a20e4ea1.entry.js → p-70ca1ea7.entry.js} +1 -1
- package/dist/viewer/p-76ec0245.js +4 -0
- package/dist/viewer/p-7cad9bf4.js +4 -0
- package/dist/viewer/p-7f25dcb5.entry.js +4 -0
- package/dist/viewer/{p-ca6bbe53.entry.js → p-8decee06.entry.js} +1 -1
- package/dist/viewer/{p-b7ffa306.entry.js → p-915d95ad.entry.js} +1 -1
- package/dist/viewer/{p-4485ac6d.js → p-a0df0e0c.js} +1 -1
- package/dist/viewer/{p-cc9888be.entry.js → p-a455ae02.entry.js} +1 -1
- package/dist/viewer/{p-a6a8026f.js → p-acf22d3e.js} +1 -1
- package/dist/viewer/{p-653aca1b.entry.js → p-b2b48a42.entry.js} +1 -1
- package/dist/viewer/p-bc9b1e67.entry.js +4 -0
- package/dist/viewer/p-c458f191.entry.js +32 -0
- package/dist/viewer/p-cafa57a6.js +4 -0
- package/dist/viewer/p-d00e9203.js +4 -0
- package/dist/viewer/{p-3e96bd62.entry.js → p-d2bcf788.entry.js} +1 -1
- package/dist/viewer/p-d90f2f6d.entry.js +4 -0
- package/dist/viewer/p-da2f4a56.js +4 -0
- package/dist/viewer/{p-5a2e34e1.entry.js → p-e07377fa.entry.js} +1 -1
- package/dist/viewer/{p-40800e8d.entry.js → p-f755af5a.entry.js} +1 -1
- package/dist/viewer/p-f7cb7e59.js +4 -0
- package/dist/viewer/p-fad9693e.js +4 -0
- package/dist/viewer/p-fe11d694.js +4 -0
- package/dist/viewer/{p-b92a3ac2.entry.js → p-fec1a8d0.entry.js} +1 -1
- package/dist/viewer/viewer.css +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +11 -10
- package/dist/cjs/summary-7bbdb4c9.js +0 -45
- package/dist/collection/lib/measurement/summary.js +0 -38
- package/dist/esm/summary-0a3d0bf9.js +0 -43
- package/dist/types/lib/measurement/summary.d.ts +0 -11
- package/dist/viewer/p-03e482ff.js +0 -4
- package/dist/viewer/p-0c052bc8.entry.js +0 -4
- package/dist/viewer/p-148cd792.js +0 -4
- package/dist/viewer/p-26d99e2d.entry.js +0 -4
- package/dist/viewer/p-38eeacc5.js +0 -4
- package/dist/viewer/p-39d1720c.js +0 -4
- package/dist/viewer/p-5dc17b8b.js +0 -4
- package/dist/viewer/p-5fea3491.js +0 -4
- package/dist/viewer/p-6b700561.entry.js +0 -4
- package/dist/viewer/p-6cd7a6e0.js +0 -4
- package/dist/viewer/p-75337d0b.js +0 -4
- package/dist/viewer/p-b83cc8a9.js +0 -4
- package/dist/viewer/p-d2a9e047.js +0 -4
- package/dist/viewer/p-d40bd835.entry.js +0 -4
- package/dist/viewer/p-e10b1526.js +0 -4
- package/dist/viewer/p-ec8a1a68.entry.js +0 -4
- package/dist/viewer/p-f4a8c901.js +0 -4
- package/dist/viewer/p-f77dde26.entry.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,h as i,H as t}from"./p-
|
|
4
|
+
import{r as e,h as i,H as t}from"./p-cafa57a6.js";let l=class{constructor(i){e(this,i)}render(){return i(t,null,i("div",{class:"hidden"},i("slot",{name:"header"})),i("div",{class:"column"},i("slot",null)))}};l.style=":host{width:100%;height:100%;position:relative}.hidden{visibility:hidden;pointer-events:none}.column{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}";export{l as vertex_scene_tree_table_column}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{v as t}from"./p-0aba71fd.js";import{E as s,b as e}from"./p-301660cf.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,0,-a.z)),d={start:s,end:n},h=t.add(n,t.create(0,-a.y,0)),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:o,z:d,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{p as n,q as t,i as e,g as r}from"./p-0aba71fd.js";function a(r,a,s=60){const i=n.distance(r,a),f=e.normalize(e.toDegrees(e.fromPoints(r,a))-270),o=Math.max(4,Math.min(16,.25*i)),E=o/Math.cos(e.toRadians(90-s)),u=t.rotation(f),R=n.polar(E,e.toRadians(2*s)),c=n.polar(E,e.toRadians(s)),M=n.polar(o,e.toRadians(90));return{tip:a,left:n.add(a,t.transformPoint(u,R)),right:n.add(a,t.transformPoint(u,c)),base:n.add(a,t.transformPoint(u,M))}}function s(n){return[n.tip,n.right,n.base,n.left].map((n=>`${n.x},${n.y}`)).join(" ")}function i(n){return n instanceof HTMLElement&&"VERTEX-VIEWER-MARKUP-ARROW"===n.nodeName}function f(t){return"string"==typeof t?n.fromJson(t):t}function o(n){return n instanceof HTMLElement&&"VERTEX-VIEWER-MARKUP-CIRCLE"===n.nodeName}function E(n){return"string"==typeof n?r.fromJson(n):n}function u(t){return"string"==typeof t?JSON.parse(t).map((t=>n.fromJson(JSON.stringify(t)))):t}function R(n){return n instanceof HTMLElement&&"VERTEX-VIEWER-MARKUP-FREEFORM"===n.nodeName}export{o as a,R as b,a as c,s as d,E as e,u as f,i,f as p}
|
|
@@ -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,i as r,h as a,r as l,b as c,o as d,d as u}from"./p-0aba71fd.js";import{h as w,i as v,j as f,t as p,E as m,p as g,k as y,l as b,S as C,m as P,n as I,o as T,q as S,r as x,s as E,u as k,W as D}from"./p-fe11d694.js";import{E as M,m as O,c as j,o as A,u as R,a as F,b as z}from"./p-301660cf.js";import{c as N}from"./p-f482325b.js";import{p as B}from"./p-a0df0e0c.js";import{C as $}from"./p-d00e9203.js";import{g as L,c as K}from"./p-439220c6.js";import{I as W,f as V,C as q,W as U,a as H,b as G,d as J,V as _,e as X,g as Y,h as Q,i as Z,S as tt}from"./p-acf22d3e.js";import{V as it}from"./p-4985fad5.js";import"./p-112455b1.js";class st{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}=w(t),[h,o]=await Promise.all([v(new Uint8Array(i)),v(new Uint8Array(s))]);return nt.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 nt{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 nt(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 et{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 ht{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}}]`)}}class ot{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,w=a.fromNormalAndCoplanarPoint(o,u);this.panData={hitPt:u,hitPlane:w,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 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 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}),w=o.cross(u,a),v=3*Math.PI*t.x/n.width,f=3*Math.PI*t.y/n.height,p=Math.abs(v)+Math.abs(f),m=s.rotateAroundAxisAtPoint(p,this.worldRotationPoint,w);return m.update({lookAt:o.add(o.scale(s.distanceToBoundingBoxCenter()/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}}const rt=[.2,.15,.25,.25,.15];class at{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 M,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=L(t,s);rt.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 lt{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 ct extends lt{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 dt extends lt{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 ut extends lt{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=L(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 wt extends lt{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=L(t,this.canvasRect);i.panCameraToScreenPoint(s),this.currentPosition=s}}endDrag(t,i){super.endDrag(t,i)}}class vt extends lt{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 ft extends at{constructor(t,i=new ct,s=new dt,n=new ut,e=new wt,h=new vt){super("mousedown","mouseup","mousemove",i,s,n,e,h,t)}}class pt{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 mt extends pt{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 gt extends at{constructor(t){super("pointerdown","pointerup","pointermove",new ct,new dt,new ut,new wt,new vt,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 yt{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 bt extends pt{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 Ct=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 Pt(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=window.setInterval((()=>{!function(t,i){const s=t.takeMeasurements();s.length>0&&i(s)}(t,n),0===r&&null!=h&&(window.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 It;!function(t){t.DEVICE_ID="vertexvis:device-id"}(It||(It={}));class Tt extends C{constructor(t,i={}){var s,n,e;super(t,{loggingEnabled:i.loggingEnabled}),this.state={type:"disconnected"},this.stateChanged=new M,this.dimensions=u.create(0,0),this.streamAttributes={},this.frameBgColor=j.create(255,255,255),this.config=B("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=B("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:St(this.streamAttributes)}))))}async loadIfConnectingOrConnected(t,i){const{resource:s,queries:n}=i.resource,e=V(t),h=!A.isEqual(s,e.resource),o=!A.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(V(t))}catch(t){throw this.updateState(t instanceof q?{type:"connection-failed",message:`Cannot load scene. ${t.message}`,error:t}:t instanceof P?{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 R.appendPath(null!=s?R.toString(R.parseAndAddParams("/ws",{clientId:s,deviceId:n})):`/stream-keys/${i.id}/session`,R.parse(t.network.renderingHost))}(this.config,t.resource,this.clientId,this.deviceId),{url:R.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 F.abort(o.signal,F.retry((()=>this.connect(e,r)),{maxRetries:n,delaysInMs:Tt.WS_RECONNECT_DELAYS})).catch((t=>{throw new U("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=I(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=T(await this.startStream({streamKey:{value:t.resource.id},dimensions:this.dimensions,frameBackgroundColor:xt(this.frameBgColor),streamAttributes:St(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=S(await this.reconnect({streamId:{hex:t.streamId},dimensions:this.dimensions,frameBackgroundColor:xt(this.frameBgColor),streamAttributes:St(this.streamAttributes)}));return Object.assign(Object.assign({},t),{token:i.token})}async requestClock(){const t=x(await this.syncTime({requestTime:E()}));return new H(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=k(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 F.timeout(1e3*i,new Promise((i=>{s=this.onRequest((n=>{try{const e=n.request.drawFrame;if(null!=e){const s=I(t)(e);i(s)}}finally{null==s||s.dispose()}}))})))}catch(t){throw new G(`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)}}Tt.WS_RECONNECT_DELAYS=[0,1e3,1e3,5e3];const St=O.ifInvalidThrow(y),xt=O.ifInvalidThrow(b);let Et=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.keyboardControls=!0,this.rotateAroundTapPoint=!0,this.experimentalGhostingOpacity=0,this.selectionMaterial=J,this.stencilBuffer=new st(this.hostElement),this.viewport=it.fromDimensions(u.create(0,0)),this.stateMap={cursorManager:new $,streamState:{type:"disconnected"}},this.interactionHandlers=[],this.tapKeyInteractions=[],this.internalFrameDrawnDispatcher=new M,this.handleElementResize=this.handleElementResize.bind(this),this.getDeviceId()}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 Tt(new D,{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 yt("pointerdown","pointerup","pointermove",(()=>this.getResolvedConfig()));this.baseInteractionHandler=new gt((()=>this.getResolvedConfig())),this.registerInteractionHandler(this.baseInteractionHandler),this.registerInteractionHandler(new mt),this.registerInteractionHandler(t)}else{const t=new yt("mousedown","mouseup","mousemove",(()=>this.getResolvedConfig()));this.baseInteractionHandler=new ft((()=>this.getResolvedConfig())),this.registerInteractionHandler(this.baseInteractionHandler),this.registerInteractionHandler(new bt),this.registerInteractionHandler(t)}this.keyboardControls&&null!=this.stream&&(null===(i=this.baseInteractionHandler)||void 0===i||i.setDefaultKeyboardControls(this.keyboardControls),this.registerTapKeyInteraction(new et(this.stream,(()=>this.getResolvedConfig()),(()=>this.getImageScale()))),this.registerTapKeyInteraction(new ht(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;const i=this.getCanvasDimensions();return s(n,null,s("div",{class:"viewer-container",style:{cursor:K(null!==(t=this.cursor)&&void 0!==t?t:"")},onContextMenu:t=>t.preventDefault()},s("div",{ref:t=>this.containerElement=t,class:N("canvas-container",{"enable-pointer-events ":null!=window.PointerEvent})},s("canvas",{ref:t=>{this.canvasElement=t,this.stateMap.interactionTarget=t},class:"canvas",width:null!=i?i.width:0,height:null!=i?i.height:0}),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")}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 _("Cannot load scene. Viewer has not been initialized.");this.calculateComponentDimensions(),this.stream.update({streamAttributes:this.getStreamAttributes(),config:B(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.dimensions)&&!this.isResizing&&(this.isResizing=!0,window.requestAnimationFrame((()=>this.recalculateComponentDimensions())))}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=it.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=Pt(Ct,function(){let t;return async i=>{const s=i.frame.sequenceNumber,n=await(e=i.frame.image.imageBytes,null!=window.createImageBitmap?async function(t){const i=new Blob([t]),s=await window.createImageBitmap(i);return{image:s,dispose:()=>s.close()}}(e):(h=e,new Promise(((t,i)=>{const s=new Blob([h]),n=URL.createObjectURL(s),e=new Image;e.addEventListener("load",(()=>{t({image:e,dispose:()=>{}}),URL.revokeObjectURL(n)})),e.addEventListener("error",(()=>{i(new W("Failed to load image data")),URL.revokeObjectURL(n)})),e.src=n}))));var e,h;return(null==t||s>t)&&(t=s,function(t,i){const s=i.viewport.calculateDrawRect(i.frame.image);i.canvas.clearRect(0,0,i.dimensions.width,i.dimensions.height),i.canvas.drawImage(t.image,s.x,s.y,s.width,s.height)}(n,i)),n.dispose(),i.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){this.frame=t;const n={canvas:s,dimensions:i,frame:this.frame,viewport:this.viewport};this.frameReceived.emit(this.frame),this.frame.scene.hasChanged&&this.sceneChanged.emit();const e=await this.canvasRenderer(n);this.dispatchFrameDrawn(e)}}}initializeInteractionHandler(t){if(null==this.stateMap.interactionTarget)throw new X("Cannot initialize interaction handler. Interaction target is undefined.");if(null==this.interactionApi)throw new X("Cannot initialize interaction handler. Interaction APi is undefined.");t.initialize(this.stateMap.interactionTarget,this.interactionApi)}createInteractionApi(){if(null==this.stream)throw new Y("Cannot create interaction API. Component has not been initialized.");return new ot(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 Q("Cannot create scene. Viewer stream is not connected.");const{frame:t,sceneViewId:i,worldOrientation:s}=this.stateMap.streamState,n="string"==typeof this.selectionMaterial?Z(this.selectionMaterial):this.selectionMaterial;return new tt(this.getStream(),t,I(s),(()=>this.getImageScale()),i,n)}getBackgroundColor(){if(null!=this.containerElement)return function(t){const i=window.getComputedStyle(t);return j.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}}updateStreamAttributes(){var t;null===(t=this.stream)||void 0===t||t.update({streamAttributes:this.getStreamAttributes()})}getDepthBufferStreamAttributesValue(){var t;return null!==(t=this.depthBuffers)&&void 0!==t?t:this.rotateAroundTapPoint?"final":void 0}updateResolvedConfig(){this.resolvedConfig=B(this.configEnv,this.config)}getResolvedConfig(){return kt("Resolved config is undefined",(()=>this.resolvedConfig))}getStream(){return kt("Stream is undefined",(()=>this.stream))}getDeviceId(){return null==this.deviceId&&(this.deviceId=function(t,i,s=window.localStorage){const n=s.getItem(It.DEVICE_ID);if(null!=n)return i(JSON.parse(n))}(0,(t=>t["device-id"])),null==this.deviceId&&(this.deviceId=z.create(),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))}(It.DEVICE_ID,{"device-id":this.deviceId}))),this.deviceId}get hostElement(){return e(this)}static get watchers(){return{src:["handleSrcChanged"],rotateAroundTapPoint:["handleRotateAboutTapPointChanged"],depthBuffers:["handleDepthBuffersChanged"],experimentalGhostingOpacity:["handleExperimentalGhostingOpacityChanged"],featureLines:["handleFeatureLinesChanged"],featureHighlighting:["handleFeatureHighlightingChanged"],featureMaps:["handleFeatureMapsChanged"],config:["handleConfigChanged"],configEnv:["handleConfigEnvChanged"]}}};function kt(t,i){const s=i();if(null!=s)return s;throw new Error(t)}Et.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{Et as vertex_viewer}
|
|
@@ -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-
|
|
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 a,C as o,A as l}from"./p-081e6873.js";import{b as h,a as d,i as m}from"./p-7cad9bf4.js";import"./p-0aba71fd.js";import"./p-301660cf.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 a({points:t,bounds:r}))}else if(d(e)){const{bounds:t}=e;null!=t&&this.markupEnd.emit(new o({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{r as t,h as n,H as s,g as i}from"./p-
|
|
4
|
+
import{r as t,h as n,H as s,g as i}from"./p-cafa57a6.js";import{v as e,s as o,m as h,t as a}from"./p-0aba71fd.js";import"./p-fe11d694.js";import{V as r}from"./p-4985fad5.js";import"./p-301660cf.js";import"./p-112455b1.js";let l=class{constructor(n){t(this,n),this.position=e.origin(),this.positionJson="",this.quaternion=o.create(),this.quaternionJson="",this.scale=e.create(1,1,1),this.scaleJson="",this.matrix=h.makeIdentity(),this.occlusionOff=!1,this.occluded=!1,this.billboardOff=!1,this.interactionsOff=!1}handlePositionChange(){this.syncMatrix()}handlePositionJsonChanged(){this.syncPosition()}handleRotationChanged(){this.syncQuaternionWithRotation()}handleRotationJsonChanged(){this.syncRotation()}handleQuaternionChange(){this.syncMatrix()}handleQuaternionJsonChanged(){this.syncQuaternion()}handleScaleChange(){this.syncMatrix()}handleScaleJsonChanged(){this.syncScale()}connectedCallback(){this.syncProperties()}componentShouldUpdate(t,n,s){return"occluded"===s}syncProperties(){this.syncPosition(),this.syncRotation(),this.syncQuaternion(),this.syncScale(),this.syncMatrix()}syncPosition(){this.position=this.positionJson.length>0?this.parseJson("positionJson",this.positionJson,e.fromJson):this.position}syncRotation(){this.rotation=null!=this.rotationJson&&this.rotationJson.length>0?this.parseJson("rotationJson",this.rotationJson,a.fromJson):this.rotation,this.syncQuaternionWithRotation()}syncQuaternionWithRotation(){this.quaternion=null!=this.rotation?o.fromEuler(this.rotation):this.quaternion}syncQuaternion(){this.quaternion=this.quaternionJson.length>0?this.parseJson("quaternionJson",this.quaternionJson,o.fromJson):this.quaternion}syncScale(){this.scale=this.scaleJson.length>0?this.parseJson("scaleJson",this.scaleJson,e.fromJson):this.scale}syncMatrix(){this.matrix=h.makeTRS(this.position,this.quaternion,this.scale)}parseJson(t,n,s){try{return s(n)}catch(n){throw console.warn(`Could not parse \`${t}\`. Invalid JSON.`),n}}render(){return n(s,null,n("slot",null))}static get watchers(){return{position:["handlePositionChange"],positionJson:["handlePositionJsonChanged"],rotation:["handleRotationChanged"],rotationJson:["handleRotationJsonChanged"],quaternion:["handleQuaternionChange"],quaternionJson:["handleQuaternionJsonChanged"],scale:["handleScaleChange"],scaleJson:["handleScaleJsonChanged"]}}};l.style=":host{position:absolute;pointer-events:none}:host(:not([interactions-off]))>*{pointer-events:auto}";let d=class{constructor(n){t(this,n),this.position=e.origin(),this.positionJson="",this.quaternion=o.create(),this.quaternionJson="",this.scale=e.create(1,1,1),this.scaleJson="",this.matrix=h.makeIdentity()}handlePositionChange(){this.syncMatrix()}handlePositionJsonChanged(){this.syncPosition()}handleRotationChanged(){this.syncQuaternionWithRotation()}handleRotationJsonChanged(){this.syncRotation()}handleQuaternionChange(){this.syncMatrix()}handleQuaternionJsonChanged(){this.syncQuaternion()}handleScaleChange(){this.syncMatrix()}handleScaleJsonChanged(){this.syncScale()}componentWillLoad(){this.syncProperties()}componentShouldUpdate(){return!1}syncProperties(){this.syncPosition(),this.syncRotation(),this.syncQuaternion(),this.syncScale(),this.syncMatrix()}syncPosition(){this.position=this.positionJson.length>0?this.parseJson("positionJson",this.positionJson,e.fromJson):this.position}syncRotation(){this.rotation=null!=this.rotationJson&&this.rotationJson.length>0?this.parseJson("rotationJson",this.rotationJson,a.fromJson):this.rotation,this.syncQuaternionWithRotation()}syncQuaternionWithRotation(){this.quaternion=null!=this.rotation?o.fromEuler(this.rotation):this.quaternion}syncQuaternion(){this.quaternion=this.quaternionJson.length>0?this.parseJson("quaternionJson",this.quaternionJson,o.fromJson):this.quaternion}syncScale(){this.scale=this.scaleJson.length>0?this.parseJson("scaleJson",this.scaleJson,e.fromJson):this.scale}syncMatrix(){this.matrix=h.makeTRS(this.position,this.quaternion,this.scale)}parseJson(t,n,s){try{return s(n)}catch(n){throw console.warn(`Could not parse \`${t}\`. Invalid JSON.`),n}}render(){return n(s,null,n("slot",null))}static get watchers(){return{position:["handlePositionChange"],positionJson:["handlePositionJsonChanged"],rotation:["handleRotationChanged"],rotationJson:["handleRotationJsonChanged"],quaternion:["handleQuaternionChange"],quaternionJson:["handleQuaternionJsonChanged"],scale:["handleScaleChange"],scaleJson:["handleScaleJsonChanged"]}}};function c(t){return t instanceof HTMLElement&&"VERTEX-VIEWER-DOM-ELEMENT"===t.nodeName}function u(t){return t instanceof HTMLElement&&"VERTEX-VIEWER-DOM-GROUP"===t.nodeName}d.style=":host{display:block;transform-style:preserve-3d}";const p=(t,s)=>n("div",{class:"root-2d"},s);function g(t,n,s,i,e){const o=m(t,n,i).sort(((t,n)=>t.distanceToCamera-n.distanceToCamera));for(let t=0;t<o.length;t++){const{element:n,worldMatrix:h,worldPosition:a}=o[t],r=!n.occlusionOff&&(null==e?void 0:e.isOccluded(a,s));n.occluded=null!=r&&r,C(n,v(a,i.projectionViewMatrix,s)),f(n,t,o.length),g(n,h,s,i,e)}}function m(t,n,s){const i=[];for(let o=0;o<t.children.length;o++){const a=t.children[o];if(u(a)){const t=h.multiply(n,a.matrix);i.push(...m(a,t,s))}else if(c(a)){const t=h.multiply(n,a.matrix),o=e.fromMatrixPosition(t),r=e.distanceSquared(s.position,o);i.push({element:a,worldMatrix:t,worldPosition:o,distanceToCamera:r})}}return i}function C(t,n){t.style.transform=["translate(-50%, -50%)",`translate(${n.x}px, ${n.y}px)`].join(" ")}function f(t,n,s){t.style.zIndex=""+(s-n)}function v(t,n,s){const i=e.transformMatrix(t,n);return s.transformVectorToViewport(i)}const J=({camera:t,viewport:s},i)=>{const e=h.toObject(t.projectionMatrix).m22*(s.height/2),o=[`translateZ(${e}px)`,(a=t.viewMatrix,`matrix3d(${[x(a[0]),x(-a[1]),x(a[2]),x(a[3]),x(a[4]),x(-a[5]),x(a[6]),x(a[7]),x(a[8]),x(-a[9]),x(a[10]),x(a[11]),x(a[12]),x(-a[13]),x(a[14]),x(a[15])].join(", ")})`),`translate(${s.width/2}px, ${s.height/2}px)`].join(" ");var a;return n("div",{class:"root-3d",style:{perspective:`${e}px`}},n("div",{class:"camera",style:{transform:o}},i))};function w(t,n,s,i,e){for(let o=0;o<t.children.length;o++){const h=t.children[o];c(h)?y(h,n,s,i,e):u(h)&&R(h,n,s,i,e)}}function y(t,n,s,i,o){const a=h.multiply(n,t.matrix),r=e.fromMatrixPosition(a),l=!t.occlusionOff&&(null==o?void 0:o.isOccluded(r,s));if(t.occluded=null!=l&&l,t.billboardOff)t.style.transform=P(a);else{let n=i.viewMatrix;n=h.transpose(n),n=h.position(n,a),n=h.scale(n,t.scale),n[3]=0,n[7]=0,n[11]=0,n[15]=1,t.style.transform=P(n)}w(t,a,s,i,o)}function R(t,n,s,i,e){w(t,h.multiply(n,t.matrix),s,i,e)}function P(t){return["translate(-50%, -50%)",`matrix3d(${[x(t[0]),x(t[1]),x(t[2]),x(t[3]),x(-t[4]),x(-t[5]),x(-t[6]),x(-t[7]),x(t[8]),x(t[9]),x(t[10]),x(t[11]),x(t[12]),x(t[13]),x(t[14]),x(t[15])].join(", ")})`].join(" ")}function x(t){return Math.abs(t)<1e-10?0:t}let E=class{constructor(n){t(this,n),this.drawMode="3d",this.viewport=new r(0,0),this.invalidateFrameCounter=0,this.handleViewerFrameDrawn=async()=>{this.updatePropsFromViewer()}}componentWillLoad(){new ResizeObserver((()=>this.handleResize())).observe(this.hostEl),new MutationObserver((()=>this.handleChildrenChange())).observe(this.hostEl,{childList:!0}),this.handleViewerChange(this.viewer,void 0)}render(){return null!=this.camera?n(s,null,"2d"===this.drawMode?n(p,null,n("slot",null)):n(J,{camera:this.camera,viewport:this.viewport},n("slot",null))):n(s,null)}componentDidRender(){this.updateElements()}handleViewerChange(t,n){null==n||n.removeEventListener("frameDrawn",this.handleViewerFrameDrawn),null==t||t.addEventListener("frameDrawn",this.handleViewerFrameDrawn)}handlePropertyChange(){this.invalidateFrame()}invalidateFrame(){this.invalidateFrameCounter=this.invalidateFrameCounter+1}async updateElements(){const{viewport:t,camera:n}=this,s=h.makeIdentity();null!=n&&("3d"===this.drawMode?w(this.hostEl,s,t,n,this.depthBuffer):g(this.hostEl,s,t,n,this.depthBuffer))}handleResize(){const t=this.hostEl.getBoundingClientRect();this.viewport=new r(t.width,t.height)}handleChildrenChange(){this.invalidateFrame()}async updatePropsFromViewer(){var t;const{frame:n,depthBuffers:s}=this.viewer||{};this.depthBuffer="all"===s?await(null==n?void 0:n.depthBuffer()):void 0,this.camera=null===(t=null==n?void 0:n.scene)||void 0===t?void 0:t.camera}get hostEl(){return i(this)}static get watchers(){return{viewer:["handleViewerChange"]}}};E.style=":host{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}.root-3d{width:100%;height:100%;pointer-events:inherit}.camera{transform-style:preserve-3d;pointer-events:inherit;width:100%;height:100%}";export{l as vertex_viewer_dom_element,d as vertex_viewer_dom_group,E as vertex_viewer_dom_renderer}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{o as e}from"./p-
|
|
4
|
+
import{o as e}from"./p-301660cf.js";import"./p-fe11d694.js";const t={network:{apiHost:"https://platform.platprod.vertexvis.io",renderingHost:"wss://stream.platprod.vertexvis.io",sceneTreeHost:"https://scene-trees.platprod.vertexvis.io",sceneViewHost:"https://scenes.platprod.vertexvis.io"},flags:{throttleFrameDelivery:!0,adaptiveRendering:!0,logWsMessages:!1,logFrameRate:!1,letterboxFrames:!1},events:{doubleTapThreshold:500,longPressThreshold:500},animation:{durationMs:500},interactions:{finePointerThreshold:1,coarsePointerThreshold:3,interactionDelay:75},EXPERIMENTAL_frameDelivery:{},EXPERIMENTAL_adaptiveRendering:{},EXPERIMENTAL_qualityOfService:{}},s=Object.assign(Object.assign({},t),{network:{apiHost:"https://platform.platdev.vertexvis.io",renderingHost:"wss://stream.platdev.vertexvis.io",sceneTreeHost:"https://scene-trees.platdev.vertexvis.io",sceneViewHost:"https://scenes.platdev.vertexvis.io"}}),r=Object.assign(Object.assign({},t),{network:{apiHost:"https://platform.platstaging.vertexvis.io",renderingHost:"wss://stream.platstaging.vertexvis.io",sceneTreeHost:"https://scene-trees.platstaging.vertexvis.io",sceneViewHost:"https://scenes.platstaging.vertexvis.io"}});function i(e){switch(e){case"platdev":return s;case"platstaging":return r;default:return t}}function o(t="platprod",s){"string"==typeof s&&(s=JSON.parse(s));const r=i(t);return null==s?r:e.defaults(Object.assign({},s),r)}export{o as p}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r,h as o}from"./p-
|
|
4
|
+
import{r,h as o}from"./p-cafa57a6.js";let t=class{constructor(o){r(this,o),this.placement="bottom-center",this.direction="horizontal",this.animationsDisabled=!1,this.animationMs=1e3}render(){return o("vertex-viewer-toolbar",{placement:this.placement,direction:this.direction},o("vertex-viewer-toolbar-group",{class:"group",direction:this.direction,"data-direction":this.direction},o("vertex-viewer-button",{class:"group-item btn","data-test-id":"fit-all-btn",onClick:()=>this.viewAll()},o("vertex-viewer-icon",{class:"icon",name:"fit-all",size:"md"}))))}async viewAll(){var r;const o=await(null===(r=this.viewer)||void 0===r?void 0:r.scene()),t=this.animationsDisabled?void 0:{milliseconds:this.animationMs};null==o||o.camera().viewAll().render({animation:t})}};t.style=":host{--viewer-toolbar-group-gap:0.5rem;--viewer-toolbar-group-background:rgba(245, 245, 245, 0.95);--viewer-toolbar-group-border-radius:0.25rem;--viewer-toolbar-group-box-shadow:-1px 0 2px rgba(0, 0, 0, 0.12),\n 1px 0 2px rgba(0, 0, 0, 0.13);--viewer-toolbar-group-padding:0.25rem;--viewer-toolbar-group-item-gap:0.25rem}.group{background:var(--viewer-toolbar-group-background);border-radius:var(--viewer-toolbar-group-border-radius);box-shadow:var(--viewer-toolbar-group-box-shadow);padding:var(--viewer-toolbar-group-padding)}.group[data-direction='horizontal']:not(:first-child){margin-left:var(--viewer-toolbar-group-gap)}.group[data-direction='horizontal'] .group-item:not(:first-child){margin-left:var(--viewer-toolbar-group-item-gap)}.group[data-direction='vertical']:not(:first-child){margin-top:var(--viewer-toolbar-group-gap)}.group[data-direction='vertical'] .group-item:not(:first-child){margin-top:var(--viewer-toolbar-group-item-gap)}.btn{color:var(--neutral-800);padding:0.125rem;border-radius:0.125rem}.btn:hover{background:var(--neutral-300)}";export{t as vertex_viewer_default_toolbar}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{c as t,u as e,a as s,b as i}from"./p-f70d8def.js";import{v as r,b as n,p as a,d as o}from"./p-784914e4.js";import{v as u,t as h,c,f as l}from"./p-d2a9e047.js";const d={opacity:100,glossiness:10,diffuse:{r:0,g:0,b:0,a:0},ambient:{r:0,g:0,b:0,a:0},specular:{r:0,g:0,b:0,a:0},emissive:{r:0,g:0,b:0,a:0}},p=(e,s)=>{const i=t.fromHexString(e);return Object.assign(Object.assign({},d),{opacity:s||100,glossiness:s||10,diffuse:Object.assign({},null!=i?i:d.diffuse)})},w={opacity:100,glossiness:4,diffuse:{r:255,g:255,b:0,a:0},ambient:{r:0,g:0,b:0,a:0},specular:{r:255,g:255,b:255,a:0},emissive:{r:0,g:0,b:0,a:0}},v=Object.freeze({__proto__:null,create:(t,e,s,i)=>Object.assign(Object.assign({},d),{opacity:i||100,glossiness:i||10,diffuse:{r:t,g:e,b:s,a:0}}),fromHex:p,defaultSelectionMaterial:w});class m extends Error{constructor(t,e){super(),this.message=t,this.stack=null==e?void 0:e.stack,this.name=this.constructor.name,Object.setPrototypeOf(this,m.prototype)}}class y extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,y.prototype)}}class f extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,f.prototype)}}class b extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,b.prototype)}}class g extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,g.prototype)}}class x extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,x.prototype)}}class I extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,I.prototype)}}class O extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,O.prototype)}}class j extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,j.prototype)}}class T extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,T.prototype)}}function k(t){const s=e.parse(t);if("urn"!==s.scheme||null==s.path)throw new Error("Invalid URN. Expected URN scheme.");const[i,r,n]=s.path.split(":");if("vertexvis"!==i)throw new Error("Invalid URN. Expected URN to be vertexvis namespace");switch(r){case"stream-key":return{resource:{type:"stream-key",id:n},queries:(a=s.query,null!=a?a.split("&").map((t=>{const[e,s]=t.split("=");switch(e){case"scene-view-state":return{type:"scene-view-state",id:s};default:throw new Error("Invalid URN. Unknown query resource type")}})):[])};default:throw new y(`Invalid URN. Unknown resource type ${r}`)}var a}const S=Object.freeze({__proto__:null,fromUrn:k});class A{constructor(t,e=new Date){this.knownRemoteTime=t,this.knownLocalTime=e}localOffset(){return this.duration(this.knownLocalTime,this.localNow())}localTime(t){const e="number"==typeof t?new Date(this.knownLocalTime.getTime()+t):t,s=this.duration(this.knownRemoteTime,e);return this.addDuration(this.knownLocalTime,s)}remoteOffset(t=new Date){return this.duration(this.remoteTime(this.knownLocalTime),this.remoteTime(t))}remoteNow(){return this.remoteTime(this.localNow())}remoteTime(t){const e="number"==typeof t?new Date(this.knownLocalTime.getTime()+t):t,s=this.duration(this.knownLocalTime,e);return this.addDuration(this.knownRemoteTime,s)}addDuration(t,e){return new Date(t.getTime()+e)}duration(t,e){return e.getTime()-t.getTime()}localNow(){return new Date(Date.now())}}class M{constructor(t,e,s,i=1e4){this.stream=t,this.predicate=e,this.transform=s,this.timeout=i,this.listeners=[],this.handleMessage=this.handleMessage.bind(this)}on(t){this.listeners=[...this.listeners,t],null!=this.eventDisposable&&null!=this.requestDisposable||this.addListeners()}off(t){this.listeners=this.listeners.filter((e=>e!==t)),0===this.listeners.length&&this.removeListeners()}once(){let t;return s.timeout(this.timeout,new Promise((e=>{t=s=>{e(s),this.off(t)},this.on(t)}))).finally((()=>{this.off(t)}))}handleMessage(t){if(this.predicate(t)){const e=this.transform(t);null!=e&&this.listeners.forEach((t=>t(e)))}}addListeners(){this.eventDisposable=this.stream.onEvent(this.handleMessage),this.requestDisposable=this.stream.onRequest(this.handleMessage)}removeListeners(){var t,e;null===(t=this.eventDisposable)||void 0===t||t.dispose(),null===(e=this.requestDisposable)||void 0===e||e.dispose()}}class C{constructor(t,e,{animationId:s,correlationId:i},r){this.data=void 0,this.onAnimationCompleted=new M(t,(t=>{var e,i,r;return(null===(r=null===(i=null===(e=t.event)||void 0===e?void 0:e.animationCompleted)||void 0===i?void 0:i.animationId)||void 0===r?void 0:r.hex)===s}),(t=>{var e,s,i;return(null===(i=null===(s=null===(e=t.event)||void 0===e?void 0:e.animationCompleted)||void 0===s?void 0:s.animationId)||void 0===i?void 0:i.hex)||void 0}),r),this.onFrameReceived=new M(t,(t=>{var e,s,r;return!!(null===(r=null===(s=null===(e=t.request)||void 0===e?void 0:e.drawFrame)||void 0===s?void 0:s.frameCorrelationIds)||void 0===r?void 0:r.some((t=>t===i)))}),(t=>{var s;return null!=(null===(s=t.request)||void 0===s?void 0:s.drawFrame)?e(t.request.drawFrame):void 0}),r)}}function B(t){switch(t.type){case"item-id":return{id:new u.protobuf.core.Uuid({hex:t.value})};case"supplied-id":return{suppliedId:t.value};default:return{}}}class R{constructor(t){this.flyToOptions=t}build(){return this.flyToOptions}}class U{withItemId(t){return new R({flyTo:{type:"internal",data:t}})}withSuppliedId(t){return new R({flyTo:{type:"supplied",data:t}})}withCamera(t){return new R({flyTo:{type:"camera",data:t}})}withBoundingBox(t){return new R({flyTo:{type:"bounding-box",data:t}})}build(){return this.flyToOptions}}class D{constructor(t,e,s,i,r){this.stream=t,this.aspect=e,this.data=s,this.boundingBox=i,this.decodeFrame=r}fitToBoundingBox(t){const e=1.1*r.magnitude(r.subtract(t.max,n.center(t)));let s=Math.tan(.008726646259972*this.fovY);this.aspectRatio<1&&(s*=this.aspectRatio);const i=Math.abs(e/s),a=r.scale(i,r.normalize(this.viewVector())),o=n.center(t),u=r.subtract(o,a);return this.update({lookAt:o,position:u})}distanceToBoundingBoxCenter(t){const e=n.center(t||this.boundingBox),s=r.subtract(this.position,e);return Math.abs(r.dot(r.subtract(this.lookAt,this.position),s))/r.magnitude(r.subtract(this.lookAt,this.position))}flyTo(t){return"function"!=typeof t?(this.flyToOptions={flyTo:this.buildFlyToType(t)},this):(this.flyToOptions=t(new U).build(),this)}moveBy(t){return this.update({position:r.add(this.position,t),lookAt:r.add(this.lookAt,t)})}viewAll(){return this.fitToBoundingBox(this.boundingBox)}async render(t){var e,s,r;null==this.flyToOptions&&null!=t&&(this.flyToOptions={flyTo:{type:"camera",data:this.data}});try{const n=i.create();if(null!=this.flyToOptions){const i=function(t,e,s){const i={frameCorrelationId:{value:t},animation:s?{duration:h(s.milliseconds)}:void 0};switch(e.flyTo.type){case"supplied":return Object.assign(Object.assign({},i),{itemSuppliedId:e.flyTo.data});case"internal":return Object.assign(Object.assign({},i),{itemId:new u.protobuf.core.Uuid({hex:e.flyTo.data})});case"camera":return Object.assign(Object.assign({},i),{camera:e.flyTo.data});case"bounding-box":return Object.assign(Object.assign({},i),{boundingBox:{xmin:e.flyTo.data.min.x,xmax:e.flyTo.data.max.x,ymin:e.flyTo.data.min.y,ymax:e.flyTo.data.max.y,zmin:e.flyTo.data.min.z,zmax:e.flyTo.data.max.z}});default:return{}}}(n,this.flyToOptions,null==t?void 0:t.animation),a=await this.stream.flyTo(i,!0);return new C(this.stream,this.decodeFrame,{correlationId:n,animationId:(null===(s=null===(e=a.flyTo)||void 0===e?void 0:e.animationId)||void 0===s?void 0:s.hex)||void 0},null!=(null===(r=null==t?void 0:t.animation)||void 0===r?void 0:r.milliseconds)?t.animation.milliseconds+1e4:void 0)}return this.stream.replaceCamera({camera:this.data,frameCorrelationId:{value:n}}),new C(this.stream,this.decodeFrame,{correlationId:n})}catch(t){throw console.warn("Error when performing render: ",t),t}}rotateAroundAxis(t,e){return this.rotateAroundAxisAtPoint(t,this.lookAt,e)}rotateAroundAxisAtPoint(t,e,s){return this.update({position:r.rotateAboutAxis(t,this.position,s,e),lookAt:r.rotateAboutAxis(t,this.lookAt,s,e),up:r.rotateAboutAxis(t,this.up,s,r.origin())})}standardView(t){return this.update({position:t.position,lookAt:r.origin(),up:t.up})}update(t){return new D(this.stream,this.aspectRatio,Object.assign(Object.assign({},this.data),t),this.boundingBox,this.decodeFrame)}toFrameCamera(){return new c(this.position,this.lookAt,this.up,this.near,this.far,this.aspectRatio,this.fovY)}buildFlyToType(t){if(null!=t.boundingBox)return{type:"bounding-box",data:t.boundingBox};if(null!=t.camera)return{type:"camera",data:t.camera};if(null!=t.itemId)return{type:"internal",data:t.itemId};if(null!=t.itemSuppliedId)return{type:"supplied",data:t.itemSuppliedId};throw new Error("Fly to must specify at least one option.")}computeClippingPlanes(t){return l(this.boundingBox,t)}viewVector(){return r.subtract(this.lookAt,this.position)}get position(){return Object.assign({},this.data.position)}get up(){return Object.assign({},this.data.up)}get lookAt(){return Object.assign({},this.data.lookAt)}get fovY(){return 45}get aspectRatio(){return this.aspect}get near(){const{near:t}=this.computeClippingPlanes(this.data);return t}get far(){const{far:t}=this.computeClippingPlanes(this.data);return t}}class E{constructor(t,e){this.stream=t,this.imageScaleProvider=e}async hitItems(t,e){const s=this.imageScaleProvider();return(await this.stream.hitItems({point:a.scale(t,(null==s?void 0:s.x)||1,(null==s?void 0:s.y)||1),includeMetadata:null==e?void 0:e.includeMetadata},!0)).hitItems||void 0}}class N{constructor(t,e){this.stream=t,this.data=e}async update(t){return(await this.stream.updateCrossSectioning({crossSectioning:t},!0)).updateCrossSectioning||void 0}current(){return this.data}}class V{constructor(t=[]){this.operations=t}build(){return this.operations.concat()}materialOverride(t){return new V(this.operations.concat([{type:"change-material",material:t}]))}show(){return new V(this.operations.concat([{type:"show"}]))}hide(){return new V(this.operations.concat([{type:"hide"}]))}select(t){return new V(this.operations.concat([{type:"select",material:t}]))}deselect(){return new V(this.operations.concat([{type:"deselect"}]))}clearMaterialOverrides(){return new V(this.operations.concat([{type:"clear-override"}]))}transform(t){return new V(this.operations.concat([{type:"change-transform",transform:t}]))}}class _{all(){return new z}withItemIds(t){return new L(t,"item-id")}withSuppliedIds(t){return new L(t,"supplied-id")}withItemId(t){return new Q({type:"item-id",value:t})}withSuppliedId(t){return new Q({type:"supplied-id",value:t})}withSceneTreeRange(t){return new q(t)}withMetadata(t,e){return new F(t,e)}withSelected(){return new P}}class z{build(){return{type:"all"}}}class q{constructor(t){this.range=t}build(){return{type:"scene-tree-range",range:this.range}}}class F{constructor(t,e){this.filter=t,this.keys=e}build(){return{type:"metadata",filter:this.filter,keys:this.keys}}}class P{build(){return{type:"all-selected"}}}class L{constructor(t,e){this.ids=t,this.type=e}build(){return{type:"or",expressions:this.ids.map((t=>({type:this.type,value:t})))}}}class Q{constructor(t){this.query=t}build(){return Object.assign({},this.query)}and(){return new W([this.query])}or(){return new H([this.query])}}class H{constructor(t){this.expressions=t}build(){return{type:"or",expressions:[...this.expressions]}}withItemId(t){return new H([...this.expressions,{type:"item-id",value:t}])}withSuppliedId(t){return new H([...this.expressions,{type:"supplied-id",value:t}])}or(){return this}}class W{constructor(t){this.expressions=t}build(){return{type:"and",expressions:[...this.expressions]}}withItemId(t){return new W([...this.expressions,{type:"item-id",value:t}])}withSuppliedId(t){return new W([...this.expressions,{type:"supplied-id",value:t}])}and(){return this}}class Y{constructor(t){this.defaultSelectionMaterial=t}where(t){const e=t(new _).build();return new $(e,this.defaultSelectionMaterial)}}class ${constructor(t,e,s){this.query=t,this.defaultSelectionMaterial=e,this.builder=null!=s?s:new V}materialOverride(t){return new $(this.query,this.defaultSelectionMaterial,this.builder.materialOverride("string"==typeof t?p(t):t))}hide(){return new $(this.query,this.defaultSelectionMaterial,this.builder.hide())}show(){return new $(this.query,this.defaultSelectionMaterial,this.builder.show())}select(t){return new $(this.query,this.defaultSelectionMaterial,this.builder.select("string"==typeof t?p(t):t||this.defaultSelectionMaterial))}deselect(){return new $(this.query,this.defaultSelectionMaterial,this.builder.deselect())}clearMaterialOverrides(){return new $(this.query,this.defaultSelectionMaterial,this.builder.clearMaterialOverrides())}transform(t){if(Array.isArray(t)){if(16!==t.length)throw new T("Matrix provided must contain exactly 16 values (4x4).");return new $(this.query,this.defaultSelectionMaterial,this.builder.transform({r0:{x:t[0],y:t[1],z:t[2],w:t[3]},r1:{x:t[4],y:t[5],z:t[6],w:t[7]},r2:{x:t[8],y:t[9],z:t[10],w:t[11]},r3:{x:t[12],y:t[13],z:t[14],w:t[15]}}))}return new $(this.query,this.defaultSelectionMaterial,this.builder.transform(t))}build(){return{query:this.query,operations:this.builder.build()}}}class G{constructor(t,e,s){this.sceneViewId=t,this.stream=e,this.queryOperations=s}async execute(t){const e=this.queryOperations.map((t=>function(t,e){const s=function(t){return t.map((t=>{switch(t.type){case"change-material":return{changeMaterial:{material:{d:t.material.opacity,ns:t.material.glossiness,ka:t.material.ambient,kd:t.material.diffuse,ks:t.material.specular,ke:t.material.emissive}}};case"clear-override":return{changeMaterial:{}};case"change-transform":return{changeTransform:{transform:Object.assign({},t.transform)}};case"hide":return{changeVisibility:{visible:!1}};case"show":return{changeVisibility:{visible:!0}};case"select":return{changeSelection:{material:{d:t.material.opacity,ns:t.material.glossiness,ka:t.material.ambient,kd:t.material.diffuse,ks:t.material.specular,ke:t.material.emissive}}};case"deselect":return{changeSelection:{}};default:return{}}}))}(e);switch(t.type){case"and":case"or":return{[t.type]:{queries:t.expressions.map((t=>({sceneItemQuery:B(t)})))},operationTypes:s};case"item-id":case"supplied-id":return{item:{sceneItemQuery:B(t)},operationTypes:s};case"all":return{all:{},operationTypes:s};case"scene-tree-range":return{sceneTreeRange:{start:t.range.start,end:t.range.end},operationTypes:s};case"metadata":return{metadata:{valueFilter:t.filter,keys:t.keys},operationTypes:s};case"all-selected":return{override:{selection:{}},operationTypes:s};default:return{}}}(t.query,t.operations))),s={sceneViewId:{hex:this.sceneViewId},operations:e,suppliedCorrelationId:null!=(null==t?void 0:t.suppliedCorrelationId)?{value:null==t?void 0:t.suppliedCorrelationId}:void 0};await this.stream.createSceneAlteration(s)}}class J{constructor(t,e,s,i,r,n){this.stream=t,this.frame=e,this.decodeFrame=s,this.imageScaleProvider=i,this.sceneViewId=r,this.defaultSelectionMaterial=n}async applySceneViewState(t,e={}){return await this.stream.loadSceneViewState({sceneViewStateId:{hex:t},frameCorrelationId:e.suppliedCorrelationId?{value:e.suppliedCorrelationId}:void 0},!0)}async reset(t={}){return await this.stream.resetSceneView({includeCamera:t.includeCamera,frameCorrelationId:t.suppliedCorrelationId?{value:t.suppliedCorrelationId}:void 0},!0)}items(t){const e=t(new Y(this.defaultSelectionMaterial)),s=(Array.isArray(e)?e:[e]).reduce(((t,e)=>t.concat(e.build())),[]);return new G(this.sceneViewId,this.stream,s)}camera(){const{scene:t}=this.frame,e={position:t.camera.position,lookAt:t.camera.lookAt,up:t.camera.up};return new D(this.stream,o.aspectRatio(this.viewport()),e,this.frame.scene.boundingBox,this.decodeFrame)}boundingBox(){return this.frame.scene.boundingBox}crossSectioning(){return new N(this.stream,this.frame.scene.crossSection)}raycaster(){return new E(this.stream,this.imageScaleProvider)}viewport(){return this.frame.dimensions}scale(){return this.imageScaleProvider()||a.create(1,1)}}export{m as C,O as I,J as S,f as V,x as W,A as a,g as b,v as c,w as d,I as e,k as f,b as g,j as h,p as i,S as l}
|
|
4
|
+
import{c as t,u as e,a as s,b as i}from"./p-301660cf.js";import{v as r,b as n,p as a,d as o}from"./p-0aba71fd.js";import{v as u,t as h,c,f as l}from"./p-fe11d694.js";const d={opacity:100,glossiness:10,diffuse:{r:0,g:0,b:0,a:0},ambient:{r:0,g:0,b:0,a:0},specular:{r:0,g:0,b:0,a:0},emissive:{r:0,g:0,b:0,a:0}},p=(e,s)=>{const i=t.fromHexString(e);return Object.assign(Object.assign({},d),{opacity:s||100,glossiness:s||10,diffuse:Object.assign({},null!=i?i:d.diffuse)})},w={opacity:100,glossiness:4,diffuse:{r:255,g:255,b:0,a:0},ambient:{r:0,g:0,b:0,a:0},specular:{r:255,g:255,b:255,a:0},emissive:{r:0,g:0,b:0,a:0}},v=Object.freeze({__proto__:null,create:(t,e,s,i)=>Object.assign(Object.assign({},d),{opacity:i||100,glossiness:i||10,diffuse:{r:t,g:e,b:s,a:0}}),fromHex:p,defaultSelectionMaterial:w});class m extends Error{constructor(t,e){super(),this.message=t,this.stack=null==e?void 0:e.stack,this.name=this.constructor.name,Object.setPrototypeOf(this,m.prototype)}}class y extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,y.prototype)}}class f extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,f.prototype)}}class b extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,b.prototype)}}class g extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,g.prototype)}}class x extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,x.prototype)}}class I extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,I.prototype)}}class O extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,O.prototype)}}class j extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,j.prototype)}}class T extends m{constructor(t,e){super(t,e),Object.setPrototypeOf(this,T.prototype)}}function k(t){const s=e.parse(t);if("urn"!==s.scheme||null==s.path)throw new Error("Invalid URN. Expected URN scheme.");const[i,r,n]=s.path.split(":");if("vertexvis"!==i)throw new Error("Invalid URN. Expected URN to be vertexvis namespace");switch(r){case"stream-key":return{resource:{type:"stream-key",id:n},queries:(a=s.query,null!=a?a.split("&").map((t=>{const[e,s]=t.split("=");switch(e){case"scene-view-state":return{type:"scene-view-state",id:s};default:throw new Error("Invalid URN. Unknown query resource type")}})):[])};default:throw new y(`Invalid URN. Unknown resource type ${r}`)}var a}const S=Object.freeze({__proto__:null,fromUrn:k});class A{constructor(t,e=new Date){this.knownRemoteTime=t,this.knownLocalTime=e}localOffset(){return this.duration(this.knownLocalTime,this.localNow())}localTime(t){const e="number"==typeof t?new Date(this.knownLocalTime.getTime()+t):t,s=this.duration(this.knownRemoteTime,e);return this.addDuration(this.knownLocalTime,s)}remoteOffset(t=new Date){return this.duration(this.remoteTime(this.knownLocalTime),this.remoteTime(t))}remoteNow(){return this.remoteTime(this.localNow())}remoteTime(t){const e="number"==typeof t?new Date(this.knownLocalTime.getTime()+t):t,s=this.duration(this.knownLocalTime,e);return this.addDuration(this.knownRemoteTime,s)}addDuration(t,e){return new Date(t.getTime()+e)}duration(t,e){return e.getTime()-t.getTime()}localNow(){return new Date(Date.now())}}class M{constructor(t,e,s,i=1e4){this.stream=t,this.predicate=e,this.transform=s,this.timeout=i,this.listeners=[],this.handleMessage=this.handleMessage.bind(this)}on(t){this.listeners=[...this.listeners,t],null!=this.eventDisposable&&null!=this.requestDisposable||this.addListeners()}off(t){this.listeners=this.listeners.filter((e=>e!==t)),0===this.listeners.length&&this.removeListeners()}once(){let t;return s.timeout(this.timeout,new Promise((e=>{t=s=>{e(s),this.off(t)},this.on(t)}))).finally((()=>{this.off(t)}))}handleMessage(t){if(this.predicate(t)){const e=this.transform(t);null!=e&&this.listeners.forEach((t=>t(e)))}}addListeners(){this.eventDisposable=this.stream.onEvent(this.handleMessage),this.requestDisposable=this.stream.onRequest(this.handleMessage)}removeListeners(){var t,e;null===(t=this.eventDisposable)||void 0===t||t.dispose(),null===(e=this.requestDisposable)||void 0===e||e.dispose()}}class C{constructor(t,e,{animationId:s,correlationId:i},r){this.data=void 0,this.onAnimationCompleted=new M(t,(t=>{var e,i,r;return(null===(r=null===(i=null===(e=t.event)||void 0===e?void 0:e.animationCompleted)||void 0===i?void 0:i.animationId)||void 0===r?void 0:r.hex)===s}),(t=>{var e,s,i;return(null===(i=null===(s=null===(e=t.event)||void 0===e?void 0:e.animationCompleted)||void 0===s?void 0:s.animationId)||void 0===i?void 0:i.hex)||void 0}),r),this.onFrameReceived=new M(t,(t=>{var e,s,r;return!!(null===(r=null===(s=null===(e=t.request)||void 0===e?void 0:e.drawFrame)||void 0===s?void 0:s.frameCorrelationIds)||void 0===r?void 0:r.some((t=>t===i)))}),(t=>{var s;return null!=(null===(s=t.request)||void 0===s?void 0:s.drawFrame)?e(t.request.drawFrame):void 0}),r)}}function B(t){switch(t.type){case"item-id":return{id:new u.protobuf.core.Uuid({hex:t.value})};case"supplied-id":return{suppliedId:t.value};default:return{}}}class R{constructor(t){this.flyToOptions=t}build(){return this.flyToOptions}}class U{withItemId(t){return new R({flyTo:{type:"internal",data:t}})}withSuppliedId(t){return new R({flyTo:{type:"supplied",data:t}})}withCamera(t){return new R({flyTo:{type:"camera",data:t}})}withBoundingBox(t){return new R({flyTo:{type:"bounding-box",data:t}})}build(){return this.flyToOptions}}class D{constructor(t,e,s,i,r){this.stream=t,this.aspect=e,this.data=s,this.boundingBox=i,this.decodeFrame=r}fitToBoundingBox(t){const e=1.1*r.magnitude(r.subtract(t.max,n.center(t)));let s=Math.tan(.008726646259972*this.fovY);this.aspectRatio<1&&(s*=this.aspectRatio);const i=Math.abs(e/s),a=r.scale(i,r.normalize(this.viewVector())),o=n.center(t),u=r.subtract(o,a);return this.update({lookAt:o,position:u})}distanceToBoundingBoxCenter(t){const e=n.center(t||this.boundingBox),s=r.subtract(this.position,e);return Math.abs(r.dot(r.subtract(this.lookAt,this.position),s))/r.magnitude(r.subtract(this.lookAt,this.position))}flyTo(t){return"function"!=typeof t?(this.flyToOptions={flyTo:this.buildFlyToType(t)},this):(this.flyToOptions=t(new U).build(),this)}moveBy(t){return this.update({position:r.add(this.position,t),lookAt:r.add(this.lookAt,t)})}viewAll(){return this.fitToBoundingBox(this.boundingBox)}async render(t){var e,s,r;null==this.flyToOptions&&null!=t&&(this.flyToOptions={flyTo:{type:"camera",data:this.data}});try{const n=i.create();if(null!=this.flyToOptions){const i=function(t,e,s){const i={frameCorrelationId:{value:t},animation:s?{duration:h(s.milliseconds)}:void 0};switch(e.flyTo.type){case"supplied":return Object.assign(Object.assign({},i),{itemSuppliedId:e.flyTo.data});case"internal":return Object.assign(Object.assign({},i),{itemId:new u.protobuf.core.Uuid({hex:e.flyTo.data})});case"camera":return Object.assign(Object.assign({},i),{camera:e.flyTo.data});case"bounding-box":return Object.assign(Object.assign({},i),{boundingBox:{xmin:e.flyTo.data.min.x,xmax:e.flyTo.data.max.x,ymin:e.flyTo.data.min.y,ymax:e.flyTo.data.max.y,zmin:e.flyTo.data.min.z,zmax:e.flyTo.data.max.z}});default:return{}}}(n,this.flyToOptions,null==t?void 0:t.animation),a=await this.stream.flyTo(i,!0);return new C(this.stream,this.decodeFrame,{correlationId:n,animationId:(null===(s=null===(e=a.flyTo)||void 0===e?void 0:e.animationId)||void 0===s?void 0:s.hex)||void 0},null!=(null===(r=null==t?void 0:t.animation)||void 0===r?void 0:r.milliseconds)?t.animation.milliseconds+1e4:void 0)}return this.stream.replaceCamera({camera:this.data,frameCorrelationId:{value:n}}),new C(this.stream,this.decodeFrame,{correlationId:n})}catch(t){throw console.warn("Error when performing render: ",t),t}}rotateAroundAxis(t,e){return this.rotateAroundAxisAtPoint(t,this.lookAt,e)}rotateAroundAxisAtPoint(t,e,s){return this.update({position:r.rotateAboutAxis(t,this.position,s,e),lookAt:r.rotateAboutAxis(t,this.lookAt,s,e),up:r.rotateAboutAxis(t,this.up,s,r.origin())})}standardView(t){return this.update({position:t.position,lookAt:r.origin(),up:t.up})}update(t){return new D(this.stream,this.aspectRatio,Object.assign(Object.assign({},this.data),t),this.boundingBox,this.decodeFrame)}toFrameCamera(){return new c(this.position,this.lookAt,this.up,this.near,this.far,this.aspectRatio,this.fovY)}buildFlyToType(t){if(null!=t.boundingBox)return{type:"bounding-box",data:t.boundingBox};if(null!=t.camera)return{type:"camera",data:t.camera};if(null!=t.itemId)return{type:"internal",data:t.itemId};if(null!=t.itemSuppliedId)return{type:"supplied",data:t.itemSuppliedId};throw new Error("Fly to must specify at least one option.")}computeClippingPlanes(t){return l(this.boundingBox,t)}viewVector(){return r.subtract(this.lookAt,this.position)}get position(){return Object.assign({},this.data.position)}get up(){return Object.assign({},this.data.up)}get lookAt(){return Object.assign({},this.data.lookAt)}get fovY(){return 45}get aspectRatio(){return this.aspect}get near(){const{near:t}=this.computeClippingPlanes(this.data);return t}get far(){const{far:t}=this.computeClippingPlanes(this.data);return t}}class E{constructor(t,e){this.stream=t,this.imageScaleProvider=e}async hitItems(t,e){const s=this.imageScaleProvider();return(await this.stream.hitItems({point:a.scale(t,(null==s?void 0:s.x)||1,(null==s?void 0:s.y)||1),includeMetadata:null==e?void 0:e.includeMetadata},!0)).hitItems||void 0}}class N{constructor(t,e){this.stream=t,this.data=e}async update(t){return(await this.stream.updateCrossSectioning({crossSectioning:t},!0)).updateCrossSectioning||void 0}current(){return this.data}}class V{constructor(t=[]){this.operations=t}build(){return this.operations.concat()}materialOverride(t){return new V(this.operations.concat([{type:"change-material",material:t}]))}show(){return new V(this.operations.concat([{type:"show"}]))}hide(){return new V(this.operations.concat([{type:"hide"}]))}select(t){return new V(this.operations.concat([{type:"select",material:t}]))}deselect(){return new V(this.operations.concat([{type:"deselect"}]))}clearMaterialOverrides(){return new V(this.operations.concat([{type:"clear-override"}]))}transform(t){return new V(this.operations.concat([{type:"change-transform",transform:t}]))}}class _{all(){return new z}withItemIds(t){return new L(t,"item-id")}withSuppliedIds(t){return new L(t,"supplied-id")}withItemId(t){return new Q({type:"item-id",value:t})}withSuppliedId(t){return new Q({type:"supplied-id",value:t})}withSceneTreeRange(t){return new q(t)}withMetadata(t,e){return new F(t,e)}withSelected(){return new P}}class z{build(){return{type:"all"}}}class q{constructor(t){this.range=t}build(){return{type:"scene-tree-range",range:this.range}}}class F{constructor(t,e){this.filter=t,this.keys=e}build(){return{type:"metadata",filter:this.filter,keys:this.keys}}}class P{build(){return{type:"all-selected"}}}class L{constructor(t,e){this.ids=t,this.type=e}build(){return{type:"or",expressions:this.ids.map((t=>({type:this.type,value:t})))}}}class Q{constructor(t){this.query=t}build(){return Object.assign({},this.query)}and(){return new W([this.query])}or(){return new H([this.query])}}class H{constructor(t){this.expressions=t}build(){return{type:"or",expressions:[...this.expressions]}}withItemId(t){return new H([...this.expressions,{type:"item-id",value:t}])}withSuppliedId(t){return new H([...this.expressions,{type:"supplied-id",value:t}])}or(){return this}}class W{constructor(t){this.expressions=t}build(){return{type:"and",expressions:[...this.expressions]}}withItemId(t){return new W([...this.expressions,{type:"item-id",value:t}])}withSuppliedId(t){return new W([...this.expressions,{type:"supplied-id",value:t}])}and(){return this}}class Y{constructor(t){this.defaultSelectionMaterial=t}where(t){const e=t(new _).build();return new $(e,this.defaultSelectionMaterial)}}class ${constructor(t,e,s){this.query=t,this.defaultSelectionMaterial=e,this.builder=null!=s?s:new V}materialOverride(t){return new $(this.query,this.defaultSelectionMaterial,this.builder.materialOverride("string"==typeof t?p(t):t))}hide(){return new $(this.query,this.defaultSelectionMaterial,this.builder.hide())}show(){return new $(this.query,this.defaultSelectionMaterial,this.builder.show())}select(t){return new $(this.query,this.defaultSelectionMaterial,this.builder.select("string"==typeof t?p(t):t||this.defaultSelectionMaterial))}deselect(){return new $(this.query,this.defaultSelectionMaterial,this.builder.deselect())}clearMaterialOverrides(){return new $(this.query,this.defaultSelectionMaterial,this.builder.clearMaterialOverrides())}transform(t){if(Array.isArray(t)){if(16!==t.length)throw new T("Matrix provided must contain exactly 16 values (4x4).");return new $(this.query,this.defaultSelectionMaterial,this.builder.transform({r0:{x:t[0],y:t[1],z:t[2],w:t[3]},r1:{x:t[4],y:t[5],z:t[6],w:t[7]},r2:{x:t[8],y:t[9],z:t[10],w:t[11]},r3:{x:t[12],y:t[13],z:t[14],w:t[15]}}))}return new $(this.query,this.defaultSelectionMaterial,this.builder.transform(t))}build(){return{query:this.query,operations:this.builder.build()}}}class G{constructor(t,e,s){this.sceneViewId=t,this.stream=e,this.queryOperations=s}async execute(t){const e=this.queryOperations.map((t=>function(t,e){const s=function(t){return t.map((t=>{switch(t.type){case"change-material":return{changeMaterial:{material:{d:t.material.opacity,ns:t.material.glossiness,ka:t.material.ambient,kd:t.material.diffuse,ks:t.material.specular,ke:t.material.emissive}}};case"clear-override":return{changeMaterial:{}};case"change-transform":return{changeTransform:{transform:Object.assign({},t.transform)}};case"hide":return{changeVisibility:{visible:!1}};case"show":return{changeVisibility:{visible:!0}};case"select":return{changeSelection:{material:{d:t.material.opacity,ns:t.material.glossiness,ka:t.material.ambient,kd:t.material.diffuse,ks:t.material.specular,ke:t.material.emissive}}};case"deselect":return{changeSelection:{}};default:return{}}}))}(e);switch(t.type){case"and":case"or":return{[t.type]:{queries:t.expressions.map((t=>({sceneItemQuery:B(t)})))},operationTypes:s};case"item-id":case"supplied-id":return{item:{sceneItemQuery:B(t)},operationTypes:s};case"all":return{all:{},operationTypes:s};case"scene-tree-range":return{sceneTreeRange:{start:t.range.start,end:t.range.end},operationTypes:s};case"metadata":return{metadata:{valueFilter:t.filter,keys:t.keys},operationTypes:s};case"all-selected":return{override:{selection:{}},operationTypes:s};default:return{}}}(t.query,t.operations))),s={sceneViewId:{hex:this.sceneViewId},operations:e,suppliedCorrelationId:null!=(null==t?void 0:t.suppliedCorrelationId)?{value:null==t?void 0:t.suppliedCorrelationId}:void 0};await this.stream.createSceneAlteration(s)}}class J{constructor(t,e,s,i,r,n){this.stream=t,this.frame=e,this.decodeFrame=s,this.imageScaleProvider=i,this.sceneViewId=r,this.defaultSelectionMaterial=n}async applySceneViewState(t,e={}){return await this.stream.loadSceneViewState({sceneViewStateId:{hex:t},frameCorrelationId:e.suppliedCorrelationId?{value:e.suppliedCorrelationId}:void 0},!0)}async reset(t={}){return await this.stream.resetSceneView({includeCamera:t.includeCamera,frameCorrelationId:t.suppliedCorrelationId?{value:t.suppliedCorrelationId}:void 0},!0)}items(t){const e=t(new Y(this.defaultSelectionMaterial)),s=(Array.isArray(e)?e:[e]).reduce(((t,e)=>t.concat(e.build())),[]);return new G(this.sceneViewId,this.stream,s)}camera(){const{scene:t}=this.frame,e={position:t.camera.position,lookAt:t.camera.lookAt,up:t.camera.up};return new D(this.stream,o.aspectRatio(this.viewport()),e,this.frame.scene.boundingBox,this.decodeFrame)}boundingBox(){return this.frame.scene.boundingBox}crossSectioning(){return new N(this.stream,this.frame.scene.crossSection)}raycaster(){return new E(this.stream,this.imageScaleProvider)}viewport(){return this.frame.dimensions}scale(){return this.imageScaleProvider()||a.create(1,1)}}export{m as C,O as I,J as S,f as V,x as W,A as a,g as b,v as c,w as d,I as e,k as f,b as g,j as h,p as i,S as l}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as t,c as i,h as s,H as e,g as n}from"./p-75337d0b.js";import{c as r}from"./p-f482325b.js";import{d as o,r as h}from"./p-39d1720c.js";import{e as l,p as a}from"./p-784914e4.js";import{a as c}from"./p-76c414a4.js";import"./p-112455b1.js";let d=class{constructor(s){t(this,s),this.search=i(this,"search",7),this.debounce=250,this.disabled=!1,this.placeholder=void 0,this.value="",this.focused=!1,this.handleTextInput=t=>{this.value=t.target.value,this.search.emit(this.value)},this.handleTextFocus=()=>{this.focused=!0},this.handleTextBlur=()=>{this.focused=!1},this.handleClear=t=>{t.preventDefault(),this.value="",this.search.emit(this.value),this.setFocus()}}async setFocus(){var t,i;"function"==typeof(null===(t=this.inputEl)||void 0===t?void 0:t.focus)&&(null===(i=this.inputEl)||void 0===i||i.focus())}componentDidLoad(){this.handleDebounceChanged()}render(){return s(e,null,s("div",{class:"root"},s("div",{class:"overlay icon icon-search"},s("slot",{name:"search-icon"},s("vertex-viewer-icon",{name:"search",size:"sm"}))),s("input",{class:r("input",{background:this.focused||this.value.length>0}),type:"text",ref:t=>this.inputEl=t,placeholder:this.placeholder,disabled:this.disabled,value:this.value,onInput:this.handleTextInput,onFocus:this.handleTextFocus,onBlur:this.handleTextBlur}),s("div",{class:r("overlay overlay-clear",{show:this.value.length>0})},s("button",{class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},s("slot",{name:"clear-icon"},s("vertex-viewer-icon",{name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){this.search=o(this.search,this.debounce)}};function u(t){return t.toLowerCase()}d.style="button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{--scene-tree-search-search-icon-offset:8px;--scene-tree-search-clear-button-offset:8px;--scene-tree-search-input-padding:0.5rem 32px;--scene-tree-search-input-border:none;--scene-tree-search-input-border-radius:0.25rem;--scene-tree-search-input-background:none;--scene-tree-search-focused-input-background:var(--neutral-200);--scene-tree-search-focused-input-outline:none;display:block;width:100%;font-size:0.875rem}.root{width:100%;position:relative}.input{background:var(--scene-tree-search-input-background);border:var(--scene-tree-search-input-border);border-radius:var(--scene-tree-search-input-border-radius);box-sizing:border-box;font-size:inherit;padding:var(--scene-tree-search-input-padding);outline:none;width:100%}.input.background{background:var(--scene-tree-search-focused-input-background);outline:var(--scene-tree-search-focused-input-outline)}.overlay{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.overlay-clear{display:none;right:var(--scene-tree-search-clear-button-offset)}.overlay-clear.show{display:flex}.icon{color:var(--neutral-700)}.icon-search{position:absolute;left:var(--scene-tree-search-search-icon-offset);pointer-events:none}.clear-btn{display:flex;align-items:center;justify-content:center;pointer-events:initial;cursor:pointer}.clear-btn:hover{color:var(--neutral-800)}.clear-btn:disabled{pointer-events:none;opacity:0.5}";var v=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],p=/[^A-Z0-9]+/gi;function m(t,i,s){return i instanceof RegExp?t.replace(i,s):i.reduce((function(t,i){return t.replace(i,s)}),t)}function f(t,i){var s=t.charAt(0),e=t.substr(1).toLowerCase();return i>0&&s>="0"&&s<="9"?"_"+s+e:""+s.toUpperCase()+e}function b(t,i){return 0===i?t.toLowerCase():f(t,i)}function g(t,i){return void 0===i&&(i={}),function(t,i){return void 0===i&&(i={}),function(t,i){void 0===i&&(i={});for(var s=i.splitRegexp,e=i.stripRegexp,n=void 0===e?p:e,r=i.transform,o=void 0===r?u:r,h=i.delimiter,l=void 0===h?" ":h,a=m(m(t,void 0===s?v:s,"$1\0$2"),n,"\0"),c=0,d=a.length;"\0"===a.charAt(c);)c++;for(;"\0"===a.charAt(d-1);)d--;return a.slice(c,d).split("\0").map(o).join(l)}(t,l({delimiter:"",transform:f},i))}(t,l({transform:b},i))}const w=/{{(.+)}}/;class y{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((i=>i.bind(t)))}}class x{constructor(t,i){this.node=t,this.expr=i}}class z extends x{constructor(t,i){super(t,i)}bind(t){const i=C(t,this.expr);i!==this.node.textContent&&(this.node.textContent=i)}}class $ extends x{constructor(t,i,s){super(t,i),this.attr=s}bind(t){const i=C(t,this.expr);this.node.getAttribute(this.attr)!==i&&this.node.setAttribute(this.attr,i)}}class D extends x{constructor(t,i,s){super(t,i),this.prop=s}bind(t){const i=function(t,i){const s=j(i);return null!=s?E(t,s,!0):i}(t,this.expr);this.node[this.prop]!==i&&(this.node[this.prop]=i)}}class k extends x{constructor(t,i,s){super(t,i),this.eventName=s}bind(t){var i;const s=j(this.expr);if(null!=s){null===(i=this.disposable)||void 0===i||i.dispose();const e=E(t,s,!0);this.node.addEventListener(this.eventName,e),this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,e)}}}}}function M(t){const i=[];if(t.nodeType===Node.ELEMENT_NODE){const s=t;Array.from(s.attributes).filter((t=>w.test(t.value))).forEach((t=>{if(t.name.startsWith("event:")){const e=g(t.name.replace("event:",""));i.push(new k(s,t.value,e))}else if(t.name.startsWith("attr:"))i.push(new $(s,t.value,t.name.replace("attr:","")));else if(t.name.startsWith("prop:")){const e=g(t.name.replace("prop:",""));i.push(new D(s,t.value,e))}}))}else t.nodeType===Node.TEXT_NODE&&null!=t.textContent&&w.test(t.textContent)&&i.push(new z(t,t.textContent));for(let s=0;s<t.childNodes.length;s++)i.push(...M(t.childNodes[s]));return i}function j(t){const i=w.exec(t);return null!=i?i[1]:void 0}function C(t,i){const s=j(i);if(null!=s){const e=E(t,s,!0);return i.replace(`{{${s}}}`,null==e?void 0:e.toString())}return i}function E(t,i,s=!1){const[e,...n]=i.split(".");if(s&&0===n.length)return t;if(s&&n.length>0)return E(t,n.join("."),!1);{const i=t[e];return n.length>0?E(i,n.join("."),!1):i}}class L{constructor(t,i){this.container=t,this.elementFactory=i,this.instanceMap=new Map,this.elements=[]}swapHeadToTail(t){const i=this.elements.splice(0,t);return this.elements.splice(this.elements.length,0,...i),this.elements.concat()}swapTailToHead(t){const i=this.elements.splice(-t,t);return this.elements.splice(0,0,...i),this.elements.concat()}updateElements(t){const i=t-this.elements.length;if(i>0)for(let t=0;t<i;t++)this.createElement();else for(let t=0;t<-i;t++)this.deleteElement();return this.elements.concat()}updateData(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i),n=t(s);null==e||e.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t,this.updateElements(0)}iterateElements(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);if(null==e)throw new Error("Binding not found for element.");t(i,e.bindings,s)}))}createElement(){const t=this.elementFactory();return this.elements.push(t.element),this.instanceMap.set(t.element,t),this.container.append(t.element),t}deleteElement(){const t=this.elements.pop();null!=t&&(this.instanceMap.delete(t),t.remove())}}function T(t){const i=t.content.cloneNode(!0);return{element:i.firstElementChild,bindings:new y(M(i))}}let _=class{constructor(s){t(this,s),this.layoutRendered=i(this,"layoutRendered",7),this.rows=[],this.totalRows=0,this.rowHeight=24,this.overScanCount=25,this.layoutOffset=0,this.scrollOffset=0,this.viewportStartIndex=0,this.viewportEndIndex=0,this.columnGridLayout="1fr",this.columnGridFixedLayout="",this.isComputingCellHeight=!0,this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]},this.lastStartIndex=0,this.columnElements=[],this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1,i=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex,this.iterateColumns(((s,e,n)=>{e.updateElements(t),i>0?e.swapHeadToTail(i):e.swapTailToHead(-i),s.style.minHeight=this.rowHeight*this.totalRows+"px";const r=0===n?t=>`calc(${t} * 0.5rem)`:()=>"0";e.iterateElements(((t,i,s)=>{const e=this.stateMap.viewportRows[s];null!=e&&this.updateCell(e,t,i,s,r)}))}))},this.updateCell=(t,i,s,e,n)=>{i.style.position="absolute",i.style.top=(this.viewportStartIndex+e)*this.rowHeight+"px",i.style.boxSizing="border-box",i.style.height=`${this.rowHeight}px`,i.style.width="100%",i.style.paddingLeft=n(t.node.depth),i.tree=this.tree,i.node=t.node,i.hoveredNodeId=this.hoveredNodeId,s.bind(t)},this.updateLayoutPosition=()=>{h((()=>{var t;null!=this.tableElement&&(this.layoutOffset=null!==(t=this.tableElement.getBoundingClientRect().top)&&void 0!==t?t:0)}))},this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((i=>i*t)))},this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((i=>i/t)))},this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100}));const t=this.getLayoutWidth();null!=t&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t})))},this.updateColumnElements=()=>{this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column")),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)}))},this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const i={index:0,node:{id:{hex:""},name:"Dummy row",expanded:!1,selected:!1,visible:!1,partiallyVisible:!1,isLeaf:!1,depth:0,columnsList:[],filterHit:!1},metadata:{},data:{}},{bindings:s,element:e}=this.createColumnCellInstance(this.columnElements[0]);s.bind(i),e.style.visibility="hidden",null===(t=this.columnElements[0])||void 0===t||t.appendChild(e),"function"==typeof e.componentOnReady&&await e.componentOnReady();let n=e.clientHeight,r=0;for(;0===n&&r<10;)n=await new Promise((t=>{setTimeout((()=>t(e.getBoundingClientRect().height)),5)})),r+=1;this.rowHeight=null!=n?n:this.rowHeight,e.remove(),this.isComputingCellHeight=!1}},this.computeHeaderHeight=()=>{var t;null==this.stateMap.headerHeight&&(this.stateMap.headerHeight=null===(t=this.headerElement)||void 0===t?void 0:t.getBoundingClientRect().height,this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`))},this.computeColumnGridLayout=()=>{0===this.stateMap.columnWidths.length&&(this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100})));const t=this.getLayoutWidth();null!=t&&0===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t}))),this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,i)=>`${t} ${i}px`),"")} 1fr`,this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,i)=>`${t} ${i}px`),"")}`},this.handleCellHover=t=>{var i,s,e;this.hoveredNodeId=null===(e=null===(s=null===(i=t.detail)||void 0===i?void 0:i.node)||void 0===s?void 0:s.id)||void 0===e?void 0:e.hex},this.bindHeaderData=()=>{null==this.stateMap.headerInstances&&(this.stateMap.headerInstances=this.columnElements.map(((t,i)=>{var s;const e=this.createHeaderInstance(t);return null!=e&&(e.element.style.paddingRight=i===this.columnElements.length-1?"0":"var(--scene-tree-table-column-gap)",e.element.slot="header",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element)),e})).filter((t=>null!=t))),null==this.stateMap.headerDividerInstances&&(this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,i)=>{var s;const e=this.createDividerInstance();return e.element.slot="divider",e.element.style.position="absolute",e.element.style.right="0",e.element.style.pointerEvents="auto",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element),e})))},this.rebindHeaderData=()=>{var t,i;this.removeDividerDragListeners(),null===(t=this.stateMap.headerInstances)||void 0===t||t.forEach((t=>t.element.remove())),null===(i=this.stateMap.headerDividerInstances)||void 0===i||i.forEach((t=>t.element.remove())),this.stateMap.headerInstances=void 0,this.stateMap.headerDividerInstances=void 0,this.bindHeaderData(),this.addDividerDragListeners()},this.createDividerPointerDownHandler=t=>i=>{var s,e;i.preventDefault(),i.stopPropagation(),this.lastDividerPointerPosition=a.create(Math.floor(i.clientX),Math.floor(i.clientY)),this.resizingColumnIndex=t,null===(e=null===(s=this.stateMap.headerDividerInstances)||void 0===s?void 0:s[t])||void 0===e||e.element.classList.add("dragging"),window.addEventListener("pointermove",this.handleDividerPointerMove),window.addEventListener("pointerup",this.handleDividerPointerUp)},this.handleDividerPointerMove=t=>{const i=a.create(Math.floor(t.clientX),Math.floor(t.clientY));if(null!=this.lastDividerPointerPosition&&null!=this.resizingColumnIndex){const t=a.subtract(this.lastDividerPointerPosition,i);Math.abs(t.x)>=1&&this.isValidResize(t,this.resizingColumnIndex)&&(this.stateMap.columnWidths[this.resizingColumnIndex]-=t.x,this.resizingColumnIndex+1<this.stateMap.columnWidths.length&&(this.stateMap.columnWidths[this.resizingColumnIndex+1]+=t.x),this.lastDividerPointerPosition=i,this.computeColumnGridLayout())}},this.handleDividerPointerUp=()=>{var t,i;null!=this.resizingColumnIndex&&(null===(i=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t[this.resizingColumnIndex])||void 0===i||i.element.classList.remove("dragging")),this.lastDividerPointerPosition=void 0,this.resizingColumnIndex=void 0,this.recomputeColumnPercentages(),window.removeEventListener("pointermove",this.handleDividerPointerMove),window.removeEventListener("pointerup",this.handleDividerPointerUp)},this.isValidResize=(t,i)=>{var s,e,n,r;const o=this.columnElements[i],h=this.columnElements[i+1],l=this.stateMap.columnWidths[i],a=this.stateMap.columnWidths[i+1],c=null!==(s=o.minWidth)&&void 0!==s?s:0,d=null!==(e=o.maxWidth)&&void 0!==e?e:Number.MAX_SAFE_INTEGER,u=null!==(n=h.minWidth)&&void 0!==n?n:0,v=null!==(r=h.maxWidth)&&void 0!==r?r:Number.MAX_SAFE_INTEGER;return l-t.x>c&&l-t.x<d&&(null==h||a+t.x>u&&a+t.x<v)},this.handleScrollChanged=t=>{this.scrollOffset=t.target.scrollTop}}componentWillLoad(){this.updateColumnElements(),this.createPools(),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)})),this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=void 0,this.computeHeaderHeight()})),this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition(),this.clearLayoutHeight(),this.clearLayoutWidth(),this.recomputeColumnWidths(),this.computeColumnGridLayout()}))}componentDidLoad(){var t,i,s;this.computeColumnGridLayout(),this.ensureDividerTemplateDefined(),this.computeCellHeight(),this.computeHeaderHeight(),this.computeInitialColumnWidths(),this.rebindHeaderData(),null===(t=this.tableElement)||void 0===t||t.addEventListener("scroll",this.handleScrollChanged,{passive:!0}),null!=this.headerElement&&(null===(i=this.headerResizeObserver)||void 0===i||i.observe(this.headerElement)),null===(s=this.resizeObserver)||void 0===s||s.observe(this.hostEl)}async componentWillRender(){var t;this.computeViewportRows(),(null===(t=this.controller)||void 0===t?void 0:t.isConnected)&&await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}componentDidRender(){this.layoutColumns(),this.layoutRendered.emit()}disconnectedCallback(){var t,i,s;this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),null===(t=this.tableElement)||void 0===t||t.removeEventListener("scroll",this.handleScrollChanged),this.removeDividerDragListeners(),null===(i=this.headerResizeObserver)||void 0===i||i.disconnect(),null===(s=this.resizeObserver)||void 0===s||s.disconnect(),this.stateMap.columnWidths=[],this.stateMap.columnWidthPercentages=[]}async scrollToPosition(t,i){null!=this.tableElement&&function(t,i,s){t.scrollTo(Object.assign({top:i},s))}(this.tableElement,t,i)}render(){return s(e,null,s("div",{class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},s("slot",{name:"header"})),s("div",{class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},s("slot",{onSlotchange:()=>{this.ensureDividerTemplateDefined(),this.updateColumnElements(),this.recreateColumnPools(),this.computeInitialColumnWidths(),this.rebindHeaderData(),this.computeColumnGridLayout()}})),s("div",{class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},s("slot",{name:"divider"})),null!=this.resizingColumnIndex&&s("div",{class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();if(null!=t){const i=Math.ceil(t/this.rowHeight),s=Math.floor(this.scrollOffset/this.rowHeight),e=s+i,n=Math.max(0,s-this.overScanCount),r=Math.min(this.totalRows-1,e+this.overScanCount),o=this.getViewportRows(n,r);this.viewportStartIndex=n,this.viewportEndIndex=r,this.stateMap.viewportRows=o}}createPools(){null==this.stateMap.columnElementPools&&(this.stateMap.columnElementPools=this.columnElements.reduce(((t,i)=>t.set(i,new L(i,(()=>this.createColumnCellInstance(i))))),new WeakMap))}recreateColumnPools(){this.columnElements.forEach((t=>{var i,s,e;null==(null===(i=this.stateMap.columnElementPools)||void 0===i?void 0:i.get(t))?null===(s=this.stateMap.columnElementPools)||void 0===s||s.set(t,new L(t,(()=>this.createColumnCellInstance(t)))):null===(e=this.stateMap.columnElementPools.get(t))||void 0===e||e.updateElementFactory((()=>this.createColumnCellInstance(t)))}))}iterateColumns(t){this.columnElements.forEach(((i,s)=>{var e;const n=null===(e=this.stateMap.columnElementPools)||void 0===e?void 0:e.get(i);if(null==n)throw new Error("Cannot find pool for column");t(i,n,s)}))}ensureDividerTemplateDefined(){if(null==this.hostEl.querySelector('template[slot="divider"]')){const t=document.createElement("template");t.slot="divider",t.innerHTML='\n <vertex-scene-tree-table-resize-divider slot="divider">\n </vertex-scene-tree-table-resize-divider>\n ',this.hostEl.appendChild(t)}}createHeaderInstance(t){const i=t.querySelector('template[slot="header"]');if(null!=i)return T(i)}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(null!=t)return T(t);throw new Error("Table is missing divider template element")}createColumnCellInstance(t){const i=t.querySelector('template:not([slot="header"])');if(null!=i)return T(i);throw new Error("Column is missing cell template element")}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t.map(((t,i)=>{const s=this.createDividerPointerDownHandler(i);return t.element.addEventListener("pointerdown",s),s}))}removeDividerDragListeners(){var t;if(null!=this.stateMap.headerDividerListeners){const i=this.stateMap.headerDividerListeners;null===(t=this.stateMap.headerDividerInstances)||void 0===t||t.forEach(((t,s)=>{const e=i[s];null!=e&&t.element.removeEventListener("pointerdown",e)})),this.stateMap.headerDividerListeners=void 0}}getViewportRows(t,i){return this.rows.slice(t,i+1).map((t=>null!=t?this.populateRowData(t):t))}populateRowData(t){var i;if(null!=this.rowData&&null!=t){const s=(null===(i=this.rowData)||void 0===i?void 0:i.call(this,t))||{};return Object.assign(Object.assign({},t),{data:s})}return t}getLayoutHeight(){return null==this.layoutHeight&&null!=this.tableElement&&(this.layoutHeight=c(this.tableElement)),this.layoutHeight}getLayoutWidth(){return null==this.layoutWidth&&(this.layoutWidth=this.hostEl.clientWidth),this.layoutWidth}clearLayoutHeight(){this.layoutHeight=void 0}clearLayoutWidth(){this.layoutWidth=void 0}get hostEl(){return n(this)}};_.style=":host{position:relative;display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;font-size:0.825rem;--scene-tree-table-row-padding:2px 0px;--scene-tree-table-column-gap:0.5rem;--scene-tree-table-column-resize-cursor:col-resize}.header{position:relative;display:grid;width:100%;border-bottom:var(--scene-tree-toolbar-separator)}.table{position:relative;display:grid;width:100%;height:100%;overflow:auto}.resize-overlay{position:absolute;top:0;cursor:var(--scene-tree-table-column-resize-cursor);z-index:1000;width:100%;height:100%}.divider-overlay{position:absolute;top:0;display:grid;pointer-events:none;z-index:2000;width:100%;height:100%}";let R=class{constructor(i){t(this,i)}render(){return s(e,null,s("div",{class:"content"},s("slot",{name:"before"})),s("div",{class:"content content-primary"},s("slot",null)),s("div",{class:"content"},s("slot",{name:"after"})))}};R.style=":host{--scene-tree-toolbar-content-gap:8px;display:flex;padding:0.5rem}.content{display:flex;align-items:center}.content-primary{width:100%}::slotted(:not(:first-child)){margin-left:var(--scene-tree-toolbar-content-gap)}";export{d as vertex_scene_tree_search,_ as vertex_scene_tree_table_layout,R as vertex_scene_tree_toolbar}
|
|
4
|
+
import{r as t,c as i,h as s,H as e,g as n}from"./p-cafa57a6.js";import{c as r}from"./p-f482325b.js";import{d as o,r as h}from"./p-fad9693e.js";import{e as l,p as a}from"./p-0aba71fd.js";import{a as c}from"./p-76c414a4.js";import"./p-112455b1.js";let d=class{constructor(s){t(this,s),this.search=i(this,"search",7),this.debounce=250,this.disabled=!1,this.placeholder=void 0,this.value="",this.focused=!1,this.handleTextInput=t=>{this.value=t.target.value,this.search.emit(this.value)},this.handleTextFocus=()=>{this.focused=!0},this.handleTextBlur=()=>{this.focused=!1},this.handleClear=t=>{t.preventDefault(),this.value="",this.search.emit(this.value),this.setFocus()}}async setFocus(){var t,i;"function"==typeof(null===(t=this.inputEl)||void 0===t?void 0:t.focus)&&(null===(i=this.inputEl)||void 0===i||i.focus())}componentDidLoad(){this.handleDebounceChanged()}render(){return s(e,null,s("div",{class:"root"},s("div",{class:"overlay icon icon-search"},s("slot",{name:"search-icon"},s("vertex-viewer-icon",{name:"search",size:"sm"}))),s("input",{class:r("input",{background:this.focused||this.value.length>0}),type:"text",ref:t=>this.inputEl=t,placeholder:this.placeholder,disabled:this.disabled,value:this.value,onInput:this.handleTextInput,onFocus:this.handleTextFocus,onBlur:this.handleTextBlur}),s("div",{class:r("overlay overlay-clear",{show:this.value.length>0})},s("button",{class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},s("slot",{name:"clear-icon"},s("vertex-viewer-icon",{name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){this.search=o(this.search,this.debounce)}};function u(t){return t.toLowerCase()}d.style="button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{--scene-tree-search-search-icon-offset:8px;--scene-tree-search-clear-button-offset:8px;--scene-tree-search-input-padding:0.5rem 32px;--scene-tree-search-input-border:none;--scene-tree-search-input-border-radius:0.25rem;--scene-tree-search-input-background:none;--scene-tree-search-focused-input-background:var(--neutral-200);--scene-tree-search-focused-input-outline:none;display:block;width:100%;font-size:0.875rem}.root{width:100%;position:relative}.input{background:var(--scene-tree-search-input-background);border:var(--scene-tree-search-input-border);border-radius:var(--scene-tree-search-input-border-radius);box-sizing:border-box;font-size:inherit;padding:var(--scene-tree-search-input-padding);outline:none;width:100%}.input.background{background:var(--scene-tree-search-focused-input-background);outline:var(--scene-tree-search-focused-input-outline)}.overlay{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.overlay-clear{display:none;right:var(--scene-tree-search-clear-button-offset)}.overlay-clear.show{display:flex}.icon{color:var(--neutral-700)}.icon-search{position:absolute;left:var(--scene-tree-search-search-icon-offset);pointer-events:none}.clear-btn{display:flex;align-items:center;justify-content:center;pointer-events:initial;cursor:pointer}.clear-btn:hover{color:var(--neutral-800)}.clear-btn:disabled{pointer-events:none;opacity:0.5}";var v=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],p=/[^A-Z0-9]+/gi;function f(t,i,s){return i instanceof RegExp?t.replace(i,s):i.reduce((function(t,i){return t.replace(i,s)}),t)}function m(t,i){var s=t.charAt(0),e=t.substr(1).toLowerCase();return i>0&&s>="0"&&s<="9"?"_"+s+e:""+s.toUpperCase()+e}function b(t,i){return 0===i?t.toLowerCase():m(t,i)}function g(t,i){return void 0===i&&(i={}),function(t,i){return void 0===i&&(i={}),function(t,i){void 0===i&&(i={});for(var s=i.splitRegexp,e=i.stripRegexp,n=void 0===e?p:e,r=i.transform,o=void 0===r?u:r,h=i.delimiter,l=void 0===h?" ":h,a=f(f(t,void 0===s?v:s,"$1\0$2"),n,"\0"),c=0,d=a.length;"\0"===a.charAt(c);)c++;for(;"\0"===a.charAt(d-1);)d--;return a.slice(c,d).split("\0").map(o).join(l)}(t,l({delimiter:"",transform:m},i))}(t,l({transform:b},i))}const w=/{{(.+)}}/;class y{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((i=>i.bind(t)))}}class x{constructor(t,i){this.node=t,this.expr=i}}class z extends x{constructor(t,i){super(t,i)}bind(t){const i=C(t,this.expr);i!==this.node.textContent&&(this.node.textContent=i)}}class $ extends x{constructor(t,i,s){super(t,i),this.attr=s}bind(t){const i=C(t,this.expr);this.node.getAttribute(this.attr)!==i&&this.node.setAttribute(this.attr,i)}}class D extends x{constructor(t,i,s){super(t,i),this.prop=s}bind(t){const i=function(t,i){const s=j(i);return null!=s?E(t,s,!0):i}(t,this.expr);this.node[this.prop]!==i&&(this.node[this.prop]=i)}}class k extends x{constructor(t,i,s){super(t,i),this.eventName=s}bind(t){var i;const s=j(this.expr);if(null!=s){null===(i=this.disposable)||void 0===i||i.dispose();const e=E(t,s,!0);this.node.addEventListener(this.eventName,e),this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,e)}}}}}function M(t){const i=[];if(t.nodeType===Node.ELEMENT_NODE){const s=t;Array.from(s.attributes).filter((t=>w.test(t.value))).forEach((t=>{if(t.name.startsWith("event:")){const e=g(t.name.replace("event:",""));i.push(new k(s,t.value,e))}else if(t.name.startsWith("attr:"))i.push(new $(s,t.value,t.name.replace("attr:","")));else if(t.name.startsWith("prop:")){const e=g(t.name.replace("prop:",""));i.push(new D(s,t.value,e))}}))}else t.nodeType===Node.TEXT_NODE&&null!=t.textContent&&w.test(t.textContent)&&i.push(new z(t,t.textContent));for(let s=0;s<t.childNodes.length;s++)i.push(...M(t.childNodes[s]));return i}function j(t){const i=w.exec(t);return null!=i?i[1]:void 0}function C(t,i){const s=j(i);if(null!=s){const e=E(t,s,!0);return i.replace(`{{${s}}}`,null==e?void 0:e.toString())}return i}function E(t,i,s=!1){const[e,...n]=i.split(".");if(s&&0===n.length)return t;if(s&&n.length>0)return E(t,n.join("."),!1);{const i=t[e];return n.length>0?E(i,n.join("."),!1):i}}class L{constructor(t,i){this.container=t,this.elementFactory=i,this.instanceMap=new Map,this.elements=[]}swapHeadToTail(t){const i=this.elements.splice(0,t);return this.elements.splice(this.elements.length,0,...i),this.elements.concat()}swapTailToHead(t){const i=this.elements.splice(-t,t);return this.elements.splice(0,0,...i),this.elements.concat()}updateElements(t){const i=t-this.elements.length;if(i>0)for(let t=0;t<i;t++)this.createElement();else for(let t=0;t<-i;t++)this.deleteElement();return this.elements.concat()}updateData(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i),n=t(s);null==e||e.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t,this.updateElements(0)}iterateElements(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);if(null==e)throw new Error("Binding not found for element.");t(i,e.bindings,s)}))}createElement(){const t=this.elementFactory();return this.elements.push(t.element),this.instanceMap.set(t.element,t),this.container.append(t.element),t}deleteElement(){const t=this.elements.pop();null!=t&&(this.instanceMap.delete(t),t.remove())}}function T(t){const i=t.content.cloneNode(!0);return{element:i.firstElementChild,bindings:new y(M(i))}}let _=class{constructor(s){t(this,s),this.layoutRendered=i(this,"layoutRendered",7),this.rows=[],this.totalRows=0,this.rowHeight=24,this.overScanCount=25,this.layoutOffset=0,this.scrollOffset=0,this.viewportStartIndex=0,this.viewportEndIndex=0,this.columnGridLayout="1fr",this.columnGridFixedLayout="",this.isComputingCellHeight=!0,this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]},this.lastStartIndex=0,this.columnElements=[],this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1,i=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex,this.iterateColumns(((s,e,n)=>{e.updateElements(t),i>0?e.swapHeadToTail(i):e.swapTailToHead(-i),s.style.minHeight=this.rowHeight*this.totalRows+"px";const r=0===n?t=>`calc(${t} * 0.5rem)`:()=>"0";e.iterateElements(((t,i,s)=>{const e=this.stateMap.viewportRows[s];null!=e&&this.updateCell(e,t,i,s,r)}))}))},this.updateCell=(t,i,s,e,n)=>{i.style.position="absolute",i.style.top=(this.viewportStartIndex+e)*this.rowHeight+"px",i.style.boxSizing="border-box",i.style.height=`${this.rowHeight}px`,i.style.width="100%",i.style.paddingLeft=n(t.node.depth),i.tree=this.tree,i.node=t.node,i.hoveredNodeId=this.hoveredNodeId,s.bind(t)},this.updateLayoutPosition=()=>{h((()=>{var t;null!=this.tableElement&&(this.layoutOffset=null!==(t=this.tableElement.getBoundingClientRect().top)&&void 0!==t?t:0)}))},this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((i=>i*t)))},this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((i=>i/t)))},this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100}));const t=this.getLayoutWidth();null!=t&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t})))},this.updateColumnElements=()=>{this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column")),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)}))},this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const i={index:0,node:{id:{hex:""},name:"Dummy row",expanded:!1,selected:!1,visible:!1,partiallyVisible:!1,isLeaf:!1,depth:0,columnsList:[],filterHit:!1},metadata:{},data:{}},{bindings:s,element:e}=this.createColumnCellInstance(this.columnElements[0]);s.bind(i),e.style.visibility="hidden",null===(t=this.columnElements[0])||void 0===t||t.appendChild(e),"function"==typeof e.componentOnReady&&await e.componentOnReady();let n=e.clientHeight,r=0;for(;0===n&&r<10;)n=await new Promise((t=>{setTimeout((()=>t(e.getBoundingClientRect().height)),5)})),r+=1;this.rowHeight=null!=n?n:this.rowHeight,e.remove(),this.isComputingCellHeight=!1}},this.computeHeaderHeight=()=>{var t;null==this.stateMap.headerHeight&&(this.stateMap.headerHeight=null===(t=this.headerElement)||void 0===t?void 0:t.getBoundingClientRect().height,this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`))},this.computeColumnGridLayout=()=>{0===this.stateMap.columnWidths.length&&(this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100})));const t=this.getLayoutWidth();null!=t&&0===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t}))),this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,i)=>`${t} ${i}px`),"")} 1fr`,this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,i)=>`${t} ${i}px`),"")}`},this.handleCellHover=t=>{var i,s,e;this.hoveredNodeId=null===(e=null===(s=null===(i=t.detail)||void 0===i?void 0:i.node)||void 0===s?void 0:s.id)||void 0===e?void 0:e.hex},this.bindHeaderData=()=>{null==this.stateMap.headerInstances&&(this.stateMap.headerInstances=this.columnElements.map(((t,i)=>{var s;const e=this.createHeaderInstance(t);return null!=e&&(e.element.style.paddingRight=i===this.columnElements.length-1?"0":"var(--scene-tree-table-column-gap)",e.element.slot="header",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element)),e})).filter((t=>null!=t))),null==this.stateMap.headerDividerInstances&&(this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,i)=>{var s;const e=this.createDividerInstance();return e.element.slot="divider",e.element.style.position="absolute",e.element.style.right="0",e.element.style.pointerEvents="auto",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element),e})))},this.rebindHeaderData=()=>{var t,i;this.removeDividerDragListeners(),null===(t=this.stateMap.headerInstances)||void 0===t||t.forEach((t=>t.element.remove())),null===(i=this.stateMap.headerDividerInstances)||void 0===i||i.forEach((t=>t.element.remove())),this.stateMap.headerInstances=void 0,this.stateMap.headerDividerInstances=void 0,this.bindHeaderData(),this.addDividerDragListeners()},this.createDividerPointerDownHandler=t=>i=>{var s,e;i.preventDefault(),i.stopPropagation(),this.lastDividerPointerPosition=a.create(Math.floor(i.clientX),Math.floor(i.clientY)),this.resizingColumnIndex=t,null===(e=null===(s=this.stateMap.headerDividerInstances)||void 0===s?void 0:s[t])||void 0===e||e.element.classList.add("dragging"),window.addEventListener("pointermove",this.handleDividerPointerMove),window.addEventListener("pointerup",this.handleDividerPointerUp)},this.handleDividerPointerMove=t=>{const i=a.create(Math.floor(t.clientX),Math.floor(t.clientY));if(null!=this.lastDividerPointerPosition&&null!=this.resizingColumnIndex){const t=a.subtract(this.lastDividerPointerPosition,i);Math.abs(t.x)>=1&&this.isValidResize(t,this.resizingColumnIndex)&&(this.stateMap.columnWidths[this.resizingColumnIndex]-=t.x,this.resizingColumnIndex+1<this.stateMap.columnWidths.length&&(this.stateMap.columnWidths[this.resizingColumnIndex+1]+=t.x),this.lastDividerPointerPosition=i,this.computeColumnGridLayout())}},this.handleDividerPointerUp=()=>{var t,i;null!=this.resizingColumnIndex&&(null===(i=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t[this.resizingColumnIndex])||void 0===i||i.element.classList.remove("dragging")),this.lastDividerPointerPosition=void 0,this.resizingColumnIndex=void 0,this.recomputeColumnPercentages(),window.removeEventListener("pointermove",this.handleDividerPointerMove),window.removeEventListener("pointerup",this.handleDividerPointerUp)},this.isValidResize=(t,i)=>{var s,e,n,r;const o=this.columnElements[i],h=this.columnElements[i+1],l=this.stateMap.columnWidths[i],a=this.stateMap.columnWidths[i+1],c=null!==(s=o.minWidth)&&void 0!==s?s:0,d=null!==(e=o.maxWidth)&&void 0!==e?e:Number.MAX_SAFE_INTEGER,u=null!==(n=h.minWidth)&&void 0!==n?n:0,v=null!==(r=h.maxWidth)&&void 0!==r?r:Number.MAX_SAFE_INTEGER;return l-t.x>c&&l-t.x<d&&(null==h||a+t.x>u&&a+t.x<v)},this.handleScrollChanged=t=>{this.scrollOffset=t.target.scrollTop}}componentWillLoad(){this.updateColumnElements(),this.createPools(),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)})),this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=void 0,this.computeHeaderHeight()})),this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition(),this.clearLayoutHeight(),this.clearLayoutWidth(),this.recomputeColumnWidths(),this.computeColumnGridLayout()}))}componentDidLoad(){var t,i,s;this.computeColumnGridLayout(),this.ensureDividerTemplateDefined(),this.computeCellHeight(),this.computeHeaderHeight(),this.computeInitialColumnWidths(),this.rebindHeaderData(),null===(t=this.tableElement)||void 0===t||t.addEventListener("scroll",this.handleScrollChanged,{passive:!0}),null!=this.headerElement&&(null===(i=this.headerResizeObserver)||void 0===i||i.observe(this.headerElement)),null===(s=this.resizeObserver)||void 0===s||s.observe(this.hostEl)}async componentWillRender(){var t;this.computeViewportRows(),(null===(t=this.controller)||void 0===t?void 0:t.isConnected)&&await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}componentDidRender(){this.layoutColumns(),this.layoutRendered.emit()}disconnectedCallback(){var t,i,s;this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),null===(t=this.tableElement)||void 0===t||t.removeEventListener("scroll",this.handleScrollChanged),this.removeDividerDragListeners(),null===(i=this.headerResizeObserver)||void 0===i||i.disconnect(),null===(s=this.resizeObserver)||void 0===s||s.disconnect(),this.stateMap.columnWidths=[],this.stateMap.columnWidthPercentages=[]}async scrollToPosition(t,i){null!=this.tableElement&&function(t,i,s){t.scrollTo(Object.assign({top:i},s))}(this.tableElement,t,i)}render(){return s(e,null,s("div",{class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},s("slot",{name:"header"})),s("div",{class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},s("slot",{onSlotchange:()=>{this.ensureDividerTemplateDefined(),this.updateColumnElements(),this.recreateColumnPools(),this.computeInitialColumnWidths(),this.rebindHeaderData(),this.computeColumnGridLayout()}})),s("div",{class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},s("slot",{name:"divider"})),null!=this.resizingColumnIndex&&s("div",{class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();if(null!=t){const i=Math.ceil(t/this.rowHeight),s=Math.floor(this.scrollOffset/this.rowHeight),e=s+i,n=Math.max(0,s-this.overScanCount),r=Math.min(this.totalRows-1,e+this.overScanCount),o=this.getViewportRows(n,r);this.viewportStartIndex=n,this.viewportEndIndex=r,this.stateMap.viewportRows=o}}createPools(){null==this.stateMap.columnElementPools&&(this.stateMap.columnElementPools=this.columnElements.reduce(((t,i)=>t.set(i,new L(i,(()=>this.createColumnCellInstance(i))))),new WeakMap))}recreateColumnPools(){this.columnElements.forEach((t=>{var i,s,e;null==(null===(i=this.stateMap.columnElementPools)||void 0===i?void 0:i.get(t))?null===(s=this.stateMap.columnElementPools)||void 0===s||s.set(t,new L(t,(()=>this.createColumnCellInstance(t)))):null===(e=this.stateMap.columnElementPools.get(t))||void 0===e||e.updateElementFactory((()=>this.createColumnCellInstance(t)))}))}iterateColumns(t){this.columnElements.forEach(((i,s)=>{var e;const n=null===(e=this.stateMap.columnElementPools)||void 0===e?void 0:e.get(i);if(null==n)throw new Error("Cannot find pool for column");t(i,n,s)}))}ensureDividerTemplateDefined(){if(null==this.hostEl.querySelector('template[slot="divider"]')){const t=document.createElement("template");t.slot="divider",t.innerHTML='\n <vertex-scene-tree-table-resize-divider slot="divider">\n </vertex-scene-tree-table-resize-divider>\n ',this.hostEl.appendChild(t)}}createHeaderInstance(t){const i=t.querySelector('template[slot="header"]');if(null!=i)return T(i)}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(null!=t)return T(t);throw new Error("Table is missing divider template element")}createColumnCellInstance(t){const i=t.querySelector('template:not([slot="header"])');if(null!=i)return T(i);throw new Error("Column is missing cell template element")}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t.map(((t,i)=>{const s=this.createDividerPointerDownHandler(i);return t.element.addEventListener("pointerdown",s),s}))}removeDividerDragListeners(){var t;if(null!=this.stateMap.headerDividerListeners){const i=this.stateMap.headerDividerListeners;null===(t=this.stateMap.headerDividerInstances)||void 0===t||t.forEach(((t,s)=>{const e=i[s];null!=e&&t.element.removeEventListener("pointerdown",e)})),this.stateMap.headerDividerListeners=void 0}}getViewportRows(t,i){return this.rows.slice(t,i+1).map((t=>null!=t?this.populateRowData(t):t))}populateRowData(t){var i;if(null!=this.rowData&&null!=t){const s=(null===(i=this.rowData)||void 0===i?void 0:i.call(this,t))||{};return Object.assign(Object.assign({},t),{data:s})}return t}getLayoutHeight(){return null==this.layoutHeight&&null!=this.tableElement&&(this.layoutHeight=c(this.tableElement)),this.layoutHeight}getLayoutWidth(){return null==this.layoutWidth&&(this.layoutWidth=this.hostEl.clientWidth),this.layoutWidth}clearLayoutHeight(){this.layoutHeight=void 0}clearLayoutWidth(){this.layoutWidth=void 0}get hostEl(){return n(this)}};_.style=":host{position:relative;display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;font-size:0.825rem;--scene-tree-table-row-padding:2px 0px;--scene-tree-table-column-gap:0.5rem;--scene-tree-table-column-resize-cursor:col-resize}.header{position:relative;display:grid;width:100%;border-bottom:var(--scene-tree-toolbar-separator)}.table{position:relative;display:grid;width:100%;height:100%;overflow:auto}.resize-overlay{position:absolute;top:0;cursor:var(--scene-tree-table-column-resize-cursor);z-index:1000;width:100%;height:100%}.divider-overlay{position:absolute;top:0;display:grid;pointer-events:none;z-index:2000;width:100%;height:100%}";let R=class{constructor(i){t(this,i)}render(){return s(e,null,s("div",{class:"content"},s("slot",{name:"before"})),s("div",{class:"content content-primary"},s("slot",null)),s("div",{class:"content"},s("slot",{name:"after"})))}};R.style=":host{--scene-tree-toolbar-content-gap:8px;display:flex;padding:0.5rem}.content{display:flex;align-items:center}.content-primary{width:100%}::slotted(:not(:first-child)){margin-left:var(--scene-tree-toolbar-content-gap)}";export{d as vertex_scene_tree_search,_ as vertex_scene_tree_table_layout,R as vertex_scene_tree_toolbar}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{r as t,h as e,H as i}from"./p-cafa57a6.js";import{s}from"./p-f7cb7e59.js";import{g as n}from"./p-3a20a038.js";import{p as r}from"./p-a0df0e0c.js";import{a as o,M as a}from"./p-364ce21c.js";import{E as h}from"./p-fe11d694.js";import{M as l}from"./p-da2f4a56.js";import{M as d}from"./p-76ec0245.js";import{p as u}from"./p-0aba71fd.js";import{a as p}from"./p-d00e9203.js";import{g as c}from"./p-439220c6.js";import"./p-112455b1.js";import"./p-301660cf.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 y{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 M{constructor(t,e){this.rectObserver=new y,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 b=class{constructor(e){t(this,e),this.measurementModel=new l,this.measurementOverlays=new d,this.measurableEntityTypes=[h.PRECISE_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 M(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"]}}};b.style=":host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}";export{b as vertex_viewer_measurement_precise}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{h as e,F as t,r,H as s}from"./p-cafa57a6.js";import"./p-f7cb7e59.js";import"./p-3a20a038.js";import{D as i,A as a,d as n}from"./p-fe11d694.js";import{M as l}from"./p-da2f4a56.js";import{n as o,v as h}from"./p-0aba71fd.js";import{c as u}from"./p-f482325b.js";import"./p-112455b1.js";import"./p-301660cf.js";
|
|
5
|
+
/*! *****************************************************************************
|
|
6
|
+
Copyright (c) Microsoft Corporation.
|
|
7
|
+
|
|
8
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
9
|
+
purpose with or without fee is hereby granted.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
12
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
13
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
14
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
15
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
16
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
17
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
18
|
+
***************************************************************************** */var d=function(){return(d=Object.assign||function(e){for(var t,r=1,s=arguments.length;r<s;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},m=function(){return(m=Object.assign||function(e){for(var t,r=1,s=arguments.length;r<s;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};
|
|
19
|
+
/*! *****************************************************************************
|
|
20
|
+
Copyright (c) Microsoft Corporation.
|
|
21
|
+
|
|
22
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
23
|
+
purpose with or without fee is hereby granted.
|
|
24
|
+
|
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
26
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
27
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
28
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
29
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
30
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
31
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
32
|
+
***************************************************************************** */function v(e){return e.toLowerCase()}var c=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],f=/[^A-Z0-9]+/gi;function y(e,t,r){return t instanceof RegExp?e.replace(t,r):t.reduce((function(e,t){return e.replace(t,r)}),e)}function p(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var r=t.splitRegexp,s=t.stripRegexp,i=void 0===s?f:s,a=t.transform,n=void 0===a?v:a,l=t.delimiter,o=void 0===l?" ":l,h=y(y(e,void 0===r?c:r,"$1\0$2"),i,"\0"),u=0,d=h.length;"\0"===h.charAt(u);)u++;for(;"\0"===h.charAt(d-1);)d--;return h.slice(u,d).split("\0").map(n).join(o)}(e,m({delimiter:"."},t))}const b=(t,r)=>{var s,i,{label:a}=t,n=o(t,["label"]);return e("div",Object.assign({},n,{class:"measurement-details-entry"}),e("div",{class:u("measurement-details-entry-label",(s=a,void 0===i&&(i={}),p(s,d({delimiter:"-"},i))))},a,":"),r)},g=({result:r,formatter:s,overlays:i,onShowOverlay:a,onHideOverlay:n})=>{const l=h.subtract(r.point1,r.point2);return e(t,null,e(b,{label:"Min Dist",onMouseEnter:()=>a(null==i?void 0:i.addLineFromResult(r)),onMouseLeave:n},s(r.distance)),e(b,{label:"X",onMouseEnter:()=>a(null==i?void 0:i.addDistanceVectorFromResult(r)),onMouseLeave:n},s(l.x)),e(b,{label:"Y",onMouseEnter:()=>a(null==i?void 0:i.addDistanceVectorFromResult(r)),onMouseLeave:n},s(l.y)),e(b,{label:"Z",onMouseEnter:()=>a(null==i?void 0:i.addDistanceVectorFromResult(r)),onMouseLeave:n},s(l.z)))},w=({result:t,formatter:r})=>e(b,{label:"Angle"},r(t.angle)),M=({result:t,formatter:r})=>e(b,{label:"Parallel Dist"},r(t.distance)),O=({result:t,formatter:r})=>e(b,{label:"Area"},r(t.area));let j=class{constructor(e){r(this,e),this.measurementModel=new l,this.distanceUnits="millimeters",this.angleUnits="degrees",this.fractionalDigits=2,this.results=[],this.isApproximate=!1,this.distanceMeasurementUnits=new i(this.distanceUnits),this.angleMeasurementUnits=new a(this.angleUnits),this.areaMeasurementUnits=new n(this.distanceUnits),this.handleShowOverlay=e=>{this.overlay=e},this.handleHideOverlay=()=>{var e;null===(e=this.overlay)||void 0===e||e.dispose()},this.handleOutcomeChange=()=>{this.updateStateFromModel()}}connectedCallback(){this.onOutcomeChangedHandler=this.measurementModel.onOutcomeChanged(this.handleOutcomeChange),this.updateStateFromModel()}disconnectedCallback(){var e;null===(e=this.onOutcomeChangedHandler)||void 0===e||e.dispose()}handleDistanceUnitsChanged(){this.distanceMeasurementUnits=new i(this.distanceUnits),this.areaMeasurementUnits=new n(this.distanceUnits)}handleAngleUnitsChanged(){this.angleMeasurementUnits=new a(this.angleUnits)}handleMeasurementModelChanged(){var e;null===(e=this.onOutcomeChangedHandler)||void 0===e||e.dispose(),this.onOutcomeChangedHandler=this.measurementModel.onOutcomeChanged(this.handleOutcomeChange),this.updateStateFromModel()}handleResultTypesChanged(){this.updateStateFromModel()}render(){return e(s,null,this.renderResult("planar-angle",(t=>e(w,{result:t,overlays:this.measurementOverlays,formatter:this.makeAngleFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("planar-distance",(t=>e(M,{result:t,overlays:this.measurementOverlays,formatter:this.makeDistanceFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("surface-area",(t=>e(O,{result:t,overlays:this.measurementOverlays,formatter:this.makeAreaFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("minimum-distance",(t=>e(g,{result:t,overlays:this.measurementOverlays,formatter:this.makeDistanceFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))))}updateStateFromModel(){const e=this.measurementModel.getOutcome();null!=e?(this.results=e.results.filter((e=>{var t,r;return null===(r=null===(t=this.resultTypes)||void 0===t?void 0:t.includes(e.type))||void 0===r||r})),this.isApproximate=e.isApproximate):(this.results=[],this.isApproximate=!1)}renderResult(e,t){const r=this.getResultForType(e);return null!=r?t(r):void 0}getResultForType(e){return this.results.find((t=>t.type===e))}makeDistanceFormatter(){return this.makeFormatter((e=>this.distanceMeasurementUnits.convertWorldValueToReal(e)),this.distanceMeasurementUnits.unit,this.distanceFormatter)}makeAngleFormatter(){return this.makeFormatter((e=>this.angleMeasurementUnits.convertTo(e)),this.angleMeasurementUnits.unit,this.angleFormatter)}makeAreaFormatter(){return this.makeFormatter((e=>this.areaMeasurementUnits.convertWorldValueToReal(e)),this.areaMeasurementUnits.unit,this.areaFormatter)}makeFormatter(e,t,r){return s=>{const i=e(s);return null!=r?r(i):this.formatValue(i,t)}}formatValue(e,t){const r=e.toFixed(this.fractionalDigits);return`${this.isApproximate?"~"+r:r} ${t.abbreviatedName}`}static get watchers(){return{distanceUnits:["handleDistanceUnitsChanged"],angleUnits:["handleAngleUnitsChanged"],measurementModel:["handleMeasurementModelChanged"],resultTypes:["handleResultTypesChanged"]}}};j.style=":host{display:flex;flex-direction:column;--viewer-measurement-details-x-color:red;--viewer-measurement-details-y-color:var(--green-500);--viewer-measurement-details-z-color:blue}.measurement-details-entry{display:flex;align-items:center}.measurement-details-entry-label{user-select:none;padding-right:0.25rem}.measurement-details-entry-label.x{color:var(--viewer-measurement-details-x-color)}.measurement-details-entry-label.y{color:var(--viewer-measurement-details-y-color)}.measurement-details-entry-label.z{color:var(--viewer-measurement-details-z-color)}";export{j as vertex_viewer_measurement_details}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**!
|
|
2
|
+
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
const e="viewer";let t,n,l,o=!1,s=!1,i=!1,r=!1,c=!1;const f="undefined"!=typeof window?window:{},a=f.document||{head:{}},u={t:0,l:"",jmp:e=>e(),raf:e=>requestAnimationFrame(e),ael:(e,t,n,l)=>e.addEventListener(t,n,l),rel:(e,t,n,l)=>e.removeEventListener(t,n,l),ce:(e,t)=>new CustomEvent(e,t)},d=(()=>(a.head.attachShadow+"").indexOf("[native")>-1)(),p=e=>Promise.resolve(e),$=(()=>{try{return new CSSStyleSheet,"function"==typeof(new CSSStyleSheet).replace}catch(e){}return!1})(),h=(e,t,n)=>{n&&n.map((([n,l,o])=>{const s=e,i=w(t,o),r=m(n);u.ael(s,l,i,r),(t.o=t.o||[]).push((()=>u.rel(s,l,i,r)))}))},w=(e,t)=>n=>{try{256&e.t?e.i[t](n):(e.u=e.u||[]).push([t,n])}catch(e){he(e)}},m=e=>0!=(2&e),y="http://www.w3.org/1999/xlink",b=new WeakMap,v=e=>"sc-"+e.p,g={},k=e=>"object"==(e=typeof e)||"function"===e,j=(e,t,...n)=>{let l=null,o=null,s=null,i=!1,r=!1,c=[];const f=t=>{for(let n=0;n<t.length;n++)l=t[n],Array.isArray(l)?f(l):null!=l&&"boolean"!=typeof l&&((i="function"!=typeof e&&!k(l))&&(l+=""),i&&r?c[c.length-1].$+=l:c.push(i?S(null,l):l),r=i)};if(f(n),t){t.key&&(o=t.key),t.name&&(s=t.name);{const e=t.className||t.class;e&&(t.class="object"!=typeof e?e:Object.keys(e).filter((t=>e[t])).join(" "))}}if("function"==typeof e)return e(null===t?{}:t,c,_);const a=S(e,null);return a.h=t,c.length>0&&(a.m=c),a.v=o,a.g=s,a},S=(e,t)=>({t:0,k:e,$:t,j:null,m:null,h:null,v:null,g:null}),O={},_={forEach:(e,t)=>e.map(C).forEach(t),map:(e,t)=>e.map(C).map(t).map(M)},C=e=>({vattrs:e.h,vchildren:e.m,vkey:e.v,vname:e.g,vtag:e.k,vtext:e.$}),M=e=>{if("function"==typeof e.vtag){const t=Object.assign({},e.vattrs);return e.vkey&&(t.key=e.vkey),e.vname&&(t.name=e.vname),j(e.vtag,t,...e.vchildren||[])}const t=S(e.vtag,e.vtext);return t.h=e.vattrs,t.m=e.vchildren,t.v=e.vkey,t.g=e.vname,t},R=(e,t,n,l,o,s)=>{if(n!==l){let i=$e(e,t),r=t.toLowerCase();if("class"===t){const t=e.classList,o=P(n),s=P(l);t.remove(...o.filter((e=>e&&!s.includes(e)))),t.add(...s.filter((e=>e&&!o.includes(e))))}else if("style"===t){for(const t in n)l&&null!=l[t]||(t.includes("-")?e.style.removeProperty(t):e.style[t]="");for(const t in l)n&&l[t]===n[t]||(t.includes("-")?e.style.setProperty(t,l[t]):e.style[t]=l[t])}else if("key"===t);else if("ref"===t)l&&l(e);else if(i||"o"!==t[0]||"n"!==t[1]){const c=k(l);if((i||c&&null!==l)&&!o)try{if(e.tagName.includes("-"))e[t]=l;else{let o=null==l?"":l;"list"===t?i=!1:null!=n&&e[t]==o||(e[t]=o)}}catch(e){}let f=!1;r!==(r=r.replace(/^xlink\:?/,""))&&(t=r,f=!0),null==l||!1===l?!1===l&&""!==e.getAttribute(t)||(f?e.removeAttributeNS(y,t):e.removeAttribute(t)):(!i||4&s||o)&&!c&&(l=!0===l?"":l,f?e.setAttributeNS(y,t,l):e.setAttribute(t,l))}else t="-"===t[2]?t.slice(3):$e(f,r)?r.slice(2):r[2]+t.slice(3),n&&u.rel(e,t,n,!1),l&&u.ael(e,t,l,!1)}},x=/\s/,P=e=>e?e.split(x):[],T=(e,t,n,l)=>{const o=11===t.j.nodeType&&t.j.host?t.j.host:t.j,s=e&&e.h||g,i=t.h||g;for(l in s)l in i||R(o,l,s[l],void 0,n,t.t);for(l in i)R(o,l,s[l],i[l],n,t.t)},W=(e,s,c,f)=>{let u,d,p,$=s.m[c],h=0;if(o||(i=!0,"slot"===$.k&&(t&&f.classList.add(t+"-s"),$.t|=$.m?2:1)),null!==$.$)u=$.j=a.createTextNode($.$);else if(1&$.t)u=$.j=a.createTextNode("");else{if(r||(r="svg"===$.k),u=$.j=a.createElementNS(r?"http://www.w3.org/2000/svg":"http://www.w3.org/1999/xhtml",2&$.t?"slot-fb":$.k),r&&"foreignObject"===$.k&&(r=!1),T(null,$,r),null!=t&&u["s-si"]!==t&&u.classList.add(u["s-si"]=t),$.m)for(h=0;h<$.m.length;++h)d=W(e,$,h,u),d&&u.appendChild(d);"svg"===$.k?r=!1:"foreignObject"===u.tagName&&(r=!0)}return u["s-hn"]=l,3&$.t&&(u["s-sr"]=!0,u["s-cr"]=n,u["s-sn"]=$.g||"",p=e&&e.m&&e.m[c],p&&p.k===$.k&&e.j&&E(e.j,!1)),u},E=(e,t)=>{u.t|=1;const n=e.childNodes;for(let e=n.length-1;e>=0;e--){const o=n[e];o["s-hn"]!==l&&o["s-ol"]&&(A(o).insertBefore(o,U(o)),o["s-ol"].remove(),o["s-ol"]=void 0,i=!0),t&&E(o,t)}u.t&=-2},L=(e,t,n,o,s,i)=>{let r,c=e["s-cr"]&&e["s-cr"].parentNode||e;for(c.shadowRoot&&c.tagName===l&&(c=c.shadowRoot);s<=i;++s)o[s]&&(r=W(null,n,s,e),r&&(o[s].j=r,c.insertBefore(r,U(t))))},F=(e,t,n,l,o)=>{for(;t<=n;++t)(l=e[t])&&(o=l.j,B(l),s=!0,o["s-ol"]?o["s-ol"].remove():E(o,!0),o.remove())},N=(e,t)=>e.k===t.k&&("slot"===e.k?e.g===t.g:e.v===t.v),U=e=>e&&e["s-ol"]||e,A=e=>(e["s-ol"]?e["s-ol"]:e).parentNode,D=(e,t)=>{const n=t.j=e.j,l=e.m,o=t.m,s=t.k,i=t.$;let c;null===i?(r="svg"===s||"foreignObject"!==s&&r,"slot"===s||T(e,t,r),null!==l&&null!==o?((e,t,n,l)=>{let o,s,i=0,r=0,c=0,f=0,a=t.length-1,u=t[0],d=t[a],p=l.length-1,$=l[0],h=l[p];for(;i<=a&&r<=p;)if(null==u)u=t[++i];else if(null==d)d=t[--a];else if(null==$)$=l[++r];else if(null==h)h=l[--p];else if(N(u,$))D(u,$),u=t[++i],$=l[++r];else if(N(d,h))D(d,h),d=t[--a],h=l[--p];else if(N(u,h))"slot"!==u.k&&"slot"!==h.k||E(u.j.parentNode,!1),D(u,h),e.insertBefore(u.j,d.j.nextSibling),u=t[++i],h=l[--p];else if(N(d,$))"slot"!==u.k&&"slot"!==h.k||E(d.j.parentNode,!1),D(d,$),e.insertBefore(d.j,u.j),d=t[--a],$=l[++r];else{for(c=-1,f=i;f<=a;++f)if(t[f]&&null!==t[f].v&&t[f].v===$.v){c=f;break}c>=0?(s=t[c],s.k!==$.k?o=W(t&&t[r],n,c,e):(D(s,$),t[c]=void 0,o=s.j),$=l[++r]):(o=W(t&&t[r],n,r,e),$=l[++r]),o&&A(u.j).insertBefore(o,U(u.j))}i>a?L(e,null==l[p+1]?null:l[p+1].j,n,l,r,p):r>p&&F(t,i,a)})(n,l,t,o):null!==o?(null!==e.$&&(n.textContent=""),L(n,null,t,o,0,o.length-1)):null!==l&&F(l,0,l.length-1),r&&"svg"===s&&(r=!1)):(c=n["s-cr"])?c.parentNode.textContent=i:e.$!==i&&(n.data=i)},H=e=>{let t,n,l,o,s,i,r=e.childNodes;for(n=0,l=r.length;n<l;n++)if(t=r[n],1===t.nodeType){if(t["s-sr"])for(s=t["s-sn"],t.hidden=!1,o=0;o<l;o++)if(i=r[o].nodeType,r[o]["s-hn"]!==t["s-hn"]||""!==s){if(1===i&&s===r[o].getAttribute("slot")){t.hidden=!0;break}}else if(1===i||3===i&&""!==r[o].textContent.trim()){t.hidden=!0;break}H(t)}},q=[],V=e=>{let t,n,l,o,i,r,c=0,f=e.childNodes,a=f.length;for(;c<a;c++){if(t=f[c],t["s-sr"]&&(n=t["s-cr"])&&n.parentNode)for(l=n.parentNode.childNodes,o=t["s-sn"],r=l.length-1;r>=0;r--)n=l[r],n["s-cn"]||n["s-nr"]||n["s-hn"]===t["s-hn"]||(z(n,o)?(i=q.find((e=>e.S===n)),s=!0,n["s-sn"]=n["s-sn"]||o,i?i.O=t:q.push({O:t,S:n}),n["s-sr"]&&q.map((e=>{z(e.S,n["s-sn"])&&(i=q.find((e=>e.S===n)),i&&!e.O&&(e.O=i.O))}))):q.some((e=>e.S===n))||q.push({S:n}));1===t.nodeType&&V(t)}},z=(e,t)=>1===e.nodeType?null===e.getAttribute("slot")&&""===t||e.getAttribute("slot")===t:e["s-sn"]===t||""===t,B=e=>{e.h&&e.h.ref&&e.h.ref(null),e.m&&e.m.map(B)},G=e=>ue(e)._,I=(e,t,n)=>{const l=G(e);return{emit:e=>J(l,t,{bubbles:!!(4&n),composed:!!(2&n),cancelable:!!(1&n),detail:e})}},J=(e,t,n)=>{const l=u.ce(t,n);return e.dispatchEvent(l),l},K=(e,t)=>{t&&!e.C&&t["s-p"]&&t["s-p"].push(new Promise((t=>e.C=t)))},Q=(e,t)=>{if(e.t|=16,!(4&e.t))return K(e,e.M),_e((()=>X(e,t)));e.t|=512},X=(e,t)=>{const n=e.i;let l;return t?(e.t|=256,e.u&&(e.u.map((([e,t])=>le(n,e,t))),e.u=null),l=le(n,"componentWillLoad")):l=le(n,"componentWillUpdate"),l=oe(l,(()=>le(n,"componentWillRender"))),oe(l,(()=>Y(e,n,t)))},Y=async(e,t,n)=>{const l=e._,o=l["s-rc"];n&&(e=>{const t=e.R,n=e._,l=t.t,o=((e,t)=>{let n=v(t),l=ye.get(n);if(e=11===e.nodeType?e:a,l)if("string"==typeof l){let t,o=b.get(e=e.head||e);o||b.set(e,o=new Set),o.has(n)||(t=a.createElement("style"),t.innerHTML=l,e.insertBefore(t,e.querySelector("link")),o&&o.add(n))}else e.adoptedStyleSheets.includes(l)||(e.adoptedStyleSheets=[...e.adoptedStyleSheets,l]);return n})(d&&n.shadowRoot?n.shadowRoot:n.getRootNode(),t);10&l&&(n["s-sc"]=o,n.classList.add(o+"-h"))})(e);Z(e,t),o&&(o.map((e=>e())),l["s-rc"]=void 0);{const t=l["s-p"],n=()=>ee(e);0===t.length?n():(Promise.all(t).then(n),e.t|=4,t.length=0)}},Z=(e,r)=>{try{r=r.render(),e.t&=-17,e.t|=2,((e,r)=>{const c=e._,f=e.R,p=e.P||S(null,null),$=(e=>e&&e.k===O)(r)?r:j(null,null,r);if(l=c.tagName,f.T&&($.h=$.h||{},f.T.map((([e,t])=>$.h[t]=c[e]))),$.k=null,$.t|=4,e.P=$,$.j=p.j=c.shadowRoot||c,t=c["s-sc"],n=c["s-cr"],o=d&&0!=(1&f.t),s=!1,D(p,$),u.t|=1,i){let e,t,n,l,o,s;V($.j);let i=0;for(;i<q.length;i++)e=q[i],t=e.S,t["s-ol"]||(n=a.createTextNode(""),n["s-nr"]=t,t.parentNode.insertBefore(t["s-ol"]=n,t));for(i=0;i<q.length;i++)if(e=q[i],t=e.S,e.O){for(l=e.O.parentNode,o=e.O.nextSibling,n=t["s-ol"];n=n.previousSibling;)if(s=n["s-nr"],s&&s["s-sn"]===t["s-sn"]&&l===s.parentNode&&(s=s.nextSibling,!s||!s["s-nr"])){o=s;break}(!o&&l!==t.parentNode||t.nextSibling!==o)&&t!==o&&(!t["s-hn"]&&t["s-ol"]&&(t["s-hn"]=t["s-ol"].parentNode.nodeName),l.insertBefore(t,o))}else 1===t.nodeType&&(t.hidden=!0)}s&&H($.j),u.t&=-2,q.length=0})(e,r)}catch(t){he(t,e._)}return null},ee=e=>{const t=e._,n=e.i,l=e.M;le(n,"componentDidRender"),64&e.t||(e.t|=64,se(t),le(n,"componentDidLoad"),e.W(t),l||ne()),e.L(t),e.C&&(e.C(),e.C=void 0),512&e.t&&Se((()=>Q(e,!1))),e.t&=-517},te=e=>{{const t=ue(e),n=t._.isConnected;return n&&2==(18&t.t)&&Q(t,!1),n}},ne=()=>{se(a.documentElement),Se((()=>J(f,"appload",{detail:{namespace:"viewer"}})))},le=(e,t,n)=>{if(e&&e[t])try{return e[t](n)}catch(e){he(e)}},oe=(e,t)=>e&&e.then?e.then(t):t(),se=e=>e.classList.add("hydrated"),ie=(e,t,n)=>{if(t.F){e.watchers&&(t.N=e.watchers);const l=Object.entries(t.F),o=e.prototype;if(l.map((([e,[l]])=>{31&l||2&n&&32&l?Object.defineProperty(o,e,{get(){return((e,t)=>ue(this).U.get(t))(0,e)},set(n){((e,t,n,l)=>{const o=ue(e),s=o._,i=o.U.get(t),r=o.t,c=o.i;if(n=((e,t)=>null==e||k(e)?e:4&t?"false"!==e&&(""===e||!!e):2&t?parseFloat(e):1&t?e+"":e)(n,l.F[t][0]),!(8&r&&void 0!==i||n===i)&&(o.U.set(t,n),c)){if(l.N&&128&r){const e=l.N[t];e&&e.map((e=>{try{c[e](n,i,t)}catch(e){he(e,s)}}))}if(2==(18&r)){if(c.componentShouldUpdate&&!1===c.componentShouldUpdate(n,i,t))return;Q(o,!1)}}})(this,e,n,t)},configurable:!0,enumerable:!0}):1&n&&64&l&&Object.defineProperty(o,e,{value(...t){const n=ue(this);return n.A.then((()=>n.i[e](...t)))}})})),1&n){const n=new Map;o.attributeChangedCallback=function(e,t,l){u.jmp((()=>{const t=n.get(e);if(this.hasOwnProperty(t))l=this[t],delete this[t];else if(o.hasOwnProperty(t)&&"number"==typeof this[t]&&this[t]==l)return;this[t]=(null!==l||"boolean"!=typeof this[t])&&l}))},e.observedAttributes=l.filter((([e,t])=>15&t[0])).map((([e,l])=>{const o=l[1]||e;return n.set(o,e),512&l[0]&&t.T.push([e,o]),o}))}}return e},re=e=>{le(e,"connectedCallback")},ce=(e,t={})=>{const n=[],l=t.exclude||[],o=f.customElements,s=a.head,i=s.querySelector("meta[charset]"),r=a.createElement("style"),c=[];let p,w=!0;Object.assign(u,t),u.l=new URL(t.resourcesUrl||"./",a.baseURI).href,e.map((e=>{e[1].map((t=>{const s={t:t[0],p:t[1],F:t[2],D:t[3]};s.F=t[2],s.D=t[3],s.T=[],s.N={},!d&&1&s.t&&(s.t|=8);const i=s.p,r=class extends HTMLElement{constructor(e){super(e),pe(e=this,s),1&s.t&&(d?e.attachShadow({mode:"open"}):"shadowRoot"in e||(e.shadowRoot=e))}connectedCallback(){p&&(clearTimeout(p),p=null),w?c.push(this):u.jmp((()=>(e=>{if(0==(1&u.t)){const t=ue(e),n=t.R,l=()=>{};if(1&t.t)h(e,t,n.D),re(t.i);else{t.t|=1,12&n.t&&(e=>{const t=e["s-cr"]=a.createComment("");t["s-cn"]=!0,e.insertBefore(t,e.firstChild)})(e);{let n=e;for(;n=n.parentNode||n.host;)if(n["s-p"]){K(t,t.M=n);break}}n.F&&Object.entries(n.F).map((([t,[n]])=>{if(31&n&&e.hasOwnProperty(t)){const n=e[t];delete e[t],e[t]=n}})),(async(e,t,n,l,o)=>{if(0==(32&t.t)){{if(t.t|=32,(o=me(n)).then){const e=()=>{};o=await o,e()}o.isProxied||(n.N=o.watchers,ie(o,n,2),o.isProxied=!0);const e=()=>{};t.t|=8;try{new o(t)}catch(e){he(e)}t.t&=-9,t.t|=128,e(),re(t.i)}if(o.style){let e=o.style;const t=v(n);if(!ye.has(t)){const l=()=>{};8&n.t&&(e=await __sc_import_viewer("./p-883fed22.js").then((n=>n.scopeCss(e,t,!1)))),((e,t,n)=>{let l=ye.get(e);$&&n?(l=l||new CSSStyleSheet,l.replace(t)):l=t,ye.set(e,l)})(t,e,!!(1&n.t)),l()}}}const s=t.M,i=()=>Q(t,!0);s&&s["s-rc"]?s["s-rc"].push(i):i()})(0,t,n)}l()}})(this)))}disconnectedCallback(){u.jmp((()=>(()=>{if(0==(1&u.t)){const e=ue(this),t=e.i;e.o&&(e.o.map((e=>e())),e.o=void 0),le(t,"disconnectedCallback")}})()))}componentOnReady(){return ue(this).H}};s.q=e[0],l.includes(i)||o.get(i)||(n.push(i),o.define(i,ie(r,s,1)))}))})),r.innerHTML=n+"{visibility:hidden}.hydrated{visibility:inherit}",r.setAttribute("data-styles",""),s.insertBefore(r,i?i.nextSibling:s.firstChild),w=!1,c.length?c.map((e=>e.connectedCallback())):u.jmp((()=>p=setTimeout(ne,30)))},fe=(e,t)=>t,ae=new WeakMap,ue=e=>ae.get(e),de=(e,t)=>ae.set(t.i=e,t),pe=(e,t)=>{const n={t:0,_:e,R:t,U:new Map};return n.A=new Promise((e=>n.L=e)),n.H=new Promise((e=>n.W=e)),e["s-p"]=[],e["s-rc"]=[],h(e,n,t.D),ae.set(e,n)},$e=(e,t)=>t in e,he=(e,t)=>(0,console.error)(e,t),we=new Map,me=e=>{const t=e.p.replace(/-/g,"_"),n=e.q,l=we.get(n);return l?l[t]:__sc_import_viewer(`./${n}.entry.js`).then((e=>(we.set(n,e),e[t])),he)},ye=new Map,be=[],ve=[],ge=(e,t)=>n=>{e.push(n),c||(c=!0,t&&4&u.t?Se(je):u.raf(je))},ke=e=>{for(let t=0;t<e.length;t++)try{e[t](performance.now())}catch(e){he(e)}e.length=0},je=()=>{ke(be),ke(ve),(c=be.length>0)&&u.raf(je)},Se=e=>p().then(e),Oe=ge(be,!1),_e=ge(ve,!0);export{fe as F,O as H,e as N,Oe as a,ce as b,I as c,a as d,te as f,G as g,j as h,p,de as r,f as w}
|