@vertexvis/viewer 1.0.2-canary.2 → 1.0.2-canary.4

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 (501) hide show
  1. package/dist/cjs/config-20ozv4y8.js.map +1 -1
  2. package/dist/cjs/controller-BhcNbaX_.js.map +1 -1
  3. package/dist/cjs/controller-CSwG6gbQ.js.map +1 -1
  4. package/dist/cjs/cursors-BZmDRtaZ.js.map +1 -1
  5. package/dist/cjs/dom-BBil4aN3.js.map +1 -1
  6. package/dist/cjs/dom-CvGkFQon.js.map +1 -1
  7. package/dist/cjs/entities-D6kgGria.js.map +1 -1
  8. package/dist/cjs/geometry_pb-BTko2Wi0.js.map +1 -1
  9. package/dist/cjs/grpc-BsWFEUrc.js.map +1 -1
  10. package/dist/cjs/index.cjs.js.map +1 -1
  11. package/dist/cjs/model-C9WvOKYT.js.map +1 -1
  12. package/dist/cjs/model-D17EQTIh.js.map +1 -1
  13. package/dist/cjs/model-DAB4oD5n.js.map +1 -1
  14. package/dist/cjs/model-DkXCzhs_.js.map +1 -1
  15. package/dist/cjs/multiElementInteractionHandler-BHvRKVIp.js.map +1 -1
  16. package/dist/cjs/overlays-B-06bUbI.js.map +1 -1
  17. package/dist/cjs/queries-Da9I-xMf.js.map +1 -1
  18. package/dist/cjs/regl-component-HhKCyGQ3.js.map +1 -1
  19. package/dist/cjs/representation_pb-CrCGjlyP.js.map +1 -1
  20. package/dist/cjs/results-1wRRZiYG.js.map +1 -1
  21. package/dist/cjs/row-Cet6xXup.js.map +1 -1
  22. package/dist/cjs/stencil-Hsr_8Chs.js.map +1 -1
  23. package/dist/cjs/streamAttributes-D_J-W8-2.js.map +1 -1
  24. package/dist/cjs/templates-DvjgjnlO.js.map +1 -1
  25. package/dist/cjs/util-DIJSIQXH.js.map +1 -1
  26. package/dist/cjs/utils-CibrnHQ4.js.map +1 -1
  27. package/dist/cjs/utils-D8MbXbwO.js.map +1 -1
  28. package/dist/cjs/utils-qErVs2Vt.js.map +1 -1
  29. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +6 -8
  30. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
  31. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
  32. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
  33. package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
  34. package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
  35. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +2 -2
  36. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
  37. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  38. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js.map +1 -1
  39. package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
  40. package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js.map +1 -1
  41. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +1 -1
  42. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js.map +1 -1
  43. package/dist/cjs/vertex-viewer-icon.cjs.entry.js.map +1 -1
  44. package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js.map +1 -1
  45. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
  46. package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
  47. package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
  48. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js.map +1 -1
  49. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
  50. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
  51. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js.map +1 -1
  52. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js.map +1 -1
  53. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +2 -2
  54. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
  55. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
  56. package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +1 -1
  57. package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js.map +1 -1
  58. package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js.map +1 -1
  59. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +4 -5
  60. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
  61. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
  62. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js.map +1 -1
  63. package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js.map +1 -1
  64. package/dist/cjs/vertex-viewer.cjs.entry.js +9 -5
  65. package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
  66. package/dist/cjs/viewport-CG1VYkIU.js.map +1 -1
  67. package/dist/collection/components/scene-tree/errors.js.map +1 -1
  68. package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
  69. package/dist/collection/components/scene-tree/lib/dom.js.map +1 -1
  70. package/dist/collection/components/scene-tree/lib/errors.js.map +1 -1
  71. package/dist/collection/components/scene-tree/lib/grpc.js.map +1 -1
  72. package/dist/collection/components/scene-tree/lib/handlers.js.map +1 -1
  73. package/dist/collection/components/scene-tree/lib/row.js.map +1 -1
  74. package/dist/collection/components/scene-tree/lib/viewer-ops.js.map +1 -1
  75. package/dist/collection/components/scene-tree/scene-tree.js +2 -2
  76. package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
  77. package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
  78. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
  79. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
  80. package/dist/collection/components/scene-tree-table-cell/utils.js.map +1 -1
  81. package/dist/collection/components/scene-tree-table-layout/lib/dom.js.map +1 -1
  82. package/dist/collection/components/scene-tree-table-layout/lib/window.js.map +1 -1
  83. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +5 -5
  84. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js.map +1 -1
  85. package/dist/collection/components/viewer/utils.js.map +1 -1
  86. package/dist/collection/components/viewer/viewer.js +9 -5
  87. package/dist/collection/components/viewer/viewer.js.map +1 -1
  88. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +2 -2
  89. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js.map +1 -1
  90. package/dist/collection/components/viewer-dom-element/utils.js.map +1 -1
  91. package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +1 -1
  92. package/dist/collection/components/viewer-dom-element/viewer-dom-element.js.map +1 -1
  93. package/dist/collection/components/viewer-dom-group/utils.js.map +1 -1
  94. package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +1 -1
  95. package/dist/collection/components/viewer-dom-group/viewer-dom-group.js.map +1 -1
  96. package/dist/collection/components/viewer-dom-renderer/renderer2d.js.map +1 -1
  97. package/dist/collection/components/viewer-dom-renderer/renderer3d.js.map +1 -1
  98. package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js.map +1 -1
  99. package/dist/collection/components/viewer-hit-result-indicator/lib/dom.js.map +1 -1
  100. package/dist/collection/components/viewer-hit-result-indicator/lib/indicator.js.map +1 -1
  101. package/dist/collection/components/viewer-hit-result-indicator/lib/plane.js.map +1 -1
  102. package/dist/collection/components/viewer-hit-result-indicator/lib/point.js.map +1 -1
  103. package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js +1 -1
  104. package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js.map +1 -1
  105. package/dist/collection/components/viewer-icon/viewer-icon.js.map +1 -1
  106. package/dist/collection/components/viewer-markup/markup-utils.js.map +1 -1
  107. package/dist/collection/components/viewer-markup/viewer-markup-components.js.map +1 -1
  108. package/dist/collection/components/viewer-markup/viewer-markup.js +1 -1
  109. package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
  110. package/dist/collection/components/viewer-markup-arrow/interactions.js.map +1 -1
  111. package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
  112. package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow-components.js.map +1 -1
  113. package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js.map +1 -1
  114. package/dist/collection/components/viewer-markup-circle/interactions.js.map +1 -1
  115. package/dist/collection/components/viewer-markup-circle/utils.js.map +1 -1
  116. package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js.map +1 -1
  117. package/dist/collection/components/viewer-markup-freeform/interactions.js.map +1 -1
  118. package/dist/collection/components/viewer-markup-freeform/utils.js.map +1 -1
  119. package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js.map +1 -1
  120. package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
  121. package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js.map +1 -1
  122. package/dist/collection/components/viewer-measurement-distance/hitTest.js.map +1 -1
  123. package/dist/collection/components/viewer-measurement-distance/interactions.js.map +1 -1
  124. package/dist/collection/components/viewer-measurement-distance/utils.js.map +1 -1
  125. package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
  126. package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js +1 -1
  127. package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js.map +1 -1
  128. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +1 -1
  129. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js.map +1 -1
  130. package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js.map +1 -1
  131. package/dist/collection/components/viewer-pin-group/utils.js.map +1 -1
  132. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +2 -2
  133. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js.map +1 -1
  134. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
  135. package/dist/collection/components/viewer-pin-tool/utils.js.map +1 -1
  136. package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js +1 -1
  137. package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js.map +1 -1
  138. package/dist/collection/components/viewer-teleport-tool/viewer-teleport-tool.js.map +1 -1
  139. package/dist/collection/components/viewer-transform-widget/util.js +1 -2
  140. package/dist/collection/components/viewer-transform-widget/util.js.map +1 -1
  141. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
  142. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +3 -3
  143. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
  144. package/dist/collection/components/viewer-transform-widget/widget.js.map +1 -1
  145. package/dist/collection/components/viewer-view-cube/viewer-view-cube.js +1 -1
  146. package/dist/collection/components/viewer-view-cube/viewer-view-cube.js.map +1 -1
  147. package/dist/collection/components/viewer-walk-mode-tool/viewer-walk-mode-tool.js.map +1 -1
  148. package/dist/collection/lib/annotations/controller.js.map +1 -1
  149. package/dist/collection/lib/canvases/controller.js.map +1 -1
  150. package/dist/collection/lib/canvases/mapper.js.map +1 -1
  151. package/dist/collection/lib/config.js.map +1 -1
  152. package/dist/collection/lib/cursors.js.map +1 -1
  153. package/dist/collection/lib/dom.js.map +1 -1
  154. package/dist/collection/lib/grpc.js.map +1 -1
  155. package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
  156. package/dist/collection/lib/interactions/flyToPartKeyInteraction.js.map +1 -1
  157. package/dist/collection/lib/interactions/flyToPositionKeyInteraction.js.map +1 -1
  158. package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
  159. package/dist/collection/lib/interactions/interactionApiOrthographic.js.map +1 -1
  160. package/dist/collection/lib/interactions/interactionApiPerspective.js.map +1 -1
  161. package/dist/collection/lib/interactions/mouseInteractionHandler.js.map +1 -1
  162. package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
  163. package/dist/collection/lib/interactions/multiElementInteractionHandler.js.map +1 -1
  164. package/dist/collection/lib/interactions/multiPointerInteractionHandler.js.map +1 -1
  165. package/dist/collection/lib/interactions/multiTouchInteractionHandler.js.map +1 -1
  166. package/dist/collection/lib/interactions/pointerInteractionHandler.js.map +1 -1
  167. package/dist/collection/lib/interactions/tapInteractionHandler.js.map +1 -1
  168. package/dist/collection/lib/interactions/touchInteractionHandler.js.map +1 -1
  169. package/dist/collection/lib/keyBinding.js.map +1 -1
  170. package/dist/collection/lib/mappers/annotation.js.map +1 -1
  171. package/dist/collection/lib/mappers/camera.js.map +1 -1
  172. package/dist/collection/lib/mappers/color.js.map +1 -1
  173. package/dist/collection/lib/mappers/colorMaterial.js.map +1 -1
  174. package/dist/collection/lib/mappers/corePb.js.map +1 -1
  175. package/dist/collection/lib/mappers/corePbJs.js.map +1 -1
  176. package/dist/collection/lib/mappers/frameStreaming.js.map +1 -1
  177. package/dist/collection/lib/mappers/geometry.js.map +1 -1
  178. package/dist/collection/lib/mappers/material.js.map +1 -1
  179. package/dist/collection/lib/mappers/pagination.js.map +1 -1
  180. package/dist/collection/lib/mappers/scalar.js.map +1 -1
  181. package/dist/collection/lib/mappers/streamAttributes.js.map +1 -1
  182. package/dist/collection/lib/markup/interactions.js.map +1 -1
  183. package/dist/collection/lib/measurement/controller.js.map +1 -1
  184. package/dist/collection/lib/measurement/entities.js.map +1 -1
  185. package/dist/collection/lib/measurement/interactions.js.map +1 -1
  186. package/dist/collection/lib/measurement/mapper.js.map +1 -1
  187. package/dist/collection/lib/measurement/model.js.map +1 -1
  188. package/dist/collection/lib/measurement/overlays.js.map +1 -1
  189. package/dist/collection/lib/measurement/results.js.map +1 -1
  190. package/dist/collection/lib/meters.js.map +1 -1
  191. package/dist/collection/lib/model-views/controller.js.map +1 -1
  192. package/dist/collection/lib/model-views/mapper.js.map +1 -1
  193. package/dist/collection/lib/pins/controller.js.map +1 -1
  194. package/dist/collection/lib/pins/interactions.js.map +1 -1
  195. package/dist/collection/lib/pmi/controller.js.map +1 -1
  196. package/dist/collection/lib/pmi/mapper.js.map +1 -1
  197. package/dist/collection/lib/rendering/canvas.js.map +1 -1
  198. package/dist/collection/lib/rendering/imageLoaders.js.map +1 -1
  199. package/dist/collection/lib/rendering/matrices.js.map +1 -1
  200. package/dist/collection/lib/rendering/timing.js.map +1 -1
  201. package/dist/collection/lib/rendering/utils.js.map +1 -1
  202. package/dist/collection/lib/rendering/vectors.js.map +1 -1
  203. package/dist/collection/lib/scene-items/controller.js.map +1 -1
  204. package/dist/collection/lib/scene-items/mapper.js.map +1 -1
  205. package/dist/collection/lib/scenes/camera.js.map +1 -1
  206. package/dist/collection/lib/scenes/cameraRenderResult.js.map +1 -1
  207. package/dist/collection/lib/scenes/colorMaterial.js.map +1 -1
  208. package/dist/collection/lib/scenes/crossSectioner.js.map +1 -1
  209. package/dist/collection/lib/scenes/mapper.js.map +1 -1
  210. package/dist/collection/lib/scenes/operations.js.map +1 -1
  211. package/dist/collection/lib/scenes/queries.js.map +1 -1
  212. package/dist/collection/lib/scenes/raycaster.js.map +1 -1
  213. package/dist/collection/lib/scenes/scene.js.map +1 -1
  214. package/dist/collection/lib/scenes/sceneOperationExecuteResult.js.map +1 -1
  215. package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
  216. package/dist/collection/lib/stencil.js.map +1 -1
  217. package/dist/collection/lib/storage.js.map +1 -1
  218. package/dist/collection/lib/stream/dispatcher.js.map +1 -1
  219. package/dist/collection/lib/stream/stream.js.map +1 -1
  220. package/dist/collection/lib/stream/utils.js.map +1 -1
  221. package/dist/collection/lib/teleportation/interactions.js.map +1 -1
  222. package/dist/collection/lib/templates.js.map +1 -1
  223. package/dist/collection/lib/token.js.map +1 -1
  224. package/dist/collection/lib/transforms/axis-lines.js.map +1 -1
  225. package/dist/collection/lib/transforms/axis-rotation.js.map +1 -1
  226. package/dist/collection/lib/transforms/axis-translation.js.map +1 -1
  227. package/dist/collection/lib/transforms/controller.js.map +1 -1
  228. package/dist/collection/lib/transforms/drawable.js.map +1 -1
  229. package/dist/collection/lib/transforms/hits.js.map +1 -1
  230. package/dist/collection/lib/transforms/line.js.map +1 -1
  231. package/dist/collection/lib/transforms/mesh.js.map +1 -1
  232. package/dist/collection/lib/transforms/shape.js.map +1 -1
  233. package/dist/collection/lib/transforms/transformation-delta.js.map +1 -1
  234. package/dist/collection/lib/transforms/util.js.map +1 -1
  235. package/dist/collection/lib/types/clippingPlanes.js.map +1 -1
  236. package/dist/collection/lib/types/depthBuffer.js.map +1 -1
  237. package/dist/collection/lib/types/featureMap.js.map +1 -1
  238. package/dist/collection/lib/types/flags.js.map +1 -1
  239. package/dist/collection/lib/types/frame.js.map +1 -1
  240. package/dist/collection/lib/types/frameCamera.js.map +1 -1
  241. package/dist/collection/lib/types/loadableResource.js.map +1 -1
  242. package/dist/collection/lib/types/orientation.js.map +1 -1
  243. package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
  244. package/dist/collection/lib/types/standardView.js.map +1 -1
  245. package/dist/collection/lib/types/stencilBuffer.js.map +1 -1
  246. package/dist/collection/lib/types/synchronizedClock.js.map +1 -1
  247. package/dist/collection/lib/types/viewport.js.map +1 -1
  248. package/dist/collection/lib/visibilityObserver.js.map +1 -1
  249. package/dist/collection/lib/volume-intersection/controller.js.map +1 -1
  250. package/dist/collection/lib/volume-intersection/interactions.js.map +1 -1
  251. package/dist/collection/lib/volume-intersection/model.js.map +1 -1
  252. package/dist/collection/lib/walk-mode/controller.js.map +1 -1
  253. package/dist/collection/lib/walk-mode/interactions.js.map +1 -1
  254. package/dist/collection/lib/walk-mode/model.js.map +1 -1
  255. package/dist/collection/lib/webgl/regl-component.js.map +1 -1
  256. package/dist/collection/testing/annotations.js.map +1 -1
  257. package/dist/collection/testing/canvases.js.map +1 -1
  258. package/dist/collection/testing/colors.js.map +1 -1
  259. package/dist/collection/testing/eventually.js.map +1 -1
  260. package/dist/collection/testing/fixtures.js.map +1 -1
  261. package/dist/collection/testing/grpc.js +3 -9
  262. package/dist/collection/testing/grpc.js.map +1 -1
  263. package/dist/collection/testing/modelViews.js.map +1 -1
  264. package/dist/collection/testing/pmi.js.map +1 -1
  265. package/dist/collection/testing/random.js.map +1 -1
  266. package/dist/collection/testing/resizeObserver.js.map +1 -1
  267. package/dist/collection/testing/scene-items-helper.js.map +1 -1
  268. package/dist/collection/testing/sceneTree.js.map +1 -1
  269. package/dist/collection/testing/viewer.js.map +1 -1
  270. package/dist/collection/testing/webgl.js.map +1 -1
  271. package/dist/components/index.js.map +1 -1
  272. package/dist/components/{p-St4ctu2K.js → p-3-bKfpqr.js} +2 -2
  273. package/dist/components/{p-St4ctu2K.js.map → p-3-bKfpqr.js.map} +1 -1
  274. package/dist/components/p-3DqRAYgO.js.map +1 -1
  275. package/dist/components/p-B-ToCp8-.js.map +1 -1
  276. package/dist/components/p-B156bTbY.js +5 -0
  277. package/dist/components/p-B156bTbY.js.map +1 -0
  278. package/dist/components/p-B9R0QWr4.js.map +1 -1
  279. package/dist/components/p-BCOD9yfw.js.map +1 -1
  280. package/dist/components/p-BHAaIoH5.js.map +1 -1
  281. package/dist/components/{p-Doltf1wO.js → p-BOJJZ1cN.js} +2 -2
  282. package/dist/components/p-BOJJZ1cN.js.map +1 -0
  283. package/dist/components/p-BkHp-aAR.js.map +1 -1
  284. package/dist/components/p-Bkm6H5uq.js.map +1 -1
  285. package/dist/components/p-C-VWDW9n.js.map +1 -1
  286. package/dist/components/p-C79PxobX.js.map +1 -1
  287. package/dist/components/p-CAugdB_8.js.map +1 -1
  288. package/dist/components/p-CEzVEgdQ.js.map +1 -1
  289. package/dist/components/p-CGCJ5hbJ.js.map +1 -1
  290. package/dist/components/p-COlcifvm.js.map +1 -1
  291. package/dist/components/p-CXTH3zrN.js.map +1 -1
  292. package/dist/components/p-CZCXdo3t.js.map +1 -1
  293. package/dist/components/p-Cd7kap5W.js.map +1 -1
  294. package/dist/components/p-CiSHWNC4.js.map +1 -1
  295. package/dist/components/p-CjG1fMh1.js.map +1 -1
  296. package/dist/components/p-CkjXRDNL.js.map +1 -1
  297. package/dist/components/p-D0KZu516.js.map +1 -1
  298. package/dist/components/p-D12q-fpW.js.map +1 -1
  299. package/dist/components/p-D33gVA2W.js.map +1 -1
  300. package/dist/components/p-DC86ZXai.js.map +1 -1
  301. package/dist/components/{p-B80hfIq6.js → p-DF4kEsJU.js} +2 -2
  302. package/dist/components/p-DF4kEsJU.js.map +1 -0
  303. package/dist/components/p-DRh4_Z-g.js.map +1 -1
  304. package/dist/components/p-DRnMrHWY.js.map +1 -1
  305. package/dist/components/{p-b0ZzPHz8.js → p-DUC59SSO.js} +2 -2
  306. package/dist/components/p-DUC59SSO.js.map +1 -0
  307. package/dist/components/p-DVW2WZTq.js.map +1 -1
  308. package/dist/components/p-DZI8pnGz.js.map +1 -1
  309. package/dist/components/p-Dbz9yUqC.js.map +1 -1
  310. package/dist/components/p-Yfi0i5Kj.js.map +1 -1
  311. package/dist/components/p-abSJ29r7.js.map +1 -1
  312. package/dist/components/p-ahjMltGJ.js.map +1 -1
  313. package/dist/components/p-bal2RLiw.js.map +1 -1
  314. package/dist/components/{p-BopQW1sA.js → p-oK38ynrd.js} +2 -2
  315. package/dist/components/p-oK38ynrd.js.map +1 -0
  316. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  317. package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
  318. package/dist/components/vertex-scene-tree-table-layout.js +1 -1
  319. package/dist/components/vertex-scene-tree.js +1 -1
  320. package/dist/components/vertex-scene-tree.js.map +1 -1
  321. package/dist/components/vertex-viewer-box-query-tool.js +1 -1
  322. package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
  323. package/dist/components/vertex-viewer-dom-element.js +1 -1
  324. package/dist/components/vertex-viewer-dom-group.js +1 -1
  325. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  326. package/dist/components/vertex-viewer-hit-result-indicator.js.map +1 -1
  327. package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
  328. package/dist/components/vertex-viewer-markup.js +1 -1
  329. package/dist/components/vertex-viewer-markup.js.map +1 -1
  330. package/dist/components/vertex-viewer-measurement-details.js.map +1 -1
  331. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  332. package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
  333. package/dist/components/vertex-viewer-measurement-line.js +1 -1
  334. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  335. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  336. package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
  337. package/dist/components/vertex-viewer-pin-group.js +1 -1
  338. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  339. package/dist/components/vertex-viewer-pin-tool.js.map +1 -1
  340. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  341. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  342. package/dist/components/vertex-viewer-view-cube.js +1 -1
  343. package/dist/components/vertex-viewer-view-cube.js.map +1 -1
  344. package/dist/components/vertex-viewer-walk-mode-tool.js.map +1 -1
  345. package/dist/components/vertex-viewer.js +1 -1
  346. package/dist/components/vertex-viewer.js.map +1 -1
  347. package/dist/esm/config-lglER3mU.js.map +1 -1
  348. package/dist/esm/controller-BMWGs-I6.js.map +1 -1
  349. package/dist/esm/controller-Iymb_J2R.js.map +1 -1
  350. package/dist/esm/cursors-BbBDEutb.js.map +1 -1
  351. package/dist/esm/dom-B3m2VjbN.js.map +1 -1
  352. package/dist/esm/dom-DX6pEG54.js.map +1 -1
  353. package/dist/esm/entities-zRken6VS.js.map +1 -1
  354. package/dist/esm/geometry_pb-BiZRfctN.js.map +1 -1
  355. package/dist/esm/grpc-CZAYqbTu.js.map +1 -1
  356. package/dist/esm/index.js.map +1 -1
  357. package/dist/esm/model-BYW5YIye.js.map +1 -1
  358. package/dist/esm/model-CLtwOS0o.js.map +1 -1
  359. package/dist/esm/model-D0EJdHmW.js.map +1 -1
  360. package/dist/esm/model-DHJ5aE4y.js.map +1 -1
  361. package/dist/esm/multiElementInteractionHandler-DwjL-r55.js.map +1 -1
  362. package/dist/esm/overlays-BE1oqniA.js.map +1 -1
  363. package/dist/esm/queries-DEzCmbTD.js.map +1 -1
  364. package/dist/esm/regl-component-DmkowWhg.js.map +1 -1
  365. package/dist/esm/representation_pb-g4f0WC4k.js.map +1 -1
  366. package/dist/esm/results-CFB6nKu8.js.map +1 -1
  367. package/dist/esm/row-CiSHWNC4.js.map +1 -1
  368. package/dist/esm/stencil-BV-7pO4q.js.map +1 -1
  369. package/dist/esm/streamAttributes-Cp8PEH9A.js.map +1 -1
  370. package/dist/esm/templates-DRh4_Z-g.js.map +1 -1
  371. package/dist/esm/util-BCZZYmp4.js.map +1 -1
  372. package/dist/esm/utils-BvZ9-fs0.js.map +1 -1
  373. package/dist/esm/utils-DC86ZXai.js.map +1 -1
  374. package/dist/esm/utils-D_pIldrS.js.map +1 -1
  375. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +6 -8
  376. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
  377. package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
  378. package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
  379. package/dist/esm/vertex-scene-tree.entry.js +2 -2
  380. package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
  381. package/dist/esm/vertex-viewer-box-query-tool.entry.js +2 -2
  382. package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
  383. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  384. package/dist/esm/vertex-viewer-dom-element_2.entry.js.map +1 -1
  385. package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
  386. package/dist/esm/vertex-viewer-dom-group.entry.js.map +1 -1
  387. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +1 -1
  388. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js.map +1 -1
  389. package/dist/esm/vertex-viewer-icon.entry.js.map +1 -1
  390. package/dist/esm/vertex-viewer-markup-arrow_3.entry.js.map +1 -1
  391. package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
  392. package/dist/esm/vertex-viewer-markup.entry.js +1 -1
  393. package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
  394. package/dist/esm/vertex-viewer-measurement-details.entry.js.map +1 -1
  395. package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
  396. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
  397. package/dist/esm/vertex-viewer-measurement-line_2.entry.js.map +1 -1
  398. package/dist/esm/vertex-viewer-measurement-precise.entry.js.map +1 -1
  399. package/dist/esm/vertex-viewer-pin-group.entry.js +2 -2
  400. package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
  401. package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
  402. package/dist/esm/vertex-viewer-pin-tool.entry.js +1 -1
  403. package/dist/esm/vertex-viewer-pin-tool.entry.js.map +1 -1
  404. package/dist/esm/vertex-viewer-teleport-tool.entry.js.map +1 -1
  405. package/dist/esm/vertex-viewer-transform-widget.entry.js +4 -5
  406. package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
  407. package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
  408. package/dist/esm/vertex-viewer-view-cube.entry.js.map +1 -1
  409. package/dist/esm/vertex-viewer-walk-mode-tool.entry.js.map +1 -1
  410. package/dist/esm/vertex-viewer.entry.js +9 -5
  411. package/dist/esm/vertex-viewer.entry.js.map +1 -1
  412. package/dist/esm/viewport-C8WQZxvx.js.map +1 -1
  413. package/dist/types/regl-shape.d.ts +1 -1
  414. package/dist/viewer/index.esm.js.map +1 -1
  415. package/dist/viewer/{p-eac63070.entry.js → p-051b5154.entry.js} +2 -2
  416. package/dist/viewer/p-051b5154.entry.js.map +1 -0
  417. package/dist/viewer/{p-3d3a7eeb.entry.js → p-0984c51f.entry.js} +2 -2
  418. package/dist/viewer/{p-3d3a7eeb.entry.js.map → p-0984c51f.entry.js.map} +1 -1
  419. package/dist/viewer/{p-864f40c7.entry.js → p-11cf755a.entry.js} +2 -2
  420. package/dist/viewer/p-11cf755a.entry.js.map +1 -0
  421. package/dist/viewer/{p-29d14611.entry.js → p-16775f7d.entry.js} +2 -2
  422. package/dist/viewer/p-16775f7d.entry.js.map +1 -0
  423. package/dist/viewer/{p-5a85cae5.entry.js → p-1eb636f8.entry.js} +2 -2
  424. package/dist/viewer/p-1eb636f8.entry.js.map +1 -0
  425. package/dist/viewer/{p-e993f300.entry.js → p-228d1d43.entry.js} +2 -2
  426. package/dist/viewer/p-228d1d43.entry.js.map +1 -0
  427. package/dist/viewer/p-33f44cc1.entry.js.map +1 -1
  428. package/dist/viewer/{p-3300d3dc.entry.js → p-35601c85.entry.js} +2 -2
  429. package/dist/viewer/p-35601c85.entry.js.map +1 -0
  430. package/dist/viewer/p-47766566.entry.js.map +1 -1
  431. package/dist/viewer/p-6e3a6bbd.entry.js.map +1 -1
  432. package/dist/viewer/p-7f388b45.entry.js.map +1 -1
  433. package/dist/viewer/p-89544066.entry.js.map +1 -1
  434. package/dist/viewer/{p-07b99ac9.entry.js → p-8c369777.entry.js} +2 -2
  435. package/dist/viewer/p-8c369777.entry.js.map +1 -0
  436. package/dist/viewer/{p-e59983dc.entry.js → p-9835c5e2.entry.js} +2 -2
  437. package/dist/viewer/p-9835c5e2.entry.js.map +1 -0
  438. package/dist/viewer/{p-aa95e21a.entry.js → p-9d8ff406.entry.js} +2 -2
  439. package/dist/viewer/p-9d8ff406.entry.js.map +1 -0
  440. package/dist/viewer/p-BDvACHun.js.map +1 -1
  441. package/dist/viewer/p-BIkuvTVH.js.map +1 -1
  442. package/dist/viewer/p-BRPkbTVP.js.map +1 -1
  443. package/dist/viewer/p-BsBIynwj.js.map +1 -1
  444. package/dist/viewer/p-BxtKMwBH.js.map +1 -1
  445. package/dist/viewer/p-C4y4Noe-.js.map +1 -1
  446. package/dist/viewer/p-C6KrfydC.js.map +1 -1
  447. package/dist/viewer/p-C7dYsPFU.js.map +1 -1
  448. package/dist/viewer/p-C9Cqbq6H.js.map +1 -1
  449. package/dist/viewer/p-CVWO4w6b.js.map +1 -1
  450. package/dist/viewer/p-ChqXy0cG.js.map +1 -1
  451. package/dist/viewer/p-CiSHWNC4.js.map +1 -1
  452. package/dist/viewer/p-CjG1fMh1.js.map +1 -1
  453. package/dist/viewer/p-Cs5KOvOQ.js.map +1 -1
  454. package/dist/viewer/p-CyGlYje2.js.map +1 -1
  455. package/dist/viewer/p-D6eJC1q4.js.map +1 -1
  456. package/dist/viewer/p-DC86ZXai.js.map +1 -1
  457. package/dist/viewer/p-DRh4_Z-g.js.map +1 -1
  458. package/dist/viewer/p-DUX5FvBC.js.map +1 -1
  459. package/dist/viewer/p-DX6pEG54.js.map +1 -1
  460. package/dist/viewer/p-D_ixWHO7.js.map +1 -1
  461. package/dist/viewer/p-DacE-wPp.js.map +1 -1
  462. package/dist/viewer/p-Dp56p_jX.js.map +1 -1
  463. package/dist/viewer/p-EsKoKfmx.js.map +1 -1
  464. package/dist/viewer/p-F8e15or2.js.map +1 -1
  465. package/dist/viewer/p-Jfxh0jq9.js.map +1 -1
  466. package/dist/viewer/p-WPRMWirY.js.map +1 -1
  467. package/dist/viewer/p-_93RRNxT.js.map +1 -1
  468. package/dist/viewer/p-a8a81cba.entry.js +5 -0
  469. package/dist/viewer/p-a8a81cba.entry.js.map +1 -0
  470. package/dist/viewer/p-a9282481.entry.js.map +1 -1
  471. package/dist/viewer/{p-63f4f702.entry.js → p-c7e62d66.entry.js} +2 -2
  472. package/dist/viewer/p-c7e62d66.entry.js.map +1 -0
  473. package/dist/viewer/p-d37e647b.entry.js.map +1 -1
  474. package/dist/viewer/{p-302f2078.entry.js → p-d9fe788f.entry.js} +2 -2
  475. package/dist/viewer/p-d9fe788f.entry.js.map +1 -0
  476. package/dist/viewer/p-e9b83dae.entry.js.map +1 -1
  477. package/dist/viewer/{p-70f3629d.entry.js → p-f271dc4a.entry.js} +2 -2
  478. package/dist/viewer/p-f271dc4a.entry.js.map +1 -0
  479. package/dist/viewer/p-f65c0769.entry.js.map +1 -1
  480. package/dist/viewer/viewer.esm.js +1 -1
  481. package/package.json +7 -7
  482. package/dist/components/p-B80hfIq6.js.map +0 -1
  483. package/dist/components/p-BopQW1sA.js.map +0 -1
  484. package/dist/components/p-DNtS2F8J.js +0 -5
  485. package/dist/components/p-DNtS2F8J.js.map +0 -1
  486. package/dist/components/p-Doltf1wO.js.map +0 -1
  487. package/dist/components/p-b0ZzPHz8.js.map +0 -1
  488. package/dist/viewer/p-07b99ac9.entry.js.map +0 -1
  489. package/dist/viewer/p-29d14611.entry.js.map +0 -1
  490. package/dist/viewer/p-302f2078.entry.js.map +0 -1
  491. package/dist/viewer/p-3300d3dc.entry.js.map +0 -1
  492. package/dist/viewer/p-5a85cae5.entry.js.map +0 -1
  493. package/dist/viewer/p-60c915e3.entry.js +0 -5
  494. package/dist/viewer/p-60c915e3.entry.js.map +0 -1
  495. package/dist/viewer/p-63f4f702.entry.js.map +0 -1
  496. package/dist/viewer/p-70f3629d.entry.js.map +0 -1
  497. package/dist/viewer/p-864f40c7.entry.js.map +0 -1
  498. package/dist/viewer/p-aa95e21a.entry.js.map +0 -1
  499. package/dist/viewer/p-e59983dc.entry.js.map +0 -1
  500. package/dist/viewer/p-e993f300.entry.js.map +0 -1
  501. package/dist/viewer/p-eac63070.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_ANIMATION_DURATION","defaultAnimationConfig","durationMs","defaultFlags","throttleFrameDelivery","adaptiveRendering","logWsMessages","logFrameRate","letterboxFrames","grpcUseStreamingWebSocketTransport","defaultInteractionConfig","finePointerThreshold","coarsePointerThreshold","interactionDelay","useMinimumPerspectiveZoomDistance","mouseWheelInteractionEndDebounce","reverseMouseWheelDirection","config","network","apiHost","renderingHost","sceneTreeHost","sceneViewHost","flags","Flags.defaultFlags","events","Events.defaultEventConfig","animation","Animation.defaultAnimationConfig","interactions","Interactions.defaultInteractionConfig","EXPERIMENTAL_frameDelivery","EXPERIMENTAL_adaptiveRendering","EXPERIMENTAL_qualityOfService","EXPERIMENTAL_annotationPollingIntervalInMs","undefined","platdevConfig","platstagingConfig","getEnvironmentConfig","environment","parseAndValidateConfig","parsed","parseConfig","validateConfig","sanitizeConfig","JSON","parse","envConfig","Objects","defaults","sanitizedApiHost","trim","sanitizedRenderingHost","sanitizedSceneTreeHost","sanitizedSceneViewHost","validateUrlScheme","networkConfig","field","expectedScheme","startsWith","Error"],"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"],"mappings":";;;gGAAA,MAAMA,EAA6B,IAgB5B,MAAMC,EAA0C,CACrDC,WAAYF,GC4BP,MAAMG,EAAsB,CACjCC,sBAAuB,KACvBC,kBAAmB,KACnBC,cAAe,MACfC,aAAc,MACdC,gBAAiB,MACjBC,mCAAoC,MCN/B,MAAMC,EAA8C,CACzDC,qBAAsB,EACtBC,uBAAwB,EACxBC,iBAAkB,GAClBC,kCAAmC,KACnCC,iCAAkC,IAClCC,2BAA4B,OCb9B,MAAMC,EAAiB,CACrBC,QAAS,CACPC,QAAS,yCACTC,cAAe,qCACfC,cAAe,4CACfC,cAAe,wCAEjBC,MAAOC,EACPC,OAAQC,EACRC,UAAWC,EACXC,aAAcC,EACdC,2BAA4B,GAC5BC,+BAAgC,GAChCC,8BAA+B,GAC/BC,2CAA4CC,WAG9C,MAAMC,EAAwB,IACzBnB,EACHC,QAAS,CACPC,QAAS,wCACTC,cAAe,oCACfC,cAAe,2CACfC,cAAe,wCAInB,MAAMe,EAA4B,IAC7BpB,EACHC,QAAS,CACPC,QAAS,4CACTC,cAAe,wCACfC,cAAe,+CACfC,cAAe,4CAInB,SAASgB,EAAqBC,GAC5B,OAAQA,GACN,IAAK,UACH,OAAOH,EACT,IAAK,cACH,OAAOC,EACT,QACE,OAAOpB,EAEb,C,SAEgBuB,EACdD,EAA2B,WAC3BtB,GAEA,MAAMwB,EAASC,EAAYH,EAAatB,GAExC,OAAO0B,EAAeC,EAAeH,GACvC,C,SAEgBC,EACdH,EAA2B,WAC3BtB,GAEA,UAAWA,IAAW,SAAU,CAC9BA,EAAS4B,KAAKC,MAAM7B,E,CAGtB,MAAM8B,EAAYT,EAAqBC,GAEvC,GAAItB,GAAU,KAAM,CAClB,OAAO8B,C,KACF,CACL,OAAOC,EAAQC,SAAS,IAAKhC,GAAU8B,E,CAE3C,CAEM,SAAUH,EAAe3B,GAC7B,MAAMiC,EAAmBjC,EAAOC,QAAQC,QAAQgC,OAChD,MAAMC,EAAyBnC,EAAOC,QAAQE,cAAc+B,OAC5D,MAAME,EAAyBpC,EAAOC,QAAQG,cAAc8B,OAC5D,MAAMG,EAAyBrC,EAAOC,QAAQI,cAAc6B,OAE5D,MAAO,IACFlC,EACHC,QAAS,IACJD,EAAOC,QACVC,QAAS+B,EACT9B,cAAegC,EACf/B,cAAegC,EACf/B,cAAegC,GAGrB,CAEM,SAAUX,EAAe1B,GAC7BsC,EAAkBtC,EAAOC,QAAS,UAAW,YAC7CqC,EAAkBtC,EAAOC,QAAS,gBAAiB,UACnDqC,EAAkBtC,EAAOC,QAAS,gBAAiB,YACnDqC,EAAkBtC,EAAOC,QAAS,gBAAiB,YAEnD,OAAOD,CACT,CAEA,SAASsC,EACPC,EACAC,EACAC,GAEA,IAAKF,EAAcC,GAAOE,WAAWD,GAAiB,CACpD,MAAM,IAAIE,MACR,WAAWH,MAAUD,EAAcC,8CAAkDC,Y,CAG3F,Q","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_ANIMATION_DURATION","defaultAnimationConfig","durationMs","defaultFlags","throttleFrameDelivery","adaptiveRendering","logWsMessages","logFrameRate","letterboxFrames","grpcUseStreamingWebSocketTransport","defaultInteractionConfig","finePointerThreshold","coarsePointerThreshold","interactionDelay","useMinimumPerspectiveZoomDistance","mouseWheelInteractionEndDebounce","reverseMouseWheelDirection","config","network","apiHost","renderingHost","sceneTreeHost","sceneViewHost","flags","Flags.defaultFlags","events","Events.defaultEventConfig","animation","Animation.defaultAnimationConfig","interactions","Interactions.defaultInteractionConfig","EXPERIMENTAL_frameDelivery","EXPERIMENTAL_adaptiveRendering","EXPERIMENTAL_qualityOfService","EXPERIMENTAL_annotationPollingIntervalInMs","undefined","platdevConfig","platstagingConfig","getEnvironmentConfig","environment","parseAndValidateConfig","parsed","parseConfig","validateConfig","sanitizeConfig","JSON","parse","envConfig","Objects","defaults","sanitizedApiHost","trim","sanitizedRenderingHost","sanitizedSceneTreeHost","sanitizedSceneViewHost","validateUrlScheme","networkConfig","field","expectedScheme","startsWith","Error"],"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"],"mappings":";;;gGAAA,MAAMA,EAA6B,IAgB5B,MAAMC,EAA0C,CACrDC,WAAYF,GC4BP,MAAMG,EAAsB,CACjCC,sBAAuB,KACvBC,kBAAmB,KACnBC,cAAe,MACfC,aAAc,MACdC,gBAAiB,MACjBC,mCAAoC,MCN/B,MAAMC,EAA8C,CACzDC,qBAAsB,EACtBC,uBAAwB,EACxBC,iBAAkB,GAClBC,kCAAmC,KACnCC,iCAAkC,IAClCC,2BAA4B,OCb9B,MAAMC,EAAiB,CACrBC,QAAS,CACPC,QAAS,yCACTC,cAAe,qCACfC,cAAe,4CACfC,cAAe,wCAEjBC,MAAOC,EACPC,OAAQC,EACRC,UAAWC,EACXC,aAAcC,EACdC,2BAA4B,GAC5BC,+BAAgC,GAChCC,8BAA+B,GAC/BC,2CAA4CC,WAG9C,MAAMC,EAAwB,IACzBnB,EACHC,QAAS,CACPC,QAAS,wCACTC,cAAe,oCACfC,cAAe,2CACfC,cAAe,wCAInB,MAAMe,EAA4B,IAC7BpB,EACHC,QAAS,CACPC,QAAS,4CACTC,cAAe,wCACfC,cAAe,+CACfC,cAAe,4CAInB,SAASgB,EAAqBC,GAC5B,OAAQA,GACN,IAAK,UACH,OAAOH,EACT,IAAK,cACH,OAAOC,EACT,QACE,OAAOpB,EAEb,C,SAEgBuB,EACdD,EAA2B,WAC3BtB,GAEA,MAAMwB,EAASC,EAAYH,EAAatB,GAExC,OAAO0B,EAAeC,EAAeH,GACvC,C,SAEgBC,EACdH,EAA2B,WAC3BtB,GAEA,UAAWA,IAAW,SAAU,CAC9BA,EAAS4B,KAAKC,MAAM7B,E,CAGtB,MAAM8B,EAAYT,EAAqBC,GAEvC,GAAItB,GAAU,KAAM,CAClB,OAAO8B,C,KACF,CACL,OAAOC,EAAQC,SAAS,IAAKhC,GAAU8B,E,CAE3C,CAEM,SAAUH,EAAe3B,GAC7B,MAAMiC,EAAmBjC,EAAOC,QAAQC,QAAQgC,OAChD,MAAMC,EAAyBnC,EAAOC,QAAQE,cAAc+B,OAC5D,MAAME,EAAyBpC,EAAOC,QAAQG,cAAc8B,OAC5D,MAAMG,EAAyBrC,EAAOC,QAAQI,cAAc6B,OAE5D,MAAO,IACFlC,EACHC,QAAS,IACJD,EAAOC,QACVC,QAAS+B,EACT9B,cAAegC,EACf/B,cAAegC,EACf/B,cAAegC,GAGrB,CAEM,SAAUX,EAAe1B,GAC7BsC,EAAkBtC,EAAOC,QAAS,UAAW,YAC7CqC,EAAkBtC,EAAOC,QAAS,gBAAiB,UACnDqC,EAAkBtC,EAAOC,QAAS,gBAAiB,YACnDqC,EAAkBtC,EAAOC,QAAS,gBAAiB,YAEnD,OAAOD,CACT,CAEA,SAASsC,EACPC,EACAC,EACAC,GAEA,IAAKF,EAAcC,GAAOE,WAAWD,GAAiB,CACpD,MAAM,IAAIE,MACR,WAAWH,MAAUD,EAAcC,8CAAkDC,Y,CAG3F,Q","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["getMouseClientPosition","event","offsets","pt","Point","create","clientX","clientY","subtract","left","top","cssTransformCenterAt","position","x","y","cssCursor","cursor","parts","url","_a","offsetX","_b","offsetY","join","getWindowDevicePixelRatio","window","devicePixelRatio"],"sources":["src/lib/dom.ts"],"sourcesContent":["import { Point } from '@vertexvis/geometry';\n\nimport { Cursor } from './cursors';\n\nexport function getMouseClientPosition(\n event: MouseEvent,\n offsets?: DOMRect\n): Point.Point {\n const pt = Point.create(event.clientX, event.clientY);\n if (offsets == null) {\n return pt;\n } else {\n return Point.subtract(pt, Point.create(offsets.left, offsets.top));\n }\n}\n\n/**\n * Returns a CSS transform that will center an element at the given position.\n */\nexport function cssTransformCenterAt(position: Point.Point): string {\n const { x, y } = position;\n return `translate(-50%, -50%) translate(${x}px, ${y}px)`;\n}\n\n/**\n * Returns a CSS value for a cursor.\n */\nexport function cssCursor(cursor: Cursor): string {\n if (typeof cursor === 'string') {\n return cursor;\n } else {\n const parts = [\n `url(\"${cursor.url}\")`,\n cursor.offsetX ?? 0,\n cursor.offsetY ?? 0,\n ', auto',\n ];\n return parts.join(' ');\n }\n}\n\nexport function getWindowDevicePixelRatio(): number {\n if (typeof window !== 'undefined') {\n return window.devicePixelRatio;\n }\n return 1;\n}\n"],"mappings":";;;oCAIM,SAAUA,EACdC,EACAC,GAEA,MAAMC,EAAKC,EAAMC,OAAOJ,EAAMK,QAASL,EAAMM,SAC7C,GAAIL,GAAW,KAAM,CACnB,OAAOC,C,KACF,CACL,OAAOC,EAAMI,SAASL,EAAIC,EAAMC,OAAOH,EAAQO,KAAMP,EAAQQ,K,CAEjE,CAKM,SAAUC,EAAqBC,GACnC,MAAMC,EAAEA,EAACC,EAAEA,GAAMF,EACjB,MAAO,mCAAmCC,QAAQC,MACpD,CAKM,SAAUC,EAAUC,G,QACxB,UAAWA,IAAW,SAAU,CAC9B,OAAOA,C,KACF,CACL,MAAMC,EAAQ,CACZ,QAAQD,EAAOE,SACfC,EAAAH,EAAOI,WAAO,MAAAD,SAAA,EAAAA,EAAI,GAClBE,EAAAL,EAAOM,WAAO,MAAAD,SAAA,EAAAA,EAAI,EAClB,UAEF,OAAOJ,EAAMM,KAAK,I,CAEtB,C,SAEgBC,IACd,UAAWC,SAAW,YAAa,CACjC,OAAOA,OAAOC,gB,CAEhB,OAAO,CACT,Q","ignoreList":[]}
