@vertexvis/viewer 1.1.1-canary.6 → 1.1.1-testing.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/cjs/{config-Ca0seD16.js → config-qhB9yOkD.js} +3 -3
  2. package/dist/cjs/{config-Ca0seD16.js.map → config-qhB9yOkD.js.map} +1 -1
  3. package/dist/cjs/{entities-CBN2BJKd.js → entities-OgE3KKMo.js} +4 -4
  4. package/dist/cjs/{entities-CBN2BJKd.js.map → entities-OgE3KKMo.js.map} +1 -1
  5. package/dist/cjs/{geometry_pb-DS0HM8ls.js → geometry_pb-CJZxK0hh.js} +3 -3
  6. package/dist/cjs/{geometry_pb-DS0HM8ls.js.map → geometry_pb-CJZxK0hh.js.map} +1 -1
  7. package/dist/cjs/index.cjs.js +5 -5
  8. package/dist/cjs/{png-decoder-Dt3IOAnw.js → png-decoder-BTtMRfiW.js} +23 -32
  9. package/dist/cjs/png-decoder-BTtMRfiW.js.map +1 -0
  10. package/dist/cjs/{queries-B4oPQ5xP.js → queries-DvkzwhnO.js} +4 -4
  11. package/dist/cjs/{queries-B4oPQ5xP.js.map → queries-DvkzwhnO.js.map} +1 -1
  12. package/dist/cjs/{regl-component-DDHBbHhG.js → regl-component-Ctuzdy_i.js} +3 -3
  13. package/dist/cjs/{regl-component-DDHBbHhG.js.map → regl-component-Ctuzdy_i.js.map} +1 -1
  14. package/dist/cjs/{representation_pb-_-8GOu4g.js → representation_pb-Cb20_8yP.js} +3 -3
  15. package/dist/cjs/{representation_pb-_-8GOu4g.js.map → representation_pb-Cb20_8yP.js.map} +1 -1
  16. package/dist/cjs/{streamAttributes-D4FScmnu.js → streamAttributes-BOGFM4R7.js} +3 -3
  17. package/dist/cjs/{streamAttributes-D4FScmnu.js.map → streamAttributes-BOGFM4R7.js.map} +1 -1
  18. package/dist/cjs/tslib.es6-BqRXrZGq.js +40 -0
  19. package/dist/cjs/{tslib.es6-Bu5Kp4WX.js.map → tslib.es6-BqRXrZGq.js.map} +1 -1
  20. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +1 -1
  21. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
  22. package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
  23. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  24. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +2 -2
  25. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
  26. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +2 -2
  27. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
  28. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +4 -4
  29. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +3 -3
  30. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +2 -2
  31. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
  32. package/dist/cjs/vertex-viewer.cjs.entry.js +4 -4
  33. package/dist/components/index.js +1 -1
  34. package/dist/components/{p-Tfg7jao4.js → p-B1EwHtiU.js} +2 -2
  35. package/dist/components/p-C-NyjLsm.js +5 -0
  36. package/dist/components/p-C-NyjLsm.js.map +1 -0
  37. package/dist/components/{p-Be_EPOMu.js → p-CNDZjNd7.js} +2 -2
  38. package/dist/components/{p-BNanw3eX.js → p-C_5cRYhA.js} +2 -2
  39. package/dist/components/{p-C-Mdlx-o.js → p-CkYfi_b3.js} +2 -2
  40. package/dist/components/{p-BQQxciHe.js → p-Dks3EzBM.js} +2 -2
  41. package/dist/components/{p-DCxPi7ft.js → p-IbLMJcql.js} +2 -2
  42. package/dist/components/{p-B3jZXFq2.js → p-XydgrVf-.js} +2 -2
  43. package/dist/components/p-Z7U3o7I4.js +5 -0
  44. package/dist/components/{p-Cta7kB-G.js → p-ZzS5zTnx.js} +2 -2
  45. package/dist/components/p-fKH0aLlq.js +5 -0
  46. package/dist/components/p-fKH0aLlq.js.map +1 -0
  47. package/dist/components/{p-C6BUwWB4.js → p-hMIHFP5Q.js} +2 -2
  48. package/dist/components/{p-DpQErze2.js → p-sPEu8FHr.js} +2 -2
  49. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  50. package/dist/components/vertex-scene-tree-table-layout.js +1 -1
  51. package/dist/components/vertex-scene-tree.js +1 -1
  52. package/dist/components/vertex-viewer-dom-renderer.js +1 -1
  53. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  54. package/dist/components/vertex-viewer-measurement-details.js +1 -1
  55. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  56. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  57. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  58. package/dist/components/vertex-viewer-pin-group.js +1 -1
  59. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  60. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  61. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  62. package/dist/components/vertex-viewer-view-cube.js +1 -1
  63. package/dist/components/vertex-viewer.js +1 -1
  64. package/dist/esm/{config-BHITDQif.js → config-Dukl2tlT.js} +3 -3
  65. package/dist/esm/{config-BHITDQif.js.map → config-Dukl2tlT.js.map} +1 -1
  66. package/dist/esm/{entities-Cj9Pt10J.js → entities-2kVCQNVh.js} +4 -4
  67. package/dist/esm/{entities-Cj9Pt10J.js.map → entities-2kVCQNVh.js.map} +1 -1
  68. package/dist/esm/{geometry_pb-EePgefLR.js → geometry_pb-CAxktHWj.js} +3 -3
  69. package/dist/esm/{geometry_pb-EePgefLR.js.map → geometry_pb-CAxktHWj.js.map} +1 -1
  70. package/dist/esm/index.js +5 -5
  71. package/dist/esm/{png-decoder-gMslGChA.js → png-decoder-Dx1E5Sod.js} +23 -32
  72. package/dist/esm/png-decoder-Dx1E5Sod.js.map +1 -0
  73. package/dist/esm/{queries-CEfTZHMm.js → queries-DM84n6se.js} +4 -4
  74. package/dist/esm/{queries-CEfTZHMm.js.map → queries-DM84n6se.js.map} +1 -1
  75. package/dist/esm/{regl-component-DXn0jg5S.js → regl-component-D-Wlx_GA.js} +3 -3
  76. package/dist/esm/{regl-component-DXn0jg5S.js.map → regl-component-D-Wlx_GA.js.map} +1 -1
  77. package/dist/esm/{representation_pb-DdXEMKrs.js → representation_pb-ZzJjYuoD.js} +3 -3
  78. package/dist/esm/{representation_pb-DdXEMKrs.js.map → representation_pb-ZzJjYuoD.js.map} +1 -1
  79. package/dist/esm/{streamAttributes-BZnxWMmW.js → streamAttributes-C2mLVHk_.js} +3 -3
  80. package/dist/esm/{streamAttributes-BZnxWMmW.js.map → streamAttributes-C2mLVHk_.js.map} +1 -1
  81. package/dist/esm/tslib.es6-C-NyjLsm.js +40 -0
  82. package/dist/esm/{tslib.es6-BzyVljQN.js.map → tslib.es6-C-NyjLsm.js.map} +1 -1
  83. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +1 -1
  84. package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
  85. package/dist/esm/vertex-scene-tree.entry.js +2 -2
  86. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  87. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +2 -2
  88. package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
  89. package/dist/esm/vertex-viewer-measurement-distance.entry.js +2 -2
  90. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
  91. package/dist/esm/vertex-viewer-measurement-precise.entry.js +4 -4
  92. package/dist/esm/vertex-viewer-pin-group.entry.js +3 -3
  93. package/dist/esm/vertex-viewer-transform-widget.entry.js +2 -2
  94. package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
  95. package/dist/esm/vertex-viewer.entry.js +4 -4
  96. package/dist/viewer/index.esm.js +1 -1
  97. package/dist/viewer/{p-ad4c1175.entry.js → p-08b86996.entry.js} +2 -2
  98. package/dist/viewer/{p-b4bbbebf.entry.js → p-10c40a5e.entry.js} +2 -2
  99. package/dist/viewer/{p-ef596c04.entry.js → p-17e47830.entry.js} +2 -2
  100. package/dist/viewer/{p-ec49e818.entry.js → p-195297bb.entry.js} +2 -2
  101. package/dist/viewer/{p-994602a4.entry.js → p-37a7cbe4.entry.js} +2 -2
  102. package/dist/viewer/{p-9dd4a49a.entry.js → p-484e6990.entry.js} +2 -2
  103. package/dist/viewer/{p-ffd28212.entry.js → p-4a3a05c7.entry.js} +2 -2
  104. package/dist/viewer/{p-210f1777.entry.js → p-515eefc1.entry.js} +2 -2
  105. package/dist/viewer/{p-bfe38f9b.entry.js → p-91b6f9de.entry.js} +2 -2
  106. package/dist/viewer/{p-c46bf3b1.entry.js → p-9386f89b.entry.js} +2 -2
  107. package/dist/viewer/{p-75EpAVwy.js → p-Bi9f5zZC.js} +2 -2
  108. package/dist/viewer/{p-75EpAVwy.js.map → p-Bi9f5zZC.js.map} +1 -1
  109. package/dist/viewer/p-C-NyjLsm.js +5 -0
  110. package/dist/viewer/{p-BzyVljQN.js.map → p-C-NyjLsm.js.map} +1 -1
  111. package/dist/viewer/{p-CT1PhiRV.js → p-CD3U7s8H.js} +2 -2
  112. package/dist/viewer/{p-CT1PhiRV.js.map → p-CD3U7s8H.js.map} +1 -1
  113. package/dist/viewer/{p-BFQ1Tt4Y.js → p-Dl2B5rCE.js} +2 -2
  114. package/dist/viewer/{p-BFQ1Tt4Y.js.map → p-Dl2B5rCE.js.map} +1 -1
  115. package/dist/{components/p-CMBmMRkF.js → viewer/p-Dt9-9vSd.js} +2 -2
  116. package/dist/viewer/{p-BIj2SAwD.js.map → p-Dt9-9vSd.js.map} +1 -1
  117. package/dist/viewer/{p-CT3sclrO.js → p-P0ZprdA-.js} +2 -2
  118. package/dist/viewer/{p-CT3sclrO.js.map → p-P0ZprdA-.js.map} +1 -1
  119. package/dist/viewer/{p-2bb26337.entry.js → p-ae4ec0a8.entry.js} +2 -2
  120. package/dist/viewer/{p-e00839cd.entry.js → p-d709a094.entry.js} +2 -2
  121. package/dist/viewer/{p-7cb94735.entry.js → p-ef02ec4c.entry.js} +2 -2
  122. package/dist/viewer/p-fKH0aLlq.js +5 -0
  123. package/dist/viewer/p-fKH0aLlq.js.map +1 -0
  124. package/dist/viewer/{p-BnXUpT0J.js → p-fXz1xKOD.js} +2 -2
  125. package/dist/viewer/{p-BnXUpT0J.js.map → p-fXz1xKOD.js.map} +1 -1
  126. package/dist/viewer/{p-D4OO4AF0.js → p-vWHX2QSb.js} +2 -2
  127. package/dist/viewer/{p-D4OO4AF0.js.map → p-vWHX2QSb.js.map} +1 -1
  128. package/dist/viewer/viewer.esm.js +1 -1
  129. package/package.json +32 -32
  130. package/dist/cjs/package.json +0 -3
  131. package/dist/cjs/png-decoder-Dt3IOAnw.js.map +0 -1
  132. package/dist/cjs/tslib.es6-Bu5Kp4WX.js +0 -92
  133. package/dist/components/p-BzyVljQN.js +0 -5
  134. package/dist/components/p-BzyVljQN.js.map +0 -1
  135. package/dist/components/p-DaLbXlOV.js +0 -5
  136. package/dist/components/p-DaLbXlOV.js.map +0 -1
  137. package/dist/esm/index.mjs +0 -106
  138. package/dist/esm/loader.mjs +0 -16
  139. package/dist/esm/png-decoder-gMslGChA.js.map +0 -1
  140. package/dist/esm/tslib.es6-BzyVljQN.js +0 -88
  141. package/dist/index.cjs +0 -1
  142. package/dist/viewer/p-BIj2SAwD.js +0 -5
  143. package/dist/viewer/p-BzyVljQN.js +0 -5
  144. package/dist/viewer/p-DaLbXlOV.js +0 -5
  145. package/dist/viewer/p-DaLbXlOV.js.map +0 -1
  146. package/loader/index.cjs +0 -4
  147. /package/dist/components/{p-Tfg7jao4.js.map → p-B1EwHtiU.js.map} +0 -0
  148. /package/dist/components/{p-Be_EPOMu.js.map → p-CNDZjNd7.js.map} +0 -0
  149. /package/dist/components/{p-BNanw3eX.js.map → p-C_5cRYhA.js.map} +0 -0
  150. /package/dist/components/{p-C-Mdlx-o.js.map → p-CkYfi_b3.js.map} +0 -0
  151. /package/dist/components/{p-BQQxciHe.js.map → p-Dks3EzBM.js.map} +0 -0
  152. /package/dist/components/{p-DCxPi7ft.js.map → p-IbLMJcql.js.map} +0 -0
  153. /package/dist/components/{p-B3jZXFq2.js.map → p-XydgrVf-.js.map} +0 -0
  154. /package/dist/components/{p-CMBmMRkF.js.map → p-Z7U3o7I4.js.map} +0 -0
  155. /package/dist/components/{p-Cta7kB-G.js.map → p-ZzS5zTnx.js.map} +0 -0
  156. /package/dist/components/{p-C6BUwWB4.js.map → p-hMIHFP5Q.js.map} +0 -0
  157. /package/dist/components/{p-DpQErze2.js.map → p-sPEu8FHr.js.map} +0 -0
  158. /package/dist/viewer/{p-ad4c1175.entry.js.map → p-08b86996.entry.js.map} +0 -0
  159. /package/dist/viewer/{p-b4bbbebf.entry.js.map → p-10c40a5e.entry.js.map} +0 -0
  160. /package/dist/viewer/{p-ef596c04.entry.js.map → p-17e47830.entry.js.map} +0 -0
  161. /package/dist/viewer/{p-ec49e818.entry.js.map → p-195297bb.entry.js.map} +0 -0
  162. /package/dist/viewer/{p-994602a4.entry.js.map → p-37a7cbe4.entry.js.map} +0 -0
  163. /package/dist/viewer/{p-9dd4a49a.entry.js.map → p-484e6990.entry.js.map} +0 -0
  164. /package/dist/viewer/{p-ffd28212.entry.js.map → p-4a3a05c7.entry.js.map} +0 -0
  165. /package/dist/viewer/{p-210f1777.entry.js.map → p-515eefc1.entry.js.map} +0 -0
  166. /package/dist/viewer/{p-bfe38f9b.entry.js.map → p-91b6f9de.entry.js.map} +0 -0
  167. /package/dist/viewer/{p-c46bf3b1.entry.js.map → p-9386f89b.entry.js.map} +0 -0
  168. /package/dist/viewer/{p-2bb26337.entry.js.map → p-ae4ec0a8.entry.js.map} +0 -0
  169. /package/dist/viewer/{p-e00839cd.entry.js.map → p-d709a094.entry.js.map} +0 -0
  170. /package/dist/viewer/{p-7cb94735.entry.js.map → p-ef02ec4c.entry.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{m as t,a as s,g as i}from"./p-BnXUpT0J.js";import{s as e,w as n}from"./p-BNuMPeJ8.js";import{r,c as o}from"./p-CioaIHsi.js";import{v as h}from"./p-B4qVkXXt.js";import{m as a}from"./p-IVh_3-KN.js";import{o as c}from"./p-CT1PhiRV.js";class m{constructor(t,s,i,e){this.model=t;this.client=s;this.jwtProvider=i;this.deviceId=e;this.outcome=Promise.resolve(undefined);this.debugLogs=false}addEntity(s){if(this.debugLogs){const i=t.ModelEntity.deserializeBinary(s.modelEntity);this.log(`Adding ModelEntity. [entityId={${i.getEntityId()}}, sceneItemId={${i.getSceneItemId()}}]`)}return this.performMeasurement((()=>this.model.addEntity(s)))}clearEntities(){this.log("Clearing all ModelEntities.");return this.performMeasurement((()=>{this.model.clearEntities();this.model.clearOutcome();return true}))}removeEntity(s){if(this.debugLogs){const i=t.ModelEntity.deserializeBinary(s.modelEntity);this.log(`Removing ModelEntity. [entityId={${i.getEntityId()}}, sceneItemId={${i.getSceneItemId()}}]`)}return this.performMeasurement((()=>this.model.removeEntity(s)))}setEntities(s){if(this.debugLogs){const i=Array.from(s).map((s=>t.ModelEntity.deserializeBinary(s.modelEntity)));this.log(`Setting ${i.length} ModelEntities. [entityIds=[${i.map((t=>t.getEntityId())).join(", ")}], sceneItemIds=[${i.map((t=>t.getSceneItemId())).join(", ")}]]`)}return this.performMeasurement((()=>this.model.setEntities(s)))}setDebugLogs(t){this.debugLogs=t}performMeasurement(t){const s=this.model.getEntities();const i=t();const e=this.model.getEntities();if(i){this.measureAndUpdateModel(e);this.highlightEntities(s,e)}return this.outcome}measureAndUpdateModel(t){if(t.length>0){this.outcome=this.measureEntities(t).then((t=>{this.model.setOutcome(t);return this.model.getOutcome()}))}else{this.outcome=Promise.resolve(undefined)}}async measureEntities(t){if(t.length>0){const i=await r((async s=>{const i=await o(this.jwtProvider,this.deviceId);const n=new e.MeasureRequest;n.setEntitiesList(t.map((t=>t.toProto())));this.client.measure(n,i,s)}));return s(i.toObject())}else{return undefined}}async highlightEntities(s,i){await r((async r=>{const h=await o(this.jwtProvider,this.deviceId);const a=new Set(i);const c=s.filter((t=>!a.has(t)));const m=c.map((s=>{const i=new e.ModelEntityUpdate;i.setModelEntity(t.ModelEntity.deserializeBinary(s.modelEntity));i.setHighlight((new n.BoolValue).setValue(false));return i}));const u=i.map((s=>{const i=new e.ModelEntityUpdate;i.setModelEntity(t.ModelEntity.deserializeBinary(s.modelEntity));i.setHighlight((new n.BoolValue).setValue(true));return i}));const d=new e.UpdateModelEntitiesRequest;d.setUpdatesList([...m,...u]);this.client.updateModelEntities(d,h,r)}))}log(t,...s){if(this.debugLogs){console.debug(t,s)}}}class u{constructor(t,s){this.point=t;this.modelEntity=s}static fromHit(t){if(t.hitPoint!=null&&t.modelEntity!=null){const s=a.ifInvalidThrow(c)(t.hitPoint);const i=h.protobuf.core.ModelEntity.encode(t.modelEntity).finish();return new u(s,i)}else{throw new Error("Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity")}}toProto(){const s=new e.MeasureEntity;const n=new i.Vector3f;n.setX(this.point.x);n.setY(this.point.y);n.setZ(this.point.z);s.setPoint(n);const r=t.ModelEntity.deserializeBinary(this.modelEntity);s.setModelEntity(r);return s}}export{m as M,u as a};
5
- //# sourceMappingURL=p-BFQ1Tt4Y.js.map
4
+ import{m as t,a as s,g as i}from"./p-fXz1xKOD.js";import{s as e,w as n}from"./p-BNuMPeJ8.js";import{r,c as o}from"./p-CioaIHsi.js";import{v as h}from"./p-B4qVkXXt.js";import{m as a}from"./p-IVh_3-KN.js";import{o as c}from"./p-CD3U7s8H.js";class m{constructor(t,s,i,e){this.model=t;this.client=s;this.jwtProvider=i;this.deviceId=e;this.outcome=Promise.resolve(undefined);this.debugLogs=false}addEntity(s){if(this.debugLogs){const i=t.ModelEntity.deserializeBinary(s.modelEntity);this.log(`Adding ModelEntity. [entityId={${i.getEntityId()}}, sceneItemId={${i.getSceneItemId()}}]`)}return this.performMeasurement((()=>this.model.addEntity(s)))}clearEntities(){this.log("Clearing all ModelEntities.");return this.performMeasurement((()=>{this.model.clearEntities();this.model.clearOutcome();return true}))}removeEntity(s){if(this.debugLogs){const i=t.ModelEntity.deserializeBinary(s.modelEntity);this.log(`Removing ModelEntity. [entityId={${i.getEntityId()}}, sceneItemId={${i.getSceneItemId()}}]`)}return this.performMeasurement((()=>this.model.removeEntity(s)))}setEntities(s){if(this.debugLogs){const i=Array.from(s).map((s=>t.ModelEntity.deserializeBinary(s.modelEntity)));this.log(`Setting ${i.length} ModelEntities. [entityIds=[${i.map((t=>t.getEntityId())).join(", ")}], sceneItemIds=[${i.map((t=>t.getSceneItemId())).join(", ")}]]`)}return this.performMeasurement((()=>this.model.setEntities(s)))}setDebugLogs(t){this.debugLogs=t}performMeasurement(t){const s=this.model.getEntities();const i=t();const e=this.model.getEntities();if(i){this.measureAndUpdateModel(e);this.highlightEntities(s,e)}return this.outcome}measureAndUpdateModel(t){if(t.length>0){this.outcome=this.measureEntities(t).then((t=>{this.model.setOutcome(t);return this.model.getOutcome()}))}else{this.outcome=Promise.resolve(undefined)}}async measureEntities(t){if(t.length>0){const i=await r((async s=>{const i=await o(this.jwtProvider,this.deviceId);const n=new e.MeasureRequest;n.setEntitiesList(t.map((t=>t.toProto())));this.client.measure(n,i,s)}));return s(i.toObject())}else{return undefined}}async highlightEntities(s,i){await r((async r=>{const h=await o(this.jwtProvider,this.deviceId);const a=new Set(i);const c=s.filter((t=>!a.has(t)));const m=c.map((s=>{const i=new e.ModelEntityUpdate;i.setModelEntity(t.ModelEntity.deserializeBinary(s.modelEntity));i.setHighlight((new n.BoolValue).setValue(false));return i}));const u=i.map((s=>{const i=new e.ModelEntityUpdate;i.setModelEntity(t.ModelEntity.deserializeBinary(s.modelEntity));i.setHighlight((new n.BoolValue).setValue(true));return i}));const d=new e.UpdateModelEntitiesRequest;d.setUpdatesList([...m,...u]);this.client.updateModelEntities(d,h,r)}))}log(t,...s){if(this.debugLogs){console.debug(t,s)}}}class u{constructor(t,s){this.point=t;this.modelEntity=s}static fromHit(t){if(t.hitPoint!=null&&t.modelEntity!=null){const s=a.ifInvalidThrow(c)(t.hitPoint);const i=h.protobuf.core.ModelEntity.encode(t.modelEntity).finish();return new u(s,i)}else{throw new Error("Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity")}}toProto(){const s=new e.MeasureEntity;const n=new i.Vector3f;n.setX(this.point.x);n.setY(this.point.y);n.setZ(this.point.z);s.setPoint(n);const r=t.ModelEntity.deserializeBinary(this.modelEntity);s.setModelEntity(r);return s}}export{m as M,u as a};
5
+ //# sourceMappingURL=p-Dl2B5rCE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"p-BFQ1Tt4Y.js","sources":["src/lib/measurement/controller.ts","src/lib/measurement/entities.ts"],"sourcesContent":["import { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport {\n MeasureRequest,\n MeasureResponse,\n ModelEntityUpdate,\n UpdateModelEntitiesRequest,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { BoolValue } from 'google-protobuf/google/protobuf/wrappers_pb';\n\nimport { createMetadata, JwtProvider, requestUnary } from '../grpc';\nimport { MeasurementEntity } from './entities';\nimport { mapMeasureResponseOrThrow } from './mapper';\nimport { MeasurementModel } from './model';\nimport { MeasurementOutcome } from './outcomes';\n\n/**\n * The `MeasurementController` is responsible for performing measurements of\n * registered entities, and updating the model with their measurement results.\n */\nexport class MeasurementController {\n private outcome = Promise.resolve<MeasurementOutcome | undefined>(undefined);\n private debugLogs = false;\n\n public constructor(\n private model: MeasurementModel,\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceId: string | undefined,\n ) {}\n\n /**\n * Registers an entity to measure and performs a measurement if this entity\n * has not been previously registered.\n *\n * @param entity The entity to measure.\n * @returns A promise that resolves with the results after registering this\n * entity.\n */\n public addEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Adding ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.addEntity(entity));\n }\n\n /**\n * Clears all entities and returns a promise that resolves with an empty list\n * of measurement results.\n */\n public clearEntities(): Promise<MeasurementOutcome | undefined> {\n this.log('Clearing all ModelEntities.');\n\n return this.performMeasurement(() => {\n this.model.clearEntities();\n this.model.clearOutcome();\n return true;\n });\n }\n\n /**\n * Deregisters an entity and performs a measurement if this entity was\n * removed.\n *\n * @param entity The entity to remove.\n * @returns A promise that resolves with the results after removing this\n * entity.\n */\n public removeEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Removing ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.removeEntity(entity));\n }\n\n /**\n * Registers a set of entities and performs a measurement\n *\n * @param entities The entities to measure.\n * @returns A promise that resolves with the results after registering these\n * entities.\n */\n public setEntities(\n entities: Set<MeasurementEntity>,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntities = Array.from(entities).map((e) =>\n ModelEntity.deserializeBinary(e.modelEntity),\n );\n\n this.log(\n `Setting ${deserializedEntities.length} ModelEntities. [entityIds=[${deserializedEntities.map((e) => e.getEntityId()).join(', ')}], sceneItemIds=[${deserializedEntities.map((e) => e.getSceneItemId()).join(', ')}]]`,\n );\n }\n\n return this.performMeasurement(() => this.model.setEntities(entities));\n }\n\n public setDebugLogs(debugLogs: boolean): void {\n this.debugLogs = debugLogs;\n }\n\n private performMeasurement(\n effect: () => boolean,\n ): Promise<MeasurementOutcome | undefined> {\n const previous = this.model.getEntities();\n const changed = effect();\n const entities = this.model.getEntities();\n if (changed) {\n this.measureAndUpdateModel(entities);\n this.highlightEntities(previous, entities);\n }\n return this.outcome;\n }\n\n private measureAndUpdateModel(entities: MeasurementEntity[]): void {\n if (entities.length > 0) {\n this.outcome = this.measureEntities(entities).then((outcome) => {\n this.model.setOutcome(outcome);\n return this.model.getOutcome();\n });\n } else {\n this.outcome = Promise.resolve(undefined);\n }\n }\n\n private async measureEntities(\n entities: MeasurementEntity[],\n ): Promise<MeasurementOutcome | undefined> {\n if (entities.length > 0) {\n const res = await requestUnary<MeasureResponse>(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n const req = new MeasureRequest();\n req.setEntitiesList(entities.map((e) => e.toProto()));\n\n this.client.measure(req, meta, handler);\n });\n\n return mapMeasureResponseOrThrow(res.toObject());\n } else {\n return undefined;\n }\n }\n\n private async highlightEntities(\n previous: MeasurementEntity[],\n entities: MeasurementEntity[],\n ): Promise<void> {\n await requestUnary(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n\n const entitySet = new Set(entities);\n const newPrevious = previous.filter((e) => !entitySet.has(e));\n\n const clearEntities = newPrevious.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(false));\n return update;\n });\n const highlightEntities = entities.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(true));\n return update;\n });\n\n const req = new UpdateModelEntitiesRequest();\n req.setUpdatesList([...clearEntities, ...highlightEntities]);\n this.client.updateModelEntities(req, meta, handler);\n });\n }\n\n private log(message?: string, ...optionalParams: unknown[]): void {\n if (this.debugLogs) {\n console.debug(message, optionalParams);\n }\n }\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Vector3 } from '@vertexvis/geometry';\nimport { Vector3f } from '@vertexvis/scene-view-protos/core/protos/geometry_pb';\nimport { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport { MeasureEntity } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper } from '@vertexvis/utils';\n\nimport { fromPbVector3f } from '../mappers';\n\nexport class MeasurementEntity {\n public constructor(\n public readonly point: Vector3.Vector3,\n public readonly modelEntity: Uint8Array,\n ) {}\n\n public static fromHit(\n hit: vertexvis.protobuf.stream.IHit,\n ): MeasurementEntity {\n if (hit.hitPoint != null && hit.modelEntity != null) {\n const hitPoint = Mapper.ifInvalidThrow(fromPbVector3f)(hit.hitPoint);\n const modelEntity = vertexvis.protobuf.core.ModelEntity.encode(\n hit.modelEntity,\n ).finish();\n return new MeasurementEntity(hitPoint, modelEntity);\n } else {\n throw new Error(\n 'Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity',\n );\n }\n }\n\n public toProto(): MeasureEntity {\n const entity = new MeasureEntity();\n\n const point = new Vector3f();\n point.setX(this.point.x);\n point.setY(this.point.y);\n point.setZ(this.point.z);\n entity.setPoint(point);\n\n const modelEntity = ModelEntity.deserializeBinary(this.modelEntity);\n entity.setModelEntity(modelEntity);\n\n return entity;\n }\n}\n"],"names":["ModelEntity","MeasureRequest","ModelEntityUpdate","BoolValue","UpdateModelEntitiesRequest","Mapper","MeasureEntity","Vector3f"],"mappings":"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"}
1
+ {"version":3,"file":"p-Dl2B5rCE.js","sources":["src/lib/measurement/controller.ts","src/lib/measurement/entities.ts"],"sourcesContent":["import { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport {\n MeasureRequest,\n MeasureResponse,\n ModelEntityUpdate,\n UpdateModelEntitiesRequest,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { BoolValue } from 'google-protobuf/google/protobuf/wrappers_pb';\n\nimport { createMetadata, JwtProvider, requestUnary } from '../grpc';\nimport { MeasurementEntity } from './entities';\nimport { mapMeasureResponseOrThrow } from './mapper';\nimport { MeasurementModel } from './model';\nimport { MeasurementOutcome } from './outcomes';\n\n/**\n * The `MeasurementController` is responsible for performing measurements of\n * registered entities, and updating the model with their measurement results.\n */\nexport class MeasurementController {\n private outcome = Promise.resolve<MeasurementOutcome | undefined>(undefined);\n private debugLogs = false;\n\n public constructor(\n private model: MeasurementModel,\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceId: string | undefined,\n ) {}\n\n /**\n * Registers an entity to measure and performs a measurement if this entity\n * has not been previously registered.\n *\n * @param entity The entity to measure.\n * @returns A promise that resolves with the results after registering this\n * entity.\n */\n public addEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Adding ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.addEntity(entity));\n }\n\n /**\n * Clears all entities and returns a promise that resolves with an empty list\n * of measurement results.\n */\n public clearEntities(): Promise<MeasurementOutcome | undefined> {\n this.log('Clearing all ModelEntities.');\n\n return this.performMeasurement(() => {\n this.model.clearEntities();\n this.model.clearOutcome();\n return true;\n });\n }\n\n /**\n * Deregisters an entity and performs a measurement if this entity was\n * removed.\n *\n * @param entity The entity to remove.\n * @returns A promise that resolves with the results after removing this\n * entity.\n */\n public removeEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Removing ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.removeEntity(entity));\n }\n\n /**\n * Registers a set of entities and performs a measurement\n *\n * @param entities The entities to measure.\n * @returns A promise that resolves with the results after registering these\n * entities.\n */\n public setEntities(\n entities: Set<MeasurementEntity>,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntities = Array.from(entities).map((e) =>\n ModelEntity.deserializeBinary(e.modelEntity),\n );\n\n this.log(\n `Setting ${deserializedEntities.length} ModelEntities. [entityIds=[${deserializedEntities.map((e) => e.getEntityId()).join(', ')}], sceneItemIds=[${deserializedEntities.map((e) => e.getSceneItemId()).join(', ')}]]`,\n );\n }\n\n return this.performMeasurement(() => this.model.setEntities(entities));\n }\n\n public setDebugLogs(debugLogs: boolean): void {\n this.debugLogs = debugLogs;\n }\n\n private performMeasurement(\n effect: () => boolean,\n ): Promise<MeasurementOutcome | undefined> {\n const previous = this.model.getEntities();\n const changed = effect();\n const entities = this.model.getEntities();\n if (changed) {\n this.measureAndUpdateModel(entities);\n this.highlightEntities(previous, entities);\n }\n return this.outcome;\n }\n\n private measureAndUpdateModel(entities: MeasurementEntity[]): void {\n if (entities.length > 0) {\n this.outcome = this.measureEntities(entities).then((outcome) => {\n this.model.setOutcome(outcome);\n return this.model.getOutcome();\n });\n } else {\n this.outcome = Promise.resolve(undefined);\n }\n }\n\n private async measureEntities(\n entities: MeasurementEntity[],\n ): Promise<MeasurementOutcome | undefined> {\n if (entities.length > 0) {\n const res = await requestUnary<MeasureResponse>(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n const req = new MeasureRequest();\n req.setEntitiesList(entities.map((e) => e.toProto()));\n\n this.client.measure(req, meta, handler);\n });\n\n return mapMeasureResponseOrThrow(res.toObject());\n } else {\n return undefined;\n }\n }\n\n private async highlightEntities(\n previous: MeasurementEntity[],\n entities: MeasurementEntity[],\n ): Promise<void> {\n await requestUnary(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n\n const entitySet = new Set(entities);\n const newPrevious = previous.filter((e) => !entitySet.has(e));\n\n const clearEntities = newPrevious.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(false));\n return update;\n });\n const highlightEntities = entities.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(true));\n return update;\n });\n\n const req = new UpdateModelEntitiesRequest();\n req.setUpdatesList([...clearEntities, ...highlightEntities]);\n this.client.updateModelEntities(req, meta, handler);\n });\n }\n\n private log(message?: string, ...optionalParams: unknown[]): void {\n if (this.debugLogs) {\n console.debug(message, optionalParams);\n }\n }\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Vector3 } from '@vertexvis/geometry';\nimport { Vector3f } from '@vertexvis/scene-view-protos/core/protos/geometry_pb';\nimport { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport { MeasureEntity } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper } from '@vertexvis/utils';\n\nimport { fromPbVector3f } from '../mappers';\n\nexport class MeasurementEntity {\n public constructor(\n public readonly point: Vector3.Vector3,\n public readonly modelEntity: Uint8Array,\n ) {}\n\n public static fromHit(\n hit: vertexvis.protobuf.stream.IHit,\n ): MeasurementEntity {\n if (hit.hitPoint != null && hit.modelEntity != null) {\n const hitPoint = Mapper.ifInvalidThrow(fromPbVector3f)(hit.hitPoint);\n const modelEntity = vertexvis.protobuf.core.ModelEntity.encode(\n hit.modelEntity,\n ).finish();\n return new MeasurementEntity(hitPoint, modelEntity);\n } else {\n throw new Error(\n 'Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity',\n );\n }\n }\n\n public toProto(): MeasureEntity {\n const entity = new MeasureEntity();\n\n const point = new Vector3f();\n point.setX(this.point.x);\n point.setY(this.point.y);\n point.setZ(this.point.z);\n entity.setPoint(point);\n\n const modelEntity = ModelEntity.deserializeBinary(this.modelEntity);\n entity.setModelEntity(modelEntity);\n\n return entity;\n }\n}\n"],"names":["ModelEntity","MeasureRequest","ModelEntityUpdate","BoolValue","UpdateModelEntitiesRequest","Mapper","MeasureEntity","Vector3f"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{d as s,e as a,f as e}from"./p-FRKLa468.js";import{m as o}from"./p-IVh_3-KN.js";import{l as t,X as i,s as n,Y as m}from"./p-Be_EPOMu.js";var d=s();var r=a();const p=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName"),o.mapRequiredProp("partRevisionId",t),o.mapRequiredProp("camera",i)),(([s,a,e,o])=>({id:s,displayName:a,partRevisionId:e,camera:o})));const c=o.defineMapper(o.read(o.mapProp("modelViewsList",o.mapArray(p)),o.mapProp("nextPageCursor",n)),(([s,a])=>({modelViews:s,paging:{next:a}})));const l=o.ifInvalidThrow(c);const I=o.defineMapper(o.read(o.mapProp("modelViewId",m),o.mapProp("sceneItemId",m)),(([s,a])=>({modelViewId:s,sceneItemId:a})));const g=o.ifInvalidThrow(I);const v=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName")),(([s,a])=>({id:s,displayName:a})));const x=o.defineMapper(o.read(o.mapProp("annotationsList",o.mapArray(v)),o.mapProp("nextPageCursor",n)),(([s,a])=>({annotations:s,paging:{next:a}})));const N=o.ifInvalidThrow(x);var V=e();export{g as a,N as b,l as m,d as p,V as r,r as u};
5
- //# sourceMappingURL=p-CMBmMRkF.js.map
4
+ import{b as s,c as a,d as e}from"./p-BNuMPeJ8.js";import{m as o}from"./p-IVh_3-KN.js";import{l as t,V as i,s as n,W as m}from"./p-CD3U7s8H.js";var d=s();var r=a();const p=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName"),o.mapRequiredProp("partRevisionId",t),o.mapRequiredProp("camera",i)),(([s,a,e,o])=>({id:s,displayName:a,partRevisionId:e,camera:o})));const c=o.defineMapper(o.read(o.mapProp("modelViewsList",o.mapArray(p)),o.mapProp("nextPageCursor",n)),(([s,a])=>({modelViews:s,paging:{next:a}})));const l=o.ifInvalidThrow(c);const I=o.defineMapper(o.read(o.mapProp("modelViewId",m),o.mapProp("sceneItemId",m)),(([s,a])=>({modelViewId:s,sceneItemId:a})));const g=o.ifInvalidThrow(I);const N=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName")),(([s,a])=>({id:s,displayName:a})));const V=o.defineMapper(o.read(o.mapProp("annotationsList",o.mapArray(N)),o.mapProp("nextPageCursor",n)),(([s,a])=>({annotations:s,paging:{next:a}})));const v=o.ifInvalidThrow(V);var x=e();export{g as a,v as b,l as m,d as p,x as r,r as u};
5
+ //# sourceMappingURL=p-Dt9-9vSd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"p-BIj2SAwD.js","sources":["src/lib/model-views/mapper.ts","src/lib/pmi/mapper.ts"],"sourcesContent":["import type { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { ModelView as PBModelView } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListItemModelViewsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M, UUID } from '@vertexvis/utils';\n\nimport {\n fromPbCamera,\n fromPbUuid2l,\n mapCursor,\n toPbJsUuid2l,\n} from '../mappers';\nimport { ModelView, ModelViewListResponse } from './types';\n\nconst mapModelView: M.Func<PBModelView.AsObject, ModelView> = M.defineMapper(\n M.read(\n M.mapRequiredProp('id', fromPbUuid2l),\n M.getProp('displayName'),\n M.mapRequiredProp('partRevisionId', fromPbUuid2l),\n M.mapRequiredProp('camera', fromPbCamera),\n ),\n ([id, displayName, partRevisionId, camera]) => ({\n id,\n displayName,\n partRevisionId,\n camera,\n }),\n);\n\nconst mapListItemModelViewsResponse: M.Func<\n ListItemModelViewsResponse.AsObject,\n ModelViewListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewsList', M.mapArray(mapModelView)),\n M.mapProp('nextPageCursor', mapCursor),\n ),\n ([modelViews, next]) => ({ modelViews, paging: { next } }),\n);\n\nexport const mapListItemModelViewsResponseOrThrow = M.ifInvalidThrow(\n mapListItemModelViewsResponse,\n);\n\nconst mapItemModelView: M.Func<\n { modelViewId: UUID.UUID; sceneItemId: UUID.UUID },\n vertexvis.protobuf.core.IItemModelView\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewId', toPbJsUuid2l),\n M.mapProp('sceneItemId', toPbJsUuid2l),\n ),\n ([modelViewId, sceneItemId]) => ({ modelViewId, sceneItemId }),\n);\n\nexport const mapItemModelViewOrThrow = M.ifInvalidThrow(mapItemModelView);\n","import { PmiAnnotation as PBPmiAnnotation } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListPmiAnnotationsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { fromPbUuid2l, mapCursor } from '../mappers';\nimport { PmiAnnotation, PmiAnnotationListResponse } from './types';\n\nconst mapPmiAnnotation: M.Func<PBPmiAnnotation.AsObject, PmiAnnotation> =\n M.defineMapper(\n M.read(M.mapRequiredProp('id', fromPbUuid2l), M.getProp('displayName')),\n ([id, displayName]) => ({ id, displayName }),\n );\n\nconst mapListPmiAnnotationsResponse: M.Func<\n ListPmiAnnotationsResponse.AsObject,\n PmiAnnotationListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('annotationsList', M.mapArray(mapPmiAnnotation)),\n M.mapProp('nextPageCursor', mapCursor),\n ),\n ([annotations, next]) => ({ annotations, paging: { next } }),\n);\n\nexport const mapListPmiAnnotationsResponseOrThrow = M.ifInvalidThrow(\n mapListPmiAnnotationsResponse,\n);\n"],"names":["M"],"mappings":";;;;;;;;;;;AAaA,MAAM,YAAY,GAA4CA,MAAC,CAAC,YAAY,CAC1EA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACrCA,MAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EACxBA,MAAC,CAAC,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,EACjDA,MAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAC1C,EACD,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM;IAC9C,EAAE;IACF,WAAW;IACX,cAAc;IACd,MAAM;AACP,CAAA,CAAC,CACH;AAED,MAAM,6BAA6B,GAG/BA,MAAC,CAAC,YAAY,CAChBA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,OAAO,CAAC,gBAAgB,EAAEA,MAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EACrDA,MAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CACvC,EACD,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAC3D;AAEM,MAAM,oCAAoC,GAAGA,MAAC,CAAC,cAAc,CAClE,6BAA6B;AAG/B,MAAM,gBAAgB,GAGlBA,MAAC,CAAC,YAAY,CAChBA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,EACtCA,MAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CACvC,EACD,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAC/D;AAEM,MAAM,uBAAuB,GAAGA,MAAC,CAAC,cAAc,CAAC,gBAAgB;;AC/CxE,MAAM,gBAAgB,GACpBA,MAAC,CAAC,YAAY,CACZA,MAAC,CAAC,IAAI,CAACA,MAAC,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAEA,MAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EACvE,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAC7C;AAEH,MAAM,6BAA6B,GAG/BA,MAAC,CAAC,YAAY,CAChBA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,OAAO,CAAC,iBAAiB,EAAEA,MAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAC1DA,MAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CACvC,EACD,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAC7D;AAEM,MAAM,oCAAoC,GAAGA,MAAC,CAAC,cAAc,CAClE,6BAA6B;;;;;;"}
1
+ {"version":3,"file":"p-Dt9-9vSd.js","sources":["src/lib/model-views/mapper.ts","src/lib/pmi/mapper.ts"],"sourcesContent":["import type { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { ModelView as PBModelView } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListItemModelViewsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M, UUID } from '@vertexvis/utils';\n\nimport {\n fromPbCamera,\n fromPbUuid2l,\n mapCursor,\n toPbJsUuid2l,\n} from '../mappers';\nimport { ModelView, ModelViewListResponse } from './types';\n\nconst mapModelView: M.Func<PBModelView.AsObject, ModelView> = M.defineMapper(\n M.read(\n M.mapRequiredProp('id', fromPbUuid2l),\n M.getProp('displayName'),\n M.mapRequiredProp('partRevisionId', fromPbUuid2l),\n M.mapRequiredProp('camera', fromPbCamera),\n ),\n ([id, displayName, partRevisionId, camera]) => ({\n id,\n displayName,\n partRevisionId,\n camera,\n }),\n);\n\nconst mapListItemModelViewsResponse: M.Func<\n ListItemModelViewsResponse.AsObject,\n ModelViewListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewsList', M.mapArray(mapModelView)),\n M.mapProp('nextPageCursor', mapCursor),\n ),\n ([modelViews, next]) => ({ modelViews, paging: { next } }),\n);\n\nexport const mapListItemModelViewsResponseOrThrow = M.ifInvalidThrow(\n mapListItemModelViewsResponse,\n);\n\nconst mapItemModelView: M.Func<\n { modelViewId: UUID.UUID; sceneItemId: UUID.UUID },\n vertexvis.protobuf.core.IItemModelView\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewId', toPbJsUuid2l),\n M.mapProp('sceneItemId', toPbJsUuid2l),\n ),\n ([modelViewId, sceneItemId]) => ({ modelViewId, sceneItemId }),\n);\n\nexport const mapItemModelViewOrThrow = M.ifInvalidThrow(mapItemModelView);\n","import { PmiAnnotation as PBPmiAnnotation } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListPmiAnnotationsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { fromPbUuid2l, mapCursor } from '../mappers';\nimport { PmiAnnotation, PmiAnnotationListResponse } from './types';\n\nconst mapPmiAnnotation: M.Func<PBPmiAnnotation.AsObject, PmiAnnotation> =\n M.defineMapper(\n M.read(M.mapRequiredProp('id', fromPbUuid2l), M.getProp('displayName')),\n ([id, displayName]) => ({ id, displayName }),\n );\n\nconst mapListPmiAnnotationsResponse: M.Func<\n ListPmiAnnotationsResponse.AsObject,\n PmiAnnotationListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('annotationsList', M.mapArray(mapPmiAnnotation)),\n M.mapProp('nextPageCursor', mapCursor),\n ),\n ([annotations, next]) => ({ annotations, paging: { next } }),\n);\n\nexport const mapListPmiAnnotationsResponseOrThrow = M.ifInvalidThrow(\n mapListPmiAnnotationsResponse,\n);\n"],"names":["M"],"mappings":";;;;;;;;;;;AAaA,MAAM,YAAY,GAA4CA,MAAC,CAAC,YAAY,CAC1EA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EACrCA,MAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EACxBA,MAAC,CAAC,eAAe,CAAC,gBAAgB,EAAE,YAAY,CAAC,EACjDA,MAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAC1C,EACD,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM;IAC9C,EAAE;IACF,WAAW;IACX,cAAc;IACd,MAAM;AACP,CAAA,CAAC,CACH;AAED,MAAM,6BAA6B,GAG/BA,MAAC,CAAC,YAAY,CAChBA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,OAAO,CAAC,gBAAgB,EAAEA,MAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EACrDA,MAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CACvC,EACD,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAC3D;AAEM,MAAM,oCAAoC,GAAGA,MAAC,CAAC,cAAc,CAClE,6BAA6B;AAG/B,MAAM,gBAAgB,GAGlBA,MAAC,CAAC,YAAY,CAChBA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,EACtCA,MAAC,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CACvC,EACD,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAC/D;AAEM,MAAM,uBAAuB,GAAGA,MAAC,CAAC,cAAc,CAAC,gBAAgB;;AC/CxE,MAAM,gBAAgB,GACpBA,MAAC,CAAC,YAAY,CACZA,MAAC,CAAC,IAAI,CAACA,MAAC,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,EAAEA,MAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EACvE,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAC7C;AAEH,MAAM,6BAA6B,GAG/BA,MAAC,CAAC,YAAY,CAChBA,MAAC,CAAC,IAAI,CACJA,MAAC,CAAC,OAAO,CAAC,iBAAiB,EAAEA,MAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAC1DA,MAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CACvC,EACD,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAC7D;AAEM,MAAM,oCAAoC,GAAGA,MAAC,CAAC,cAAc,CAClE,6BAA6B;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{o as e}from"./p-IVh_3-KN.js";import{d as t}from"./p-CPk-nchx.js";import"./p-CT1PhiRV.js";import"./p-BAhfr1Nx.js";const s=500;const r={durationMs:s};const n={throttleFrameDelivery:true,adaptiveRendering:true,logWsMessages:false,logFrameRate:false,letterboxFrames:false,grpcUseStreamingWebSocketTransport:true};const o={finePointerThreshold:1,coarsePointerThreshold:3,interactionDelay:75,useMinimumPerspectiveZoomDistance:true,mouseWheelInteractionEndDebounce:400,reverseMouseWheelDirection:false};const i={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:n,events:t,animation:r,interactions:o,EXPERIMENTAL_frameDelivery:{},EXPERIMENTAL_adaptiveRendering:{},EXPERIMENTAL_qualityOfService:{},EXPERIMENTAL_annotationPollingIntervalInMs:undefined};const a={...i,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"}};const p={...i,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 c(e){switch(e){case"platdev":return a;case"platstaging":return p;default:return i}}function l(e="platprod",t){const s=v(e,t);return h(d(s))}function v(t="platprod",s){if(typeof s==="string"){s=JSON.parse(s)}const r=c(t);if(s==null){return r}else{return e.defaults({...s},r)}}function d(e){const t=e.network.apiHost.trim();const s=e.network.renderingHost.trim();const r=e.network.sceneTreeHost.trim();const n=e.network.sceneViewHost.trim();return{...e,network:{...e.network,apiHost:t,renderingHost:s,sceneTreeHost:r,sceneViewHost:n}}}function h(e){u(e.network,"apiHost","https://");u(e.network,"renderingHost","wss://");u(e.network,"sceneTreeHost","https://");u(e.network,"sceneViewHost","https://");return e}function u(e,t,s){if(!e[t].startsWith(s)){throw new Error(`Invalid ${t} "${e[t]}" specified. The URL must start with the ${s} scheme.`)}}export{l as p};
5
- //# sourceMappingURL=p-CT3sclrO.js.map
4
+ import{o as e}from"./p-IVh_3-KN.js";import{d as t}from"./p-CPk-nchx.js";import"./p-CD3U7s8H.js";import"./p-BAhfr1Nx.js";const s=500;const r={durationMs:s};const n={throttleFrameDelivery:true,adaptiveRendering:true,logWsMessages:false,logFrameRate:false,letterboxFrames:false,grpcUseStreamingWebSocketTransport:true};const o={finePointerThreshold:1,coarsePointerThreshold:3,interactionDelay:75,useMinimumPerspectiveZoomDistance:true,mouseWheelInteractionEndDebounce:400,reverseMouseWheelDirection:false};const i={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:n,events:t,animation:r,interactions:o,EXPERIMENTAL_frameDelivery:{},EXPERIMENTAL_adaptiveRendering:{},EXPERIMENTAL_qualityOfService:{},EXPERIMENTAL_annotationPollingIntervalInMs:undefined};const a={...i,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"}};const p={...i,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 c(e){switch(e){case"platdev":return a;case"platstaging":return p;default:return i}}function l(e="platprod",t){const s=v(e,t);return u(d(s))}function v(t="platprod",s){if(typeof s==="string"){s=JSON.parse(s)}const r=c(t);if(s==null){return r}else{return e.defaults({...s},r)}}function d(e){const t=e.network.apiHost.trim();const s=e.network.renderingHost.trim();const r=e.network.sceneTreeHost.trim();const n=e.network.sceneViewHost.trim();return{...e,network:{...e.network,apiHost:t,renderingHost:s,sceneTreeHost:r,sceneViewHost:n}}}function u(e){h(e.network,"apiHost","https://");h(e.network,"renderingHost","wss://");h(e.network,"sceneTreeHost","https://");h(e.network,"sceneViewHost","https://");return e}function h(e,t,s){if(!e[t].startsWith(s)){throw new Error(`Invalid ${t} "${e[t]}" specified. The URL must start with the ${s} scheme.`)}}export{l as p};
5
+ //# sourceMappingURL=p-P0ZprdA-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"p-CT3sclrO.js","sources":["src/lib/types/animation.ts","src/lib/types/flags.ts","src/lib/types/interactions.ts","src/lib/config.ts"],"sourcesContent":["const DEFAULT_ANIMATION_DURATION = 500;\n\nexport interface Animation {\n milliseconds: number;\n}\n\nexport function create(data: Partial<Animation> = {}): Animation {\n return {\n milliseconds: data.milliseconds || DEFAULT_ANIMATION_DURATION,\n };\n}\n\nexport interface AnimationConfig {\n durationMs: number;\n}\n\nexport const defaultAnimationConfig: AnimationConfig = {\n durationMs: DEFAULT_ANIMATION_DURATION,\n};\n","import { Objects } from '@vertexvis/utils';\n\ntype Flag =\n /**\n * Enables or disables a throttling of image delivery based on detected\n * network conditions.\n */\n | 'throttleFrameDelivery'\n\n /**\n * Enables or disables automatic quality adjustments of rendered frames to\n * improve the performance of delivering frames to the client.\n */\n | 'adaptiveRendering'\n\n /**\n * Enables or disables logging of WS message payloads.\n */\n | 'logWsMessages'\n\n /**\n * Toggles the logging of frame rates.\n */\n | 'logFrameRate'\n\n /**\n * Enables or disables the letterboxing of frames when the host dimensions\n * are larger than the supported maximum image size (1080p). By default\n * this option is disabled, and images will be scaled up to match the host.\n */\n | 'letterboxFrames'\n\n /**\n * Enables or disables the use of the `grpc.WebsocketTransport` for streaming\n * RPCs. By default this transport will be used, and streaming messages will\n * be sent over WebSocket.\n */\n | 'grpcUseStreamingWebSocketTransport';\n\n/**\n * A set of experimental features that can be enabled through the viewer's\n * config.\n */\nexport type Flags = { [K in Flag]: boolean };\n\nexport const defaultFlags: Flags = {\n throttleFrameDelivery: true,\n adaptiveRendering: true,\n logWsMessages: false,\n logFrameRate: false,\n letterboxFrames: false,\n grpcUseStreamingWebSocketTransport: true,\n};\n\nexport function createFlags(\n features: Partial<Flags>,\n fallbacks: Partial<Flags> = defaultFlags,\n): Flags {\n return Objects.defaults(features, fallbacks, defaultFlags);\n}\n","export interface InteractionConfig {\n /**\n * The amount of movement required with a fine (mouse, trackpad, etc) pointer\n * input before an interaction is considered a movement that will update the\n * camera. This threshold is always scaled up based on the device's pixel ratio.\n */\n finePointerThreshold: number;\n\n /**\n * The amount of movement required with a coarse (touch, stylus, etc) pointer\n * input before an interaction is considered a movement that will update the\n * camera. This threshold is always scaled up based on the device's pixel ratio.\n */\n coarsePointerThreshold: number;\n\n /**\n * The amount of time before a movement is considered an interaction and will\n * update the camera.\n */\n interactionDelay: number;\n\n /**\n * Whether the `zoomCameraToPoint` interaction through the `InteractionApiPerspective`\n * will enforce a minimum distance when moving the camera. When set, the camera will be\n * able to move through geometry under the cursor, rather than being restricted by the\n * point under the cursor. Defaults to `true`.\n */\n useMinimumPerspectiveZoomDistance: boolean;\n\n /**\n * The amount of time before a wheel interaction is ended.\n *\n * This delay is used to support successive sets of mouse events, and not cause\n * abrupt and unexpected ending of mouse interactions during natural pauses in mouse\n * wheel usage.\n */\n mouseWheelInteractionEndDebounce: number;\n\n /**\n * Reverses which direction the mouse wheel considers positive or negative\n * for zoom interactions.\n */\n reverseMouseWheelDirection: boolean;\n}\n\nexport const defaultInteractionConfig: InteractionConfig = {\n finePointerThreshold: 1,\n coarsePointerThreshold: 3,\n interactionDelay: 75,\n useMinimumPerspectiveZoomDistance: true,\n mouseWheelInteractionEndDebounce: 400,\n reverseMouseWheelDirection: false,\n};\n","import { FrameDeliverySettings } from '@vertexvis/stream-api';\nimport {\n AdaptiveRenderingSettings,\n QualityOfServiceSettings,\n} from '@vertexvis/stream-api';\nimport { DeepPartial, Objects } from '@vertexvis/utils';\n\nimport { Environment } from './environment';\nimport { Animation, Events, Flags, Interactions } from './types';\n\ninterface NetworkConfig {\n apiHost: string;\n renderingHost: string;\n sceneTreeHost: string;\n sceneViewHost: string;\n}\n\nexport interface Config {\n network: NetworkConfig;\n flags: Flags.Flags;\n events: Events.EventConfig;\n animation: Animation.AnimationConfig;\n interactions: Interactions.InteractionConfig;\n EXPERIMENTAL_frameDelivery: Omit<\n FrameDeliverySettings,\n 'rateLimitingEnabled'\n >;\n EXPERIMENTAL_adaptiveRendering: Omit<AdaptiveRenderingSettings, 'enabled'>;\n EXPERIMENTAL_qualityOfService: QualityOfServiceSettings;\n EXPERIMENTAL_annotationPollingIntervalInMs: number | undefined;\n}\n\nexport type PartialConfig = DeepPartial<Config>;\n\nexport type ConfigProvider = () => Config;\n\nexport type InteractionConfigProvider = () => Interactions.InteractionConfig;\n\nconst config: Config = {\n network: {\n apiHost: 'https://platform.platprod.vertexvis.io',\n renderingHost: 'wss://stream.platprod.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platprod.vertexvis.io',\n sceneViewHost: 'https://scenes.platprod.vertexvis.io',\n },\n flags: Flags.defaultFlags,\n events: Events.defaultEventConfig,\n animation: Animation.defaultAnimationConfig,\n interactions: Interactions.defaultInteractionConfig,\n EXPERIMENTAL_frameDelivery: {},\n EXPERIMENTAL_adaptiveRendering: {},\n EXPERIMENTAL_qualityOfService: {},\n EXPERIMENTAL_annotationPollingIntervalInMs: undefined,\n};\n\nconst platdevConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platdev.vertexvis.io',\n renderingHost: 'wss://stream.platdev.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platdev.vertexvis.io',\n sceneViewHost: 'https://scenes.platdev.vertexvis.io',\n },\n};\n\nconst platstagingConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platstaging.vertexvis.io',\n renderingHost: 'wss://stream.platstaging.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platstaging.vertexvis.io',\n sceneViewHost: 'https://scenes.platstaging.vertexvis.io',\n },\n};\n\nfunction getEnvironmentConfig(environment: Environment): Config {\n switch (environment) {\n case 'platdev':\n return platdevConfig;\n case 'platstaging':\n return platstagingConfig;\n default:\n return config;\n }\n}\n\nexport function parseAndValidateConfig(\n environment: Environment = 'platprod',\n config?: string | PartialConfig,\n): Config {\n const parsed = parseConfig(environment, config);\n\n return validateConfig(sanitizeConfig(parsed));\n}\n\nexport function parseConfig(\n environment: Environment = 'platprod',\n config?: string | PartialConfig,\n): Config {\n if (typeof config === 'string') {\n config = JSON.parse(config) as PartialConfig;\n }\n\n const envConfig = getEnvironmentConfig(environment);\n\n if (config == null) {\n return envConfig;\n } else {\n return Objects.defaults({ ...config }, envConfig);\n }\n}\n\nexport function sanitizeConfig(config: Config): Config {\n const sanitizedApiHost = config.network.apiHost.trim();\n const sanitizedRenderingHost = config.network.renderingHost.trim();\n const sanitizedSceneTreeHost = config.network.sceneTreeHost.trim();\n const sanitizedSceneViewHost = config.network.sceneViewHost.trim();\n\n return {\n ...config,\n network: {\n ...config.network,\n apiHost: sanitizedApiHost,\n renderingHost: sanitizedRenderingHost,\n sceneTreeHost: sanitizedSceneTreeHost,\n sceneViewHost: sanitizedSceneViewHost,\n },\n };\n}\n\nexport function validateConfig(config: Config): Config {\n validateUrlScheme(config.network, 'apiHost', 'https://');\n validateUrlScheme(config.network, 'renderingHost', 'wss://');\n validateUrlScheme(config.network, 'sceneTreeHost', 'https://');\n validateUrlScheme(config.network, 'sceneViewHost', 'https://');\n\n return config;\n}\n\nfunction validateUrlScheme(\n networkConfig: NetworkConfig,\n field: keyof NetworkConfig,\n expectedScheme: string,\n): void {\n if (!networkConfig[field].startsWith(expectedScheme)) {\n throw new Error(\n `Invalid ${field} \"${networkConfig[field]}\" specified. The URL must start with the ${expectedScheme} scheme.`,\n );\n }\n}\n"],"names":["Flags.defaultFlags","Events.defaultEventConfig","Animation.defaultAnimationConfig","Interactions.defaultInteractionConfig","Objects"],"mappings":"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"}
1
+ {"version":3,"file":"p-P0ZprdA-.js","sources":["src/lib/types/animation.ts","src/lib/types/flags.ts","src/lib/types/interactions.ts","src/lib/config.ts"],"sourcesContent":["const DEFAULT_ANIMATION_DURATION = 500;\n\nexport interface Animation {\n milliseconds: number;\n}\n\nexport function create(data: Partial<Animation> = {}): Animation {\n return {\n milliseconds: data.milliseconds || DEFAULT_ANIMATION_DURATION,\n };\n}\n\nexport interface AnimationConfig {\n durationMs: number;\n}\n\nexport const defaultAnimationConfig: AnimationConfig = {\n durationMs: DEFAULT_ANIMATION_DURATION,\n};\n","import { Objects } from '@vertexvis/utils';\n\ntype Flag =\n /**\n * Enables or disables a throttling of image delivery based on detected\n * network conditions.\n */\n | 'throttleFrameDelivery'\n\n /**\n * Enables or disables automatic quality adjustments of rendered frames to\n * improve the performance of delivering frames to the client.\n */\n | 'adaptiveRendering'\n\n /**\n * Enables or disables logging of WS message payloads.\n */\n | 'logWsMessages'\n\n /**\n * Toggles the logging of frame rates.\n */\n | 'logFrameRate'\n\n /**\n * Enables or disables the letterboxing of frames when the host dimensions\n * are larger than the supported maximum image size (1080p). By default\n * this option is disabled, and images will be scaled up to match the host.\n */\n | 'letterboxFrames'\n\n /**\n * Enables or disables the use of the `grpc.WebsocketTransport` for streaming\n * RPCs. By default this transport will be used, and streaming messages will\n * be sent over WebSocket.\n */\n | 'grpcUseStreamingWebSocketTransport';\n\n/**\n * A set of experimental features that can be enabled through the viewer's\n * config.\n */\nexport type Flags = { [K in Flag]: boolean };\n\nexport const defaultFlags: Flags = {\n throttleFrameDelivery: true,\n adaptiveRendering: true,\n logWsMessages: false,\n logFrameRate: false,\n letterboxFrames: false,\n grpcUseStreamingWebSocketTransport: true,\n};\n\nexport function createFlags(\n features: Partial<Flags>,\n fallbacks: Partial<Flags> = defaultFlags,\n): Flags {\n return Objects.defaults(features, fallbacks, defaultFlags);\n}\n","export interface InteractionConfig {\n /**\n * The amount of movement required with a fine (mouse, trackpad, etc) pointer\n * input before an interaction is considered a movement that will update the\n * camera. This threshold is always scaled up based on the device's pixel ratio.\n */\n finePointerThreshold: number;\n\n /**\n * The amount of movement required with a coarse (touch, stylus, etc) pointer\n * input before an interaction is considered a movement that will update the\n * camera. This threshold is always scaled up based on the device's pixel ratio.\n */\n coarsePointerThreshold: number;\n\n /**\n * The amount of time before a movement is considered an interaction and will\n * update the camera.\n */\n interactionDelay: number;\n\n /**\n * Whether the `zoomCameraToPoint` interaction through the `InteractionApiPerspective`\n * will enforce a minimum distance when moving the camera. When set, the camera will be\n * able to move through geometry under the cursor, rather than being restricted by the\n * point under the cursor. Defaults to `true`.\n */\n useMinimumPerspectiveZoomDistance: boolean;\n\n /**\n * The amount of time before a wheel interaction is ended.\n *\n * This delay is used to support successive sets of mouse events, and not cause\n * abrupt and unexpected ending of mouse interactions during natural pauses in mouse\n * wheel usage.\n */\n mouseWheelInteractionEndDebounce: number;\n\n /**\n * Reverses which direction the mouse wheel considers positive or negative\n * for zoom interactions.\n */\n reverseMouseWheelDirection: boolean;\n}\n\nexport const defaultInteractionConfig: InteractionConfig = {\n finePointerThreshold: 1,\n coarsePointerThreshold: 3,\n interactionDelay: 75,\n useMinimumPerspectiveZoomDistance: true,\n mouseWheelInteractionEndDebounce: 400,\n reverseMouseWheelDirection: false,\n};\n","import { FrameDeliverySettings } from '@vertexvis/stream-api';\nimport {\n AdaptiveRenderingSettings,\n QualityOfServiceSettings,\n} from '@vertexvis/stream-api';\nimport { DeepPartial, Objects } from '@vertexvis/utils';\n\nimport { Environment } from './environment';\nimport { Animation, Events, Flags, Interactions } from './types';\n\ninterface NetworkConfig {\n apiHost: string;\n renderingHost: string;\n sceneTreeHost: string;\n sceneViewHost: string;\n}\n\nexport interface Config {\n network: NetworkConfig;\n flags: Flags.Flags;\n events: Events.EventConfig;\n animation: Animation.AnimationConfig;\n interactions: Interactions.InteractionConfig;\n EXPERIMENTAL_frameDelivery: Omit<\n FrameDeliverySettings,\n 'rateLimitingEnabled'\n >;\n EXPERIMENTAL_adaptiveRendering: Omit<AdaptiveRenderingSettings, 'enabled'>;\n EXPERIMENTAL_qualityOfService: QualityOfServiceSettings;\n EXPERIMENTAL_annotationPollingIntervalInMs: number | undefined;\n}\n\nexport type PartialConfig = DeepPartial<Config>;\n\nexport type ConfigProvider = () => Config;\n\nexport type InteractionConfigProvider = () => Interactions.InteractionConfig;\n\nconst config: Config = {\n network: {\n apiHost: 'https://platform.platprod.vertexvis.io',\n renderingHost: 'wss://stream.platprod.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platprod.vertexvis.io',\n sceneViewHost: 'https://scenes.platprod.vertexvis.io',\n },\n flags: Flags.defaultFlags,\n events: Events.defaultEventConfig,\n animation: Animation.defaultAnimationConfig,\n interactions: Interactions.defaultInteractionConfig,\n EXPERIMENTAL_frameDelivery: {},\n EXPERIMENTAL_adaptiveRendering: {},\n EXPERIMENTAL_qualityOfService: {},\n EXPERIMENTAL_annotationPollingIntervalInMs: undefined,\n};\n\nconst platdevConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platdev.vertexvis.io',\n renderingHost: 'wss://stream.platdev.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platdev.vertexvis.io',\n sceneViewHost: 'https://scenes.platdev.vertexvis.io',\n },\n};\n\nconst platstagingConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platstaging.vertexvis.io',\n renderingHost: 'wss://stream.platstaging.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platstaging.vertexvis.io',\n sceneViewHost: 'https://scenes.platstaging.vertexvis.io',\n },\n};\n\nfunction getEnvironmentConfig(environment: Environment): Config {\n switch (environment) {\n case 'platdev':\n return platdevConfig;\n case 'platstaging':\n return platstagingConfig;\n default:\n return config;\n }\n}\n\nexport function parseAndValidateConfig(\n environment: Environment = 'platprod',\n config?: string | PartialConfig,\n): Config {\n const parsed = parseConfig(environment, config);\n\n return validateConfig(sanitizeConfig(parsed));\n}\n\nexport function parseConfig(\n environment: Environment = 'platprod',\n config?: string | PartialConfig,\n): Config {\n if (typeof config === 'string') {\n config = JSON.parse(config) as PartialConfig;\n }\n\n const envConfig = getEnvironmentConfig(environment);\n\n if (config == null) {\n return envConfig;\n } else {\n return Objects.defaults({ ...config }, envConfig);\n }\n}\n\nexport function sanitizeConfig(config: Config): Config {\n const sanitizedApiHost = config.network.apiHost.trim();\n const sanitizedRenderingHost = config.network.renderingHost.trim();\n const sanitizedSceneTreeHost = config.network.sceneTreeHost.trim();\n const sanitizedSceneViewHost = config.network.sceneViewHost.trim();\n\n return {\n ...config,\n network: {\n ...config.network,\n apiHost: sanitizedApiHost,\n renderingHost: sanitizedRenderingHost,\n sceneTreeHost: sanitizedSceneTreeHost,\n sceneViewHost: sanitizedSceneViewHost,\n },\n };\n}\n\nexport function validateConfig(config: Config): Config {\n validateUrlScheme(config.network, 'apiHost', 'https://');\n validateUrlScheme(config.network, 'renderingHost', 'wss://');\n validateUrlScheme(config.network, 'sceneTreeHost', 'https://');\n validateUrlScheme(config.network, 'sceneViewHost', 'https://');\n\n return config;\n}\n\nfunction validateUrlScheme(\n networkConfig: NetworkConfig,\n field: keyof NetworkConfig,\n expectedScheme: string,\n): void {\n if (!networkConfig[field].startsWith(expectedScheme)) {\n throw new Error(\n `Invalid ${field} \"${networkConfig[field]}\" specified. The URL must start with the ${expectedScheme} scheme.`,\n );\n }\n}\n"],"names":["Flags.defaultFlags","Events.defaultEventConfig","Animation.defaultAnimationConfig","Interactions.defaultInteractionConfig","Objects"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{h as i,F as t,r as e}from"./p-CCVkga9Q.js";import{p as n,m as o,v as s}from"./p-B8a9KIE8.js";import"./p-BSjg86nS.js";import"./p-DIaJIPQu.js";import"./p-BnXUpT0J.js";import"./p-BNuMPeJ8.js";import"./p-ux1ckSDN.js";import"./p-B4qVkXXt.js";import"./p-CT1PhiRV.js";import"./p-BIj2SAwD.js";import"./p-BAhfr1Nx.js";import{V as r}from"./p-D3hmsz_I.js";import{g as a,i as l,b as d,P as p,a as h,c}from"./p-BGS1aAKM.js";import{c as v}from"./p-Dw4-tG-V.js";import"./p--8q6LyIm.js";import"./p-IVh_3-KN.js";import"./p-CG9AChtV.js";import"./p-CiSHWNC4.js";const u=({pin:e,selected:n,occluded:o,detached:s})=>{const{primaryColor:r}=a(e);return i(t,null,d(e)&&i("div",{id:"pin-anchor",class:v("pin-anchor",{selected:n,"pin-occluded":o,"pin-detached":s}),style:{background:r}}),l(e)&&i("vertex-viewer-icon",{name:"pin-fill",size:"lg",class:v("pin",{"pin-selected":n,"pin-occluded":o,"pin-detached":s}),style:{color:r}}))};function b(i,t,e){const o={x:i.x+e.width/2,y:i.y};const s={x:i.x+e.width/2,y:i.y+e.height};const r={x:i.x+e.width,y:i.y+e.height/2};const a={x:i.x,y:i.y+e.height/2};const l=[o,s,a,r];const d=l.map((i=>n.distance(i,t)));const p=d.indexOf(Math.min(...d));return l[p]}const f=()=>`:host{--viewer-annotations-pin-primary-color:var(--blue-700);--viewer-annotations-pin-accent-color:var(--blue-200);--viewer-annotations-pin-dot-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-font-size:0.75rem;--viewer-annotations-pin-selected-stroke:var(--white);--viewer-annotations-pin-selected-border:2px solid var(--white);--viewer-annotations-pin-label-border:2px solid var(--black);--viewer-annotations-pin-selected-stroke:var(--white);font-size:var(--viewer-annotations-pin-font-size);position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}.pin-anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;width:9px;height:9px;box-sizing:border-box;border:var(--viewer-annotations-pin-label-border);background:var(--viewer-annotations-pin-dot-color);pointer-events:auto;cursor:pointer}.selected{width:13px;height:13px;border:var(--viewer-annotations-pin-selected-border)}.pin{color:var(--viewer-annotations-pin-color);cursor:pointer;transition:opacity 0.3s ease-in;transform:translate(0px, -12px)}.pin-selected{stroke-width:1;stroke:var(--viewer-annotations-pin-selected-stroke)}.pin-occluded{opacity:.3;transition:opacity 0.3s ease-in}.pin-detached{visibility:hidden}`;const m=class{constructor(i){e(this,i);this.matrix=o.makeIdentity();this.projectionViewMatrix=o.makeIdentity();this.pinModel=new p;this.selected=false;this.occluded=false;this.detached=false;this.invalidateStateCounter=0;this.invalidateState=()=>{this.invalidateStateCounter=this.invalidateStateCounter+1}}componentWillLoad(){if(this.pinController==null){this.pinController=new h(this.pinModel)}}componentDidLoad(){var i;this.setLabelObserver();if(this.selected){(i=this.labelEl)===null||i===void 0?void 0:i.setFocus()}}async handleOcclusionStateChanged(i){this.occluded=i.detail}async handleDetachedStateChanged(i){this.detached=i.detail}disconnectedCallback(){var i,t;(i=this.labelEl)===null||i===void 0?void 0:i.removeEventListener("labelChanged",this.invalidateState);(t=this.resizeObserver)===null||t===void 0?void 0:t.disconnect()}render(){var e;if(this.pin==null){throw new Error("Unable to draw pin")}const{pinPoint:n,labelPoint:o}=this.computePinPoints(this.pin);return i(t,{key:"84a22b24189e46d618c7266874d6584feb4e0b93"},i("vertex-viewer-dom-element",{key:"d4b9cf5194049099b2a7a2c1ef07fc3757e91cdc","data-testid":`drawn-pin-${this.pin.id}`,position:this.pin.worldPosition,onPointerDown:async()=>{var i;await((i=this.labelEl)===null||i===void 0?void 0:i.submit());this.selectPin();this.handleAnchorPointerDown()},detachedOff:false},i(u,{key:"7312b90e959e7d61de89c80ff032c29c5d32d888",pin:this.pin,selected:this.selected,occluded:this.occluded,detached:this.detached})),d(this.pin)&&!this.occluded&&!this.detached&&i(t,{key:"975ae561cc3eb0bf6d259d99c10c48ab0bb2661a"},i("vertex-viewer-pin-label-line",{key:"cbb32a2788a89f53c5ea2e2e6abe83b0b49c0fd4",id:`pin-label-line-${(e=this.pin)===null||e===void 0?void 0:e.id}`,pinPoint:n,pin:this.pin,labelPoint:o,onPointerDown:()=>this.selectPin()}),i("vertex-viewer-pin-label",{key:"296958cff46f102cef5621c2512b71f0d4d97ff9",pin:this.pin,ref:i=>this.labelEl=i,elementBounds:this.elementBounds,pinController:this.pinController,onPointerDown:()=>this.selectPin()})))}setLabelObserver(){if(this.labelEl!=null){this.labelEl.addEventListener("labelChanged",this.invalidateState);this.resizeObserver=new ResizeObserver((()=>this.invalidateState()));this.resizeObserver.observe(this.labelEl)}}computePinPoints(i){if(this.elementBounds!=null&&this.pin!=null){return d(this.pin)&&this.pin.label.point!=null?this.computeTextPinPoints(this.pin,this.elementBounds):this.computeDefaultPinPoints(this.pin,this.elementBounds)}return{pinPoint:i.worldPosition}}computeDefaultPinPoints(i,t){return{pinPoint:this.getFromWorldPosition(i.worldPosition,this.projectionViewMatrix,t)}}computeTextPinPoints(i,t){var e,n,o,s;const{pinPoint:r}=this.computeDefaultPinPoints(i,t);const a=c(i.label.point,t);const l=((n=(e=this.labelEl)===null||e===void 0?void 0:e.firstElementChild)===null||n===void 0?void 0:n.clientWidth)||0;const d=((s=(o=this.labelEl)===null||o===void 0?void 0:o.firstElementChild)===null||s===void 0?void 0:s.clientHeight)||0;return{pinPoint:r,labelPoint:b(a,r,{width:l,height:d})}}handleAnchorPointerDown(){var i,t;if(this.elementBounds!=null&&((i=this.pinController)===null||i===void 0?void 0:i.getToolMode())==="edit"&&this.pin!=null){(t=this.pinController)===null||t===void 0?void 0:t.setDraggable({id:this.pin.id})}}selectPin(){var i,t;(i=this.pinController)===null||i===void 0?void 0:i.setSelectedPinId((t=this.pin)===null||t===void 0?void 0:t.id)}getFromWorldPosition(i,t,e){const n=s.multiplyByTransformMatrixColumnMajor(i,t);return r.fromDimensions(e).transformVectorToViewport(n)}};m.style=f();export{m as vertex_viewer_pin_group};
5
- //# sourceMappingURL=p-2bb26337.entry.js.map
4
+ import{h as i,F as t,r as e}from"./p-CCVkga9Q.js";import{p as n,m as o,v as s}from"./p-B8a9KIE8.js";import"./p-BSjg86nS.js";import"./p-DIaJIPQu.js";import"./p-fXz1xKOD.js";import"./p-BNuMPeJ8.js";import"./p-ux1ckSDN.js";import"./p-B4qVkXXt.js";import"./p-CD3U7s8H.js";import"./p-Dt9-9vSd.js";import"./p-BAhfr1Nx.js";import{V as r}from"./p-D3hmsz_I.js";import{g as a,i as l,b as d,P as p,a as h,c}from"./p-BGS1aAKM.js";import{c as v}from"./p-Dw4-tG-V.js";import"./p--8q6LyIm.js";import"./p-IVh_3-KN.js";import"./p-CG9AChtV.js";import"./p-CiSHWNC4.js";const u=({pin:e,selected:n,occluded:o,detached:s})=>{const{primaryColor:r}=a(e);return i(t,null,d(e)&&i("div",{id:"pin-anchor",class:v("pin-anchor",{selected:n,"pin-occluded":o,"pin-detached":s}),style:{background:r}}),l(e)&&i("vertex-viewer-icon",{name:"pin-fill",size:"lg",class:v("pin",{"pin-selected":n,"pin-occluded":o,"pin-detached":s}),style:{color:r}}))};function b(i,t,e){const o={x:i.x+e.width/2,y:i.y};const s={x:i.x+e.width/2,y:i.y+e.height};const r={x:i.x+e.width,y:i.y+e.height/2};const a={x:i.x,y:i.y+e.height/2};const l=[o,s,a,r];const d=l.map((i=>n.distance(i,t)));const p=d.indexOf(Math.min(...d));return l[p]}const f=()=>`:host{--viewer-annotations-pin-primary-color:var(--blue-700);--viewer-annotations-pin-accent-color:var(--blue-200);--viewer-annotations-pin-dot-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-font-size:0.75rem;--viewer-annotations-pin-selected-stroke:var(--white);--viewer-annotations-pin-selected-border:2px solid var(--white);--viewer-annotations-pin-label-border:2px solid var(--black);--viewer-annotations-pin-selected-stroke:var(--white);font-size:var(--viewer-annotations-pin-font-size);position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}.pin-anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;width:9px;height:9px;box-sizing:border-box;border:var(--viewer-annotations-pin-label-border);background:var(--viewer-annotations-pin-dot-color);pointer-events:auto;cursor:pointer}.selected{width:13px;height:13px;border:var(--viewer-annotations-pin-selected-border)}.pin{color:var(--viewer-annotations-pin-color);cursor:pointer;transition:opacity 0.3s ease-in;transform:translate(0px, -12px)}.pin-selected{stroke-width:1;stroke:var(--viewer-annotations-pin-selected-stroke)}.pin-occluded{opacity:.3;transition:opacity 0.3s ease-in}.pin-detached{visibility:hidden}`;const m=class{constructor(i){e(this,i);this.matrix=o.makeIdentity();this.projectionViewMatrix=o.makeIdentity();this.pinModel=new p;this.selected=false;this.occluded=false;this.detached=false;this.invalidateStateCounter=0;this.invalidateState=()=>{this.invalidateStateCounter=this.invalidateStateCounter+1}}componentWillLoad(){if(this.pinController==null){this.pinController=new h(this.pinModel)}}componentDidLoad(){var i;this.setLabelObserver();if(this.selected){(i=this.labelEl)===null||i===void 0?void 0:i.setFocus()}}async handleOcclusionStateChanged(i){this.occluded=i.detail}async handleDetachedStateChanged(i){this.detached=i.detail}disconnectedCallback(){var i,t;(i=this.labelEl)===null||i===void 0?void 0:i.removeEventListener("labelChanged",this.invalidateState);(t=this.resizeObserver)===null||t===void 0?void 0:t.disconnect()}render(){var e;if(this.pin==null){throw new Error("Unable to draw pin")}const{pinPoint:n,labelPoint:o}=this.computePinPoints(this.pin);return i(t,{key:"84a22b24189e46d618c7266874d6584feb4e0b93"},i("vertex-viewer-dom-element",{key:"d4b9cf5194049099b2a7a2c1ef07fc3757e91cdc","data-testid":`drawn-pin-${this.pin.id}`,position:this.pin.worldPosition,onPointerDown:async()=>{var i;await((i=this.labelEl)===null||i===void 0?void 0:i.submit());this.selectPin();this.handleAnchorPointerDown()},detachedOff:false},i(u,{key:"7312b90e959e7d61de89c80ff032c29c5d32d888",pin:this.pin,selected:this.selected,occluded:this.occluded,detached:this.detached})),d(this.pin)&&!this.occluded&&!this.detached&&i(t,{key:"975ae561cc3eb0bf6d259d99c10c48ab0bb2661a"},i("vertex-viewer-pin-label-line",{key:"cbb32a2788a89f53c5ea2e2e6abe83b0b49c0fd4",id:`pin-label-line-${(e=this.pin)===null||e===void 0?void 0:e.id}`,pinPoint:n,pin:this.pin,labelPoint:o,onPointerDown:()=>this.selectPin()}),i("vertex-viewer-pin-label",{key:"296958cff46f102cef5621c2512b71f0d4d97ff9",pin:this.pin,ref:i=>this.labelEl=i,elementBounds:this.elementBounds,pinController:this.pinController,onPointerDown:()=>this.selectPin()})))}setLabelObserver(){if(this.labelEl!=null){this.labelEl.addEventListener("labelChanged",this.invalidateState);this.resizeObserver=new ResizeObserver((()=>this.invalidateState()));this.resizeObserver.observe(this.labelEl)}}computePinPoints(i){if(this.elementBounds!=null&&this.pin!=null){return d(this.pin)&&this.pin.label.point!=null?this.computeTextPinPoints(this.pin,this.elementBounds):this.computeDefaultPinPoints(this.pin,this.elementBounds)}return{pinPoint:i.worldPosition}}computeDefaultPinPoints(i,t){return{pinPoint:this.getFromWorldPosition(i.worldPosition,this.projectionViewMatrix,t)}}computeTextPinPoints(i,t){var e,n,o,s;const{pinPoint:r}=this.computeDefaultPinPoints(i,t);const a=c(i.label.point,t);const l=((n=(e=this.labelEl)===null||e===void 0?void 0:e.firstElementChild)===null||n===void 0?void 0:n.clientWidth)||0;const d=((s=(o=this.labelEl)===null||o===void 0?void 0:o.firstElementChild)===null||s===void 0?void 0:s.clientHeight)||0;return{pinPoint:r,labelPoint:b(a,r,{width:l,height:d})}}handleAnchorPointerDown(){var i,t;if(this.elementBounds!=null&&((i=this.pinController)===null||i===void 0?void 0:i.getToolMode())==="edit"&&this.pin!=null){(t=this.pinController)===null||t===void 0?void 0:t.setDraggable({id:this.pin.id})}}selectPin(){var i,t;(i=this.pinController)===null||i===void 0?void 0:i.setSelectedPinId((t=this.pin)===null||t===void 0?void 0:t.id)}getFromWorldPosition(i,t,e){const n=s.multiplyByTransformMatrixColumnMajor(i,t);return r.fromDimensions(e).transformVectorToViewport(n)}};m.style=f();export{m as vertex_viewer_pin_group};
5
+ //# sourceMappingURL=p-ae4ec0a8.entry.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{r as t,c as e,h as i,H as s,a as n}from"./p-CCVkga9Q.js";import{c as o}from"./p-Dw4-tG-V.js";import{d as r,r as a}from"./p-BxtKMwBH.js";import{p as h}from"./p-B8a9KIE8.js";import{_ as l}from"./p-BzyVljQN.js";import{a as c}from"./p-DX6pEG54.js";import{i as d}from"./p-CiSHWNC4.js";import{E as u}from"./p-IVh_3-KN.js";import"./p-CG9AChtV.js";const f=()=>`.notification-banner{background-color:var(--blue-200);padding-top:0px;padding-bottom:0px;padding-right:16px;padding-left:8px;display:flex;justify-content:space-between;font-size:0.875rem;line-height:0.5;color:var(--neutral-600)}.notification-banner-info{display:flex;align-items:center;gap:8px}.notification-banner-info .icon{color:var(--blue-600)}.notification-banner-actions{display:flex;align-items:center}.notification-banner-button{background:none;border:none;padding:0;margin:0;cursor:pointer;color:var(--blue-600);font-size:0.875rem;display:flex;align-items:center}.notification-banner-button:hover{color:var(--blue-800)}`;const v=class{constructor(i){t(this,i);this.action=e(this,"action")}render(){return i(s,{key:"097d901352c02a0f1580ca1e8069a09e2d8a0f99"},i("div",{key:"a2f0c563cc060dbd1067129820cc3a3d548edf7a",class:"notification-banner"},i("div",{key:"d4eaf47fd6b494a6ed400fc68e56daf41322ff3a",class:"notification-banner-info"},i("vertex-viewer-icon",{key:"b05fc97116087cde16673019f4845d6f93481b81",class:"icon",name:"info",size:"sm"}),i("p",{key:"48fbfa73c639e8f762b105a0c8e7cf530ff95456"},this.message)),this.actionLabel!=null&&i("div",{key:"6f2c8a07c730e3d1eab820beba978d7b7232fe3a",class:"notification-banner-actions"},i("button",{key:"23aeb9e7071847cd62a19d7a61df6b30ee48d834",class:"notification-banner-button",onClick:()=>this.action.emit()},this.actionLabel))))}};v.style=f();const p=()=>`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}`;const b=class{constructor(i){t(this,i);this.search=e(this,"search");this.searchCompleted=e(this,"searchCompleted");this.disabled=false;this.placeholder=undefined;this.value="";this.focused=false;this.isSearching=false;this.handleTextInput=t=>{const e=t.target;this.value=e.value;if(this.debounce!=null||this.value===""){this.emitCurrentValue()}};this.handleTextFocus=()=>{this.focused=true};this.handleTextBlur=()=>{var t;this.focused=false;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();if(this.value!==this.lastEmittedValue){this.emitCurrentValue()}};this.handleKeyPress=t=>{var e;if(t.key==="Enter"){(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue()}};this.handleClear=t=>{var e;t.preventDefault();this.value="";(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue();this.setFocus()}}async setFocus(){var t,e;if(typeof((t=this.inputEl)===null||t===void 0?void 0:t.focus)==="function"){(e=this.inputEl)===null||e===void 0?void 0:e.focus()}}controllerChanged(t){this.setupController()}componentDidLoad(){this.handleDebounceChanged();this.setupController()}disconnectedCallback(){var t;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose()}async clear(){var t;this.value="";(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();this.emitCurrentValue()}render(){return i(s,{key:"763e2f4c7ab3d80a197b94c123f61b25eba41b24"},i("div",{key:"14b5f4af01483f0d31ee77f03fc36fd1ff46e525",class:"root"},i("div",{key:"a1ebe30b97a16c83c9443402998e0f3f761d687d",class:"overlay icon icon-search"},i("slot",{key:"41073c4ecd626c3b4a38b0e62d95c6317cd2e98a",name:"search-icon"},this.isSearching?i("vertex-viewer-spinner",{slot:"search-icon",size:"xs"}):i("vertex-viewer-icon",{name:"search",size:"sm"}))),i("input",{key:"173d13b8d597425fdff082eb872225279e99bd34",class:o("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,onKeyPress:this.handleKeyPress}),i("div",{key:"f5b0de0431a9c8b051f61fcd76ce9eb430c0a0c9",class:o("overlay overlay-clear",{show:this.value.length>0})},i("button",{key:"92a36b952320fe724ba2f962a5a758a2e514fd18",class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},i("slot",{key:"97dcec892120a855dd6a4d633f4a2cd84e57e670",name:"clear-icon"},i("vertex-viewer-icon",{key:"7df2c0ef411a569ccc0cd50cfbc43c6d8533d073",name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){var t,e;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();const i=r(this.search,(e=this.debounce)!==null&&e!==void 0?e:0);this.search=i;this.searchDisposable=i}setupController(){var t,e;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose();this.onStateChangeDisposable=(e=this.controller)===null||e===void 0?void 0:e.onStateChange.on((t=>{if(this.isSearching&&!t.isSearching){this.searchCompleted.emit(this.value)}this.isSearching=t.isSearching}))}emitCurrentValue(){this.lastEmittedValue=this.value;this.search.emit(this.value)}static get watchers(){return{controller:[{controllerChanged:0}]}}};b.style=p();function m(t){return t.toLowerCase()}var y=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var w=/[^A-Z0-9]+/gi;function g(t,e){if(e===void 0){e={}}var i=e.splitRegexp,s=i===void 0?y:i,n=e.stripRegexp,o=n===void 0?w:n,r=e.transform,a=r===void 0?m:r,h=e.delimiter,l=h===void 0?" ":h;var c=x(x(t,s,"$1\0$2"),o,"\0");var d=0;var u=c.length;while(c.charAt(d)==="\0")d++;while(c.charAt(u-1)==="\0")u--;return c.slice(d,u).split("\0").map(a).join(l)}function x(t,e,i){if(e instanceof RegExp)return t.replace(e,i);return e.reduce((function(t,e){return t.replace(e,i)}),t)}function k(t,e){var i=t.charAt(0);var s=t.substr(1).toLowerCase();if(e>0&&i>="0"&&i<="9"){return"_"+i+s}return""+i.toUpperCase()+s}function C(t,e){if(e===void 0){e={}}return g(t,l({delimiter:"",transform:k},e))}function z(t,e){if(e===0)return t.toLowerCase();return k(t,e)}function D(t,e){if(e===void 0){e={}}return C(t,l({transform:z},e))}const $=/{{(.+)}}/;class R{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((e=>e.bind(t)))}}class _{constructor(t,e){this.node=t;this.expr=e}}class E extends _{constructor(t,e){super(t,e)}bind(t){const e=T(t,this.expr);if(e!==this.node.textContent){this.node.textContent=e}}}class M extends _{constructor(t,e,i){super(t,e);this.attr=i}bind(t){const e=T(t,this.expr);const i=this.node.getAttribute(this.attr);if(i!==e){this.node.setAttribute(this.attr,e)}}}class V extends _{constructor(t,e,i){super(t,e);this.prop=i}bind(t){const e=A(t,this.expr);const i=this.node[this.prop];if(i!==e){this.node[this.prop]=e}}}class j extends _{constructor(t,e,i){super(t,e);this.eventName=i}bind(t){var e;const i=P(this.expr);if(i!=null){(e=this.disposable)===null||e===void 0?void 0:e.dispose();const s=I(t,i,true);this.node.addEventListener(this.eventName,s);this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,s)}}}}}function L(t){const e=[];if(t.nodeType===Node.ELEMENT_NODE){const i=t;const s=H(i);s.forEach((t=>{if(t.name.startsWith("event:")){const s=D(t.name.replace("event:",""));e.push(new j(i,t.value,s))}else if(t.name.startsWith("attr:")){e.push(new M(i,t.value,t.name.replace("attr:","")))}else if(t.name.startsWith("prop:")){const s=D(t.name.replace("prop:",""));e.push(new V(i,t.value,s))}}))}else if(t.nodeType===Node.TEXT_NODE&&t.textContent!=null&&$.test(t.textContent)){e.push(new E(t,t.textContent))}for(let i=0;i<t.childNodes.length;i++){e.push(...L(t.childNodes[i]))}return e}function H(t){return Array.from(t.attributes).filter((t=>$.test(t.value)))}function P(t){const e=$.exec(t);return e!=null?e[1]:undefined}function T(t,e){const i=P(e);if(i!=null){const s=I(t,i,true);return e.replace(`{{${i}}}`,s===null||s===void 0?void 0:s.toString())}else{return e}}function A(t,e){const i=P(e);if(i!=null){const e=I(t,i,true);return e}else{return e}}function I(t,e,i=false){const[s,...n]=e.split(".");if(i&&n.length===0){return t}else if(i&&n.length>0){return I(t,n.join("."),false)}else{const e=t[s];if(n.length>0){return I(e,n.join("."),false)}else{return e}}}class W{constructor(t,e){this.container=t;this.elementFactory=e;this.instanceMap=new Map;this.elements=[]}swapHeadToTail(t){const e=this.elements.splice(0,t);this.elements.splice(this.elements.length,0,...e);return this.elements.concat()}swapTailToHead(t){const e=this.elements.splice(-t,t);this.elements.splice(0,0,...e);return this.elements.concat()}updateElements(t){const e=t-this.elements.length;if(e>0){for(let t=0;t<e;t++){this.createElement()}}else{for(let t=0;t<-e;t++){this.deleteElement()}}return this.elements.concat()}updateData(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);const n=t(i);s===null||s===void 0?void 0:s.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t;this.updateElements(0)}iterateElements(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);t(e,s.bindings,i)}))}createElement(){const t=this.elementFactory();this.elements.push(t.element);this.instanceMap.set(t.element,t);this.container.append(t.element);return t}deleteElement(){const t=this.elements.pop();if(t!=null){this.instanceMap.delete(t);t.remove()}}}function N(t){const e=t.content.cloneNode(true);const i=e.firstElementChild;const s=new R(L(e));return{element:i,bindings:s}}function B(t){var e;return(e=t.getBoundingClientRect().top)!==null&&e!==void 0?e:0}function G(t){return t.clientWidth}function K(t,e,i){t.scrollTo({top:e,...i})}class Z{constructor(){this.onStateChange=new u}setHovered(t){this.onStateChange.emit(t)}stateChanged(t){return this.onStateChange.on(t)}}function F(t,e,i=200){window.clearTimeout(e);return window.setTimeout(t,i)}const O=()=>`: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%}`;const Q=class{constructor(i){t(this,i);this.layoutRendered=e(this,"layoutRendered");this.columnsResized=e(this,"columnsResized");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=true;this.isScrolling=false;this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]};this.lastStartIndex=0;this.columnElements=[];this.cellHoverController=new Z;this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1;const e=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex;this.iterateColumns(((i,s,n)=>{s.updateElements(t);if(e>0){s.swapHeadToTail(e)}else{s.swapTailToHead(-e)}i.style.minHeight=`${this.rowHeight*this.totalRows}px`;const o=n===0?t=>`calc(${t} * 0.5rem)`:()=>`0`;s.iterateElements(((t,e,i)=>{const s=this.stateMap.viewportRows[i];if(d(s)){this.updateCell(s,t,e,i,o)}}))}))};this.updateCell=(t,e,i,s,n)=>{e.style.position="absolute";e.style.top=`${(this.viewportStartIndex+s)*this.rowHeight}px`;e.style.boxSizing="border-box";e.style.height=`${this.rowHeight}px`;e.style.width="100%";e.style.paddingLeft=n(t.node.depth);e.tree=this.tree;e.node=t.node;e.hoverController=this.cellHoverController;e.isScrolling=this.isScrolling;i.bind(t)};this.updateLayoutPosition=()=>{a((()=>{if(this.tableElement!=null){this.layoutOffset=B(this.tableElement)}}))};this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((e=>e*t));this.columnsResized.emit(this.stateMap.columnWidths)}};this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((e=>e/t))}};this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}));const t=this.getLayoutWidth();if(t!=null){const e=this.stateMap.columnWidths.reduce(((t,e)=>t+e),0);const i=this.stateMap.columnWidths.map((i=>i*(t/e)));this.stateMap.columnWidthPercentages=i.map((e=>e/t));this.stateMap.columnWidths=i}};this.updateColumnElements=()=>{this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column"))};this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const e={index:0,node:{id:{hex:""},name:"Dummy row",expanded:false,selected:false,visible:false,partiallyVisible:false,isLeaf:false,depth:0,columnsList:[],filterHit:false,hasGeometry:false,phantom:false,endItem:false},metadata:{},data:{}};const{bindings:i,element:s}=this.createColumnCellInstance(this.columnElements[0]);i.bind(e);s.style.visibility="hidden";(t=this.columnElements[0])===null||t===void 0?void 0:t.appendChild(s);if(typeof s.componentOnReady==="function"){await s.componentOnReady()}let n=s.clientHeight;if(n===0){n=await new Promise((t=>{setTimeout((()=>t(s.getBoundingClientRect().height)),5)}))}this.rowHeight=n!==null&&n!==void 0?n:this.rowHeight;s.remove();this.isComputingCellHeight=this.rowHeight===0}};this.computeHeaderHeight=()=>{var t;if(this.stateMap.headerHeight==null){this.stateMap.headerHeight=(t=this.headerElement)===null||t===void 0?void 0:t.getBoundingClientRect().height;this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`)}};this.computeColumnGridLayout=()=>{if(this.stateMap.columnWidths.length===0){this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}))}const t=this.getLayoutWidth();if(t!=null){if(this.stateMap.columnWidthPercentages.length===0){this.stateMap.columnWidthPercentages=this.columnElements.map((e=>{var i;return((i=e.initialWidth)!==null&&i!==void 0?i:100)/t}))}}this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,e)=>`${t} ${e}px`),"")} 1fr`;this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,e)=>`${t} ${e}px`),"")}`};this.bindHeaderData=()=>{if(this.stateMap.headerInstances==null){this.stateMap.headerInstances=this.columnElements.map(((t,e)=>{var i;const s=this.createHeaderInstance(t);if(s!=null){s.element.style.paddingRight=e===this.columnElements.length-1?`0`:`var(--scene-tree-table-column-gap)`;s.element.slot="header";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element)}return s})).filter((t=>t!=null))}if(this.stateMap.headerDividerInstances==null){this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,e)=>{var i;const s=this.createDividerInstance();s.element.slot="divider";s.element.style.position="absolute";s.element.style.right="0";s.element.style.pointerEvents="auto";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element);return s}))}};this.rebindHeaderData=()=>{var t,e;this.removeDividerDragListeners();(t=this.stateMap.headerInstances)===null||t===void 0?void 0:t.forEach((t=>t.element.remove()));(e=this.stateMap.headerDividerInstances)===null||e===void 0?void 0:e.forEach((t=>t.element.remove()));this.stateMap.headerInstances=undefined;this.stateMap.headerDividerInstances=undefined;this.bindHeaderData();this.addDividerDragListeners()};this.createDividerPointerDownHandler=t=>e=>{var i,s;e.preventDefault();e.stopPropagation();this.lastDividerPointerPosition=h.create(Math.floor(e.clientX),Math.floor(e.clientY));this.resizingColumnIndex=t;(s=(i=this.stateMap.headerDividerInstances)===null||i===void 0?void 0:i[t])===null||s===void 0?void 0:s.element.classList.add("dragging");window.addEventListener("pointermove",this.handleDividerPointerMove);window.addEventListener("pointerup",this.handleDividerPointerUp)};this.handleDividerPointerMove=t=>{const e=h.create(Math.floor(t.clientX),Math.floor(t.clientY));if(this.lastDividerPointerPosition!=null&&this.resizingColumnIndex!=null){const t=this.resizingColumnIndex;const i=h.subtract(this.lastDividerPointerPosition,e);if(Math.abs(i.x)>=1&&this.isValidResize(i,t)){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t?e-i.x:e));if(t+1<this.stateMap.columnWidths.length){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t+1?e+i.x:e))}this.lastDividerPointerPosition=e;this.computeColumnGridLayout()}}};this.handleDividerPointerUp=()=>{var t,e;if(this.resizingColumnIndex!=null){(e=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t[this.resizingColumnIndex])===null||e===void 0?void 0:e.element.classList.remove("dragging")}this.lastDividerPointerPosition=undefined;this.resizingColumnIndex=undefined;this.recomputeColumnPercentages();this.recomputeColumnWidths();window.removeEventListener("pointermove",this.handleDividerPointerMove);window.removeEventListener("pointerup",this.handleDividerPointerUp)};this.isValidResize=(t,e)=>{var i,s,n,o;const r=this.columnElements[e];const a=this.columnElements[e+1];const h=this.stateMap.columnWidths[e];const l=this.stateMap.columnWidths[e+1];const c=(i=r.minWidth)!==null&&i!==void 0?i:0;const d=(s=r.maxWidth)!==null&&s!==void 0?s:Number.MAX_SAFE_INTEGER;const u=(n=a.minWidth)!==null&&n!==void 0?n:0;const f=(o=a.maxWidth)!==null&&o!==void 0?o:Number.MAX_SAFE_INTEGER;const v=h-t.x>c&&h-t.x<d;const p=a!=null?l+t.x>u&&l+t.x<f:true;return v&&p};this.handleScrollChanged=async t=>{this.isScrolling=true;this.scrollTimer=F((()=>{this.isScrolling=false}),this.scrollTimer);this.scrollOffset=t.target.scrollTop;await this.computeAndUpdateViewportRows()}}componentWillLoad(){this.updateColumnElements();this.createPools();this.initializeColumnLayout();this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=undefined;this.computeHeaderHeight();this.updateLayoutPosition()}));this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition();this.clearLayoutHeight();this.clearLayoutWidth();this.recomputeColumnWidths();this.computeColumnGridLayout()}))}async componentDidLoad(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.addEventListener("scroll",this.handleScrollChanged,{passive:true});if(this.headerElement!=null){(e=this.headerResizeObserver)===null||e===void 0?void 0:e.observe(this.headerElement)}(i=this.resizeObserver)===null||i===void 0?void 0:i.observe(this.hostEl);await Promise.resolve();await this.initializeMeasuredLayout()}async componentWillRender(){await this.computeAndUpdateViewportRows()}componentDidRender(){this.layoutColumns();this.layoutRendered.emit()}async componentDidUpdate(){if(this.isComputingCellHeight){await this.computeCellHeight()}}disconnectedCallback(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.removeEventListener("scroll",this.handleScrollChanged);this.removeDividerDragListeners();(e=this.headerResizeObserver)===null||e===void 0?void 0:e.disconnect();(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect();this.stateMap.columnWidths=[];this.stateMap.columnWidthPercentages=[]}async handleViewportRowsPropsChanged(){await this.computeAndUpdateViewportRows()}async scrollToPosition(t,e){if(this.tableElement!=null){K(this.tableElement,t,e)}}async attemptComputeCellHeight(){this.computeCellHeight()}render(){return i(s,{key:"fb503e5ce411669efe4549f3d8063fe630993341"},i("div",{key:"1b7acde237a9a7cf8d14f950cc664b82dd253486",class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},i("slot",{key:"ec62af4cb951011ed571418051d52b6cdf2dd152",name:"header"})),i("div",{key:"d3183a765e381d9899a00d4a70302a28bc7deddd",class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},i("slot",{key:"5dcfa30b5f230987cd33d35e9011718c60786ad4",onSlotchange:()=>{this.ensureDividerTemplateDefined();this.updateColumnElements();this.recreateColumnPools();this.computeInitialColumnWidths();this.rebindHeaderData();this.computeColumnGridLayout()}})),i("div",{key:"df5e5e83a5d833c22e0234d36ae6b6be224b8504",class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},i("slot",{key:"98ea7728b5faf0dcf48464aebcb99aae0369b8cc",name:"divider"})),this.resizingColumnIndex!=null&&i("div",{key:"e146248e00f7e8c63de50efdc72bc93a02be4227",class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();const e=t!=null&&t>0&&!this.isComputingCellHeight;if(e){const e=Math.ceil(t/this.rowHeight);const i=Math.floor(this.scrollOffset/this.rowHeight);const s=i+e;const n=Math.max(0,i-this.overScanCount);const o=Math.min(this.totalRows-1,s+this.overScanCount);const r=this.getViewportRows(n,o);this.viewportStartIndex=n;this.viewportEndIndex=o;this.stateMap.viewportRows=r}}initializeColumnLayout(){this.computeInitialColumnWidths();this.computeColumnGridLayout();this.ensureDividerTemplateDefined();this.rebindHeaderData()}async initializeMeasuredLayout(){await this.computeCellHeight();this.computeHeaderHeight()}async computeAndUpdateViewportRows(){var t;this.computeViewportRows();if(((t=this.controller)===null||t===void 0?void 0:t.isConnected)&&this.totalRows>0){await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}}createPools(){if(this.stateMap.columnElementPools==null){this.stateMap.columnElementPools=this.columnElements.reduce(((t,e)=>t.set(e,new W(e,(()=>this.createColumnCellInstance(e))))),new WeakMap)}}recreateColumnPools(){this.columnElements.forEach((t=>{var e,i,s;if(((e=this.stateMap.columnElementPools)===null||e===void 0?void 0:e.get(t))==null){(i=this.stateMap.columnElementPools)===null||i===void 0?void 0:i.set(t,new W(t,(()=>this.createColumnCellInstance(t))))}else{(s=this.stateMap.columnElementPools.get(t))===null||s===void 0?void 0:s.updateElementFactory((()=>this.createColumnCellInstance(t)))}}))}iterateColumns(t){this.columnElements.forEach(((e,i)=>{var s;const n=(s=this.stateMap.columnElementPools)===null||s===void 0?void 0:s.get(e);if(n!=null){t(e,n,i)}else{throw new Error("Cannot find pool for column")}}))}ensureDividerTemplateDefined(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t==null){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 e=t.querySelector('template[slot="header"]');if(e!=null){return N(e)}}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t!=null){return N(t)}else{throw new Error("Table is missing divider template element")}}createColumnCellInstance(t){const e=t.querySelector('template:not([slot="header"])');if(e!=null){return N(e)}else{throw new Error("Column is missing cell template element")}}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.map(((t,e)=>{const i=this.createDividerPointerDownHandler(e);t.element.addEventListener("pointerdown",i);return i}))}removeDividerDragListeners(){var t;if(this.stateMap.headerDividerListeners!=null){const e=this.stateMap.headerDividerListeners;(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.forEach(((t,i)=>{const s=e[i];if(s!=null){t.element.removeEventListener("pointerdown",s)}}));this.stateMap.headerDividerListeners=undefined}}getViewportRows(t,e){const i=this.rows.slice(t,e+1);return i.map((t=>t!=null?this.populateRowData(t):t))}populateRowData(t){var e;if(this.rowData!=null&&t!=null){const i=((e=this.rowData)===null||e===void 0?void 0:e.call(this,t))||{};return{...t,data:i}}else{return t}}getLayoutHeight(){if(this.layoutHeight==null&&this.tableElement!=null){this.layoutHeight=c(this.tableElement)}return this.layoutHeight}getLayoutWidth(){if(this.layoutWidth==null){const t=G(this.hostEl);if(t>0){this.layoutWidth=t}}return this.layoutWidth}clearLayoutHeight(){this.layoutHeight=undefined}clearLayoutWidth(){this.layoutWidth=undefined}get hostEl(){return n(this)}static get watchers(){return{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}}};Q.style=O();const S=()=>`: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)}`;const U=class{constructor(e){t(this,e)}render(){return i(s,{key:"7a3286d46171832c1fae126645568899b1004fa1"},i("div",{key:"ac81e6da67a1c41dbb30a23ec9658ddbac0cd9ea",class:"content"},i("slot",{key:"1993b705fbeeca9f7fee213662981403d89ea4c2",name:"before"})),i("div",{key:"ee8b5cf8eccb88a4b0b029c6f3a33c9c5f20ef09",class:"content content-primary"},i("slot",{key:"2cb220546b02b8dd353aa0270bbfa7f51dc0ca95"})),i("div",{key:"cd0c977e5f42f1dbacaad42306b1705a97b50ab9",class:"content"},i("slot",{key:"0f3af32f24077fa6d0bda7cc1fce3b9921b49f70",name:"after"})))}};U.style=S();export{v as vertex_scene_tree_notification_banner,b as vertex_scene_tree_search,Q as vertex_scene_tree_table_layout,U as vertex_scene_tree_toolbar};
5
- //# sourceMappingURL=p-e00839cd.entry.js.map
4
+ import{r as t,c as e,h as i,H as s,a as n}from"./p-CCVkga9Q.js";import{c as o}from"./p-Dw4-tG-V.js";import{d as r,r as a}from"./p-BxtKMwBH.js";import{p as h}from"./p-B8a9KIE8.js";import{_ as l}from"./p-C-NyjLsm.js";import{a as c}from"./p-DX6pEG54.js";import{i as d}from"./p-CiSHWNC4.js";import{E as u}from"./p-IVh_3-KN.js";import"./p-CG9AChtV.js";const f=()=>`.notification-banner{background-color:var(--blue-200);padding-top:0px;padding-bottom:0px;padding-right:16px;padding-left:8px;display:flex;justify-content:space-between;font-size:0.875rem;line-height:0.5;color:var(--neutral-600)}.notification-banner-info{display:flex;align-items:center;gap:8px}.notification-banner-info .icon{color:var(--blue-600)}.notification-banner-actions{display:flex;align-items:center}.notification-banner-button{background:none;border:none;padding:0;margin:0;cursor:pointer;color:var(--blue-600);font-size:0.875rem;display:flex;align-items:center}.notification-banner-button:hover{color:var(--blue-800)}`;const v=class{constructor(i){t(this,i);this.action=e(this,"action")}render(){return i(s,{key:"097d901352c02a0f1580ca1e8069a09e2d8a0f99"},i("div",{key:"a2f0c563cc060dbd1067129820cc3a3d548edf7a",class:"notification-banner"},i("div",{key:"d4eaf47fd6b494a6ed400fc68e56daf41322ff3a",class:"notification-banner-info"},i("vertex-viewer-icon",{key:"b05fc97116087cde16673019f4845d6f93481b81",class:"icon",name:"info",size:"sm"}),i("p",{key:"48fbfa73c639e8f762b105a0c8e7cf530ff95456"},this.message)),this.actionLabel!=null&&i("div",{key:"6f2c8a07c730e3d1eab820beba978d7b7232fe3a",class:"notification-banner-actions"},i("button",{key:"23aeb9e7071847cd62a19d7a61df6b30ee48d834",class:"notification-banner-button",onClick:()=>this.action.emit()},this.actionLabel))))}};v.style=f();const p=()=>`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}`;const b=class{constructor(i){t(this,i);this.search=e(this,"search");this.searchCompleted=e(this,"searchCompleted");this.disabled=false;this.placeholder=undefined;this.value="";this.focused=false;this.isSearching=false;this.handleTextInput=t=>{const e=t.target;this.value=e.value;if(this.debounce!=null||this.value===""){this.emitCurrentValue()}};this.handleTextFocus=()=>{this.focused=true};this.handleTextBlur=()=>{var t;this.focused=false;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();if(this.value!==this.lastEmittedValue){this.emitCurrentValue()}};this.handleKeyPress=t=>{var e;if(t.key==="Enter"){(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue()}};this.handleClear=t=>{var e;t.preventDefault();this.value="";(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue();this.setFocus()}}async setFocus(){var t,e;if(typeof((t=this.inputEl)===null||t===void 0?void 0:t.focus)==="function"){(e=this.inputEl)===null||e===void 0?void 0:e.focus()}}controllerChanged(t){this.setupController()}componentDidLoad(){this.handleDebounceChanged();this.setupController()}disconnectedCallback(){var t;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose()}async clear(){var t;this.value="";(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();this.emitCurrentValue()}render(){return i(s,{key:"763e2f4c7ab3d80a197b94c123f61b25eba41b24"},i("div",{key:"14b5f4af01483f0d31ee77f03fc36fd1ff46e525",class:"root"},i("div",{key:"a1ebe30b97a16c83c9443402998e0f3f761d687d",class:"overlay icon icon-search"},i("slot",{key:"41073c4ecd626c3b4a38b0e62d95c6317cd2e98a",name:"search-icon"},this.isSearching?i("vertex-viewer-spinner",{slot:"search-icon",size:"xs"}):i("vertex-viewer-icon",{name:"search",size:"sm"}))),i("input",{key:"173d13b8d597425fdff082eb872225279e99bd34",class:o("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,onKeyPress:this.handleKeyPress}),i("div",{key:"f5b0de0431a9c8b051f61fcd76ce9eb430c0a0c9",class:o("overlay overlay-clear",{show:this.value.length>0})},i("button",{key:"92a36b952320fe724ba2f962a5a758a2e514fd18",class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},i("slot",{key:"97dcec892120a855dd6a4d633f4a2cd84e57e670",name:"clear-icon"},i("vertex-viewer-icon",{key:"7df2c0ef411a569ccc0cd50cfbc43c6d8533d073",name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){var t,e;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();const i=r(this.search,(e=this.debounce)!==null&&e!==void 0?e:0);this.search=i;this.searchDisposable=i}setupController(){var t,e;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose();this.onStateChangeDisposable=(e=this.controller)===null||e===void 0?void 0:e.onStateChange.on((t=>{if(this.isSearching&&!t.isSearching){this.searchCompleted.emit(this.value)}this.isSearching=t.isSearching}))}emitCurrentValue(){this.lastEmittedValue=this.value;this.search.emit(this.value)}static get watchers(){return{controller:[{controllerChanged:0}]}}};b.style=p();function m(t){return t.toLowerCase()}var y=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var w=/[^A-Z0-9]+/gi;function g(t,e){if(e===void 0){e={}}var i=e.splitRegexp,s=i===void 0?y:i,n=e.stripRegexp,o=n===void 0?w:n,r=e.transform,a=r===void 0?m:r,h=e.delimiter,l=h===void 0?" ":h;var c=x(x(t,s,"$1\0$2"),o,"\0");var d=0;var u=c.length;while(c.charAt(d)==="\0")d++;while(c.charAt(u-1)==="\0")u--;return c.slice(d,u).split("\0").map(a).join(l)}function x(t,e,i){if(e instanceof RegExp)return t.replace(e,i);return e.reduce((function(t,e){return t.replace(e,i)}),t)}function k(t,e){var i=t.charAt(0);var s=t.substr(1).toLowerCase();if(e>0&&i>="0"&&i<="9"){return"_"+i+s}return""+i.toUpperCase()+s}function C(t,e){if(e===void 0){e={}}return g(t,l({delimiter:"",transform:k},e))}function z(t,e){if(e===0)return t.toLowerCase();return k(t,e)}function D(t,e){if(e===void 0){e={}}return C(t,l({transform:z},e))}const $=/{{(.+)}}/;class R{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((e=>e.bind(t)))}}class _{constructor(t,e){this.node=t;this.expr=e}}class E extends _{constructor(t,e){super(t,e)}bind(t){const e=T(t,this.expr);if(e!==this.node.textContent){this.node.textContent=e}}}class L extends _{constructor(t,e,i){super(t,e);this.attr=i}bind(t){const e=T(t,this.expr);const i=this.node.getAttribute(this.attr);if(i!==e){this.node.setAttribute(this.attr,e)}}}class M extends _{constructor(t,e,i){super(t,e);this.prop=i}bind(t){const e=A(t,this.expr);const i=this.node[this.prop];if(i!==e){this.node[this.prop]=e}}}class j extends _{constructor(t,e,i){super(t,e);this.eventName=i}bind(t){var e;const i=P(this.expr);if(i!=null){(e=this.disposable)===null||e===void 0?void 0:e.dispose();const s=I(t,i,true);this.node.addEventListener(this.eventName,s);this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,s)}}}}}function V(t){const e=[];if(t.nodeType===Node.ELEMENT_NODE){const i=t;const s=H(i);s.forEach((t=>{if(t.name.startsWith("event:")){const s=D(t.name.replace("event:",""));e.push(new j(i,t.value,s))}else if(t.name.startsWith("attr:")){e.push(new L(i,t.value,t.name.replace("attr:","")))}else if(t.name.startsWith("prop:")){const s=D(t.name.replace("prop:",""));e.push(new M(i,t.value,s))}}))}else if(t.nodeType===Node.TEXT_NODE&&t.textContent!=null&&$.test(t.textContent)){e.push(new E(t,t.textContent))}for(let i=0;i<t.childNodes.length;i++){e.push(...V(t.childNodes[i]))}return e}function H(t){return Array.from(t.attributes).filter((t=>$.test(t.value)))}function P(t){const e=$.exec(t);return e!=null?e[1]:undefined}function T(t,e){const i=P(e);if(i!=null){const s=I(t,i,true);return e.replace(`{{${i}}}`,s===null||s===void 0?void 0:s.toString())}else{return e}}function A(t,e){const i=P(e);if(i!=null){const e=I(t,i,true);return e}else{return e}}function I(t,e,i=false){const[s,...n]=e.split(".");if(i&&n.length===0){return t}else if(i&&n.length>0){return I(t,n.join("."),false)}else{const e=t[s];if(n.length>0){return I(e,n.join("."),false)}else{return e}}}class W{constructor(t,e){this.container=t;this.elementFactory=e;this.instanceMap=new Map;this.elements=[]}swapHeadToTail(t){const e=this.elements.splice(0,t);this.elements.splice(this.elements.length,0,...e);return this.elements.concat()}swapTailToHead(t){const e=this.elements.splice(-t,t);this.elements.splice(0,0,...e);return this.elements.concat()}updateElements(t){const e=t-this.elements.length;if(e>0){for(let t=0;t<e;t++){this.createElement()}}else{for(let t=0;t<-e;t++){this.deleteElement()}}return this.elements.concat()}updateData(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);const n=t(i);s===null||s===void 0?void 0:s.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t;this.updateElements(0)}iterateElements(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);t(e,s.bindings,i)}))}createElement(){const t=this.elementFactory();this.elements.push(t.element);this.instanceMap.set(t.element,t);this.container.append(t.element);return t}deleteElement(){const t=this.elements.pop();if(t!=null){this.instanceMap.delete(t);t.remove()}}}function N(t){const e=t.content.cloneNode(true);const i=e.firstElementChild;const s=new R(V(e));return{element:i,bindings:s}}function B(t){var e;return(e=t.getBoundingClientRect().top)!==null&&e!==void 0?e:0}function G(t){return t.clientWidth}function K(t,e,i){t.scrollTo({top:e,...i})}class Z{constructor(){this.onStateChange=new u}setHovered(t){this.onStateChange.emit(t)}stateChanged(t){return this.onStateChange.on(t)}}function F(t,e,i=200){window.clearTimeout(e);return window.setTimeout(t,i)}const O=()=>`: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%}`;const S=class{constructor(i){t(this,i);this.layoutRendered=e(this,"layoutRendered");this.columnsResized=e(this,"columnsResized");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=true;this.isScrolling=false;this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]};this.lastStartIndex=0;this.columnElements=[];this.cellHoverController=new Z;this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1;const e=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex;this.iterateColumns(((i,s,n)=>{s.updateElements(t);if(e>0){s.swapHeadToTail(e)}else{s.swapTailToHead(-e)}i.style.minHeight=`${this.rowHeight*this.totalRows}px`;const o=n===0?t=>`calc(${t} * 0.5rem)`:()=>`0`;s.iterateElements(((t,e,i)=>{const s=this.stateMap.viewportRows[i];if(d(s)){this.updateCell(s,t,e,i,o)}}))}))};this.updateCell=(t,e,i,s,n)=>{e.style.position="absolute";e.style.top=`${(this.viewportStartIndex+s)*this.rowHeight}px`;e.style.boxSizing="border-box";e.style.height=`${this.rowHeight}px`;e.style.width="100%";e.style.paddingLeft=n(t.node.depth);e.tree=this.tree;e.node=t.node;e.hoverController=this.cellHoverController;e.isScrolling=this.isScrolling;i.bind(t)};this.updateLayoutPosition=()=>{a((()=>{if(this.tableElement!=null){this.layoutOffset=B(this.tableElement)}}))};this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((e=>e*t));this.columnsResized.emit(this.stateMap.columnWidths)}};this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((e=>e/t))}};this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}));const t=this.getLayoutWidth();if(t!=null){const e=this.stateMap.columnWidths.reduce(((t,e)=>t+e),0);const i=this.stateMap.columnWidths.map((i=>i*(t/e)));this.stateMap.columnWidthPercentages=i.map((e=>e/t));this.stateMap.columnWidths=i}};this.updateColumnElements=()=>{this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column"))};this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const e={index:0,node:{id:{hex:""},name:"Dummy row",expanded:false,selected:false,visible:false,partiallyVisible:false,isLeaf:false,depth:0,columnsList:[],filterHit:false,hasGeometry:false,phantom:false,endItem:false},metadata:{},data:{}};const{bindings:i,element:s}=this.createColumnCellInstance(this.columnElements[0]);i.bind(e);s.style.visibility="hidden";(t=this.columnElements[0])===null||t===void 0?void 0:t.appendChild(s);if(typeof s.componentOnReady==="function"){await s.componentOnReady()}let n=s.clientHeight;if(n===0){n=await new Promise((t=>{setTimeout((()=>t(s.getBoundingClientRect().height)),5)}))}this.rowHeight=n!==null&&n!==void 0?n:this.rowHeight;s.remove();this.isComputingCellHeight=this.rowHeight===0}};this.computeHeaderHeight=()=>{var t;if(this.stateMap.headerHeight==null){this.stateMap.headerHeight=(t=this.headerElement)===null||t===void 0?void 0:t.getBoundingClientRect().height;this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`)}};this.computeColumnGridLayout=()=>{if(this.stateMap.columnWidths.length===0){this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}))}const t=this.getLayoutWidth();if(t!=null){if(this.stateMap.columnWidthPercentages.length===0){this.stateMap.columnWidthPercentages=this.columnElements.map((e=>{var i;return((i=e.initialWidth)!==null&&i!==void 0?i:100)/t}))}}this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,e)=>`${t} ${e}px`),"")} 1fr`;this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,e)=>`${t} ${e}px`),"")}`};this.bindHeaderData=()=>{if(this.stateMap.headerInstances==null){this.stateMap.headerInstances=this.columnElements.map(((t,e)=>{var i;const s=this.createHeaderInstance(t);if(s!=null){s.element.style.paddingRight=e===this.columnElements.length-1?`0`:`var(--scene-tree-table-column-gap)`;s.element.slot="header";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element)}return s})).filter((t=>t!=null))}if(this.stateMap.headerDividerInstances==null){this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,e)=>{var i;const s=this.createDividerInstance();s.element.slot="divider";s.element.style.position="absolute";s.element.style.right="0";s.element.style.pointerEvents="auto";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element);return s}))}};this.rebindHeaderData=()=>{var t,e;this.removeDividerDragListeners();(t=this.stateMap.headerInstances)===null||t===void 0?void 0:t.forEach((t=>t.element.remove()));(e=this.stateMap.headerDividerInstances)===null||e===void 0?void 0:e.forEach((t=>t.element.remove()));this.stateMap.headerInstances=undefined;this.stateMap.headerDividerInstances=undefined;this.bindHeaderData();this.addDividerDragListeners()};this.createDividerPointerDownHandler=t=>e=>{var i,s;e.preventDefault();e.stopPropagation();this.lastDividerPointerPosition=h.create(Math.floor(e.clientX),Math.floor(e.clientY));this.resizingColumnIndex=t;(s=(i=this.stateMap.headerDividerInstances)===null||i===void 0?void 0:i[t])===null||s===void 0?void 0:s.element.classList.add("dragging");window.addEventListener("pointermove",this.handleDividerPointerMove);window.addEventListener("pointerup",this.handleDividerPointerUp)};this.handleDividerPointerMove=t=>{const e=h.create(Math.floor(t.clientX),Math.floor(t.clientY));if(this.lastDividerPointerPosition!=null&&this.resizingColumnIndex!=null){const t=this.resizingColumnIndex;const i=h.subtract(this.lastDividerPointerPosition,e);if(Math.abs(i.x)>=1&&this.isValidResize(i,t)){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t?e-i.x:e));if(t+1<this.stateMap.columnWidths.length){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t+1?e+i.x:e))}this.lastDividerPointerPosition=e;this.computeColumnGridLayout()}}};this.handleDividerPointerUp=()=>{var t,e;if(this.resizingColumnIndex!=null){(e=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t[this.resizingColumnIndex])===null||e===void 0?void 0:e.element.classList.remove("dragging")}this.lastDividerPointerPosition=undefined;this.resizingColumnIndex=undefined;this.recomputeColumnPercentages();this.recomputeColumnWidths();window.removeEventListener("pointermove",this.handleDividerPointerMove);window.removeEventListener("pointerup",this.handleDividerPointerUp)};this.isValidResize=(t,e)=>{var i,s,n,o;const r=this.columnElements[e];const a=this.columnElements[e+1];const h=this.stateMap.columnWidths[e];const l=this.stateMap.columnWidths[e+1];const c=(i=r.minWidth)!==null&&i!==void 0?i:0;const d=(s=r.maxWidth)!==null&&s!==void 0?s:Number.MAX_SAFE_INTEGER;const u=(n=a.minWidth)!==null&&n!==void 0?n:0;const f=(o=a.maxWidth)!==null&&o!==void 0?o:Number.MAX_SAFE_INTEGER;const v=h-t.x>c&&h-t.x<d;const p=a!=null?l+t.x>u&&l+t.x<f:true;return v&&p};this.handleScrollChanged=async t=>{this.isScrolling=true;this.scrollTimer=F((()=>{this.isScrolling=false}),this.scrollTimer);this.scrollOffset=t.target.scrollTop;await this.computeAndUpdateViewportRows()}}componentWillLoad(){this.updateColumnElements();this.createPools();this.initializeColumnLayout();this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=undefined;this.computeHeaderHeight();this.updateLayoutPosition()}));this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition();this.clearLayoutHeight();this.clearLayoutWidth();this.recomputeColumnWidths();this.computeColumnGridLayout()}))}async componentDidLoad(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.addEventListener("scroll",this.handleScrollChanged,{passive:true});if(this.headerElement!=null){(e=this.headerResizeObserver)===null||e===void 0?void 0:e.observe(this.headerElement)}(i=this.resizeObserver)===null||i===void 0?void 0:i.observe(this.hostEl);await Promise.resolve();await this.initializeMeasuredLayout()}async componentWillRender(){await this.computeAndUpdateViewportRows()}componentDidRender(){this.layoutColumns();this.layoutRendered.emit()}async componentDidUpdate(){if(this.isComputingCellHeight){await this.computeCellHeight()}}disconnectedCallback(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.removeEventListener("scroll",this.handleScrollChanged);this.removeDividerDragListeners();(e=this.headerResizeObserver)===null||e===void 0?void 0:e.disconnect();(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect();this.stateMap.columnWidths=[];this.stateMap.columnWidthPercentages=[]}async handleViewportRowsPropsChanged(){await this.computeAndUpdateViewportRows()}async scrollToPosition(t,e){if(this.tableElement!=null){K(this.tableElement,t,e)}}async attemptComputeCellHeight(){this.computeCellHeight()}render(){return i(s,{key:"fb503e5ce411669efe4549f3d8063fe630993341"},i("div",{key:"1b7acde237a9a7cf8d14f950cc664b82dd253486",class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},i("slot",{key:"ec62af4cb951011ed571418051d52b6cdf2dd152",name:"header"})),i("div",{key:"d3183a765e381d9899a00d4a70302a28bc7deddd",class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},i("slot",{key:"5dcfa30b5f230987cd33d35e9011718c60786ad4",onSlotchange:()=>{this.ensureDividerTemplateDefined();this.updateColumnElements();this.recreateColumnPools();this.computeInitialColumnWidths();this.rebindHeaderData();this.computeColumnGridLayout()}})),i("div",{key:"df5e5e83a5d833c22e0234d36ae6b6be224b8504",class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},i("slot",{key:"98ea7728b5faf0dcf48464aebcb99aae0369b8cc",name:"divider"})),this.resizingColumnIndex!=null&&i("div",{key:"e146248e00f7e8c63de50efdc72bc93a02be4227",class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();const e=t!=null&&t>0&&!this.isComputingCellHeight;if(e){const e=Math.ceil(t/this.rowHeight);const i=Math.floor(this.scrollOffset/this.rowHeight);const s=i+e;const n=Math.max(0,i-this.overScanCount);const o=Math.min(this.totalRows-1,s+this.overScanCount);const r=this.getViewportRows(n,o);this.viewportStartIndex=n;this.viewportEndIndex=o;this.stateMap.viewportRows=r}}initializeColumnLayout(){this.computeInitialColumnWidths();this.computeColumnGridLayout();this.ensureDividerTemplateDefined();this.rebindHeaderData()}async initializeMeasuredLayout(){await this.computeCellHeight();this.computeHeaderHeight()}async computeAndUpdateViewportRows(){var t;this.computeViewportRows();if(((t=this.controller)===null||t===void 0?void 0:t.isConnected)&&this.totalRows>0){await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}}createPools(){if(this.stateMap.columnElementPools==null){this.stateMap.columnElementPools=this.columnElements.reduce(((t,e)=>t.set(e,new W(e,(()=>this.createColumnCellInstance(e))))),new WeakMap)}}recreateColumnPools(){this.columnElements.forEach((t=>{var e,i,s;if(((e=this.stateMap.columnElementPools)===null||e===void 0?void 0:e.get(t))==null){(i=this.stateMap.columnElementPools)===null||i===void 0?void 0:i.set(t,new W(t,(()=>this.createColumnCellInstance(t))))}else{(s=this.stateMap.columnElementPools.get(t))===null||s===void 0?void 0:s.updateElementFactory((()=>this.createColumnCellInstance(t)))}}))}iterateColumns(t){this.columnElements.forEach(((e,i)=>{var s;const n=(s=this.stateMap.columnElementPools)===null||s===void 0?void 0:s.get(e);if(n!=null){t(e,n,i)}else{throw new Error("Cannot find pool for column")}}))}ensureDividerTemplateDefined(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t==null){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 e=t.querySelector('template[slot="header"]');if(e!=null){return N(e)}}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t!=null){return N(t)}else{throw new Error("Table is missing divider template element")}}createColumnCellInstance(t){const e=t.querySelector('template:not([slot="header"])');if(e!=null){return N(e)}else{throw new Error("Column is missing cell template element")}}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.map(((t,e)=>{const i=this.createDividerPointerDownHandler(e);t.element.addEventListener("pointerdown",i);return i}))}removeDividerDragListeners(){var t;if(this.stateMap.headerDividerListeners!=null){const e=this.stateMap.headerDividerListeners;(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.forEach(((t,i)=>{const s=e[i];if(s!=null){t.element.removeEventListener("pointerdown",s)}}));this.stateMap.headerDividerListeners=undefined}}getViewportRows(t,e){const i=this.rows.slice(t,e+1);return i.map((t=>t!=null?this.populateRowData(t):t))}populateRowData(t){var e;if(this.rowData!=null&&t!=null){const i=((e=this.rowData)===null||e===void 0?void 0:e.call(this,t))||{};return{...t,data:i}}else{return t}}getLayoutHeight(){if(this.layoutHeight==null&&this.tableElement!=null){this.layoutHeight=c(this.tableElement)}return this.layoutHeight}getLayoutWidth(){if(this.layoutWidth==null){const t=G(this.hostEl);if(t>0){this.layoutWidth=t}}return this.layoutWidth}clearLayoutHeight(){this.layoutHeight=undefined}clearLayoutWidth(){this.layoutWidth=undefined}get hostEl(){return n(this)}static get watchers(){return{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}}};S.style=O();const U=()=>`: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)}`;const Q=class{constructor(e){t(this,e)}render(){return i(s,{key:"7a3286d46171832c1fae126645568899b1004fa1"},i("div",{key:"ac81e6da67a1c41dbb30a23ec9658ddbac0cd9ea",class:"content"},i("slot",{key:"1993b705fbeeca9f7fee213662981403d89ea4c2",name:"before"})),i("div",{key:"ee8b5cf8eccb88a4b0b029c6f3a33c9c5f20ef09",class:"content content-primary"},i("slot",{key:"2cb220546b02b8dd353aa0270bbfa7f51dc0ca95"})),i("div",{key:"cd0c977e5f42f1dbacaad42306b1705a97b50ab9",class:"content"},i("slot",{key:"0f3af32f24077fa6d0bda7cc1fce3b9921b49f70",name:"after"})))}};Q.style=U();export{v as vertex_scene_tree_notification_banner,b as vertex_scene_tree_search,S as vertex_scene_tree_table_layout,Q as vertex_scene_tree_toolbar};
5
+ //# sourceMappingURL=p-d709a094.entry.js.map