1
+ {"version":3,"names":["getMouseClientPosition","event","offsets","pt","Point","create","clientX","clientY","subtract","left","top","cssTransformCenterAt","position","x","y","cssCursor","cursor","parts","url","_a","offsetX","_b","offsetY","join","getWindowDevicePixelRatio","window","devicePixelRatio"],"sources":["src/lib/dom.ts"],"sourcesContent":["import { Point } from '@vertexvis/geometry';\n\nimport { Cursor } from './cursors';\n\nexport function getMouseClientPosition(\n event: MouseEvent,\n offsets?: DOMRect,\n): Point.Point {\n const pt = Point.create(event.clientX, event.clientY);\n if (offsets == null) {\n return pt;\n } else {\n return Point.subtract(pt, Point.create(offsets.left, offsets.top));\n }\n}\n\n/**\n * Returns a CSS transform that will center an element at the given position.\n */\nexport function cssTransformCenterAt(position: Point.Point): string {\n const { x, y } = position;\n return `translate(-50%, -50%) translate(${x}px, ${y}px)`;\n}\n\n/**\n * Returns a CSS value for a cursor.\n */\nexport function cssCursor(cursor: Cursor): string {\n if (typeof cursor === 'string') {\n return cursor;\n } else {\n const parts = [\n `url(\"${cursor.url}\")`,\n cursor.offsetX ?? 0,\n cursor.offsetY ?? 0,\n ', auto',\n ];\n return parts.join(' ');\n }\n}\n\nexport function getWindowDevicePixelRatio(): number {\n if (typeof window !== 'undefined') {\n return window.devicePixelRatio;\n }\n return 1;\n}\n"],"mappings":";;;oCAIM,SAAUA,EACdC,EACAC,GAEA,MAAMC,EAAKC,EAAMC,OAAOJ,EAAMK,QAASL,EAAMM,SAC7C,GAAIL,GAAW,KAAM,CACnB,OAAOC,C,KACF,CACL,OAAOC,EAAMI,SAASL,EAAIC,EAAMC,OAAOH,EAAQO,KAAMP,EAAQQ,K,CAEjE,CAKM,SAAUC,EAAqBC,GACnC,MAAMC,EAAEA,EAACC,EAAEA,GAAMF,EACjB,MAAO,mCAAmCC,QAAQC,MACpD,CAKM,SAAUC,EAAUC,G,QACxB,UAAWA,IAAW,SAAU,CAC9B,OAAOA,C,KACF,CACL,MAAMC,EAAQ,CACZ,QAAQD,EAAOE,SACfC,EAAAH,EAAOI,WAAO,MAAAD,SAAA,EAAAA,EAAI,GAClBE,EAAAL,EAAOM,WAAO,MAAAD,SAAA,EAAAA,EAAI,EAClB,UAEF,OAAOJ,EAAMM,KAAK,I,CAEtB,C,SAEgBC,IACd,UAAWC,SAAW,YAAa,CACjC,OAAOA,OAAOC,gB,CAEhB,OAAO,CACT,Q","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t,p as n,H as e,d as s,h as i,e as a}from"./p-Bb32XUUS.js";import{v as o,q as h,m as d,h as l}from"./p-DDQcM-So.js";import{o as c}from"./p-CHdoymO5.js";const r=()=>`:host{position:absolute;pointer-events:none;visibility:hidden}:host([hydrated]){visibility:hidden}:host(.ready){visibility:inherit}:host(:not([interactions-off]))>*{pointer-events:auto}`;const u=n(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.occlusionStateChanged=s(this,"occlusionStateChanged");this.detachedStateChanged=s(this,"detachedStateChanged");this.propertyChange=s(this,"propertyChange");this.position=o.origin();this.positionJson="";this.quaternion=h.create();this.quaternionJson="";this.scale=o.create(1,1,1);this.scaleJson="";this.matrix=d.makeIdentity();this.occlusionOff=false;this.occluded=false;this.detachedOff=true;this.detached=false;this.billboardOff=false;this.interactionsOff=false}handlePositionChange(){this.syncMatrix()}handlePositionJsonChanged(){this.syncPosition()}handleRotationChanged(){this.syncQuaternionWithRotation()}handleRotationJsonChanged(){this.syncRotation()}handleQuaternionChange(){this.syncMatrix()}handleQuaternionJsonChanged(){this.syncQuaternion()}handleScaleChange(){this.syncMatrix()}handleScaleJsonChanged(){this.syncScale()}handleMatrixChanged(t,n){if(!c.isEqual(t,n)){this.propertyChange.emit()}}connectedCallback(){this.syncProperties()}componentShouldUpdate(t,n,e){return e==="occluded"}handleOcclusionStateChanged(){this.occlusionStateChanged.emit(this.occluded)}handleDetachedStateChanged(){this.detachedStateChanged.emit(this.detached)}syncProperties(){this.syncPosition();this.syncRotation();this.syncQuaternion();this.syncScale();this.syncMatrix()}syncPosition(){this.position=this.positionJson.length>0?this.parseJson("positionJson",this.positionJson,o.fromJson):this.position}syncRotation(){this.rotation=this.rotationJson!=null&&this.rotationJson.length>0?this.parseJson("rotationJson",this.rotationJson,l.fromJson):this.rotation;this.syncQuaternionWithRotation()}syncQuaternionWithRotation(){this.quaternion=this.rotation!=null?h.fromEuler(this.rotation):this.quaternion}syncQuaternion(){this.quaternion=this.quaternionJson.length>0?this.parseJson("quaternionJson",this.quaternionJson,h.fromJson):this.quaternion}syncScale(){this.scale=this.scaleJson.length>0?this.parseJson("scaleJson",this.scaleJson,o.fromJson):this.scale}syncMatrix(){if(this.position!=null&&this.quaternion!=null&&this.scale!=null){this.matrix=d.makeTRS(this.position,this.quaternion,this.scale)}}parseJson(t,n,e){try{return e(n)}catch(n){console.warn(`Could not parse \`${t}\`. Invalid JSON.`);throw n}}render(){return i(a,{key:"bf50fa97cdf5d144f262f721d3adc778340dc913"},i("slot",{key:"46d2e88b7d3ec6daae905d8c509cbe1a2b0d0a12"}))}static get watchers(){return{position:[{handlePositionChange:1}],positionJson:[{handlePositionJsonChanged:1}],rotation:[{handleRotationChanged:1}],rotationJson:[{handleRotationJsonChanged:1}],quaternion:[{handleQuaternionChange:1}],quaternionJson:[{handleQuaternionJsonChanged:1}],scale:[{handleScaleChange:1}],scaleJson:[{handleScaleJsonChanged:1}],matrix:[{handleMatrixChanged:0}],occluded:[{handleOcclusionStateChanged:0}],detached:[{handleDetachedStateChanged:0}]}}static get style(){return r()}},[257,"vertex-viewer-dom-element",{position:[1040],positionJson:[1,"position"],rotation:[1040],rotationJson:[1,"rotation"],quaternion:[1040],quaternionJson:[1,"quaternion"],scale:[1040],scaleJson:[1,"scale"],matrix:[1040],occlusionOff:[4,"occlusion-off"],occluded:[516],detachedOff:[4,"detached-off"],detached:[516],billboardOff:[4,"billboard-off"],interactionsOff:[516,"interactions-off"]},undefined,{position:[{handlePositionChange:1}],positionJson:[{handlePositionJsonChanged:1}],rotation:[{handleRotationChanged:1}],rotationJson:[{handleRotationJsonChanged:1}],quaternion:[{handleQuaternionChange:1}],quaternionJson:[{handleQuaternionJsonChanged:1}],scale:[{handleScaleChange:1}],scaleJson:[{handleScaleJsonChanged:1}],matrix:[{handleMatrixChanged:0}],occluded:[{handleOcclusionStateChanged:0}],detached:[{handleDetachedStateChanged:0}]}]);function f(){if(typeof customElements==="undefined"){return}const n=["vertex-viewer-dom-element"];n.forEach((n=>{switch(n){case"vertex-viewer-dom-element":if(!customElements.get(t(n))){customElements.define(t(n),u)}break}}))}f();export{u as V,f as d};
5
- //# sourceMappingURL=p-BopQW1sA.js.map
4
+ import{t,p as n,H as e,d as s,h as i,e as a}from"./p-Bb32XUUS.js";import{v as o,q as h,m as d,h as l}from"./p-DDQcM-So.js";import{o as c}from"./p-CHdoymO5.js";const r=()=>`:host{position:absolute;pointer-events:none;visibility:hidden}:host([hydrated]){visibility:hidden}:host(.ready){visibility:inherit}:host(:not([interactions-off]))>*{pointer-events:auto}`;const u=n(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.occlusionStateChanged=s(this,"occlusionStateChanged");this.detachedStateChanged=s(this,"detachedStateChanged");this.propertyChange=s(this,"propertyChange");this.position=o.origin();this.positionJson="";this.quaternion=h.create();this.quaternionJson="";this.scale=o.create(1,1,1);this.scaleJson="";this.matrix=d.makeIdentity();this.occlusionOff=false;this.occluded=false;this.detachedOff=true;this.detached=false;this.billboardOff=false;this.interactionsOff=false}handlePositionChange(){this.syncMatrix()}handlePositionJsonChanged(){this.syncPosition()}handleRotationChanged(){this.syncQuaternionWithRotation()}handleRotationJsonChanged(){this.syncRotation()}handleQuaternionChange(){this.syncMatrix()}handleQuaternionJsonChanged(){this.syncQuaternion()}handleScaleChange(){this.syncMatrix()}handleScaleJsonChanged(){this.syncScale()}handleMatrixChanged(t,n){if(!c.isEqual(t,n)){this.propertyChange.emit()}}connectedCallback(){this.syncProperties()}componentShouldUpdate(t,n,e){return e==="occluded"}handleOcclusionStateChanged(){this.occlusionStateChanged.emit(this.occluded)}handleDetachedStateChanged(){this.detachedStateChanged.emit(this.detached)}syncProperties(){this.syncPosition();this.syncRotation();this.syncQuaternion();this.syncScale();this.syncMatrix()}syncPosition(){this.position=this.positionJson.length>0?this.parseJson("positionJson",this.positionJson,o.fromJson):this.position}syncRotation(){this.rotation=this.rotationJson!=null&&this.rotationJson.length>0?this.parseJson("rotationJson",this.rotationJson,l.fromJson):this.rotation;this.syncQuaternionWithRotation()}syncQuaternionWithRotation(){this.quaternion=this.rotation!=null?h.fromEuler(this.rotation):this.quaternion}syncQuaternion(){this.quaternion=this.quaternionJson.length>0?this.parseJson("quaternionJson",this.quaternionJson,h.fromJson):this.quaternion}syncScale(){this.scale=this.scaleJson.length>0?this.parseJson("scaleJson",this.scaleJson,o.fromJson):this.scale}syncMatrix(){if(this.position!=null&&this.quaternion!=null&&this.scale!=null){this.matrix=d.makeTRS(this.position,this.quaternion,this.scale)}}parseJson(t,n,e){try{return e(n)}catch(n){console.warn(`Could not parse \`${t}\`. Invalid JSON.`);throw n}}render(){return i(a,{key:"9f708ca2a98e38bf3d61551273f43c691ab55edf"},i("slot",{key:"510635ebdbe7bb9c73a8375b15c22f359a62c8e4"}))}static get watchers(){return{position:[{handlePositionChange:1}],positionJson:[{handlePositionJsonChanged:1}],rotation:[{handleRotationChanged:1}],rotationJson:[{handleRotationJsonChanged:1}],quaternion:[{handleQuaternionChange:1}],quaternionJson:[{handleQuaternionJsonChanged:1}],scale:[{handleScaleChange:1}],scaleJson:[{handleScaleJsonChanged:1}],matrix:[{handleMatrixChanged:0}],occluded:[{handleOcclusionStateChanged:0}],detached:[{handleDetachedStateChanged:0}]}}static get style(){return r()}},[257,"vertex-viewer-dom-element",{position:[1040],positionJson:[1,"position"],rotation:[1040],rotationJson:[1,"rotation"],quaternion:[1040],quaternionJson:[1,"quaternion"],scale:[1040],scaleJson:[1,"scale"],matrix:[1040],occlusionOff:[4,"occlusion-off"],occluded:[516],detachedOff:[4,"detached-off"],detached:[516],billboardOff:[4,"billboard-off"],interactionsOff:[516,"interactions-off"]},undefined,{position:[{handlePositionChange:1}],positionJson:[{handlePositionJsonChanged:1}],rotation:[{handleRotationChanged:1}],rotationJson:[{handleRotationJsonChanged:1}],quaternion:[{handleQuaternionChange:1}],quaternionJson:[{handleQuaternionJsonChanged:1}],scale:[{handleScaleChange:1}],scaleJson:[{handleScaleJsonChanged:1}],matrix:[{handleMatrixChanged:0}],occluded:[{handleOcclusionStateChanged:0}],detached:[{handleDetachedStateChanged:0}]}]);function f(){if(typeof customElements==="undefined"){return}const n=["vertex-viewer-dom-element"];n.forEach((n=>{switch(n){case"vertex-viewer-dom-element":if(!customElements.get(t(n))){customElements.define(t(n),u)}break}}))}f();export{u as V,f as d};
5
+ //# sourceMappingURL=p-oK38ynrd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["viewerDomElementCss","ViewerDomElement","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","position","Vector3","origin","positionJson","quaternion","Quaternion","create","quaternionJson","scale","scaleJson","matrix","Matrix4","makeIdentity","occlusionOff","occluded","detachedOff","detached","billboardOff","interactionsOff","handlePositionChange","syncMatrix","handlePositionJsonChanged","syncPosition","handleRotationChanged","syncQuaternionWithRotation","handleRotationJsonChanged","syncRotation","handleQuaternionChange","handleQuaternionJsonChanged","syncQuaternion","handleScaleChange","handleScaleJsonChanged","syncScale","handleMatrixChanged","newMatrix","oldMatrix","Objects","isEqual","propertyChange","emit","connectedCallback","syncProperties","componentShouldUpdate","newValue","oldValue","prop","handleOcclusionStateChanged","occlusionStateChanged","handleDetachedStateChanged","detachedStateChanged","length","parseJson","fromJson","rotation","rotationJson","Euler","fromEuler","makeTRS","propName","value","parse","e","console","warn","render","h","Host","key"],"sources":["src/components/viewer-dom-element/viewer-dom-element.css?tag=vertex-viewer-dom-element&encapsulation=shadow","src/components/viewer-dom-element/viewer-dom-element.tsx"],"sourcesContent":[":host {\n position: absolute;\n pointer-events: none;\n visibility: hidden;\n}\n\n/* Ignore Stencil's hydrated prop in favor of a custom `ready` selector. This\n * prevents flashing of elements before Stencil has a time to position the\n * element in 3D space.\n */\n:host([hydrated]) {\n visibility: hidden;\n}\n\n:host(.ready) {\n visibility: inherit;\n}\n\n:host(:not([interactions-off])) > * {\n pointer-events: auto;\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\n\nimport {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Euler, Matrix4, Quaternion, Vector3 } from '@vertexvis/geometry';\nimport { Objects } from '@vertexvis/utils';\n\nimport { HTMLDomRendererPositionableElement } from '../../interfaces';\n\n/**\n * The `ViewerDomElement` is responsible for managing a\n * `<vertex-viewer-dom-element>` element. These elements are intended to be\n * added as children to a `<vertex-viewer-dom-renderer>` and represent an\n * individual DOM element within a local 3D scene.\n */\n@Component({\n tag: 'vertex-viewer-dom-element',\n styleUrl: 'viewer-dom-element.css',\n shadow: true,\n})\nexport class ViewerDomElement implements HTMLDomRendererPositionableElement {\n /**\n * The local 3D position of where this element is located.\n */\n @Prop({ mutable: true, attribute: null })\n public position: Vector3.Vector3 = Vector3.origin();\n\n /**\n * @ignore\n */\n @Watch('position', { immediate: true })\n protected handlePositionChange(): void {\n this.syncMatrix();\n }\n\n /**\n * The local 3D position of where this element is located, as a JSON string.\n * JSON representation can either be in the format of `[x, y, z]` or `{\"x\": 0,\n * \"y\": 0, \"z\": 0}`.\n */\n @Prop({ attribute: 'position' })\n public positionJson = '';\n\n /**\n * @ignore\n */\n @Watch('positionJson', { immediate: true })\n protected handlePositionJsonChanged(): void {\n this.syncPosition();\n }\n\n /**\n * The local rotation of this element in Euler angles.\n */\n @Prop({ mutable: true, attribute: null })\n public rotation?: Euler.Euler;\n\n /**\n * @ignore\n */\n @Watch('rotation', { immediate: true })\n protected handleRotationChanged(): void {\n this.syncQuaternionWithRotation();\n }\n\n /**\n * The local rotation of this element in Euler angles, as a JSON string. JSON\n * representation can either be `[x, y, z, order]` or `{\"x\": 0, \"y\": 0, \"z\":\n * 0, \"order\": \"xyz\"}`.\n */\n @Prop({ attribute: 'rotation' })\n public rotationJson?: string;\n\n /**\n * @ignore\n */\n @Watch('rotationJson', { immediate: true })\n protected handleRotationJsonChanged(): void {\n this.syncRotation();\n }\n\n /**\n * The local rotation of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public quaternion: Quaternion.Quaternion = Quaternion.create();\n\n /**\n * @ignore\n */\n @Watch('quaternion', { immediate: true })\n protected handleQuaternionChange(): void {\n this.syncMatrix();\n }\n\n /**\n * The local quaternion rotation of this element, as a JSON string. JSON\n * representation can either be `[x, y, z, w]` or `{\"x\": 0, \"y\": 0, \"z\":\n * 0, \"w\": 1}`.\n */\n @Prop({ attribute: 'quaternion' })\n public quaternionJson = '';\n\n /**\n * @ignore\n */\n @Watch('quaternionJson', { immediate: true })\n protected handleQuaternionJsonChanged(): void {\n this.syncQuaternion();\n }\n\n /**\n * The local scale of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public scale: Vector3.Vector3 = Vector3.create(1, 1, 1);\n\n /**\n * @ignore\n */\n @Watch('scale', { immediate: true })\n protected handleScaleChange(): void {\n this.syncMatrix();\n }\n\n /**\n * The local scale of this element, as a JSON string. JSON string\n * representation can either be in the format of `[x, y, z]` or `{\"x\": 0, \"y\":\n * 0, \"z\": 0}`.\n */\n @Prop({ attribute: 'scale' })\n public scaleJson = '';\n\n /**\n * @ignore\n */\n @Watch('scaleJson', { immediate: true })\n protected handleScaleJsonChanged(): void {\n this.syncScale();\n }\n\n /**\n * @ignore\n */\n @Watch('matrix')\n protected handleMatrixChanged(\n newMatrix: Matrix4.Matrix4,\n oldMatrix: Matrix4.Matrix4,\n ): void {\n if (!Objects.isEqual(newMatrix, oldMatrix)) {\n this.propertyChange.emit();\n }\n }\n\n /**\n * The local matrix of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public matrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * Disables occlusion testing for this element. Defaults to enabled. When\n * enabled, the elements position will be tested against the current depth\n * buffer. If the position is occluded, then the `occluded` attribute will be\n * set.\n */\n @Prop()\n public occlusionOff = false;\n\n /**\n * Indicates if the element is hidden by geometry. This property can be used\n * with a CSS selector to modify the appearance of the element when its\n * occluded.\n *\n * @example\n *\n * ```html\n * <style>\n * vertex-viewer-dom-element[occluded] {\n * opacity: 0;\n * }\n * </style>\n * ```\n */\n @Prop({ reflect: true })\n public occluded = false;\n\n /**\n * Dispatched when the occlusion state is changed.\n */\n @Event({ bubbles: true })\n public occlusionStateChanged!: EventEmitter<boolean>;\n\n /**\n * **EXPERIMENTAL**\n * Disables detached testing for this element. Defaults to disabled. When\n * enabled, the elements position will be tested against the current depth\n * buffer. If the position is detached, then the `detached` attribute will be\n * set.\n */\n @Prop()\n public detachedOff = true;\n\n /**\n * **EXPERIMENTAL**\n * Indicates if the element is detached from geometry. This property can be used\n * with a CSS selector to modify the appearance of the element when its\n * detached.\n *\n * @example\n *\n * ```html\n * <style>\n * vertex-viewer-dom-element[detached] {\n * opacity: 0;\n * }\n * </style>\n * ```\n */\n @Prop({ reflect: true })\n public detached = false;\n\n /**\n * **EXPERIMENTAL**\n * Dispatched when the detached state is changed.\n */\n @Event({ bubbles: true })\n public detachedStateChanged!: EventEmitter<boolean>;\n\n /**\n * Disables the billboarding behavior of the element. When billboarding is\n * enabled, the element will always be oriented towards the screen.\n */\n @Prop()\n public billboardOff = false;\n\n /**\n * Disables interaction events from children.\n */\n @Prop({ reflect: true })\n public interactionsOff = false;\n\n /**\n * An event that is emitted when any property on the dom group changes\n */\n @Event({ bubbles: true })\n public propertyChange!: EventEmitter<void>;\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.syncProperties();\n }\n\n /**\n * @ignore\n */\n protected componentShouldUpdate(\n newValue: unknown,\n oldValue: unknown,\n prop: string,\n ): boolean {\n return prop === 'occluded';\n }\n\n /**\n * @ignore\n */\n @Watch('occluded')\n protected handleOcclusionStateChanged(): void {\n this.occlusionStateChanged.emit(this.occluded);\n }\n\n /**\n * @ignore\n */\n @Watch('detached')\n protected handleDetachedStateChanged(): void {\n this.detachedStateChanged.emit(this.detached);\n }\n\n private syncProperties(): void {\n this.syncPosition();\n this.syncRotation();\n this.syncQuaternion();\n this.syncScale();\n this.syncMatrix();\n }\n\n private syncPosition(): void {\n this.position =\n this.positionJson.length > 0\n ? this.parseJson('positionJson', this.positionJson, Vector3.fromJson)\n : this.position;\n }\n\n private syncRotation(): void {\n this.rotation =\n this.rotationJson != null && this.rotationJson.length > 0\n ? this.parseJson('rotationJson', this.rotationJson, Euler.fromJson)\n : this.rotation;\n this.syncQuaternionWithRotation();\n }\n\n private syncQuaternionWithRotation(): void {\n this.quaternion =\n this.rotation != null\n ? Quaternion.fromEuler(this.rotation)\n : this.quaternion;\n }\n\n private syncQuaternion(): void {\n this.quaternion =\n this.quaternionJson.length > 0\n ? this.parseJson(\n 'quaternionJson',\n this.quaternionJson,\n Quaternion.fromJson,\n )\n : this.quaternion;\n }\n\n private syncScale(): void {\n this.scale =\n this.scaleJson.length > 0\n ? this.parseJson('scaleJson', this.scaleJson, Vector3.fromJson)\n : this.scale;\n }\n\n private syncMatrix(): void {\n if (\n this.position != null &&\n this.quaternion != null &&\n this.scale != null\n ) {\n this.matrix = Matrix4.makeTRS(this.position, this.quaternion, this.scale);\n }\n }\n\n private parseJson<T>(\n propName: string,\n value: string,\n parse: (str: string) => T,\n ): T {\n try {\n return parse(value);\n } catch (e) {\n console.warn(`Could not parse \\`${propName}\\`. Invalid JSON.`);\n throw e;\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":";;;+JAAA,MAAMA,EAAsB,IAAM,4L,MC2BrBC,EAAgBC,EAAA,MAAAD,UAAAE,EAL7B,WAAAC,CAAAC,G,mOAUSC,KAAAC,SAA4BC,EAAQC,SAgBpCH,KAAAI,aAAe,GA4CfJ,KAAAK,WAAoCC,EAAWC,SAgB/CP,KAAAQ,eAAiB,GAcjBR,KAAAS,MAAyBP,EAAQK,OAAO,EAAG,EAAG,GAgB9CP,KAAAU,UAAY,GA2BZV,KAAAW,OAA0BC,EAAQC,eASlCb,KAAAc,aAAe,MAkBfd,KAAAe,SAAW,MAgBXf,KAAAgB,YAAc,KAmBdhB,KAAAiB,SAAW,MAcXjB,KAAAkB,aAAe,MAMflB,KAAAmB,gBAAkB,KA2H1B,CA5UW,oBAAAC,GACRpB,KAAKqB,Y,CAeG,yBAAAC,GACRtB,KAAKuB,c,CAaG,qBAAAC,GACRxB,KAAKyB,4B,CAeG,yBAAAC,GACR1B,KAAK2B,c,CAaG,sBAAAC,GACR5B,KAAKqB,Y,CAeG,2BAAAQ,GACR7B,KAAK8B,gB,CAaG,iBAAAC,GACR/B,KAAKqB,Y,CAeG,sBAAAW,GACRhC,KAAKiC,W,CAOG,mBAAAC,CACRC,EACAC,GAEA,IAAKC,EAAQC,QAAQH,EAAWC,GAAY,CAC1CpC,KAAKuC,eAAeC,M,EAqGd,iBAAAC,GACRzC,KAAK0C,gB,CAMG,qBAAAC,CACRC,EACAC,EACAC,GAEA,OAAOA,IAAS,U,CAOR,2BAAAC,GACR/C,KAAKgD,sBAAsBR,KAAKxC,KAAKe,S,CAO7B,0BAAAkC,GACRjD,KAAKkD,qBAAqBV,KAAKxC,KAAKiB,S,CAG9B,cAAAyB,GACN1C,KAAKuB,eACLvB,KAAK2B,eACL3B,KAAK8B,iBACL9B,KAAKiC,YACLjC,KAAKqB,Y,CAGC,YAAAE,GACNvB,KAAKC,SACHD,KAAKI,aAAa+C,OAAS,EACvBnD,KAAKoD,UAAU,eAAgBpD,KAAKI,aAAcF,EAAQmD,UAC1DrD,KAAKC,Q,CAGL,YAAA0B,GACN3B,KAAKsD,SACHtD,KAAKuD,cAAgB,MAAQvD,KAAKuD,aAAaJ,OAAS,EACpDnD,KAAKoD,UAAU,eAAgBpD,KAAKuD,aAAcC,EAAMH,UACxDrD,KAAKsD,SACXtD,KAAKyB,4B,CAGC,0BAAAA,GACNzB,KAAKK,WACHL,KAAKsD,UAAY,KACbhD,EAAWmD,UAAUzD,KAAKsD,UAC1BtD,KAAKK,U,CAGL,cAAAyB,GACN9B,KAAKK,WACHL,KAAKQ,eAAe2C,OAAS,EACzBnD,KAAKoD,UACH,iBACApD,KAAKQ,eACLF,EAAW+C,UAEbrD,KAAKK,U,CAGL,SAAA4B,GACNjC,KAAKS,MACHT,KAAKU,UAAUyC,OAAS,EACpBnD,KAAKoD,UAAU,YAAapD,KAAKU,UAAWR,EAAQmD,UACpDrD,KAAKS,K,CAGL,UAAAY,GACN,GACErB,KAAKC,UAAY,MACjBD,KAAKK,YAAc,MACnBL,KAAKS,OAAS,KACd,CACAT,KAAKW,OAASC,EAAQ8C,QAAQ1D,KAAKC,SAAUD,KAAKK,WAAYL,KAAKS,M,EAI/D,SAAA2C,CACNO,EACAC,EACAC,GAEA,IACE,OAAOA,EAAMD,E,CACb,MAAOE,GACPC,QAAQC,KAAK,qBAAqBL,sBAClC,MAAMG,C,EAOA,MAAAG,GACR,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t as e,p as i,H as t,d as s,h as n,e as o}from"./p-Bb32XUUS.js";import{d as l}from"./p-CPk-nchx.js";import"./p-B9R0QWr4.js";import{b as r}from"./p-DC86ZXai.js";import{d}from"./p-Bkm6H5uq.js";const a=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{display:flex;align-items:center;box-sizing:border-box;--scene-tree-cell-background-hover:var(--blue-200);--scene-tree-cell-background-selected:var(--blue-300);--scene-tree-cell-text-positioning:left;--scene-tree-cell-padding:0.25rem 0;font-size:var(--scene-tree-default-font-size, unset);font-family:var(--scene-tree-default-font-family, unset);color:var(--scene-tree-default-font-color, #444444)}:host([is-hovered]){background:var(--scene-tree-cell-background-hover)}:host([is-selected]){background:var(--scene-tree-cell-background-selected)}.wrapper{display:flex;align-items:center;box-sizing:border-box;width:100%;height:100%;padding:var(--scene-tree-cell-padding)}.content{width:100%;text-align:var(--scene-tree-cell-text-positioning);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.column-spacer{width:var(--scene-tree-table-column-gap)}.expand-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host([is-leaf]) .expand-btn,:host([is-end-item]) .expand-btn{visibility:hidden;cursor:default}.no-shrink{flex-shrink:0}.end-item-btn{cursor:default;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host(:not([is-end-item])) .end-item-btn{visibility:hidden;cursor:default}.end-item-icon{width:14px;height:14px;fill:var(--scene-tree-secondary-font-color, var(--neutral-600))}.visibility-btn,.isolate-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.icon{width:14px;height:14px;fill:var(--scene-tree-default-font-color, currentColor)}`;const h=i(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.expandToggled=s(this,"expandToggled");this.visibilityToggled=s(this,"visibilityToggled");this.selectionToggled=s(this,"selectionToggled");this.isolatePressed=s(this,"isolatePressed");this.cellLoaded=s(this,"cellLoaded");this.placeholder="--";this.alwaysShowIcons=false;this.hovered=false;this.displayValue=()=>{const e=this.value==null||this.value.trim()===""?this.placeholder:this.value;return e};this.handleCellPointerEnter=()=>{var e,i,t;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)};this.handleCellPointerLeave=()=>{var e;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered(undefined)};this.handleCellPointerUp=e=>{if(!this.isScrolling&&this.node!=null&&this.tree!=null&&this.longPressTimer!=null){if(this.selectionHandler!=null){this.selectionHandler(e,this.node,this.tree)}else{this.performDefaultSelectionOperation(e)}this.selectionToggled.emit({node:this.node,originalEvent:e})}this.clearLongPressTimer()};this.handleCellPointerDown=e=>{this.restartLongPressTimer()};this.createActionPointerUpHandler=e=>i=>{i.preventDefault();i.stopPropagation();r(this.hostEl);e(i)};this.toggleExpansion=async e=>{if(this.tree!=null&&this.node!=null){if(this.expansionHandler!=null){this.expansionHandler(e,this.node,this.tree)}else{await this.performDefaultExpansionOperation(this.node,this.tree)}this.expandToggled.emit({node:this.node,originalEvent:e})}};this.toggleVisibility=async e=>{if(this.tree!=null&&this.node!=null){if(this.visibilityHandler!=null){this.visibilityHandler(e,this.node,this.tree)}else{await this.performDefaultVisibilityOperation(this.node,this.tree)}this.visibilityToggled.emit({node:this.node,originalEvent:e})}};this.isolate=async e=>{if(this.tree!=null&&this.node!=null){if(this.isolateHandler!=null){this.isolateHandler(e,this.node,this.tree)}else{await this.performDefaultIsolateOperation(this.node,this.tree)}this.isolatePressed.emit({node:this.node,originalEvent:e})}};this.performDefaultSelectionOperation=e=>{var i,t,s,n,o,l;if(!e.defaultPrevented&&e.button===0){if((e.ctrlKey||e.metaKey)&&((i=this.node)===null||i===void 0?void 0:i.selected)){(t=this.tree)===null||t===void 0?void 0:t.deselectItem(this.node)}else if((s=this.node)===null||s===void 0?void 0:s.selected){(n=this.tree)===null||n===void 0?void 0:n.selectItem(this.node,{recurseParent:true})}else if(!((o=this.node)===null||o===void 0?void 0:o.selected)){(l=this.tree)===null||l===void 0?void 0:l.selectItem(this.node,{append:e.ctrlKey||e.metaKey,range:e.shiftKey})}}};this.performDefaultVisibilityOperation=async(e,i)=>{await i.toggleItemVisibility(e)};this.performDefaultIsolateOperation=async(e,i)=>{await i.isolateItem(e)};this.performDefaultExpansionOperation=async(e,i)=>{await i.toggleExpandItem(e)}}componentDidLoad(){var e;this.hoverListener=(e=this.hoverController)===null||e===void 0?void 0:e.stateChanged((e=>{var i,t;this.hovered=e===((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)}));this.cellLoaded.emit();this.clearLongPressTimer()}disconnectedCallback(){var e;(e=this.hoverListener)===null||e===void 0?void 0:e.dispose();this.clearLongPressTimer()}componentWillRender(){var e,i,t,s,n,o;this.toggleAttribute("is-hovered",this.hovered);this.toggleAttribute("is-hidden",!((e=this.node)===null||e===void 0?void 0:e.visible));this.toggleAttribute("is-selected",!!((i=this.node)===null||i===void 0?void 0:i.selected));this.toggleAttribute("is-partial",!!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible));this.toggleAttribute("is-leaf",!!((s=this.node)===null||s===void 0?void 0:s.isLeaf));this.toggleAttribute("is-end-item",!!((n=this.node)===null||n===void 0?void 0:n.endItem));this.toggleAttribute("is-filter-hit",!!((o=this.node)===null||o===void 0?void 0:o.filterHit))}render(){var e,i,t,s;const l=this.node==null?{visibility:"hidden"}:undefined;const r=this.getBackgroundColorStyle();const d=this.getEndItemIcon();const a=this.getExpansionIcon();const h=this.getIsolateIcon();const c=this.getVisibilityIcon();const v=this.expandToggle&&!d;const u=d&&!v;return n(o,{key:"703090cacf3d026e220ead0a051d70b186fa056e",onPointerEnter:this.handleCellPointerEnter,onPointerLeave:this.handleCellPointerLeave,onPointerUp:this.handleCellPointerUp,onPointerDown:this.handleCellPointerDown,style:{...l,"background-color":r}},n("div",{key:"25a45f3cebed75a1d0e469cce01e1cabec5450c4",class:"wrapper"},n("div",{key:"7ba2f3c1b9a5551287f6683f87de841f0717e87b",class:"no-shrink"},n("slot",{key:"04bd203d0e034aa4fce3a0b64d24718ab0ba50af",name:"left-gutter"})),v&&n("button",{key:"ee0ed0a97bdbac298bb1924a2501a7e1705c5875",class:"expand-btn no-shrink","data-testid":"expand-"+((e=this.node)===null||e===void 0?void 0:e.name),onPointerUp:this.createActionPointerUpHandler(this.toggleExpansion)},a&&n("vertex-viewer-icon",{key:"0138a61ceca6200060602fcf5be186d8ef5b8439",class:"icon",name:a,size:"sm"})),u&&n("button",{key:"5f1376b4e28d62273f4f53f8fd61e83400dda8cb",class:"end-item-btn no-shrink","data-testid":"end-item-"+((i=this.node)===null||i===void 0?void 0:i.name)},d&&n("vertex-viewer-icon",{key:"3760b8b0452208116b468bf662659365fa93397b",class:"end-item-icon",name:d,size:"sm"})),n("div",{key:"b6af488cac898cee62c7c68c3ef159259e2029fb",class:"content"},this.value!=null&&this.value.trim()!==""?n("slot",null,this.displayValue()):n("slot",{name:"placeholder"},this.placeholder)),this.isolateButton&&n("button",{key:"c5feec7c3665c3983ec9c3754d2b3904276694ad",class:"isolate-btn no-shrink","data-testid":"isolate-btn-"+((t=this.node)===null||t===void 0?void 0:t.name),onPointerUp:this.createActionPointerUpHandler(this.isolate)},h&&n("vertex-viewer-icon",{key:"daa2a2697cfb21fbbf9ca975374d4108d4faeabb",class:"icon",name:"locate",size:"sm"})),this.visibilityToggle&&n("button",{key:"c3a99abe103595de749195893f7af1955db7e509",class:"visibility-btn no-shrink","data-testid":"visibility-btn-"+((s=this.node)===null||s===void 0?void 0:s.name),onPointerUp:this.createActionPointerUpHandler(this.toggleVisibility)},c&&n("vertex-viewer-icon",{key:"f5cb997438de0d600447a217156748f903293432",class:"icon",name:c,size:"sm"})),n("div",{key:"39c001c9af24fa30c5c42cfa844e9beb373e2ec3",class:"no-shrink"},n("slot",{key:"d412cf2de92b427282c9575a7d0cd505f23650a5",name:"right-gutter"})),!this.visibilityToggle&&!this.isolateButton&&n("div",{key:"e5aced5b74783ab256ab057794346f3bd49050a0",class:"column-spacer"})))}toggleAttribute(e,i){if(i){this.hostEl.setAttribute(e,"")}else{this.hostEl.removeAttribute(e)}}clearLongPressTimer(){if(this.longPressTimer!=null){window.clearTimeout(this.longPressTimer)}this.longPressTimer=undefined}restartLongPressTimer(){this.clearLongPressTimer();this.longPressTimer=window.setTimeout((()=>{this.clearLongPressTimer()}),l.longPressThreshold)}getBackgroundColorStyle(){var e,i;const t=this.getCssVariableWithFallbacks(`--scene-tree-row-background-color-depth-${(e=this.node)===null||e===void 0?void 0:e.depth}`,"--scene-tree-row-background-color");const s=this.getCssVariableWithFallbacks("--scene-tree-selected-row-background-color","--scene-tree-cell-background-selected");const n=this.getCssVariableWithFallbacks("--scene-tree-hovered-row-background-color","--scene-tree-cell-background-hover");if(!!((i=this.node)===null||i===void 0?void 0:i.selected)){return s}else if(this.hovered){return n}return t}getCssVariableWithFallbacks(e,...i){const t=[...i].reverse();return[...t,e].reduce(((e,i)=>`var(${i}, ${e})`),"unset")}getIsolateIcon(){if(this.hovered||this.alwaysShowIcons){return"locate"}return undefined}getExpansionIcon(){var e,i,t;if(!((e=this.node)===null||e===void 0?void 0:e.isLeaf)&&!((i=this.node)===null||i===void 0?void 0:i.endItem)){return((t=this.node)===null||t===void 0?void 0:t.expanded)?"chevron-down":"chevron-right"}return undefined}getEndItemIcon(){var e,i,t;if(this.endItemIndicator&&((e=this.node)===null||e===void 0?void 0:e.endItem)&&(!((i=this.node)===null||i===void 0?void 0:i.isLeaf)||((t=this.node)===null||t===void 0?void 0:t.filterHit))){return"lock"}return undefined}getVisibilityIcon(){var e,i,t,s,n;if((this.hovered||this.alwaysShowIcons)&&!((e=this.node)===null||e===void 0?void 0:e.partiallyVisible)&&((i=this.node)===null||i===void 0?void 0:i.visible)){return"eye-open"}else if(!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible)&&!((s=this.node)===null||s===void 0?void 0:s.visible)){return"eye-half"}else if((n=this.node)===null||n===void 0?void 0:n.partiallyVisible){return"eye-half-dotted"}return undefined}get hostEl(){return this}static get style(){return a()}},[257,"vertex-scene-tree-table-cell",{node:[16],tree:[16],value:[1],placeholder:[1],alwaysShowIcons:[4,"always-show-icons"],hovered:[1028],isScrolling:[4,"is-scrolling"],expandToggle:[4,"expand-toggle"],endItemIndicator:[4,"end-item-indicator"],visibilityToggle:[4,"visibility-toggle"],isolateButton:[4,"isolate-button"],selectionHandler:[16],visibilityHandler:[16],expansionHandler:[16],isolateHandler:[16],hoverController:[16]}]);function c(){if(typeof customElements==="undefined"){return}const i=["vertex-scene-tree-table-cell","vertex-viewer-icon"];i.forEach((i=>{switch(i){case"vertex-scene-tree-table-cell":if(!customElements.get(e(i))){customElements.define(e(i),h)}break;case"vertex-viewer-icon":if(!customElements.get(e(i))){d()}break}}))}c();const v=h;const u=c;export{v as VertexSceneTreeTableCell,u as defineCustomElement};
4
+ import{t as e,p as i,H as t,d as s,h as n,e as o}from"./p-Bb32XUUS.js";import{d as l}from"./p-CPk-nchx.js";import"./p-B9R0QWr4.js";import{b as d}from"./p-DC86ZXai.js";import{d as r}from"./p-Bkm6H5uq.js";const a=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{display:flex;align-items:center;box-sizing:border-box;--scene-tree-cell-background-hover:var(--blue-200);--scene-tree-cell-background-selected:var(--blue-300);--scene-tree-cell-text-positioning:left;--scene-tree-cell-padding:0.25rem 0;font-size:var(--scene-tree-default-font-size, unset);font-family:var(--scene-tree-default-font-family, unset);color:var(--scene-tree-default-font-color, #444444)}:host([is-hovered]){background:var(--scene-tree-cell-background-hover)}:host([is-selected]){background:var(--scene-tree-cell-background-selected)}.wrapper{display:flex;align-items:center;box-sizing:border-box;width:100%;height:100%;padding:var(--scene-tree-cell-padding)}.content{width:100%;text-align:var(--scene-tree-cell-text-positioning);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.column-spacer{width:var(--scene-tree-table-column-gap)}.expand-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host([is-leaf]) .expand-btn,:host([is-end-item]) .expand-btn{visibility:hidden;cursor:default}.no-shrink{flex-shrink:0}.end-item-btn{cursor:default;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host(:not([is-end-item])) .end-item-btn{visibility:hidden;cursor:default}.end-item-icon{width:14px;height:14px;fill:var(--scene-tree-secondary-font-color, var(--neutral-600))}.visibility-btn,.isolate-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.icon{width:14px;height:14px;fill:var(--scene-tree-default-font-color, currentColor)}`;const h=i(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.expandToggled=s(this,"expandToggled");this.visibilityToggled=s(this,"visibilityToggled");this.selectionToggled=s(this,"selectionToggled");this.isolatePressed=s(this,"isolatePressed");this.cellLoaded=s(this,"cellLoaded");this.placeholder="--";this.alwaysShowIcons=false;this.hovered=false;this.displayValue=()=>{const e=this.value==null||this.value.trim()===""?this.placeholder:this.value;return e};this.handleCellPointerEnter=()=>{var e,i,t;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)};this.handleCellPointerLeave=()=>{var e;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered(undefined)};this.handleCellPointerUp=e=>{if(!this.isScrolling&&this.node!=null&&this.tree!=null&&this.longPressTimer!=null){if(this.selectionHandler!=null){this.selectionHandler(e,this.node,this.tree)}else{this.performDefaultSelectionOperation(e)}this.selectionToggled.emit({node:this.node,originalEvent:e})}this.clearLongPressTimer()};this.handleCellPointerDown=e=>{this.restartLongPressTimer()};this.createActionPointerUpHandler=e=>i=>{i.preventDefault();i.stopPropagation();d(this.hostEl);e(i)};this.toggleExpansion=async e=>{if(this.tree!=null&&this.node!=null){if(this.expansionHandler!=null){this.expansionHandler(e,this.node,this.tree)}else{await this.performDefaultExpansionOperation(this.node,this.tree)}this.expandToggled.emit({node:this.node,originalEvent:e})}};this.toggleVisibility=async e=>{if(this.tree!=null&&this.node!=null){if(this.visibilityHandler!=null){this.visibilityHandler(e,this.node,this.tree)}else{await this.performDefaultVisibilityOperation(this.node,this.tree)}this.visibilityToggled.emit({node:this.node,originalEvent:e})}};this.isolate=async e=>{if(this.tree!=null&&this.node!=null){if(this.isolateHandler!=null){this.isolateHandler(e,this.node,this.tree)}else{await this.performDefaultIsolateOperation(this.node,this.tree)}this.isolatePressed.emit({node:this.node,originalEvent:e})}};this.performDefaultSelectionOperation=e=>{var i,t,s,n,o,l;if(!e.defaultPrevented&&e.button===0){if((e.ctrlKey||e.metaKey)&&((i=this.node)===null||i===void 0?void 0:i.selected)){(t=this.tree)===null||t===void 0?void 0:t.deselectItem(this.node)}else if((s=this.node)===null||s===void 0?void 0:s.selected){(n=this.tree)===null||n===void 0?void 0:n.selectItem(this.node,{recurseParent:true})}else if(!((o=this.node)===null||o===void 0?void 0:o.selected)){(l=this.tree)===null||l===void 0?void 0:l.selectItem(this.node,{append:e.ctrlKey||e.metaKey,range:e.shiftKey})}}};this.performDefaultVisibilityOperation=async(e,i)=>{await i.toggleItemVisibility(e)};this.performDefaultIsolateOperation=async(e,i)=>{await i.isolateItem(e)};this.performDefaultExpansionOperation=async(e,i)=>{await i.toggleExpandItem(e)}}componentDidLoad(){var e;this.hoverListener=(e=this.hoverController)===null||e===void 0?void 0:e.stateChanged((e=>{var i,t;this.hovered=e===((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)}));this.cellLoaded.emit();this.clearLongPressTimer()}disconnectedCallback(){var e;(e=this.hoverListener)===null||e===void 0?void 0:e.dispose();this.clearLongPressTimer()}componentWillRender(){var e,i,t,s,n,o;this.toggleAttribute("is-hovered",this.hovered);this.toggleAttribute("is-hidden",!((e=this.node)===null||e===void 0?void 0:e.visible));this.toggleAttribute("is-selected",!!((i=this.node)===null||i===void 0?void 0:i.selected));this.toggleAttribute("is-partial",!!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible));this.toggleAttribute("is-leaf",!!((s=this.node)===null||s===void 0?void 0:s.isLeaf));this.toggleAttribute("is-end-item",!!((n=this.node)===null||n===void 0?void 0:n.endItem));this.toggleAttribute("is-filter-hit",!!((o=this.node)===null||o===void 0?void 0:o.filterHit))}render(){var e,i,t,s;const l=this.node==null?{visibility:"hidden"}:undefined;const d=this.getBackgroundColorStyle();const r=this.getEndItemIcon();const a=this.getExpansionIcon();const h=this.getIsolateIcon();const c=this.getVisibilityIcon();const v=this.expandToggle&&!r;const u=r&&!v;return n(o,{key:"703090cacf3d026e220ead0a051d70b186fa056e",onPointerEnter:this.handleCellPointerEnter,onPointerLeave:this.handleCellPointerLeave,onPointerUp:this.handleCellPointerUp,onPointerDown:this.handleCellPointerDown,style:{...l,"background-color":d}},n("div",{key:"25a45f3cebed75a1d0e469cce01e1cabec5450c4",class:"wrapper"},n("div",{key:"7ba2f3c1b9a5551287f6683f87de841f0717e87b",class:"no-shrink"},n("slot",{key:"04bd203d0e034aa4fce3a0b64d24718ab0ba50af",name:"left-gutter"})),v&&n("button",{key:"9dfa16123e24eeb90e208aa0d5936b9bacd9d8f4",class:"expand-btn no-shrink","data-testid":"expand-"+((e=this.node)===null||e===void 0?void 0:e.name),onPointerUp:this.createActionPointerUpHandler(this.toggleExpansion)},a&&n("vertex-viewer-icon",{key:"dd3c2a86b90d627b3234b76075dafef393418945",class:"icon",name:a,size:"sm"})),u&&n("button",{key:"d486186bcae525c9b520cc0cd07848389f9ffd87",class:"end-item-btn no-shrink","data-testid":"end-item-"+((i=this.node)===null||i===void 0?void 0:i.name)},r&&n("vertex-viewer-icon",{key:"70449bce2c41f6d07bd316a6f607b17c2484d4a0",class:"end-item-icon",name:r,size:"sm"})),n("div",{key:"a693f0db50d607f4f8c427f86ce99a6813b2d691",class:"content"},this.value!=null&&this.value.trim()!==""?n("slot",null,this.displayValue()):n("slot",{name:"placeholder"},this.placeholder)),this.isolateButton&&n("button",{key:"6d981678a7307f45e7f4636085676bd091187de4",class:"isolate-btn no-shrink","data-testid":"isolate-btn-"+((t=this.node)===null||t===void 0?void 0:t.name),onPointerUp:this.createActionPointerUpHandler(this.isolate)},h&&n("vertex-viewer-icon",{key:"9fee42c3d4a82445781fc99c31c5980778d94440",class:"icon",name:"locate",size:"sm"})),this.visibilityToggle&&n("button",{key:"ae999f4eadf1214f9583a503ccc49cfceee60e44",class:"visibility-btn no-shrink","data-testid":"visibility-btn-"+((s=this.node)===null||s===void 0?void 0:s.name),onPointerUp:this.createActionPointerUpHandler(this.toggleVisibility)},c&&n("vertex-viewer-icon",{key:"af24355ad0af2b8cb4fe66a5d25f9bf85796e460",class:"icon",name:c,size:"sm"})),n("div",{key:"1000b80cc334bc103563af29aea0a0629d3229c3",class:"no-shrink"},n("slot",{key:"788690a3c64964d744d8effc3898fefb19d1ae5a",name:"right-gutter"})),!this.visibilityToggle&&!this.isolateButton&&n("div",{key:"6012bc2d3b2fef8533597d92233db11b6b5982a1",class:"column-spacer"})))}toggleAttribute(e,i){if(i){this.hostEl.setAttribute(e,"")}else{this.hostEl.removeAttribute(e)}}clearLongPressTimer(){if(this.longPressTimer!=null){window.clearTimeout(this.longPressTimer)}this.longPressTimer=undefined}restartLongPressTimer(){this.clearLongPressTimer();this.longPressTimer=window.setTimeout((()=>{this.clearLongPressTimer()}),l.longPressThreshold)}getBackgroundColorStyle(){var e,i;const t=this.getCssVariableWithFallbacks(`--scene-tree-row-background-color-depth-${(e=this.node)===null||e===void 0?void 0:e.depth}`,"--scene-tree-row-background-color");const s=this.getCssVariableWithFallbacks("--scene-tree-selected-row-background-color","--scene-tree-cell-background-selected");const n=this.getCssVariableWithFallbacks("--scene-tree-hovered-row-background-color","--scene-tree-cell-background-hover");if(!!((i=this.node)===null||i===void 0?void 0:i.selected)){return s}else if(this.hovered){return n}return t}getCssVariableWithFallbacks(e,...i){const t=[...i].reverse();return[...t,e].reduce(((e,i)=>`var(${i}, ${e})`),"unset")}getIsolateIcon(){if(this.hovered||this.alwaysShowIcons){return"locate"}return undefined}getExpansionIcon(){var e,i,t;if(!((e=this.node)===null||e===void 0?void 0:e.isLeaf)&&!((i=this.node)===null||i===void 0?void 0:i.endItem)){return((t=this.node)===null||t===void 0?void 0:t.expanded)?"chevron-down":"chevron-right"}return undefined}getEndItemIcon(){var e,i,t;if(this.endItemIndicator&&((e=this.node)===null||e===void 0?void 0:e.endItem)&&(!((i=this.node)===null||i===void 0?void 0:i.isLeaf)||((t=this.node)===null||t===void 0?void 0:t.filterHit))){return"lock"}return undefined}getVisibilityIcon(){var e,i,t,s,n;if((this.hovered||this.alwaysShowIcons)&&!((e=this.node)===null||e===void 0?void 0:e.partiallyVisible)&&((i=this.node)===null||i===void 0?void 0:i.visible)){return"eye-open"}else if(!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible)&&!((s=this.node)===null||s===void 0?void 0:s.visible)){return"eye-half"}else if((n=this.node)===null||n===void 0?void 0:n.partiallyVisible){return"eye-half-dotted"}return undefined}get hostEl(){return this}static get style(){return a()}},[257,"vertex-scene-tree-table-cell",{node:[16],tree:[16],value:[1],placeholder:[1],alwaysShowIcons:[4,"always-show-icons"],hovered:[1028],isScrolling:[4,"is-scrolling"],expandToggle:[4,"expand-toggle"],endItemIndicator:[4,"end-item-indicator"],visibilityToggle:[4,"visibility-toggle"],isolateButton:[4,"isolate-button"],selectionHandler:[16],visibilityHandler:[16],expansionHandler:[16],isolateHandler:[16],hoverController:[16]}]);function c(){if(typeof customElements==="undefined"){return}const i=["vertex-scene-tree-table-cell","vertex-viewer-icon"];i.forEach((i=>{switch(i){case"vertex-scene-tree-table-cell":if(!customElements.get(e(i))){customElements.define(e(i),h)}break;case"vertex-viewer-icon":if(!customElements.get(e(i))){r()}break}}))}c();const v=h;const u=c;export{v as VertexSceneTreeTableCell,u as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-scene-tree-table-cell.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["sceneTreeTableCellCss","SceneTreeTableCell","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","placeholder","alwaysShowIcons","hovered","displayValue","resp","value","trim","handleCellPointerEnter","_a","hoverController","setHovered","_c","_b","node","id","hex","handleCellPointerLeave","undefined","handleCellPointerUp","event","isScrolling","tree","longPressTimer","selectionHandler","performDefaultSelectionOperation","selectionToggled","emit","originalEvent","clearLongPressTimer","handleCellPointerDown","restartLongPressTimer","createActionPointerUpHandler","action","preventDefault","stopPropagation","blurElement","hostEl","toggleExpansion","async","expansionHandler","performDefaultExpansionOperation","expandToggled","toggleVisibility","visibilityHandler","performDefaultVisibilityOperation","visibilityToggled","isolate","isolateHandler","performDefaultIsolateOperation","isolatePressed","defaultPrevented","button","ctrlKey","metaKey","selected","deselectItem","_d","selectItem","recurseParent","_e","_f","append","range","shiftKey","toggleItemVisibility","isolateItem","toggleExpandItem","componentDidLoad","hoverListener","stateChanged","cellLoaded","disconnectedCallback","dispose","componentWillRender","toggleAttribute","visible","partiallyVisible","isLeaf","endItem","filterHit","render","hiddenStyle","visibility","backgroundColorStyle","getBackgroundColorStyle","endItemIcon","getEndItemIcon","expansionIcon","getExpansionIcon","isolateIcon","getIsolateIcon","visibilityIcon","getVisibilityIcon","showSpaceForExpansionIcon","expandToggle","showSpaceForEndItemIcon","h","Host","key","onPointerEnter","onPointerLeave","onPointerUp","onPointerDown","style","class","name","size","isolateButton","visibilityToggle","attr","setAttribute","removeAttribute","window","clearTimeout","setTimeout","Events.defaultEventConfig","longPressThreshold","getCssVariableWithFallbacks","depth","selectedBackgroundColorStyle","hoveredBackgroundColorStyle","variable","fallbacks","sequencedFallbacks","reverse","reduce","res","s","expanded","endItemIndicator"],"sources":["src/components/scene-tree-table-cell/scene-tree-table-cell.css?tag=vertex-scene-tree-table-cell&encapsulation=shadow","src/components/scene-tree-table-cell/scene-tree-table-cell.tsx"],"sourcesContent":["@import url('../../css/button-reset.css');\n\n:host {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n\n /**\n * @prop --scene-tree-cell-background-hover: A CSS background of a cell when\n * hovered.\n */\n --scene-tree-cell-background-hover: var(--blue-200);\n\n /**\n * @prop --scene-tree-cell-background-selected: A CSS background color of a\n * cell when selected.\n */\n --scene-tree-cell-background-selected: var(--blue-300);\n\n /**\n * @prop --scene-tree-cell-text-positioning: A CSS text alignment\n * value that indicates how text should be positioned.\n */\n --scene-tree-cell-text-positioning: left;\n\n /**\n * @prop --scene-tree-cell-padding: CSS lengths that specifies the amount of\n * padding between the cell's border and content.\n */\n --scene-tree-cell-padding: 0.25rem 0;\n\n font-size: var(--scene-tree-default-font-size, unset);\n font-family: var(--scene-tree-default-font-family, unset);\n color: var(--scene-tree-default-font-color, #444444);\n}\n\n:host([is-hovered]) {\n background: var(--scene-tree-cell-background-hover);\n}\n\n:host([is-selected]) {\n background: var(--scene-tree-cell-background-selected);\n}\n\n.wrapper {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: var(--scene-tree-cell-padding);\n}\n\n.content {\n width: 100%;\n text-align: var(--scene-tree-cell-text-positioning);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.column-spacer {\n width: var(--scene-tree-table-column-gap);\n}\n\n.expand-btn {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n min-height: 24px;\n}\n\n:host([is-leaf]) .expand-btn,\n:host([is-end-item]) .expand-btn {\n visibility: hidden;\n cursor: default;\n}\n\n.no-shrink {\n flex-shrink: 0;\n}\n\n.end-item-btn {\n cursor: default;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n min-height: 24px;\n}\n\n:host(:not([is-end-item])) .end-item-btn {\n visibility: hidden;\n cursor: default;\n}\n\n.end-item-icon {\n width: 14px;\n height: 14px;\n fill: var(--scene-tree-secondary-font-color, var(--neutral-600));\n}\n\n.visibility-btn,\n.isolate-btn {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n}\n\n.icon {\n width: 14px;\n height: 14px;\n fill: var(--scene-tree-default-font-color, currentColor);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n} from '@stencil/core';\nimport { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Events } from '../../lib/types';\nimport { SceneTreeOperationHandler } from '../scene-tree/lib/handlers';\nimport { SceneTreeCellHoverController } from '../scene-tree-table-layout/lib/hover-controller';\nimport { ViewerIconName } from '../viewer-icon/viewer-icon';\nimport { blurElement } from './utils';\n\nexport interface SceneTreeTableCellEventDetails {\n node?: Node.AsObject;\n originalEvent: PointerEvent;\n}\n\n@Component({\n tag: 'vertex-scene-tree-table-cell',\n styleUrl: 'scene-tree-table-cell.css',\n shadow: true,\n})\nexport class SceneTreeTableCell {\n /**\n * The node data that is associated to the row that this cell belongs to.\n * Contains information related to if the node is expanded, visible, etc.\n */\n @Prop()\n public node?: Node.AsObject;\n\n /**\n * A reference to the scene tree to perform operations for interactions. Such\n * as expansion, visibility and selection.\n */\n @Prop()\n public tree?: HTMLVertexSceneTreeElement;\n\n /**\n * The value to display in this cell.\n */\n @Prop()\n public value?: string;\n\n /**\n * The value to display in this cell if the `value` specified is\n * undefined. Defaults to \"--\".\n */\n @Prop()\n public placeholder = '--';\n\n /**\n * Whether to always show the requested icons in the cell. If false,\n * the icons will only appear when hovering over the cell.\n */\n @Prop()\n public alwaysShowIcons = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public hovered = false;\n\n /**\n * @internal\n */\n @Prop()\n public isScrolling?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the expanded state of\n * the node associated with this cell.\n */\n @Prop()\n public expandToggle?: boolean;\n\n /**\n * Indicates whether to display an indicator that the node associated with\n * this cell is an end item.\n */\n @Prop()\n public endItemIndicator?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the visibility state of\n * the node associated with this cell.\n */\n @Prop()\n public visibilityToggle?: boolean;\n\n /**\n * Indicates whether to display a button for isolating (show only + fly to)\n * the node associated with this cell.\n */\n @Prop()\n public isolateButton?: boolean;\n\n /**\n * An optional handler that will override this cell's default selection\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public selectionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default visibility\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public visibilityHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default expansion\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public expansionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default isolate\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public isolateHandler?: SceneTreeOperationHandler;\n\n /**\n * @internal\n */\n @Prop()\n public hoverController?: SceneTreeCellHoverController;\n\n /**\n * An event that is emitted when a user requests to expand the node. This is\n * emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public expandToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's\n * visibility. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public visibilityToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's selection\n * state. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public selectionToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to isolate the node.\n * This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public isolatePressed!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * Used for internals or testing.\n *\n * @private\n */\n @Event({ bubbles: true })\n public cellLoaded!: EventEmitter<void>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n private hoverListener?: Disposable;\n\n private longPressTimer?: number;\n\n public componentDidLoad(): void {\n this.hoverListener = this.hoverController?.stateChanged((id?: string) => {\n this.hovered = id === this.node?.id?.hex;\n });\n\n this.cellLoaded.emit();\n this.clearLongPressTimer();\n }\n\n public disconnectedCallback(): void {\n this.hoverListener?.dispose();\n this.clearLongPressTimer();\n }\n\n public componentWillRender(): void {\n this.toggleAttribute('is-hovered', this.hovered);\n this.toggleAttribute('is-hidden', !this.node?.visible);\n this.toggleAttribute('is-selected', !!this.node?.selected);\n this.toggleAttribute('is-partial', !!this.node?.partiallyVisible);\n this.toggleAttribute('is-leaf', !!this.node?.isLeaf);\n this.toggleAttribute('is-end-item', !!this.node?.endItem);\n this.toggleAttribute('is-filter-hit', !!this.node?.filterHit);\n }\n\n public render(): h.JSX.IntrinsicElements {\n // Overrides the `.hydrated` visibility when we have nothing to display\n const hiddenStyle =\n this.node == null ? { visibility: 'hidden' } : undefined;\n const backgroundColorStyle = this.getBackgroundColorStyle();\n\n const endItemIcon = this.getEndItemIcon();\n const expansionIcon = this.getExpansionIcon();\n const isolateIcon = this.getIsolateIcon();\n const visibilityIcon = this.getVisibilityIcon();\n\n const showSpaceForExpansionIcon = this.expandToggle && !endItemIcon;\n const showSpaceForEndItemIcon = endItemIcon && !showSpaceForExpansionIcon;\n\n return (\n <Host\n onPointerEnter={this.handleCellPointerEnter}\n onPointerLeave={this.handleCellPointerLeave}\n onPointerUp={this.handleCellPointerUp}\n onPointerDown={this.handleCellPointerDown}\n style={{\n ...hiddenStyle,\n 'background-color': backgroundColorStyle,\n }}\n >\n <div class=\"wrapper\">\n <div class=\"no-shrink\">\n <slot name=\"left-gutter\" />\n </div>\n {showSpaceForExpansionIcon && (\n <button\n class=\"expand-btn no-shrink\"\n data-testid={'expand-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleExpansion\n )}\n >\n {expansionIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={expansionIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n {showSpaceForEndItemIcon && (\n <button\n class=\"end-item-btn no-shrink\"\n data-testid={'end-item-' + this.node?.name}\n >\n {endItemIcon && (\n <vertex-viewer-icon\n class=\"end-item-icon\"\n name={endItemIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n <div class=\"content\">\n {this.value != null && this.value.trim() !== '' ? (\n <slot>{this.displayValue()}</slot>\n ) : (\n <slot name=\"placeholder\">{this.placeholder}</slot>\n )}\n </div>\n {this.isolateButton && (\n <button\n class=\"isolate-btn no-shrink\"\n data-testid={'isolate-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(this.isolate)}\n >\n {isolateIcon && (\n <vertex-viewer-icon class=\"icon\" name=\"locate\" size=\"sm\" />\n )}\n </button>\n )}\n {this.visibilityToggle && (\n <button\n class=\"visibility-btn no-shrink\"\n data-testid={'visibility-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleVisibility\n )}\n >\n {visibilityIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={visibilityIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n <div class=\"no-shrink\">\n <slot name=\"right-gutter\" />\n </div>\n {!this.visibilityToggle && !this.isolateButton && (\n <div class=\"column-spacer\" />\n )}\n </div>\n </Host>\n );\n }\n\n private displayValue = (): string => {\n const resp =\n this.value == null || this.value.trim() === ''\n ? this.placeholder\n : this.value;\n\n return resp;\n };\n\n private handleCellPointerEnter = (): void => {\n this.hoverController?.setHovered(this.node?.id?.hex);\n };\n\n private handleCellPointerLeave = (): void => {\n this.hoverController?.setHovered(undefined);\n };\n\n private handleCellPointerUp = (event: PointerEvent): void => {\n if (\n !this.isScrolling &&\n this.node != null &&\n this.tree != null &&\n this.longPressTimer != null\n ) {\n if (this.selectionHandler != null) {\n this.selectionHandler(event, this.node, this.tree);\n } else {\n this.performDefaultSelectionOperation(event);\n }\n this.selectionToggled.emit({ node: this.node, originalEvent: event });\n }\n this.clearLongPressTimer();\n };\n\n private handleCellPointerDown = (event: PointerEvent): void => {\n this.restartLongPressTimer();\n };\n\n private createActionPointerUpHandler = (\n action: (event: PointerEvent) => void\n ): ((event: PointerEvent) => void) => {\n return (event) => {\n // Blur the `hostEl` after a `preventDefault` to clear focus that\n // is left on the element after `pointerdown` event.\n event.preventDefault();\n event.stopPropagation();\n blurElement(this.hostEl);\n\n action(event);\n };\n };\n\n private toggleExpansion = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.expansionHandler != null) {\n this.expansionHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultExpansionOperation(this.node, this.tree);\n }\n this.expandToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleVisibility = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.visibilityHandler != null) {\n this.visibilityHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultVisibilityOperation(this.node, this.tree);\n }\n this.visibilityToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleAttribute(attr: string, value: boolean): void {\n if (value) {\n this.hostEl.setAttribute(attr, '');\n } else {\n this.hostEl.removeAttribute(attr);\n }\n }\n\n private isolate = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.isolateHandler != null) {\n this.isolateHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultIsolateOperation(this.node, this.tree);\n }\n this.isolatePressed.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private performDefaultSelectionOperation = (event: PointerEvent): void => {\n if (!event.defaultPrevented && event.button === 0) {\n if ((event.ctrlKey || event.metaKey) && this.node?.selected) {\n this.tree?.deselectItem(this.node);\n } else if (this.node?.selected) {\n this.tree?.selectItem(this.node, {\n recurseParent: true,\n });\n } else if (!this.node?.selected) {\n this.tree?.selectItem(this.node, {\n append: event.ctrlKey || event.metaKey,\n range: event.shiftKey,\n });\n }\n }\n };\n\n private performDefaultVisibilityOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement\n ): Promise<void> => {\n await tree.toggleItemVisibility(node);\n };\n\n private performDefaultIsolateOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement\n ): Promise<void> => {\n await tree.isolateItem(node);\n };\n\n private performDefaultExpansionOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement\n ): Promise<void> => {\n await tree.toggleExpandItem(node);\n };\n\n private clearLongPressTimer(): void {\n if (this.longPressTimer != null) {\n window.clearTimeout(this.longPressTimer);\n }\n this.longPressTimer = undefined;\n }\n\n private restartLongPressTimer(): void {\n this.clearLongPressTimer();\n this.longPressTimer = window.setTimeout(() => {\n this.clearLongPressTimer();\n }, Events.defaultEventConfig.longPressThreshold);\n }\n\n private getBackgroundColorStyle(): string {\n const backgroundColorStyle = this.getCssVariableWithFallbacks(\n `--scene-tree-row-background-color-depth-${this.node?.depth}`,\n '--scene-tree-row-background-color'\n );\n const selectedBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-selected-row-background-color',\n '--scene-tree-cell-background-selected'\n );\n const hoveredBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-hovered-row-background-color',\n '--scene-tree-cell-background-hover'\n );\n\n if (!!this.node?.selected) {\n return selectedBackgroundColorStyle;\n } else if (this.hovered) {\n return hoveredBackgroundColorStyle;\n }\n return backgroundColorStyle;\n }\n\n private getCssVariableWithFallbacks(\n variable: string,\n ...fallbacks: string[]\n ): string {\n const sequencedFallbacks = [...fallbacks].reverse();\n\n return [...sequencedFallbacks, variable].reduce(\n (res, s) => `var(${s}, ${res})`,\n 'unset'\n );\n }\n\n private getIsolateIcon(): ViewerIconName | undefined {\n if (this.hovered || this.alwaysShowIcons) {\n return 'locate';\n }\n return undefined;\n }\n\n private getExpansionIcon(): ViewerIconName | undefined {\n if (!this.node?.isLeaf && !this.node?.endItem) {\n return this.node?.expanded ? 'chevron-down' : 'chevron-right';\n }\n return undefined;\n }\n\n private getEndItemIcon(): ViewerIconName | undefined {\n // Return the end item icon for an item if it is set as an end item and either is not a leaf item\n // or matches the filter. Note that in the filtered view, an end item matching the filter will always be\n // marked as a leaf node because its children will be excluded from the search results and therefore\n // not present in the filtered tree.\n if (\n this.endItemIndicator &&\n this.node?.endItem &&\n (!this.node?.isLeaf || this.node?.filterHit)\n ) {\n return 'lock';\n }\n return undefined;\n }\n\n private getVisibilityIcon(): ViewerIconName | undefined {\n if (\n (this.hovered || this.alwaysShowIcons) &&\n !this.node?.partiallyVisible &&\n this.node?.visible\n ) {\n return 'eye-open';\n } else if (!this.node?.partiallyVisible && !this.node?.visible) {\n return 'eye-half';\n } else if (this.node?.partiallyVisible) {\n return 'eye-half-dotted';\n }\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["sceneTreeTableCellCss","SceneTreeTableCell","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","placeholder","alwaysShowIcons","hovered","displayValue","resp","value","trim","handleCellPointerEnter","_a","hoverController","setHovered","_c","_b","node","id","hex","handleCellPointerLeave","undefined","handleCellPointerUp","event","isScrolling","tree","longPressTimer","selectionHandler","performDefaultSelectionOperation","selectionToggled","emit","originalEvent","clearLongPressTimer","handleCellPointerDown","restartLongPressTimer","createActionPointerUpHandler","action","preventDefault","stopPropagation","blurElement","hostEl","toggleExpansion","async","expansionHandler","performDefaultExpansionOperation","expandToggled","toggleVisibility","visibilityHandler","performDefaultVisibilityOperation","visibilityToggled","isolate","isolateHandler","performDefaultIsolateOperation","isolatePressed","defaultPrevented","button","ctrlKey","metaKey","selected","deselectItem","_d","selectItem","recurseParent","_e","_f","append","range","shiftKey","toggleItemVisibility","isolateItem","toggleExpandItem","componentDidLoad","hoverListener","stateChanged","cellLoaded","disconnectedCallback","dispose","componentWillRender","toggleAttribute","visible","partiallyVisible","isLeaf","endItem","filterHit","render","hiddenStyle","visibility","backgroundColorStyle","getBackgroundColorStyle","endItemIcon","getEndItemIcon","expansionIcon","getExpansionIcon","isolateIcon","getIsolateIcon","visibilityIcon","getVisibilityIcon","showSpaceForExpansionIcon","expandToggle","showSpaceForEndItemIcon","h","Host","key","onPointerEnter","onPointerLeave","onPointerUp","onPointerDown","style","class","name","size","isolateButton","visibilityToggle","attr","setAttribute","removeAttribute","window","clearTimeout","setTimeout","Events.defaultEventConfig","longPressThreshold","getCssVariableWithFallbacks","depth","selectedBackgroundColorStyle","hoveredBackgroundColorStyle","variable","fallbacks","sequencedFallbacks","reverse","reduce","res","s","expanded","endItemIndicator"],"sources":["src/components/scene-tree-table-cell/scene-tree-table-cell.css?tag=vertex-scene-tree-table-cell&encapsulation=shadow","src/components/scene-tree-table-cell/scene-tree-table-cell.tsx"],"sourcesContent":["@import url('../../css/button-reset.css');\n\n:host {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n\n /**\n * @prop --scene-tree-cell-background-hover: A CSS background of a cell when\n * hovered.\n */\n --scene-tree-cell-background-hover: var(--blue-200);\n\n /**\n * @prop --scene-tree-cell-background-selected: A CSS background color of a\n * cell when selected.\n */\n --scene-tree-cell-background-selected: var(--blue-300);\n\n /**\n * @prop --scene-tree-cell-text-positioning: A CSS text alignment\n * value that indicates how text should be positioned.\n */\n --scene-tree-cell-text-positioning: left;\n\n /**\n * @prop --scene-tree-cell-padding: CSS lengths that specifies the amount of\n * padding between the cell's border and content.\n */\n --scene-tree-cell-padding: 0.25rem 0;\n\n font-size: var(--scene-tree-default-font-size, unset);\n font-family: var(--scene-tree-default-font-family, unset);\n color: var(--scene-tree-default-font-color, #444444);\n}\n\n:host([is-hovered]) {\n background: var(--scene-tree-cell-background-hover);\n}\n\n:host([is-selected]) {\n background: var(--scene-tree-cell-background-selected);\n}\n\n.wrapper {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: var(--scene-tree-cell-padding);\n}\n\n.content {\n width: 100%;\n text-align: var(--scene-tree-cell-text-positioning);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.column-spacer {\n width: var(--scene-tree-table-column-gap);\n}\n\n.expand-btn {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n min-height: 24px;\n}\n\n:host([is-leaf]) .expand-btn,\n:host([is-end-item]) .expand-btn {\n visibility: hidden;\n cursor: default;\n}\n\n.no-shrink {\n flex-shrink: 0;\n}\n\n.end-item-btn {\n cursor: default;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n min-height: 24px;\n}\n\n:host(:not([is-end-item])) .end-item-btn {\n visibility: hidden;\n cursor: default;\n}\n\n.end-item-icon {\n width: 14px;\n height: 14px;\n fill: var(--scene-tree-secondary-font-color, var(--neutral-600));\n}\n\n.visibility-btn,\n.isolate-btn {\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n}\n\n.icon {\n width: 14px;\n height: 14px;\n fill: var(--scene-tree-default-font-color, currentColor);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n} from '@stencil/core';\nimport { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Events } from '../../lib/types';\nimport { SceneTreeOperationHandler } from '../scene-tree/lib/handlers';\nimport { SceneTreeCellHoverController } from '../scene-tree-table-layout/lib/hover-controller';\nimport { ViewerIconName } from '../viewer-icon/viewer-icon';\nimport { blurElement } from './utils';\n\nexport interface SceneTreeTableCellEventDetails {\n node?: Node.AsObject;\n originalEvent: PointerEvent;\n}\n\n@Component({\n tag: 'vertex-scene-tree-table-cell',\n styleUrl: 'scene-tree-table-cell.css',\n shadow: true,\n})\nexport class SceneTreeTableCell {\n /**\n * The node data that is associated to the row that this cell belongs to.\n * Contains information related to if the node is expanded, visible, etc.\n */\n @Prop()\n public node?: Node.AsObject;\n\n /**\n * A reference to the scene tree to perform operations for interactions. Such\n * as expansion, visibility and selection.\n */\n @Prop()\n public tree?: HTMLVertexSceneTreeElement;\n\n /**\n * The value to display in this cell.\n */\n @Prop()\n public value?: string;\n\n /**\n * The value to display in this cell if the `value` specified is\n * undefined. Defaults to \"--\".\n */\n @Prop()\n public placeholder = '--';\n\n /**\n * Whether to always show the requested icons in the cell. If false,\n * the icons will only appear when hovering over the cell.\n */\n @Prop()\n public alwaysShowIcons = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public hovered = false;\n\n /**\n * @internal\n */\n @Prop()\n public isScrolling?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the expanded state of\n * the node associated with this cell.\n */\n @Prop()\n public expandToggle?: boolean;\n\n /**\n * Indicates whether to display an indicator that the node associated with\n * this cell is an end item.\n */\n @Prop()\n public endItemIndicator?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the visibility state of\n * the node associated with this cell.\n */\n @Prop()\n public visibilityToggle?: boolean;\n\n /**\n * Indicates whether to display a button for isolating (show only + fly to)\n * the node associated with this cell.\n */\n @Prop()\n public isolateButton?: boolean;\n\n /**\n * An optional handler that will override this cell's default selection\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public selectionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default visibility\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public visibilityHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default expansion\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public expansionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default isolate\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public isolateHandler?: SceneTreeOperationHandler;\n\n /**\n * @internal\n */\n @Prop()\n public hoverController?: SceneTreeCellHoverController;\n\n /**\n * An event that is emitted when a user requests to expand the node. This is\n * emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public expandToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's\n * visibility. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public visibilityToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's selection\n * state. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public selectionToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to isolate the node.\n * This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public isolatePressed!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * Used for internals or testing.\n *\n * @private\n */\n @Event({ bubbles: true })\n public cellLoaded!: EventEmitter<void>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n private hoverListener?: Disposable;\n\n private longPressTimer?: number;\n\n public componentDidLoad(): void {\n this.hoverListener = this.hoverController?.stateChanged((id?: string) => {\n this.hovered = id === this.node?.id?.hex;\n });\n\n this.cellLoaded.emit();\n this.clearLongPressTimer();\n }\n\n public disconnectedCallback(): void {\n this.hoverListener?.dispose();\n this.clearLongPressTimer();\n }\n\n public componentWillRender(): void {\n this.toggleAttribute('is-hovered', this.hovered);\n this.toggleAttribute('is-hidden', !this.node?.visible);\n this.toggleAttribute('is-selected', !!this.node?.selected);\n this.toggleAttribute('is-partial', !!this.node?.partiallyVisible);\n this.toggleAttribute('is-leaf', !!this.node?.isLeaf);\n this.toggleAttribute('is-end-item', !!this.node?.endItem);\n this.toggleAttribute('is-filter-hit', !!this.node?.filterHit);\n }\n\n public render(): h.JSX.IntrinsicElements {\n // Overrides the `.hydrated` visibility when we have nothing to display\n const hiddenStyle =\n this.node == null ? { visibility: 'hidden' } : undefined;\n const backgroundColorStyle = this.getBackgroundColorStyle();\n\n const endItemIcon = this.getEndItemIcon();\n const expansionIcon = this.getExpansionIcon();\n const isolateIcon = this.getIsolateIcon();\n const visibilityIcon = this.getVisibilityIcon();\n\n const showSpaceForExpansionIcon = this.expandToggle && !endItemIcon;\n const showSpaceForEndItemIcon = endItemIcon && !showSpaceForExpansionIcon;\n\n return (\n <Host\n onPointerEnter={this.handleCellPointerEnter}\n onPointerLeave={this.handleCellPointerLeave}\n onPointerUp={this.handleCellPointerUp}\n onPointerDown={this.handleCellPointerDown}\n style={{\n ...hiddenStyle,\n 'background-color': backgroundColorStyle,\n }}\n >\n <div class=\"wrapper\">\n <div class=\"no-shrink\">\n <slot name=\"left-gutter\" />\n </div>\n {showSpaceForExpansionIcon && (\n <button\n class=\"expand-btn no-shrink\"\n data-testid={'expand-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleExpansion,\n )}\n >\n {expansionIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={expansionIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n {showSpaceForEndItemIcon && (\n <button\n class=\"end-item-btn no-shrink\"\n data-testid={'end-item-' + this.node?.name}\n >\n {endItemIcon && (\n <vertex-viewer-icon\n class=\"end-item-icon\"\n name={endItemIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n <div class=\"content\">\n {this.value != null && this.value.trim() !== '' ? (\n <slot>{this.displayValue()}</slot>\n ) : (\n <slot name=\"placeholder\">{this.placeholder}</slot>\n )}\n </div>\n {this.isolateButton && (\n <button\n class=\"isolate-btn no-shrink\"\n data-testid={'isolate-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(this.isolate)}\n >\n {isolateIcon && (\n <vertex-viewer-icon class=\"icon\" name=\"locate\" size=\"sm\" />\n )}\n </button>\n )}\n {this.visibilityToggle && (\n <button\n class=\"visibility-btn no-shrink\"\n data-testid={'visibility-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleVisibility,\n )}\n >\n {visibilityIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={visibilityIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n <div class=\"no-shrink\">\n <slot name=\"right-gutter\" />\n </div>\n {!this.visibilityToggle && !this.isolateButton && (\n <div class=\"column-spacer\" />\n )}\n </div>\n </Host>\n );\n }\n\n private displayValue = (): string => {\n const resp =\n this.value == null || this.value.trim() === ''\n ? this.placeholder\n : this.value;\n\n return resp;\n };\n\n private handleCellPointerEnter = (): void => {\n this.hoverController?.setHovered(this.node?.id?.hex);\n };\n\n private handleCellPointerLeave = (): void => {\n this.hoverController?.setHovered(undefined);\n };\n\n private handleCellPointerUp = (event: PointerEvent): void => {\n if (\n !this.isScrolling &&\n this.node != null &&\n this.tree != null &&\n this.longPressTimer != null\n ) {\n if (this.selectionHandler != null) {\n this.selectionHandler(event, this.node, this.tree);\n } else {\n this.performDefaultSelectionOperation(event);\n }\n this.selectionToggled.emit({ node: this.node, originalEvent: event });\n }\n this.clearLongPressTimer();\n };\n\n private handleCellPointerDown = (event: PointerEvent): void => {\n this.restartLongPressTimer();\n };\n\n private createActionPointerUpHandler = (\n action: (event: PointerEvent) => void,\n ): ((event: PointerEvent) => void) => {\n return (event) => {\n // Blur the `hostEl` after a `preventDefault` to clear focus that\n // is left on the element after `pointerdown` event.\n event.preventDefault();\n event.stopPropagation();\n blurElement(this.hostEl);\n\n action(event);\n };\n };\n\n private toggleExpansion = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.expansionHandler != null) {\n this.expansionHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultExpansionOperation(this.node, this.tree);\n }\n this.expandToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleVisibility = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.visibilityHandler != null) {\n this.visibilityHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultVisibilityOperation(this.node, this.tree);\n }\n this.visibilityToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleAttribute(attr: string, value: boolean): void {\n if (value) {\n this.hostEl.setAttribute(attr, '');\n } else {\n this.hostEl.removeAttribute(attr);\n }\n }\n\n private isolate = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.isolateHandler != null) {\n this.isolateHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultIsolateOperation(this.node, this.tree);\n }\n this.isolatePressed.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private performDefaultSelectionOperation = (event: PointerEvent): void => {\n if (!event.defaultPrevented && event.button === 0) {\n if ((event.ctrlKey || event.metaKey) && this.node?.selected) {\n this.tree?.deselectItem(this.node);\n } else if (this.node?.selected) {\n this.tree?.selectItem(this.node, {\n recurseParent: true,\n });\n } else if (!this.node?.selected) {\n this.tree?.selectItem(this.node, {\n append: event.ctrlKey || event.metaKey,\n range: event.shiftKey,\n });\n }\n }\n };\n\n private performDefaultVisibilityOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.toggleItemVisibility(node);\n };\n\n private performDefaultIsolateOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.isolateItem(node);\n };\n\n private performDefaultExpansionOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.toggleExpandItem(node);\n };\n\n private clearLongPressTimer(): void {\n if (this.longPressTimer != null) {\n window.clearTimeout(this.longPressTimer);\n }\n this.longPressTimer = undefined;\n }\n\n private restartLongPressTimer(): void {\n this.clearLongPressTimer();\n this.longPressTimer = window.setTimeout(() => {\n this.clearLongPressTimer();\n }, Events.defaultEventConfig.longPressThreshold);\n }\n\n private getBackgroundColorStyle(): string {\n const backgroundColorStyle = this.getCssVariableWithFallbacks(\n `--scene-tree-row-background-color-depth-${this.node?.depth}`,\n '--scene-tree-row-background-color',\n );\n const selectedBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-selected-row-background-color',\n '--scene-tree-cell-background-selected',\n );\n const hoveredBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-hovered-row-background-color',\n '--scene-tree-cell-background-hover',\n );\n\n if (!!this.node?.selected) {\n return selectedBackgroundColorStyle;\n } else if (this.hovered) {\n return hoveredBackgroundColorStyle;\n }\n return backgroundColorStyle;\n }\n\n private getCssVariableWithFallbacks(\n variable: string,\n ...fallbacks: string[]\n ): string {\n const sequencedFallbacks = [...fallbacks].reverse();\n\n return [...sequencedFallbacks, variable].reduce(\n (res, s) => `var(${s}, ${res})`,\n 'unset',\n );\n }\n\n private getIsolateIcon(): ViewerIconName | undefined {\n if (this.hovered || this.alwaysShowIcons) {\n return 'locate';\n }\n return undefined;\n }\n\n private getExpansionIcon(): ViewerIconName | undefined {\n if (!this.node?.isLeaf && !this.node?.endItem) {\n return this.node?.expanded ? 'chevron-down' : 'chevron-right';\n }\n return undefined;\n }\n\n private getEndItemIcon(): ViewerIconName | undefined {\n // Return the end item icon for an item if it is set as an end item and either is not a leaf item\n // or matches the filter. Note that in the filtered view, an end item matching the filter will always be\n // marked as a leaf node because its children will be excluded from the search results and therefore\n // not present in the filtered tree.\n if (\n this.endItemIndicator &&\n this.node?.endItem &&\n (!this.node?.isLeaf || this.node?.filterHit)\n ) {\n return 'lock';\n }\n return undefined;\n }\n\n private getVisibilityIcon(): ViewerIconName | undefined {\n if (\n (this.hovered || this.alwaysShowIcons) &&\n !this.node?.partiallyVisible &&\n this.node?.visible\n ) {\n return 'eye-open';\n } else if (!this.node?.partiallyVisible && !this.node?.visible) {\n return 'eye-half';\n } else if (this.node?.partiallyVisible) {\n return 'eye-half-dotted';\n }\n return undefined;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{S as o,d as s}from"./p-b0ZzPHz8.js";const t=o;const p=s;export{t as VertexSceneTreeTableLayout,p as defineCustomElement};
4
+ import{S as o,d as s}from"./p-DUC59SSO.js";const t=o;const p=s;export{t as VertexSceneTreeTableLayout,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-scene-tree-table-layout.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{h as e,F as t,t as i,p as s,H as n,d as o,f as a,e as r}from"./p-Bb32XUUS.js";import{s as l,w as d,S as c,a as h,b as u}from"./p-Dbz9yUqC.js";import{p as f}from"./p-ahjMltGJ.js";import{i as v}from"./p-DC86ZXai.js";import{d as p,g as m}from"./p-b0ZzPHz8.js";import{i as w}from"./p-CiSHWNC4.js";import{S as b}from"./p-BZwvQkyb.js";import{d as y}from"./p-BphxnS-a.js";import{d as g}from"./p-D0KZu516.js";import{d as x}from"./p-B5SQ_oXT.js";import{d as I}from"./p-Bkm6H5uq.js";import{d as C}from"./p-DxuSiXYg.js";const k=({details:i},s)=>e("div",{class:"error"},e("div",{class:"error-section error-message"},e("span",null,i.message),i.link&&e(t,null,e("span",null," See our "),e("a",{href:i.link,target:"_blank"},"documentation")," ",e("span",null," for more information."))),e("div",{class:"error-section"},s));const E=500;async function R(e,t,{suppliedCorrelationId:i}={}){const s=await e.scene();return s.elements((e=>e.items.where((e=>e.withItemId(t))).show())).execute({suppliedCorrelationId:i})}async function M(e,t,{suppliedCorrelationId:i}={}){const s=await e.scene();return s.elements((e=>e.items.where((e=>e.withItemId(t))).hide())).execute({suppliedCorrelationId:i})}async function S(e,t,{append:i=false,suppliedCorrelationId:s}){const n=await e.scene();return n.elements((e=>[...i?[]:[e.items.where((e=>e.all())).deselect()],e.items.where((e=>e.withItemId(t))).select()])).execute({suppliedCorrelationId:s})}async function D(e,t,i,{append:s=true,suppliedCorrelationId:n}){const o=await e.scene();return o.elements((e=>[...s?[]:[e.items.where((e=>e.all())).deselect()],e.items.where((e=>e.withSceneTreeRange({start:t,end:i}))).select()])).execute({suppliedCorrelationId:n})}async function j(e,t,i,s,n,{append:o=false,suppliedCorrelationId:a}){const r=await e.scene();return r.elements((e=>[...o?[]:[e.items.where((e=>e.all())).deselect()],e.items.where((e=>e.withMetadata(t,i,s,n))).select()])).execute({suppliedCorrelationId:a})}async function z(e,t,{suppliedCorrelationId:i}={}){const s=await e.scene();return s.elements((e=>e.items.where((e=>e.withItemId(t))).deselect())).execute({suppliedCorrelationId:i})}async function K(e,t,{suppliedCorrelationId:i,animationDurationMs:s}={}){const n=await e.scene();await n.elements((e=>[e.items.where((e=>e.all())).hide(),e.items.where((e=>e.withItemId(t))).show()])).execute({suppliedCorrelationId:i});const o=await n.camera().flyTo((e=>e.withItemId(t))).render({animation:{milliseconds:s!==null&&s!==void 0?s:E}});await o.onAnimationCompleted.once()}const L=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}.button{padding:0.5rem;border-radius:0.25rem}.button-secondary{color:var(--neutral-800);background-color:var(--neutral-300)}.button-secondary:hover{color:var(--neutral-900)}.button-secondary:hover:enabled{box-shadow:0 2px 2px rgb(0 0 0 / 20%)}.button-secondary:disabled{opacity:0.8}.button-secondary:hover:disabled{cursor:not-allowed}:host{--scene-tree-toolbar-separator:1px solid var(--neutral-300);--scene-tree-default-font-family:unset;--scene-tree-default-font-size:unset;--scene-tree-default-font-color:unset;--scene-tree-secondary-font-color:unset;--scene-tree-selected-row-background-color:unset;--scene-tree-hovered-row-background-color:unset;--scene-tree-row-background-color:unset;--scene-tree-row-background-color-depth-n:unset;--scene-tree-overlay-z-index:3000;width:300px;height:100%;user-select:none;-webkit-user-select:none;cursor:default;display:flex;flex-direction:column;position:relative}.rows-scroll{position:relative;height:var(--scene-tree-row-height, 0);flex-grow:1}.rows{position:relative}.row{position:absolute;display:flex;align-items:center;width:100%;height:var(--scene-tree-row-height);padding:var(--scene-tree-row-padding);box-sizing:border-box}.row:hover{background-color:var(--scene-tree-row-hover-color)}.row.is-selected{background-color:var(--scene-tree-row-selected-color)}.expand-toggle{cursor:pointer;width:16px}.row-text{margin-left:0.25rem;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.visibility-btn{display:flex;align-items:center;visibility:hidden;padding:4px}.visibility-btn.is-hidden{visibility:visible}.row:hover .visibility-btn{visibility:visible}.error,.empty-results{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:center;font-size:0.875rem;width:100%;height:100%;padding:1rem;box-sizing:border-box;justify-content:center;background-color:white;z-index:var(--scene-tree-overlay-z-index)}.error-section{margin-top:1rem}.error-message{text-align:center}.search-toolbar,slot[name='header']::slotted(*){border-bottom:var(--scene-tree-toolbar-separator)}slot[name='footer']::slotted(:not(:last-child)){border-top:var(--scene-tree-toolbar-separator)}.header{display:flex;flex-direction:column}.footer{display:flex;flex-direction:column}.loading{position:absolute;top:150px;left:50%;transform:translate(-50%, -50%);text-align:center}`;const T=25;const A=s(class t extends n{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.connectionError=o(this,"connectionError");this.firstRowRendered=o(this,"firstRowRendered");this.overScanCount=25;this.configEnv="platprod";this.searchOptions={};this.metadataSearchExactMatch=false;this.metadataSearchKeys=[];this.metadataKeys=[];this.operationAnimationDuration=500;this.rows=[];this.totalRows=0;this.showLoader=false;this.showEmptyResults=false;this.stateMap={componentLoaded:false};this.hasPartialFilterResults=false;this.refreshingResults=false;this.attemptingRetry=false;this.firstCellRendered=false}async invalidateRows(){a(this.getLayoutElement())}async scrollToIndex(e,t={}){const{animate:i,position:s="middle"}=t;const n=Math.max(0,Math.min(e,this.totalRows));const o=this.getScrollToPosition(n,s);await this.getLayoutElement().scrollToPosition(o,{behavior:i?"smooth":undefined})}async scrollToItem(e,t={}){var i;const s=this.totalRows;const n=await((i=this.controller)===null||i===void 0?void 0:i.expandParentNodes(e));if(n!=null&&s!==this.totalRows){return new Promise((e=>{const i=this.getLayoutElement();const s=async()=>{i.removeEventListener("layoutRendered",s);await this.scrollToIndex(n,t);e()};i.addEventListener("layoutRendered",s)}))}else if(n!=null){await this.scrollToIndex(n,t)}}async expandAll(){var e;await((e=this.controller)===null||e===void 0?void 0:e.expandAll())}async collapseAll(){var e;await((e=this.controller)===null||e===void 0?void 0:e.collapseAll())}async expandItem(e){await this.performRowOperation(e,(async({id:e,node:t})=>{var i;if(!t.expanded){await((i=this.controller)===null||i===void 0?void 0:i.expandNode(e))}}))}async collapseItem(e){await this.performRowOperation(e,(async({id:e,node:t})=>{var i;if(t.expanded){await((i=this.controller)===null||i===void 0?void 0:i.collapseNode(e))}}))}async toggleExpandItem(e){await this.performRowOperation(e,(async({node:e})=>{if(e.expanded){await this.collapseItem(e)}else{await this.expandItem(e)}}))}async toggleItemVisibility(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(i.visible||i.partiallyVisible){await M(e,t)}else{await R(e,t)}}))}async hideItem(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(i.visible){await M(e,t)}}))}async showItem(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(!i.visible){await R(e,t)}}))}async selectItem(e,{recurseParent:t,...i}={}){await this.performRowOperation(e,(async({viewer:s,id:n})=>{var o,a,r,l;const d=await((o=this.controller)===null||o===void 0?void 0:o.fetchNodeAncestors(n))||[];const c=(a=this.stateMap.selectionPath)===null||a===void 0?void 0:a.includes(n);const h=this.getNodeFromRowOrIndex(e);const u=d.length>0?d[0].selected:true;const f=h.selected&&!u;if(t&&(c||f)){const e=d.find((({selected:e})=>!e));if(e!=null){await this.selectItem(e,i);this.lastSelectedItemId=n}else{await S(s,n,i);this.lastSelectedItemId=n}}else if(i.range&&this.lastSelectedItemId!=null){const e=await((r=this.controller)===null||r===void 0?void 0:r.expandParentNodes(n));const t=await((l=this.controller)===null||l===void 0?void 0:l.expandParentNodes(this.lastSelectedItemId));if(t&&e){const n=Math.min(t,e);const o=Math.max(t,e);await D(s,n,o,i)}}else{await S(s,n,i);this.lastSelectedItemId=n}this.stateMap.selectionPath=[...d.map((({id:e})=>(e===null||e===void 0?void 0:e.hex)||"")),n]}))}async deselectItem(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(i.selected){this.lastSelectedItemId=undefined;await z(e,t)}}))}async isolateItem(e){await this.performRowOperation(e,(async({viewer:e,id:t})=>{await K(e,t,{animationDurationMs:this.operationAnimationDuration})}))}async getRowAtIndex(e){return this.rows[e]}async getRowForItemId(e){var t;const i=await((t=this.controller)===null||t===void 0?void 0:t.expandParentNodes(e));if(i!=null){return this.rows[i]}else{return undefined}}async getRowForEvent(e){const{clientY:t,target:i}=e;if(i!=null&&this.errorDetails==null&&m(this.el,i)&&v(i)){return this.getRowAtClientY(t)}else{return undefined}}getRowAtClientY(e){const t=this.getLayoutElement();const i=t.layoutOffset;const s=Math.floor((e-i+t.scrollOffset)/t.rowHeight);return this.getRowAtIndex(s)}async filterItems(e,t={}){var i;const s={...t,metadataSearchKeys:t.columns};const n=this.getMetadataSearchKeys(s);return(i=this.controller)===null||i===void 0?void 0:i.filter(e,{...t,columns:n})}async selectFilteredItems(e,t){var i,s,n,o,a,r;if(this.viewer!=null){const l=(s=(i=this.searchOptions)===null||i===void 0?void 0:i.metadataSearchKeys)!==null&&s!==void 0?s:this.metadataSearchKeys;const d=l.length>0?l:this.metadataKeys;const c=d.length>0?d:["VERTEX_SCENE_ITEM_NAME"];const h=(o=(n=this.searchOptions)===null||n===void 0?void 0:n.exactMatch)!==null&&o!==void 0?o:this.metadataSearchExactMatch;const u=(r=(a=this.searchOptions)===null||a===void 0?void 0:a.removeHiddenItems)!==null&&r!==void 0?r:false;await j(this.viewer,e,c,h,u,{append:false,...t})}}async fetchMetadataKeys(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.fetchMetadataKeys())!==null&&t!==void 0?t:[]}disconnectedCallback(){var e,t,i;(e=this.stateMap.viewerDisposable)===null||e===void 0?void 0:e.dispose();(t=this.stateMap.viewerSceneReadyDisposable)===null||t===void 0?void 0:t.dispose();(i=this.controller)===null||i===void 0?void 0:i.cancel()}connectedCallback(){this.connectToViewer()}componentWillLoad(){var e;if(this.controller==null){const{sceneTreeHost:t}=this.getConfig().network;const i=new l.SceneTreeAPIClient(t,this.getConfig().flags.grpcUseStreamingWebSocketTransport?{transport:d}:undefined);this.controller=new c(i,100);(e=this.controller)===null||e===void 0?void 0:e.setMetadataKeys(this.metadataKeys)}this.stateMap.onStateChangeDisposable=this.controller.onStateChange.on((e=>this.handleControllerStateChange(e)));this.connectToViewer();this.updateMissingViewerError()}async componentDidLoad(){var e;this.ensureLayoutDefined();this.updateLayoutElement();const t=this.getLayoutElement();const i=new ResizeObserver((()=>{this.invalidateRows()}));i.observe(t);this.stateMap.resizeObserver=i;this.stateMap.componentLoaded=true;(e=this.controller)===null||e===void 0?void 0:e.setMetadataKeys(this.metadataKeys)}componentWillRender(){this.updateLayoutElement()}render(){return e(r,{key:"81ee31f74467f44e88e82f88d73f94d01144b7ce"},e("div",{key:"c85ea1592a82acfef6e9d9d8e6b50d02880b836b",class:"header"},e("slot",{key:"f49c5b9a2b4d63abd36b5f13a5477d478260e564",name:"header"},e("vertex-scene-tree-toolbar",{key:"3a7681367caab8e2e38906d910c12ac3e673f5ac",class:"search-toolbar"},e("vertex-scene-tree-search",{key:"0e6b6c45b28145042cf41afa3cad100a89ca6b14",controller:this.controller})))),e("slot",{key:"ce5e62ea9409fb152a7f2ce66673239784bf2bd1",name:"partial-filter-results-banner"},this.hasPartialFilterResults&&e("vertex-scene-tree-notification-banner",{key:"faff2e51eb35947f13901fa09139f8416da33eca",message:this.refreshingResults?"Refreshing results...":"Data loading, refresh for more.",actionLabel:"Refresh",onAction:()=>{var e;return(e=this.controller)===null||e===void 0?void 0:e.refreshFilter()}})),this.errorDetails!=null&&this.renderError(this.errorDetails),this.errorDetails==null&&e("div",{key:"195748801f7296533f60ca14d5481e25568cf861",class:"rows-scroll"},this.showLoader&&e("slot",{key:"8d2d6a6e4f4330f8653a5cfc7c251f1f9af233b0",name:"loading"},e("vertex-viewer-spinner",{key:"ef43304b1baa36df22d016e74ccd67a5198aab24",class:"loading",size:"md"})),e("slot",{key:"186a587687941f8c916afaa6712d2fdd03f29653"}),this.showEmptyResults&&e("slot",{key:"d0c0a1ac044e58f5d47ba60fd7c3d7c082d132b9",name:"empty-results"},e("div",{key:"4cd3f873d5282be41f97d9cfbfa4aa45e607ec44",class:"empty-results"},"No Results Found."))),e("div",{key:"cacc31933ef2219741a35fe1b540202eb3e0544f",class:"footer"},e("slot",{key:"dc1131dac52a716db70963cbdbf024b20c359ee8",name:"footer"})))}renderError(t){if(t.code!==h.SCENE_TREE_DISABLED){return e(k,{details:t},e("button",{class:"button button-secondary",onClick:()=>this.retryConnectToViewer(),disabled:this.attemptingRetry},"Retry"))}else{return e(k,{details:t})}}handleViewerChanged(e,t){if(!this.stateMap.componentLoaded){return}this.connectToViewer()}handleControllerChanged(e){var t;if(!this.stateMap.componentLoaded){return}(t=this.stateMap.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose();this.stateMap.onStateChangeDisposable=e.onStateChange.on((e=>this.handleControllerStateChange(e)));e.setMetadataKeys(this.metadataKeys)}handleMetadataKeysChanged(){var e;(e=this.controller)===null||e===void 0?void 0:e.setMetadataKeys(this.metadataKeys)}retryConnectToViewer(){this.attemptingRetry=true;this.errorDetails=undefined;this.connectToViewer()}connectToViewer(){var e,t,i;(e=this.stateMap.viewerDisposable)===null||e===void 0?void 0:e.dispose();(t=this.stateMap.viewerSceneReadyDisposable)===null||t===void 0?void 0:t.dispose();if(this.viewer==null&&this.viewerSelector!=null){this.viewer=document.querySelector(this.viewerSelector)}if(this.viewer!=null){this.clearMissingViewerError();const e=async()=>{const e=this.getLayoutElement();await e.attemptComputeCellHeight()};this.viewer.addEventListener("sceneReady",e);this.stateMap.viewerDisposable=(i=this.controller)===null||i===void 0?void 0:i.connectToViewer(this.viewer);this.stateMap.viewerSceneReadyDisposable={dispose:()=>{var t;return(t=this.viewer)===null||t===void 0?void 0:t.removeEventListener("sceneReady",e)}}}else{this.attemptingRetry=false;if(this.stateMap.componentLoaded){this.updateMissingViewerError()}}}updateMissingViewerError(){if(this.viewer==null){this.errorDetails=new u("MISSING_VIEWER",h.MISSING_VIEWER)}}clearMissingViewerError(){var e;if(((e=this.errorDetails)===null||e===void 0?void 0:e.code)===h.MISSING_VIEWER){this.errorDetails=undefined}}scheduleClearUnusedData(){if(this.stateMap.idleCallbackId!=null){window.cancelIdleCallback(this.stateMap.idleCallbackId)}this.stateMap.idleCallbackId=window.requestIdleCallback((e=>{var t,i,s;const n=(t=e.timeRemaining)===null||t===void 0?void 0:t.call(e);if(n==null||n>=T){const e=this.getLayoutElement();const t=e.viewportStartIndex;const n=e.viewportEndIndex;const[o,a]=((i=this.controller)===null||i===void 0?void 0:i.getPageIndexesForRange(t,n))||[];if(o!=null&&a!=null){(s=this.controller)===null||s===void 0?void 0:s.invalidatePagesOutsideRange(o,a,50)}}else{this.scheduleClearUnusedData()}}))}handleControllerStateChange(e){this.showLoader=!!e.shouldShowLoading;this.showEmptyResults=!!e.shouldShowEmptyResults;this.rows=e.rows;this.totalRows=e.totalRows;this.hasPartialFilterResults=!!e.isPartialFilterResponse;this.refreshingResults=!!e.isSearching;if(e.connection.type==="failure"){this.errorDetails=e.connection.details;this.connectionError.emit(e.connection.details)}else if(e.connection.type==="disconnected"){this.errorDetails=new u("DISCONNECTED",h.DISCONNECTED)}else{this.errorDetails=undefined}if(e.connection.type==="connected"||e.connection.type==="failure"){this.attemptingRetry=false}}getNodeFromRowOrIndex(e){const t=typeof e==="number"?this.rows[e]:e;if(t==null){throw new Error(`Cannot perform scene tree operation. Row not found.`)}return w(t)?t.node:t}async performRowOperation(e,t){const i=this.getNodeFromRowOrIndex(e);if(i.id==null){throw new Error(`Cannot perform scene tree operation. ID is undefined.`)}if(this.viewer==null){throw new Error(`Cannot perform scene tree operation. Cannot get reference to viewer.`)}await t({viewer:this.viewer,id:i.id.hex,node:i})}async handleSearch(e){var t,i,s,n;const o=this.getMetadataSearchKeys(this.searchOptions);const a=(i=(t=this.searchOptions)===null||t===void 0?void 0:t.exactMatch)!==null&&i!==void 0?i:this.metadataSearchExactMatch;const r=(n=(s=this.searchOptions)===null||s===void 0?void 0:s.removeHiddenItems)!==null&&n!==void 0?n:false;try{await this.filterItems(e.detail,{columns:o,exactMatch:a,removeHiddenItems:r})}catch(e){console.error("Failed to filter tree with exception: ",e)}}async handleCellLoaded(){if(!this.firstCellRendered&&this.rows.length>0){this.firstCellRendered=true;this.firstRowRendered.emit()}}getScrollToPosition(e,t){var i;const s=this.getLayoutElement();const n=Math.max(0,Math.min(e,this.totalRows-1));const o=(i=s.layoutHeight)!==null&&i!==void 0?i:0;const a=s.rowHeight;if(t==="start"){return n*a}else if(t==="middle"){const e=n*a+a/2;return e-o/2}else{const e=n*a+a;return e-o}}getConfig(){return f(this.configEnv,this.config)}ensureLayoutDefined(){let e=this.el.querySelector("vertex-scene-tree-table-layout");if(e==null){e=document.createElement("vertex-scene-tree-table-layout");e.innerHTML=`\n <vertex-scene-tree-table-column>\n <template>\n <vertex-scene-tree-table-cell prop:value="{{row.node.name}}" expand-toggle isolate-button visibility-toggle></vertex-scene-tree-table-cell>\n </template>\n </vertex-scene-tree-table-column>\n `;this.el.appendChild(e)}this.stateMap.layoutEl=e}updateLayoutElement(){const e=this.stateMap.layoutEl;if(e!=null){e.rows=this.rows;e.tree=this.el;e.totalRows=this.totalRows;e.controller=this.controller;e.rowData=this.rowData}else if(!this.stateMap.componentLoaded&&this.totalRows>0){console.debug("Scene tree has rows, but the component has not yet rendered")}}getLayoutElement(){if(this.stateMap.layoutEl!=null){return this.stateMap.layoutEl}else{throw new Error("Layout element is undefined")}}getMetadataSearchKeys(e){var t,i;const s=(t=e===null||e===void 0?void 0:e.metadataSearchKeys)!==null&&t!==void 0?t:this.metadataSearchKeys;const n=(i=e===null||e===void 0?void 0:e.exactMatch)!==null&&i!==void 0?i:this.metadataSearchExactMatch;if(n){const e=s.length>0?s:[b];return e}else if(s.length>0){return s}return undefined}get el(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],controller:[{handleControllerChanged:0}],metadataKeys:[{handleMetadataKeysChanged:0}]}}static get style(){return L()}},[257,"vertex-scene-tree",{overScanCount:[2,"over-scan-count"],viewerSelector:[1,"viewer-selector"],viewer:[1040],rowData:[16],config:[1],configEnv:[1,"config-env"],controller:[1040],searchOptions:[1040],metadataSearchExactMatch:[1028,"metadata-search-exact-match"],metadataSearchKeys:[1040],metadataKeys:[16],operationAnimationDuration:[2,"operation-animation-duration"],rows:[32],totalRows:[32],showLoader:[32],showEmptyResults:[32],stateMap:[32],errorDetails:[32],hasPartialFilterResults:[32],refreshingResults:[32],attemptingRetry:[32],invalidateRows:[64],scrollToIndex:[64],scrollToItem:[64],expandAll:[64],collapseAll:[64],expandItem:[64],collapseItem:[64],toggleExpandItem:[64],toggleItemVisibility:[64],hideItem:[64],showItem:[64],selectItem:[64],deselectItem:[64],isolateItem:[64],getRowAtIndex:[64],getRowForItemId:[64],getRowForEvent:[64],getRowAtClientY:[64],filterItems:[64],selectFilteredItems:[64],fetchMetadataKeys:[64]},[[0,"search","handleSearch"],[0,"cellLoaded","handleCellLoaded"]],{viewer:[{handleViewerChanged:0}],controller:[{handleControllerChanged:0}],metadataKeys:[{handleMetadataKeysChanged:0}]}]);function F(){if(typeof customElements==="undefined"){return}const e=["vertex-scene-tree","vertex-scene-tree-notification-banner","vertex-scene-tree-search","vertex-scene-tree-table-layout","vertex-scene-tree-toolbar","vertex-viewer-icon","vertex-viewer-spinner"];e.forEach((e=>{switch(e){case"vertex-scene-tree":if(!customElements.get(i(e))){customElements.define(i(e),A)}break;case"vertex-scene-tree-notification-banner":if(!customElements.get(i(e))){y()}break;case"vertex-scene-tree-search":if(!customElements.get(i(e))){g()}break;case"vertex-scene-tree-table-layout":if(!customElements.get(i(e))){p()}break;case"vertex-scene-tree-toolbar":if(!customElements.get(i(e))){x()}break;case"vertex-viewer-icon":if(!customElements.get(i(e))){I()}break;case"vertex-viewer-spinner":if(!customElements.get(i(e))){C()}break}}))}F();const V=A;const N=F;export{V as VertexSceneTree,N as defineCustomElement};
4
+ import{h as e,F as t,t as i,p as s,H as n,d as o,f as a,e as r}from"./p-Bb32XUUS.js";import{s as l,w as d,S as c,a as h,b as u}from"./p-Dbz9yUqC.js";import{p as v}from"./p-ahjMltGJ.js";import{i as f}from"./p-DC86ZXai.js";import{d as p,g as m}from"./p-DUC59SSO.js";import{i as w}from"./p-CiSHWNC4.js";import{S as b}from"./p-BZwvQkyb.js";import{d as y}from"./p-BphxnS-a.js";import{d as g}from"./p-D0KZu516.js";import{d as x}from"./p-B5SQ_oXT.js";import{d as I}from"./p-Bkm6H5uq.js";import{d as C}from"./p-DxuSiXYg.js";const k=({details:i},s)=>e("div",{class:"error"},e("div",{class:"error-section error-message"},e("span",null,i.message),i.link&&e(t,null,e("span",null," See our "),e("a",{href:i.link,target:"_blank"},"documentation")," ",e("span",null," for more information."))),e("div",{class:"error-section"},s));const E=500;async function R(e,t,{suppliedCorrelationId:i}={}){const s=await e.scene();return s.elements((e=>e.items.where((e=>e.withItemId(t))).show())).execute({suppliedCorrelationId:i})}async function S(e,t,{suppliedCorrelationId:i}={}){const s=await e.scene();return s.elements((e=>e.items.where((e=>e.withItemId(t))).hide())).execute({suppliedCorrelationId:i})}async function M(e,t,{append:i=false,suppliedCorrelationId:s}){const n=await e.scene();return n.elements((e=>[...i?[]:[e.items.where((e=>e.all())).deselect()],e.items.where((e=>e.withItemId(t))).select()])).execute({suppliedCorrelationId:s})}async function D(e,t,i,{append:s=true,suppliedCorrelationId:n}){const o=await e.scene();return o.elements((e=>[...s?[]:[e.items.where((e=>e.all())).deselect()],e.items.where((e=>e.withSceneTreeRange({start:t,end:i}))).select()])).execute({suppliedCorrelationId:n})}async function j(e,t,i,s,n,{append:o=false,suppliedCorrelationId:a}){const r=await e.scene();return r.elements((e=>[...o?[]:[e.items.where((e=>e.all())).deselect()],e.items.where((e=>e.withMetadata(t,i,s,n))).select()])).execute({suppliedCorrelationId:a})}async function K(e,t,{suppliedCorrelationId:i}={}){const s=await e.scene();return s.elements((e=>e.items.where((e=>e.withItemId(t))).deselect())).execute({suppliedCorrelationId:i})}async function L(e,t,{suppliedCorrelationId:i,animationDurationMs:s}={}){const n=await e.scene();await n.elements((e=>[e.items.where((e=>e.all())).hide(),e.items.where((e=>e.withItemId(t))).show()])).execute({suppliedCorrelationId:i});const o=await n.camera().flyTo((e=>e.withItemId(t))).render({animation:{milliseconds:s!==null&&s!==void 0?s:E}});await o.onAnimationCompleted.once()}const T=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}.button{padding:0.5rem;border-radius:0.25rem}.button-secondary{color:var(--neutral-800);background-color:var(--neutral-300)}.button-secondary:hover{color:var(--neutral-900)}.button-secondary:hover:enabled{box-shadow:0 2px 2px rgb(0 0 0 / 20%)}.button-secondary:disabled{opacity:0.8}.button-secondary:hover:disabled{cursor:not-allowed}:host{--scene-tree-toolbar-separator:1px solid var(--neutral-300);--scene-tree-default-font-family:unset;--scene-tree-default-font-size:unset;--scene-tree-default-font-color:unset;--scene-tree-secondary-font-color:unset;--scene-tree-selected-row-background-color:unset;--scene-tree-hovered-row-background-color:unset;--scene-tree-row-background-color:unset;--scene-tree-row-background-color-depth-n:unset;--scene-tree-overlay-z-index:3000;width:300px;height:100%;user-select:none;-webkit-user-select:none;cursor:default;display:flex;flex-direction:column;position:relative}.rows-scroll{position:relative;height:var(--scene-tree-row-height, 0);flex-grow:1}.rows{position:relative}.row{position:absolute;display:flex;align-items:center;width:100%;height:var(--scene-tree-row-height);padding:var(--scene-tree-row-padding);box-sizing:border-box}.row:hover{background-color:var(--scene-tree-row-hover-color)}.row.is-selected{background-color:var(--scene-tree-row-selected-color)}.expand-toggle{cursor:pointer;width:16px}.row-text{margin-left:0.25rem;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.visibility-btn{display:flex;align-items:center;visibility:hidden;padding:4px}.visibility-btn.is-hidden{visibility:visible}.row:hover .visibility-btn{visibility:visible}.error,.empty-results{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:center;font-size:0.875rem;width:100%;height:100%;padding:1rem;box-sizing:border-box;justify-content:center;background-color:white;z-index:var(--scene-tree-overlay-z-index)}.error-section{margin-top:1rem}.error-message{text-align:center}.search-toolbar,slot[name='header']::slotted(*){border-bottom:var(--scene-tree-toolbar-separator)}slot[name='footer']::slotted(:not(:last-child)){border-top:var(--scene-tree-toolbar-separator)}.header{display:flex;flex-direction:column}.footer{display:flex;flex-direction:column}.loading{position:absolute;top:150px;left:50%;transform:translate(-50%, -50%);text-align:center}`;const A=25;const F=s(class t extends n{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.connectionError=o(this,"connectionError");this.firstRowRendered=o(this,"firstRowRendered");this.overScanCount=25;this.configEnv="platprod";this.searchOptions={};this.metadataSearchExactMatch=false;this.metadataSearchKeys=[];this.metadataKeys=[];this.operationAnimationDuration=500;this.rows=[];this.totalRows=0;this.showLoader=false;this.showEmptyResults=false;this.stateMap={componentLoaded:false};this.hasPartialFilterResults=false;this.refreshingResults=false;this.attemptingRetry=false;this.firstCellRendered=false}async invalidateRows(){a(this.getLayoutElement())}async scrollToIndex(e,t={}){const{animate:i,position:s="middle"}=t;const n=Math.max(0,Math.min(e,this.totalRows));const o=this.getScrollToPosition(n,s);await this.getLayoutElement().scrollToPosition(o,{behavior:i?"smooth":undefined})}async scrollToItem(e,t={}){var i;const s=this.totalRows;const n=await((i=this.controller)===null||i===void 0?void 0:i.expandParentNodes(e));if(n!=null&&s!==this.totalRows){return new Promise((e=>{const i=this.getLayoutElement();const s=async()=>{i.removeEventListener("layoutRendered",s);await this.scrollToIndex(n,t);e()};i.addEventListener("layoutRendered",s)}))}else if(n!=null){await this.scrollToIndex(n,t)}}async expandAll(){var e;await((e=this.controller)===null||e===void 0?void 0:e.expandAll())}async collapseAll(){var e;await((e=this.controller)===null||e===void 0?void 0:e.collapseAll())}async expandItem(e){await this.performRowOperation(e,(async({id:e,node:t})=>{var i;if(!t.expanded){await((i=this.controller)===null||i===void 0?void 0:i.expandNode(e))}}))}async collapseItem(e){await this.performRowOperation(e,(async({id:e,node:t})=>{var i;if(t.expanded){await((i=this.controller)===null||i===void 0?void 0:i.collapseNode(e))}}))}async toggleExpandItem(e){await this.performRowOperation(e,(async({node:e})=>{if(e.expanded){await this.collapseItem(e)}else{await this.expandItem(e)}}))}async toggleItemVisibility(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(i.visible||i.partiallyVisible){await S(e,t)}else{await R(e,t)}}))}async hideItem(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(i.visible){await S(e,t)}}))}async showItem(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(!i.visible){await R(e,t)}}))}async selectItem(e,{recurseParent:t,...i}={}){await this.performRowOperation(e,(async({viewer:s,id:n})=>{var o,a,r,l;const d=await((o=this.controller)===null||o===void 0?void 0:o.fetchNodeAncestors(n))||[];const c=(a=this.stateMap.selectionPath)===null||a===void 0?void 0:a.includes(n);const h=this.getNodeFromRowOrIndex(e);const u=d.length>0?d[0].selected:true;const v=h.selected&&!u;if(t&&(c||v)){const e=d.find((({selected:e})=>!e));if(e!=null){await this.selectItem(e,i);this.lastSelectedItemId=n}else{await M(s,n,i);this.lastSelectedItemId=n}}else if(i.range&&this.lastSelectedItemId!=null){const e=await((r=this.controller)===null||r===void 0?void 0:r.expandParentNodes(n));const t=await((l=this.controller)===null||l===void 0?void 0:l.expandParentNodes(this.lastSelectedItemId));if(t&&e){const n=Math.min(t,e);const o=Math.max(t,e);await D(s,n,o,i)}}else{await M(s,n,i);this.lastSelectedItemId=n}this.stateMap.selectionPath=[...d.map((({id:e})=>(e===null||e===void 0?void 0:e.hex)||"")),n]}))}async deselectItem(e){await this.performRowOperation(e,(async({viewer:e,id:t,node:i})=>{if(i.selected){this.lastSelectedItemId=undefined;await K(e,t)}}))}async isolateItem(e){await this.performRowOperation(e,(async({viewer:e,id:t})=>{await L(e,t,{animationDurationMs:this.operationAnimationDuration})}))}async getRowAtIndex(e){return this.rows[e]}async getRowForItemId(e){var t;const i=await((t=this.controller)===null||t===void 0?void 0:t.expandParentNodes(e));if(i!=null){return this.rows[i]}else{return undefined}}async getRowForEvent(e){const{clientY:t,target:i}=e;if(i!=null&&this.errorDetails==null&&m(this.el,i)&&f(i)){return this.getRowAtClientY(t)}else{return undefined}}getRowAtClientY(e){const t=this.getLayoutElement();const i=t.layoutOffset;const s=Math.floor((e-i+t.scrollOffset)/t.rowHeight);return this.getRowAtIndex(s)}async filterItems(e,t={}){var i;const s={...t,metadataSearchKeys:t.columns};const n=this.getMetadataSearchKeys(s);return(i=this.controller)===null||i===void 0?void 0:i.filter(e,{...t,columns:n})}async selectFilteredItems(e,t){var i,s,n,o,a,r;if(this.viewer!=null){const l=(s=(i=this.searchOptions)===null||i===void 0?void 0:i.metadataSearchKeys)!==null&&s!==void 0?s:this.metadataSearchKeys;const d=l.length>0?l:this.metadataKeys;const c=d.length>0?d:["VERTEX_SCENE_ITEM_NAME"];const h=(o=(n=this.searchOptions)===null||n===void 0?void 0:n.exactMatch)!==null&&o!==void 0?o:this.metadataSearchExactMatch;const u=(r=(a=this.searchOptions)===null||a===void 0?void 0:a.removeHiddenItems)!==null&&r!==void 0?r:false;await j(this.viewer,e,c,h,u,{append:false,...t})}}async fetchMetadataKeys(){var e,t;return(t=(e=this.controller)===null||e===void 0?void 0:e.fetchMetadataKeys())!==null&&t!==void 0?t:[]}disconnectedCallback(){var e,t,i;(e=this.stateMap.viewerDisposable)===null||e===void 0?void 0:e.dispose();(t=this.stateMap.viewerSceneReadyDisposable)===null||t===void 0?void 0:t.dispose();(i=this.controller)===null||i===void 0?void 0:i.cancel()}connectedCallback(){this.connectToViewer()}componentWillLoad(){var e;if(this.controller==null){const{sceneTreeHost:t}=this.getConfig().network;const i=new l.SceneTreeAPIClient(t,this.getConfig().flags.grpcUseStreamingWebSocketTransport?{transport:d}:undefined);this.controller=new c(i,100);(e=this.controller)===null||e===void 0?void 0:e.setMetadataKeys(this.metadataKeys)}this.stateMap.onStateChangeDisposable=this.controller.onStateChange.on((e=>this.handleControllerStateChange(e)));this.connectToViewer();this.updateMissingViewerError()}async componentDidLoad(){var e;this.ensureLayoutDefined();this.updateLayoutElement();const t=this.getLayoutElement();const i=new ResizeObserver((()=>{this.invalidateRows()}));i.observe(t);this.stateMap.resizeObserver=i;this.stateMap.componentLoaded=true;(e=this.controller)===null||e===void 0?void 0:e.setMetadataKeys(this.metadataKeys)}componentWillRender(){this.updateLayoutElement()}render(){return e(r,{key:"11ed5a494b6fb744acfa2f0ebe6796917e670878"},e("div",{key:"c9d51c7a521b5ca0d4948557419012924923449b",class:"header"},e("slot",{key:"964f63d25f7616cac91e46763999bbe445a925f0",name:"header"},e("vertex-scene-tree-toolbar",{key:"ddb069379b2f832016db73389f9f3f92712e5816",class:"search-toolbar"},e("vertex-scene-tree-search",{key:"e315e5bf2a1187ee00a01bdeda4bb7a1a77cc090",controller:this.controller})))),e("slot",{key:"278933238516381029dc104684d0b744a71e021f",name:"partial-filter-results-banner"},this.hasPartialFilterResults&&e("vertex-scene-tree-notification-banner",{key:"dfa351c03bd2ea94bb7ee66d71df25ec6ce29a85",message:this.refreshingResults?"Refreshing results...":"Data loading, refresh for more.",actionLabel:"Refresh",onAction:()=>{var e;return(e=this.controller)===null||e===void 0?void 0:e.refreshFilter()}})),this.errorDetails!=null&&this.renderError(this.errorDetails),this.errorDetails==null&&e("div",{key:"d0ee52c9ededab3e8c1abe7be83bac8b69729afc",class:"rows-scroll"},this.showLoader&&e("slot",{key:"479b006dd0eac8225801c6703b29fe9be6a74630",name:"loading"},e("vertex-viewer-spinner",{key:"02468107bb106a15ccb228b37c415c576ff41115",class:"loading",size:"md"})),e("slot",{key:"788c7bf755721646d517f8c2f4fed1ed7a1d0865"}),this.showEmptyResults&&e("slot",{key:"96e6b9f178329850766e8bb3c74dfd0bb63bae2b",name:"empty-results"},e("div",{key:"6c987067351a4aaf28c45580767076bbda75ee4d",class:"empty-results"},"No Results Found."))),e("div",{key:"9bb3f5960dd504940a45847ed813f8beda5e92e8",class:"footer"},e("slot",{key:"454339799adadd66ac288c1484c5ad70b864de96",name:"footer"})))}renderError(t){if(t.code!==h.SCENE_TREE_DISABLED){return e(k,{details:t},e("button",{class:"button button-secondary",onClick:()=>this.retryConnectToViewer(),disabled:this.attemptingRetry},"Retry"))}else{return e(k,{details:t})}}handleViewerChanged(e,t){if(!this.stateMap.componentLoaded){return}this.connectToViewer()}handleControllerChanged(e){var t;if(!this.stateMap.componentLoaded){return}(t=this.stateMap.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose();this.stateMap.onStateChangeDisposable=e.onStateChange.on((e=>this.handleControllerStateChange(e)));e.setMetadataKeys(this.metadataKeys)}handleMetadataKeysChanged(){var e;(e=this.controller)===null||e===void 0?void 0:e.setMetadataKeys(this.metadataKeys)}retryConnectToViewer(){this.attemptingRetry=true;this.errorDetails=undefined;this.connectToViewer()}connectToViewer(){var e,t,i;(e=this.stateMap.viewerDisposable)===null||e===void 0?void 0:e.dispose();(t=this.stateMap.viewerSceneReadyDisposable)===null||t===void 0?void 0:t.dispose();if(this.viewer==null&&this.viewerSelector!=null){this.viewer=document.querySelector(this.viewerSelector)}if(this.viewer!=null){this.clearMissingViewerError();const e=async()=>{const e=this.getLayoutElement();await e.attemptComputeCellHeight()};this.viewer.addEventListener("sceneReady",e);this.stateMap.viewerDisposable=(i=this.controller)===null||i===void 0?void 0:i.connectToViewer(this.viewer);this.stateMap.viewerSceneReadyDisposable={dispose:()=>{var t;return(t=this.viewer)===null||t===void 0?void 0:t.removeEventListener("sceneReady",e)}}}else{this.attemptingRetry=false;if(this.stateMap.componentLoaded){this.updateMissingViewerError()}}}updateMissingViewerError(){if(this.viewer==null){this.errorDetails=new u("MISSING_VIEWER",h.MISSING_VIEWER)}}clearMissingViewerError(){var e;if(((e=this.errorDetails)===null||e===void 0?void 0:e.code)===h.MISSING_VIEWER){this.errorDetails=undefined}}scheduleClearUnusedData(){if(this.stateMap.idleCallbackId!=null){window.cancelIdleCallback(this.stateMap.idleCallbackId)}this.stateMap.idleCallbackId=window.requestIdleCallback((e=>{var t,i,s;const n=(t=e.timeRemaining)===null||t===void 0?void 0:t.call(e);if(n==null||n>=A){const e=this.getLayoutElement();const t=e.viewportStartIndex;const n=e.viewportEndIndex;const[o,a]=((i=this.controller)===null||i===void 0?void 0:i.getPageIndexesForRange(t,n))||[];if(o!=null&&a!=null){(s=this.controller)===null||s===void 0?void 0:s.invalidatePagesOutsideRange(o,a,50)}}else{this.scheduleClearUnusedData()}}))}handleControllerStateChange(e){this.showLoader=!!e.shouldShowLoading;this.showEmptyResults=!!e.shouldShowEmptyResults;this.rows=e.rows;this.totalRows=e.totalRows;this.hasPartialFilterResults=!!e.isPartialFilterResponse;this.refreshingResults=!!e.isSearching;if(e.connection.type==="failure"){this.errorDetails=e.connection.details;this.connectionError.emit(e.connection.details)}else if(e.connection.type==="disconnected"){this.errorDetails=new u("DISCONNECTED",h.DISCONNECTED)}else{this.errorDetails=undefined}if(e.connection.type==="connected"||e.connection.type==="failure"){this.attemptingRetry=false}}getNodeFromRowOrIndex(e){const t=typeof e==="number"?this.rows[e]:e;if(t==null){throw new Error(`Cannot perform scene tree operation. Row not found.`)}return w(t)?t.node:t}async performRowOperation(e,t){const i=this.getNodeFromRowOrIndex(e);if(i.id==null){throw new Error(`Cannot perform scene tree operation. ID is undefined.`)}if(this.viewer==null){throw new Error(`Cannot perform scene tree operation. Cannot get reference to viewer.`)}await t({viewer:this.viewer,id:i.id.hex,node:i})}async handleSearch(e){var t,i,s,n;const o=this.getMetadataSearchKeys(this.searchOptions);const a=(i=(t=this.searchOptions)===null||t===void 0?void 0:t.exactMatch)!==null&&i!==void 0?i:this.metadataSearchExactMatch;const r=(n=(s=this.searchOptions)===null||s===void 0?void 0:s.removeHiddenItems)!==null&&n!==void 0?n:false;try{await this.filterItems(e.detail,{columns:o,exactMatch:a,removeHiddenItems:r})}catch(e){console.error("Failed to filter tree with exception: ",e)}}async handleCellLoaded(){if(!this.firstCellRendered&&this.rows.length>0){this.firstCellRendered=true;this.firstRowRendered.emit()}}getScrollToPosition(e,t){var i;const s=this.getLayoutElement();const n=Math.max(0,Math.min(e,this.totalRows-1));const o=(i=s.layoutHeight)!==null&&i!==void 0?i:0;const a=s.rowHeight;if(t==="start"){return n*a}else if(t==="middle"){const e=n*a+a/2;return e-o/2}else{const e=n*a+a;return e-o}}getConfig(){return v(this.configEnv,this.config)}ensureLayoutDefined(){let e=this.el.querySelector("vertex-scene-tree-table-layout");if(e==null){e=document.createElement("vertex-scene-tree-table-layout");e.innerHTML=`\n <vertex-scene-tree-table-column>\n <template>\n <vertex-scene-tree-table-cell prop:value="{{row.node.name}}" expand-toggle isolate-button visibility-toggle></vertex-scene-tree-table-cell>\n </template>\n </vertex-scene-tree-table-column>\n `;this.el.appendChild(e)}this.stateMap.layoutEl=e}updateLayoutElement(){const e=this.stateMap.layoutEl;if(e!=null){e.rows=this.rows;e.tree=this.el;e.totalRows=this.totalRows;e.controller=this.controller;e.rowData=this.rowData}else if(!this.stateMap.componentLoaded&&this.totalRows>0){console.debug("Scene tree has rows, but the component has not yet rendered")}}getLayoutElement(){if(this.stateMap.layoutEl!=null){return this.stateMap.layoutEl}else{throw new Error("Layout element is undefined")}}getMetadataSearchKeys(e){var t,i;const s=(t=e===null||e===void 0?void 0:e.metadataSearchKeys)!==null&&t!==void 0?t:this.metadataSearchKeys;const n=(i=e===null||e===void 0?void 0:e.exactMatch)!==null&&i!==void 0?i:this.metadataSearchExactMatch;if(n){const e=s.length>0?s:[b];return e}else if(s.length>0){return s}return undefined}get el(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],controller:[{handleControllerChanged:0}],metadataKeys:[{handleMetadataKeysChanged:0}]}}static get style(){return T()}},[257,"vertex-scene-tree",{overScanCount:[2,"over-scan-count"],viewerSelector:[1,"viewer-selector"],viewer:[1040],rowData:[16],config:[1],configEnv:[1,"config-env"],controller:[1040],searchOptions:[1040],metadataSearchExactMatch:[1028,"metadata-search-exact-match"],metadataSearchKeys:[1040],metadataKeys:[16],operationAnimationDuration:[2,"operation-animation-duration"],rows:[32],totalRows:[32],showLoader:[32],showEmptyResults:[32],stateMap:[32],errorDetails:[32],hasPartialFilterResults:[32],refreshingResults:[32],attemptingRetry:[32],invalidateRows:[64],scrollToIndex:[64],scrollToItem:[64],expandAll:[64],collapseAll:[64],expandItem:[64],collapseItem:[64],toggleExpandItem:[64],toggleItemVisibility:[64],hideItem:[64],showItem:[64],selectItem:[64],deselectItem:[64],isolateItem:[64],getRowAtIndex:[64],getRowForItemId:[64],getRowForEvent:[64],getRowAtClientY:[64],filterItems:[64],selectFilteredItems:[64],fetchMetadataKeys:[64]},[[0,"search","handleSearch"],[0,"cellLoaded","handleCellLoaded"]],{viewer:[{handleViewerChanged:0}],controller:[{handleControllerChanged:0}],metadataKeys:[{handleMetadataKeysChanged:0}]}]);function V(){if(typeof customElements==="undefined"){return}const e=["vertex-scene-tree","vertex-scene-tree-notification-banner","vertex-scene-tree-search","vertex-scene-tree-table-layout","vertex-scene-tree-toolbar","vertex-viewer-icon","vertex-viewer-spinner"];e.forEach((e=>{switch(e){case"vertex-scene-tree":if(!customElements.get(i(e))){customElements.define(i(e),F)}break;case"vertex-scene-tree-notification-banner":if(!customElements.get(i(e))){y()}break;case"vertex-scene-tree-search":if(!customElements.get(i(e))){g()}break;case"vertex-scene-tree-table-layout":if(!customElements.get(i(e))){p()}break;case"vertex-scene-tree-toolbar":if(!customElements.get(i(e))){x()}break;case"vertex-viewer-icon":if(!customElements.get(i(e))){I()}break;case"vertex-viewer-spinner":if(!customElements.get(i(e))){C()}break}}))}V();const z=F;const N=V;export{z as VertexSceneTree,N as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-scene-tree.js.map