@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,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{r as t,c as e,h as i,H as s,a as n}from"./p-CCVkga9Q.js";import{c as o}from"./p-Dw4-tG-V.js";import{d as r,r as a}from"./p-BxtKMwBH.js";import{_ as h,p as l}from"./p-CkIzrpO0.js";import{a as c}from"./p-DX6pEG54.js";import{i as d}from"./p-CiSHWNC4.js";import{E as u}from"./p-Ct0GdHoc.js";import"./p-CG9AChtV.js";const f=()=>`.notification-banner{background-color:var(--blue-200);padding-top:0px;padding-bottom:0px;padding-right:16px;padding-left:8px;display:flex;justify-content:space-between;font-size:0.875rem;line-height:0.5;color:var(--neutral-600)}.notification-banner-info{display:flex;align-items:center;gap:8px}.notification-banner-info .icon{color:var(--blue-600)}.notification-banner-actions{display:flex;align-items:center}.notification-banner-button{background:none;border:none;padding:0;margin:0;cursor:pointer;color:var(--blue-600);font-size:0.875rem;display:flex;align-items:center}.notification-banner-button:hover{color:var(--blue-800)}`;const v=class{constructor(i){t(this,i);this.action=e(this,"action")}render(){return i(s,{key:"faf3e2e84a60db63b158747e649f43900b1f0930"},i("div",{key:"9180eb1f7472d5a5d0742117dee5b75734ac3232",class:"notification-banner"},i("div",{key:"02171b4cc5f7e5ef924eb96e4ba0403f3fd59f4e",class:"notification-banner-info"},i("vertex-viewer-icon",{key:"caa522489ce767d52c07d7007802c8fb40457f6d",class:"icon",name:"info",size:"sm"}),i("p",{key:"0836efb7b9f56f926315ba232fe1b4d8fa52aefe"},this.message)),this.actionLabel!=null&&i("div",{key:"c5ae434c28810c205ab5806a0689cbaa371c0933",class:"notification-banner-actions"},i("button",{key:"d3fcbe8eb211ac453701c7fd179becfc03f8b1c2",class:"notification-banner-button",onClick:()=>this.action.emit()},this.actionLabel))))}};v.style=f();const p=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{--scene-tree-search-search-icon-offset:8px;--scene-tree-search-clear-button-offset:8px;--scene-tree-search-input-padding:0.5rem 32px;--scene-tree-search-input-border:none;--scene-tree-search-input-border-radius:0.25rem;--scene-tree-search-input-background:none;--scene-tree-search-focused-input-background:var(--neutral-200);--scene-tree-search-focused-input-outline:none;display:block;width:100%;font-size:0.875rem}.root{width:100%;position:relative}.input{background:var(--scene-tree-search-input-background);border:var(--scene-tree-search-input-border);border-radius:var(--scene-tree-search-input-border-radius);box-sizing:border-box;font-size:inherit;padding:var(--scene-tree-search-input-padding);outline:none;width:100%}.input.background{background:var(--scene-tree-search-focused-input-background);outline:var(--scene-tree-search-focused-input-outline)}.overlay{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.overlay-clear{display:none;right:var(--scene-tree-search-clear-button-offset)}.overlay-clear.show{display:flex}.icon{color:var(--neutral-700)}.icon-search{position:absolute;left:var(--scene-tree-search-search-icon-offset);pointer-events:none}.clear-btn{display:flex;align-items:center;justify-content:center;pointer-events:initial;cursor:pointer}.clear-btn:hover{color:var(--neutral-800)}.clear-btn:disabled{pointer-events:none;opacity:0.5}`;const b=class{constructor(i){t(this,i);this.search=e(this,"search");this.searchCompleted=e(this,"searchCompleted");this.disabled=false;this.placeholder=undefined;this.value="";this.focused=false;this.isSearching=false;this.handleTextInput=t=>{const e=t.target;this.value=e.value;if(this.debounce!=null||this.value===""){this.emitCurrentValue()}};this.handleTextFocus=()=>{this.focused=true};this.handleTextBlur=()=>{var t;this.focused=false;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();if(this.value!==this.lastEmittedValue){this.emitCurrentValue()}};this.handleKeyPress=t=>{var e;if(t.key==="Enter"){(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue()}};this.handleClear=t=>{var e;t.preventDefault();this.value="";(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue();this.setFocus()}}async setFocus(){var t,e;if(typeof((t=this.inputEl)===null||t===void 0?void 0:t.focus)==="function"){(e=this.inputEl)===null||e===void 0?void 0:e.focus()}}controllerChanged(t){this.setupController()}componentDidLoad(){this.handleDebounceChanged();this.setupController()}disconnectedCallback(){var t;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose()}async clear(){var t;this.value="";(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();this.emitCurrentValue()}render(){return i(s,{key:"a147f41b6d1bee253edfea73854697fd48ce713b"},i("div",{key:"68fb61c2e5310d6f52c696e466661fe75b8119fd",class:"root"},i("div",{key:"a19f9bebb23dd3c89547d36dcb251ec8525f3aae",class:"overlay icon icon-search"},i("slot",{key:"99a2c8c0d48b01e43b2b8717a73652845298442a",name:"search-icon"},this.isSearching?i("vertex-viewer-spinner",{slot:"search-icon",size:"xs"}):i("vertex-viewer-icon",{name:"search",size:"sm"}))),i("input",{key:"feb34cbc91c5813bee85a32c60bf28da1d6069b0",class:o("input",{background:this.focused||this.value.length>0}),type:"text",ref:t=>this.inputEl=t,placeholder:this.placeholder,disabled:this.disabled,value:this.value,onInput:this.handleTextInput,onFocus:this.handleTextFocus,onBlur:this.handleTextBlur,onKeyPress:this.handleKeyPress}),i("div",{key:"0c06291d8c4e7b88e67b720951cd0c46ddd1daf6",class:o("overlay overlay-clear",{show:this.value.length>0})},i("button",{key:"c0a1394058c36939f167d84b42070939fad85f83",class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},i("slot",{key:"afa2e6eb99ddcbb2d1e53138296264ae7620dc51",name:"clear-icon"},i("vertex-viewer-icon",{key:"faa225a4caa66374a69e88fb9bb5c48af7a2d4ed",name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){var t,e;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();const i=r(this.search,(e=this.debounce)!==null&&e!==void 0?e:0);this.search=i;this.searchDisposable=i}setupController(){var t,e;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose();this.onStateChangeDisposable=(e=this.controller)===null||e===void 0?void 0:e.onStateChange.on((t=>{if(this.isSearching&&!t.isSearching){this.searchCompleted.emit(this.value)}this.isSearching=t.isSearching}))}emitCurrentValue(){this.lastEmittedValue=this.value;this.search.emit(this.value)}static get watchers(){return{controller:[{controllerChanged:0}]}}};b.style=p();function m(t){return t.toLowerCase()}var y=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var w=/[^A-Z0-9]+/gi;function g(t,e){if(e===void 0){e={}}var i=e.splitRegexp,s=i===void 0?y:i,n=e.stripRegexp,o=n===void 0?w:n,r=e.transform,a=r===void 0?m:r,h=e.delimiter,l=h===void 0?" ":h;var c=x(x(t,s,"$1\0$2"),o,"\0");var d=0;var u=c.length;while(c.charAt(d)==="\0")d++;while(c.charAt(u-1)==="\0")u--;return c.slice(d,u).split("\0").map(a).join(l)}function x(t,e,i){if(e instanceof RegExp)return t.replace(e,i);return e.reduce((function(t,e){return t.replace(e,i)}),t)}function k(t,e){var i=t.charAt(0);var s=t.substr(1).toLowerCase();if(e>0&&i>="0"&&i<="9"){return"_"+i+s}return""+i.toUpperCase()+s}function C(t,e){if(e===void 0){e={}}return g(t,h({delimiter:"",transform:k},e))}function z(t,e){if(e===0)return t.toLowerCase();return k(t,e)}function D(t,e){if(e===void 0){e={}}return C(t,h({transform:z},e))}const $=/{{(.+)}}/;class R{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((e=>e.bind(t)))}}class _{constructor(t,e){this.node=t;this.expr=e}}class M extends _{constructor(t,e){super(t,e)}bind(t){const e=T(t,this.expr);if(e!==this.node.textContent){this.node.textContent=e}}}class E extends _{constructor(t,e,i){super(t,e);this.attr=i}bind(t){const e=T(t,this.expr);const i=this.node.getAttribute(this.attr);if(i!==e){this.node.setAttribute(this.attr,e)}}}class H extends _{constructor(t,e,i){super(t,e);this.prop=i}bind(t){const e=A(t,this.expr);const i=this.node[this.prop];if(i!==e){this.node[this.prop]=e}}}class L extends _{constructor(t,e,i){super(t,e);this.eventName=i}bind(t){var e;const i=P(this.expr);if(i!=null){(e=this.disposable)===null||e===void 0?void 0:e.dispose();const s=W(t,i,true);this.node.addEventListener(this.eventName,s);this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,s)}}}}}function V(t){const e=[];if(t.nodeType===Node.ELEMENT_NODE){const i=t;const s=j(i);s.forEach((t=>{if(t.name.startsWith("event:")){const s=D(t.name.replace("event:",""));e.push(new L(i,t.value,s))}else if(t.name.startsWith("attr:")){e.push(new E(i,t.value,t.name.replace("attr:","")))}else if(t.name.startsWith("prop:")){const s=D(t.name.replace("prop:",""));e.push(new H(i,t.value,s))}}))}else if(t.nodeType===Node.TEXT_NODE&&t.textContent!=null&&$.test(t.textContent)){e.push(new M(t,t.textContent))}for(let i=0;i<t.childNodes.length;i++){e.push(...V(t.childNodes[i]))}return e}function j(t){return Array.from(t.attributes).filter((t=>$.test(t.value)))}function P(t){const e=$.exec(t);return e!=null?e[1]:undefined}function T(t,e){const i=P(e);if(i!=null){const s=W(t,i,true);return e.replace(`{{${i}}}`,s===null||s===void 0?void 0:s.toString())}else{return e}}function A(t,e){const i=P(e);if(i!=null){const e=W(t,i,true);return e}else{return e}}function W(t,e,i=false){const[s,...n]=e.split(".");if(i&&n.length===0){return t}else if(i&&n.length>0){return W(t,n.join("."),false)}else{const e=t[s];if(n.length>0){return W(e,n.join("."),false)}else{return e}}}class I{constructor(t,e){this.container=t;this.elementFactory=e;this.instanceMap=new Map;this.elements=[]}swapHeadToTail(t){const e=this.elements.splice(0,t);this.elements.splice(this.elements.length,0,...e);return this.elements.concat()}swapTailToHead(t){const e=this.elements.splice(-t,t);this.elements.splice(0,0,...e);return this.elements.concat()}updateElements(t){const e=t-this.elements.length;if(e>0){for(let t=0;t<e;t++){this.createElement()}}else{for(let t=0;t<-e;t++){this.deleteElement()}}return this.elements.concat()}updateData(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);const n=t(i);s===null||s===void 0?void 0:s.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t;this.updateElements(0)}iterateElements(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);t(e,s.bindings,i)}))}createElement(){const t=this.elementFactory();this.elements.push(t.element);this.instanceMap.set(t.element,t);this.container.append(t.element);return t}deleteElement(){const t=this.elements.pop();if(t!=null){this.instanceMap.delete(t);t.remove()}}}function G(t){const e=t.content.cloneNode(true);const i=e.firstElementChild;const s=new R(V(e));return{element:i,bindings:s}}function N(t){var e;return(e=t.getBoundingClientRect().top)!==null&&e!==void 0?e:0}function Z(t){return t.clientWidth}function B(t,e,i){t.scrollTo({top:e,...i})}class F{constructor(){this.onStateChange=new u}setHovered(t){this.onStateChange.emit(t)}stateChanged(t){return this.onStateChange.on(t)}}function O(t,e,i=200){window.clearTimeout(e);return window.setTimeout(t,i)}const K=()=>`:host{position:relative;display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;font-size:0.825rem;--scene-tree-table-row-padding:2px 0px;--scene-tree-table-column-gap:0.5rem;--scene-tree-table-column-resize-cursor:col-resize}.header{position:relative;display:grid;width:100%;border-bottom:var(--scene-tree-toolbar-separator)}.table{position:relative;display:grid;width:100%;height:100%;overflow:auto}.resize-overlay{position:absolute;top:0;cursor:var(--scene-tree-table-column-resize-cursor);z-index:1000;width:100%;height:100%}.divider-overlay{position:absolute;top:0;display:grid;pointer-events:none;z-index:2000;width:100%;height:100%}`;const S=class{constructor(i){t(this,i);this.layoutRendered=e(this,"layoutRendered");this.columnsResized=e(this,"columnsResized");this.rows=[];this.totalRows=0;this.rowHeight=24;this.overScanCount=25;this.layoutOffset=0;this.scrollOffset=0;this.viewportStartIndex=0;this.viewportEndIndex=0;this.columnGridLayout="1fr";this.columnGridFixedLayout="";this.isComputingCellHeight=true;this.isScrolling=false;this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]};this.lastStartIndex=0;this.columnElements=[];this.cellHoverController=new F;this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1;const e=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex;this.iterateColumns(((i,s,n)=>{s.updateElements(t);if(e>0){s.swapHeadToTail(e)}else{s.swapTailToHead(-e)}i.style.minHeight=`${this.rowHeight*this.totalRows}px`;const o=n===0?t=>`calc(${t} * 0.5rem)`:()=>`0`;s.iterateElements(((t,e,i)=>{const s=this.stateMap.viewportRows[i];if(d(s)){this.updateCell(s,t,e,i,o)}}))}))};this.updateCell=(t,e,i,s,n)=>{e.style.position="absolute";e.style.top=`${(this.viewportStartIndex+s)*this.rowHeight}px`;e.style.boxSizing="border-box";e.style.height=`${this.rowHeight}px`;e.style.width="100%";e.style.paddingLeft=n(t.node.depth);e.tree=this.tree;e.node=t.node;e.hoverController=this.cellHoverController;e.isScrolling=this.isScrolling;i.bind(t)};this.updateLayoutPosition=()=>{a((()=>{if(this.tableElement!=null){this.layoutOffset=N(this.tableElement)}}))};this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((e=>e*t));this.columnsResized.emit(this.stateMap.columnWidths)}};this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((e=>e/t))}};this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}));const t=this.getLayoutWidth();if(t!=null){const e=this.stateMap.columnWidths.reduce(((t,e)=>t+e),0);const i=this.stateMap.columnWidths.map((i=>i*(t/e)));this.stateMap.columnWidthPercentages=i.map((e=>e/t));this.stateMap.columnWidths=i}};this.updateColumnElements=()=>{this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column"))};this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const e={index:0,node:{id:{hex:""},name:"Dummy row",expanded:false,selected:false,visible:false,partiallyVisible:false,isLeaf:false,depth:0,columnsList:[],filterHit:false,hasGeometry:false,phantom:false,endItem:false},metadata:{},data:{}};const{bindings:i,element:s}=this.createColumnCellInstance(this.columnElements[0]);i.bind(e);s.style.visibility="hidden";(t=this.columnElements[0])===null||t===void 0?void 0:t.appendChild(s);if(typeof s.componentOnReady==="function"){await s.componentOnReady()}let n=s.clientHeight;if(n===0){n=await new Promise((t=>{setTimeout((()=>t(s.getBoundingClientRect().height)),5)}))}this.rowHeight=n!==null&&n!==void 0?n:this.rowHeight;s.remove();this.isComputingCellHeight=this.rowHeight===0}};this.computeHeaderHeight=()=>{var t;if(this.stateMap.headerHeight==null){this.stateMap.headerHeight=(t=this.headerElement)===null||t===void 0?void 0:t.getBoundingClientRect().height;this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`)}};this.computeColumnGridLayout=()=>{if(this.stateMap.columnWidths.length===0){this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}))}const t=this.getLayoutWidth();if(t!=null){if(this.stateMap.columnWidthPercentages.length===0){this.stateMap.columnWidthPercentages=this.columnElements.map((e=>{var i;return((i=e.initialWidth)!==null&&i!==void 0?i:100)/t}))}}this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,e)=>`${t} ${e}px`),"")} 1fr`;this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,e)=>`${t} ${e}px`),"")}`};this.bindHeaderData=()=>{if(this.stateMap.headerInstances==null){this.stateMap.headerInstances=this.columnElements.map(((t,e)=>{var i;const s=this.createHeaderInstance(t);if(s!=null){s.element.style.paddingRight=e===this.columnElements.length-1?`0`:`var(--scene-tree-table-column-gap)`;s.element.slot="header";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element)}return s})).filter((t=>t!=null))}if(this.stateMap.headerDividerInstances==null){this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,e)=>{var i;const s=this.createDividerInstance();s.element.slot="divider";s.element.style.position="absolute";s.element.style.right="0";s.element.style.pointerEvents="auto";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element);return s}))}};this.rebindHeaderData=()=>{var t,e;this.removeDividerDragListeners();(t=this.stateMap.headerInstances)===null||t===void 0?void 0:t.forEach((t=>t.element.remove()));(e=this.stateMap.headerDividerInstances)===null||e===void 0?void 0:e.forEach((t=>t.element.remove()));this.stateMap.headerInstances=undefined;this.stateMap.headerDividerInstances=undefined;this.bindHeaderData();this.addDividerDragListeners()};this.createDividerPointerDownHandler=t=>e=>{var i,s;e.preventDefault();e.stopPropagation();this.lastDividerPointerPosition=l.create(Math.floor(e.clientX),Math.floor(e.clientY));this.resizingColumnIndex=t;(s=(i=this.stateMap.headerDividerInstances)===null||i===void 0?void 0:i[t])===null||s===void 0?void 0:s.element.classList.add("dragging");window.addEventListener("pointermove",this.handleDividerPointerMove);window.addEventListener("pointerup",this.handleDividerPointerUp)};this.handleDividerPointerMove=t=>{const e=l.create(Math.floor(t.clientX),Math.floor(t.clientY));if(this.lastDividerPointerPosition!=null&&this.resizingColumnIndex!=null){const t=this.resizingColumnIndex;const i=l.subtract(this.lastDividerPointerPosition,e);if(Math.abs(i.x)>=1&&this.isValidResize(i,t)){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t?e-i.x:e));if(t+1<this.stateMap.columnWidths.length){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t+1?e+i.x:e))}this.lastDividerPointerPosition=e;this.computeColumnGridLayout()}}};this.handleDividerPointerUp=()=>{var t,e;if(this.resizingColumnIndex!=null){(e=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t[this.resizingColumnIndex])===null||e===void 0?void 0:e.element.classList.remove("dragging")}this.lastDividerPointerPosition=undefined;this.resizingColumnIndex=undefined;this.recomputeColumnPercentages();this.recomputeColumnWidths();window.removeEventListener("pointermove",this.handleDividerPointerMove);window.removeEventListener("pointerup",this.handleDividerPointerUp)};this.isValidResize=(t,e)=>{var i,s,n,o;const r=this.columnElements[e];const a=this.columnElements[e+1];const h=this.stateMap.columnWidths[e];const l=this.stateMap.columnWidths[e+1];const c=(i=r.minWidth)!==null&&i!==void 0?i:0;const d=(s=r.maxWidth)!==null&&s!==void 0?s:Number.MAX_SAFE_INTEGER;const u=(n=a.minWidth)!==null&&n!==void 0?n:0;const f=(o=a.maxWidth)!==null&&o!==void 0?o:Number.MAX_SAFE_INTEGER;const v=h-t.x>c&&h-t.x<d;const p=a!=null?l+t.x>u&&l+t.x<f:true;return v&&p};this.handleScrollChanged=async t=>{this.isScrolling=true;this.scrollTimer=O((()=>{this.isScrolling=false}),this.scrollTimer);this.scrollOffset=t.target.scrollTop;await this.computeAndUpdateViewportRows()}}componentWillLoad(){this.updateColumnElements();this.createPools();this.initializeColumnLayout();this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=undefined;this.computeHeaderHeight();this.updateLayoutPosition()}));this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition();this.clearLayoutHeight();this.clearLayoutWidth();this.recomputeColumnWidths();this.computeColumnGridLayout()}))}async componentDidLoad(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.addEventListener("scroll",this.handleScrollChanged,{passive:true});if(this.headerElement!=null){(e=this.headerResizeObserver)===null||e===void 0?void 0:e.observe(this.headerElement)}(i=this.resizeObserver)===null||i===void 0?void 0:i.observe(this.hostEl);await Promise.resolve();await this.initializeMeasuredLayout()}async componentWillRender(){await this.computeAndUpdateViewportRows()}componentDidRender(){this.layoutColumns();this.layoutRendered.emit()}async componentDidUpdate(){if(this.isComputingCellHeight){await this.computeCellHeight()}}disconnectedCallback(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.removeEventListener("scroll",this.handleScrollChanged);this.removeDividerDragListeners();(e=this.headerResizeObserver)===null||e===void 0?void 0:e.disconnect();(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect();this.stateMap.columnWidths=[];this.stateMap.columnWidthPercentages=[]}async handleViewportRowsPropsChanged(){await this.computeAndUpdateViewportRows()}async scrollToPosition(t,e){if(this.tableElement!=null){B(this.tableElement,t,e)}}async attemptComputeCellHeight(){this.computeCellHeight()}render(){return i(s,{key:"d03ad68c3f972ae06117323ee2d93ea72fba68df"},i("div",{key:"f0bf6530a25bf37a898792c2547e5617d96f0e8f",class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},i("slot",{key:"859ae58af0f796e3334c02e3a32613fa6eb46aa3",name:"header"})),i("div",{key:"0554485cbc8a6640a76f2999c783fe8802db0535",class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},i("slot",{key:"03bbe18d7b24f8d54816e2c967990fda96c85c1d",onSlotchange:()=>{this.ensureDividerTemplateDefined();this.updateColumnElements();this.recreateColumnPools();this.computeInitialColumnWidths();this.rebindHeaderData();this.computeColumnGridLayout()}})),i("div",{key:"a70e34447a0414fd268233cb3cdc41389a339990",class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},i("slot",{key:"cf0f78b06877eca19a28c9b49f1182e79c57e78f",name:"divider"})),this.resizingColumnIndex!=null&&i("div",{key:"12ef4a77e9921c018f0598b51a80764c1649a5e5",class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();const e=t!=null&&t>0&&!this.isComputingCellHeight;if(e){const e=Math.ceil(t/this.rowHeight);const i=Math.floor(this.scrollOffset/this.rowHeight);const s=i+e;const n=Math.max(0,i-this.overScanCount);const o=Math.min(this.totalRows-1,s+this.overScanCount);const r=this.getViewportRows(n,o);this.viewportStartIndex=n;this.viewportEndIndex=o;this.stateMap.viewportRows=r}}initializeColumnLayout(){this.computeInitialColumnWidths();this.computeColumnGridLayout();this.ensureDividerTemplateDefined();this.rebindHeaderData()}async initializeMeasuredLayout(){await this.computeCellHeight();this.computeHeaderHeight()}async computeAndUpdateViewportRows(){var t;this.computeViewportRows();if(((t=this.controller)===null||t===void 0?void 0:t.isConnected)&&this.totalRows>0){await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}}createPools(){if(this.stateMap.columnElementPools==null){this.stateMap.columnElementPools=this.columnElements.reduce(((t,e)=>t.set(e,new I(e,(()=>this.createColumnCellInstance(e))))),new WeakMap)}}recreateColumnPools(){this.columnElements.forEach((t=>{var e,i,s;if(((e=this.stateMap.columnElementPools)===null||e===void 0?void 0:e.get(t))==null){(i=this.stateMap.columnElementPools)===null||i===void 0?void 0:i.set(t,new I(t,(()=>this.createColumnCellInstance(t))))}else{(s=this.stateMap.columnElementPools.get(t))===null||s===void 0?void 0:s.updateElementFactory((()=>this.createColumnCellInstance(t)))}}))}iterateColumns(t){this.columnElements.forEach(((e,i)=>{var s;const n=(s=this.stateMap.columnElementPools)===null||s===void 0?void 0:s.get(e);if(n!=null){t(e,n,i)}else{throw new Error("Cannot find pool for column")}}))}ensureDividerTemplateDefined(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t==null){const t=document.createElement("template");t.slot="divider";t.innerHTML=`\n <vertex-scene-tree-table-resize-divider slot="divider">\n </vertex-scene-tree-table-resize-divider>\n `;this.hostEl.appendChild(t)}}createHeaderInstance(t){const e=t.querySelector('template[slot="header"]');if(e!=null){return G(e)}}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t!=null){return G(t)}else{throw new Error("Table is missing divider template element")}}createColumnCellInstance(t){const e=t.querySelector('template:not([slot="header"])');if(e!=null){return G(e)}else{throw new Error("Column is missing cell template element")}}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.map(((t,e)=>{const i=this.createDividerPointerDownHandler(e);t.element.addEventListener("pointerdown",i);return i}))}removeDividerDragListeners(){var t;if(this.stateMap.headerDividerListeners!=null){const e=this.stateMap.headerDividerListeners;(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.forEach(((t,i)=>{const s=e[i];if(s!=null){t.element.removeEventListener("pointerdown",s)}}));this.stateMap.headerDividerListeners=undefined}}getViewportRows(t,e){const i=this.rows.slice(t,e+1);return i.map((t=>t!=null?this.populateRowData(t):t))}populateRowData(t){var e;if(this.rowData!=null&&t!=null){const i=((e=this.rowData)===null||e===void 0?void 0:e.call(this,t))||{};return{...t,data:i}}else{return t}}getLayoutHeight(){if(this.layoutHeight==null&&this.tableElement!=null){this.layoutHeight=c(this.tableElement)}return this.layoutHeight}getLayoutWidth(){if(this.layoutWidth==null){const t=Z(this.hostEl);if(t>0){this.layoutWidth=t}}return this.layoutWidth}clearLayoutHeight(){this.layoutHeight=undefined}clearLayoutWidth(){this.layoutWidth=undefined}get hostEl(){return n(this)}static get watchers(){return{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}}};S.style=K();const U=()=>`:host{--scene-tree-toolbar-content-gap:8px;display:flex;padding:0.5rem}.content{display:flex;align-items:center}.content-primary{width:100%}::slotted(:not(:first-child)){margin-left:var(--scene-tree-toolbar-content-gap)}`;const Q=class{constructor(e){t(this,e)}render(){return i(s,{key:"7a3286d46171832c1fae126645568899b1004fa1"},i("div",{key:"ac81e6da67a1c41dbb30a23ec9658ddbac0cd9ea",class:"content"},i("slot",{key:"1993b705fbeeca9f7fee213662981403d89ea4c2",name:"before"})),i("div",{key:"ee8b5cf8eccb88a4b0b029c6f3a33c9c5f20ef09",class:"content content-primary"},i("slot",{key:"2cb220546b02b8dd353aa0270bbfa7f51dc0ca95"})),i("div",{key:"cd0c977e5f42f1dbacaad42306b1705a97b50ab9",class:"content"},i("slot",{key:"0f3af32f24077fa6d0bda7cc1fce3b9921b49f70",name:"after"})))}};Q.style=U();export{v as vertex_scene_tree_notification_banner,b as vertex_scene_tree_search,S as vertex_scene_tree_table_layout,Q as vertex_scene_tree_toolbar};
5
- //# sourceMappingURL=p-302f2078.entry.js.map
4
+ import{r as t,c as e,h as i,H as s,a as n}from"./p-CCVkga9Q.js";import{c as o}from"./p-Dw4-tG-V.js";import{d as r,r as a}from"./p-BxtKMwBH.js";import{_ as h,p as l}from"./p-CkIzrpO0.js";import{a as c}from"./p-DX6pEG54.js";import{i as d}from"./p-CiSHWNC4.js";import{E as u}from"./p-Ct0GdHoc.js";import"./p-CG9AChtV.js";const f=()=>`.notification-banner{background-color:var(--blue-200);padding-top:0px;padding-bottom:0px;padding-right:16px;padding-left:8px;display:flex;justify-content:space-between;font-size:0.875rem;line-height:0.5;color:var(--neutral-600)}.notification-banner-info{display:flex;align-items:center;gap:8px}.notification-banner-info .icon{color:var(--blue-600)}.notification-banner-actions{display:flex;align-items:center}.notification-banner-button{background:none;border:none;padding:0;margin:0;cursor:pointer;color:var(--blue-600);font-size:0.875rem;display:flex;align-items:center}.notification-banner-button:hover{color:var(--blue-800)}`;const v=class{constructor(i){t(this,i);this.action=e(this,"action")}render(){return i(s,{key:"faf3e2e84a60db63b158747e649f43900b1f0930"},i("div",{key:"9180eb1f7472d5a5d0742117dee5b75734ac3232",class:"notification-banner"},i("div",{key:"02171b4cc5f7e5ef924eb96e4ba0403f3fd59f4e",class:"notification-banner-info"},i("vertex-viewer-icon",{key:"caa522489ce767d52c07d7007802c8fb40457f6d",class:"icon",name:"info",size:"sm"}),i("p",{key:"0836efb7b9f56f926315ba232fe1b4d8fa52aefe"},this.message)),this.actionLabel!=null&&i("div",{key:"c5ae434c28810c205ab5806a0689cbaa371c0933",class:"notification-banner-actions"},i("button",{key:"d3fcbe8eb211ac453701c7fd179becfc03f8b1c2",class:"notification-banner-button",onClick:()=>this.action.emit()},this.actionLabel))))}};v.style=f();const p=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{--scene-tree-search-search-icon-offset:8px;--scene-tree-search-clear-button-offset:8px;--scene-tree-search-input-padding:0.5rem 32px;--scene-tree-search-input-border:none;--scene-tree-search-input-border-radius:0.25rem;--scene-tree-search-input-background:none;--scene-tree-search-focused-input-background:var(--neutral-200);--scene-tree-search-focused-input-outline:none;display:block;width:100%;font-size:0.875rem}.root{width:100%;position:relative}.input{background:var(--scene-tree-search-input-background);border:var(--scene-tree-search-input-border);border-radius:var(--scene-tree-search-input-border-radius);box-sizing:border-box;font-size:inherit;padding:var(--scene-tree-search-input-padding);outline:none;width:100%}.input.background{background:var(--scene-tree-search-focused-input-background);outline:var(--scene-tree-search-focused-input-outline)}.overlay{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.overlay-clear{display:none;right:var(--scene-tree-search-clear-button-offset)}.overlay-clear.show{display:flex}.icon{color:var(--neutral-700)}.icon-search{position:absolute;left:var(--scene-tree-search-search-icon-offset);pointer-events:none}.clear-btn{display:flex;align-items:center;justify-content:center;pointer-events:initial;cursor:pointer}.clear-btn:hover{color:var(--neutral-800)}.clear-btn:disabled{pointer-events:none;opacity:0.5}`;const b=class{constructor(i){t(this,i);this.search=e(this,"search");this.searchCompleted=e(this,"searchCompleted");this.disabled=false;this.placeholder=undefined;this.value="";this.focused=false;this.isSearching=false;this.handleTextInput=t=>{const e=t.target;this.value=e.value;if(this.debounce!=null||this.value===""){this.emitCurrentValue()}};this.handleTextFocus=()=>{this.focused=true};this.handleTextBlur=()=>{var t;this.focused=false;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();if(this.value!==this.lastEmittedValue){this.emitCurrentValue()}};this.handleKeyPress=t=>{var e;if(t.key==="Enter"){(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue()}};this.handleClear=t=>{var e;t.preventDefault();this.value="";(e=this.searchDisposable)===null||e===void 0?void 0:e.dispose();this.emitCurrentValue();this.setFocus()}}async setFocus(){var t,e;if(typeof((t=this.inputEl)===null||t===void 0?void 0:t.focus)==="function"){(e=this.inputEl)===null||e===void 0?void 0:e.focus()}}controllerChanged(t){this.setupController()}componentDidLoad(){this.handleDebounceChanged();this.setupController()}disconnectedCallback(){var t;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose()}async clear(){var t;this.value="";(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();this.emitCurrentValue()}render(){return i(s,{key:"a147f41b6d1bee253edfea73854697fd48ce713b"},i("div",{key:"68fb61c2e5310d6f52c696e466661fe75b8119fd",class:"root"},i("div",{key:"a19f9bebb23dd3c89547d36dcb251ec8525f3aae",class:"overlay icon icon-search"},i("slot",{key:"99a2c8c0d48b01e43b2b8717a73652845298442a",name:"search-icon"},this.isSearching?i("vertex-viewer-spinner",{slot:"search-icon",size:"xs"}):i("vertex-viewer-icon",{name:"search",size:"sm"}))),i("input",{key:"feb34cbc91c5813bee85a32c60bf28da1d6069b0",class:o("input",{background:this.focused||this.value.length>0}),type:"text",ref:t=>this.inputEl=t,placeholder:this.placeholder,disabled:this.disabled,value:this.value,onInput:this.handleTextInput,onFocus:this.handleTextFocus,onBlur:this.handleTextBlur,onKeyPress:this.handleKeyPress}),i("div",{key:"0c06291d8c4e7b88e67b720951cd0c46ddd1daf6",class:o("overlay overlay-clear",{show:this.value.length>0})},i("button",{key:"c0a1394058c36939f167d84b42070939fad85f83",class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},i("slot",{key:"afa2e6eb99ddcbb2d1e53138296264ae7620dc51",name:"clear-icon"},i("vertex-viewer-icon",{key:"faa225a4caa66374a69e88fb9bb5c48af7a2d4ed",name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){var t,e;(t=this.searchDisposable)===null||t===void 0?void 0:t.dispose();const i=r(this.search,(e=this.debounce)!==null&&e!==void 0?e:0);this.search=i;this.searchDisposable=i}setupController(){var t,e;(t=this.onStateChangeDisposable)===null||t===void 0?void 0:t.dispose();this.onStateChangeDisposable=(e=this.controller)===null||e===void 0?void 0:e.onStateChange.on((t=>{if(this.isSearching&&!t.isSearching){this.searchCompleted.emit(this.value)}this.isSearching=t.isSearching}))}emitCurrentValue(){this.lastEmittedValue=this.value;this.search.emit(this.value)}static get watchers(){return{controller:[{controllerChanged:0}]}}};b.style=p();function m(t){return t.toLowerCase()}var y=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var w=/[^A-Z0-9]+/gi;function g(t,e){if(e===void 0){e={}}var i=e.splitRegexp,s=i===void 0?y:i,n=e.stripRegexp,o=n===void 0?w:n,r=e.transform,a=r===void 0?m:r,h=e.delimiter,l=h===void 0?" ":h;var c=x(x(t,s,"$1\0$2"),o,"\0");var d=0;var u=c.length;while(c.charAt(d)==="\0")d++;while(c.charAt(u-1)==="\0")u--;return c.slice(d,u).split("\0").map(a).join(l)}function x(t,e,i){if(e instanceof RegExp)return t.replace(e,i);return e.reduce((function(t,e){return t.replace(e,i)}),t)}function k(t,e){var i=t.charAt(0);var s=t.substr(1).toLowerCase();if(e>0&&i>="0"&&i<="9"){return"_"+i+s}return""+i.toUpperCase()+s}function C(t,e){if(e===void 0){e={}}return g(t,h({delimiter:"",transform:k},e))}function z(t,e){if(e===0)return t.toLowerCase();return k(t,e)}function D(t,e){if(e===void 0){e={}}return C(t,h({transform:z},e))}const $=/{{(.+)}}/;class R{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((e=>e.bind(t)))}}class _{constructor(t,e){this.node=t;this.expr=e}}class M extends _{constructor(t,e){super(t,e)}bind(t){const e=T(t,this.expr);if(e!==this.node.textContent){this.node.textContent=e}}}class E extends _{constructor(t,e,i){super(t,e);this.attr=i}bind(t){const e=T(t,this.expr);const i=this.node.getAttribute(this.attr);if(i!==e){this.node.setAttribute(this.attr,e)}}}class H extends _{constructor(t,e,i){super(t,e);this.prop=i}bind(t){const e=A(t,this.expr);const i=this.node[this.prop];if(i!==e){this.node[this.prop]=e}}}class L extends _{constructor(t,e,i){super(t,e);this.eventName=i}bind(t){var e;const i=P(this.expr);if(i!=null){(e=this.disposable)===null||e===void 0?void 0:e.dispose();const s=W(t,i,true);this.node.addEventListener(this.eventName,s);this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,s)}}}}}function V(t){const e=[];if(t.nodeType===Node.ELEMENT_NODE){const i=t;const s=j(i);s.forEach((t=>{if(t.name.startsWith("event:")){const s=D(t.name.replace("event:",""));e.push(new L(i,t.value,s))}else if(t.name.startsWith("attr:")){e.push(new E(i,t.value,t.name.replace("attr:","")))}else if(t.name.startsWith("prop:")){const s=D(t.name.replace("prop:",""));e.push(new H(i,t.value,s))}}))}else if(t.nodeType===Node.TEXT_NODE&&t.textContent!=null&&$.test(t.textContent)){e.push(new M(t,t.textContent))}for(let i=0;i<t.childNodes.length;i++){e.push(...V(t.childNodes[i]))}return e}function j(t){return Array.from(t.attributes).filter((t=>$.test(t.value)))}function P(t){const e=$.exec(t);return e!=null?e[1]:undefined}function T(t,e){const i=P(e);if(i!=null){const s=W(t,i,true);return e.replace(`{{${i}}}`,s===null||s===void 0?void 0:s.toString())}else{return e}}function A(t,e){const i=P(e);if(i!=null){const e=W(t,i,true);return e}else{return e}}function W(t,e,i=false){const[s,...n]=e.split(".");if(i&&n.length===0){return t}else if(i&&n.length>0){return W(t,n.join("."),false)}else{const e=t[s];if(n.length>0){return W(e,n.join("."),false)}else{return e}}}class I{constructor(t,e){this.container=t;this.elementFactory=e;this.instanceMap=new Map;this.elements=[]}swapHeadToTail(t){const e=this.elements.splice(0,t);this.elements.splice(this.elements.length,0,...e);return this.elements.concat()}swapTailToHead(t){const e=this.elements.splice(-t,t);this.elements.splice(0,0,...e);return this.elements.concat()}updateElements(t){const e=t-this.elements.length;if(e>0){for(let t=0;t<e;t++){this.createElement()}}else{for(let t=0;t<-e;t++){this.deleteElement()}}return this.elements.concat()}updateData(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);const n=t(i);s===null||s===void 0?void 0:s.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t;this.updateElements(0)}iterateElements(t){this.elements.forEach(((e,i)=>{const s=this.instanceMap.get(e);t(e,s.bindings,i)}))}createElement(){const t=this.elementFactory();this.elements.push(t.element);this.instanceMap.set(t.element,t);this.container.append(t.element);return t}deleteElement(){const t=this.elements.pop();if(t!=null){this.instanceMap.delete(t);t.remove()}}}function G(t){const e=t.content.cloneNode(true);const i=e.firstElementChild;const s=new R(V(e));return{element:i,bindings:s}}function N(t){var e;return(e=t.getBoundingClientRect().top)!==null&&e!==void 0?e:0}function Z(t){return t.clientWidth}function B(t,e,i){t.scrollTo({top:e,...i})}class F{constructor(){this.onStateChange=new u}setHovered(t){this.onStateChange.emit(t)}stateChanged(t){return this.onStateChange.on(t)}}function O(t,e,i=200){window.clearTimeout(e);return window.setTimeout(t,i)}const K=()=>`:host{position:relative;display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;font-size:0.825rem;--scene-tree-table-row-padding:2px 0px;--scene-tree-table-column-gap:0.5rem;--scene-tree-table-column-resize-cursor:col-resize}.header{position:relative;display:grid;width:100%;border-bottom:var(--scene-tree-toolbar-separator)}.table{position:relative;display:grid;width:100%;height:100%;overflow:auto}.resize-overlay{position:absolute;top:0;cursor:var(--scene-tree-table-column-resize-cursor);z-index:1000;width:100%;height:100%}.divider-overlay{position:absolute;top:0;display:grid;pointer-events:none;z-index:2000;width:100%;height:100%}`;const S=class{constructor(i){t(this,i);this.layoutRendered=e(this,"layoutRendered");this.columnsResized=e(this,"columnsResized");this.rows=[];this.totalRows=0;this.rowHeight=24;this.overScanCount=25;this.layoutOffset=0;this.scrollOffset=0;this.viewportStartIndex=0;this.viewportEndIndex=0;this.columnGridLayout="1fr";this.columnGridFixedLayout="";this.isComputingCellHeight=true;this.isScrolling=false;this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]};this.lastStartIndex=0;this.columnElements=[];this.cellHoverController=new F;this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1;const e=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex;this.iterateColumns(((i,s,n)=>{s.updateElements(t);if(e>0){s.swapHeadToTail(e)}else{s.swapTailToHead(-e)}i.style.minHeight=`${this.rowHeight*this.totalRows}px`;const o=n===0?t=>`calc(${t} * 0.5rem)`:()=>`0`;s.iterateElements(((t,e,i)=>{const s=this.stateMap.viewportRows[i];if(d(s)){this.updateCell(s,t,e,i,o)}}))}))};this.updateCell=(t,e,i,s,n)=>{e.style.position="absolute";e.style.top=`${(this.viewportStartIndex+s)*this.rowHeight}px`;e.style.boxSizing="border-box";e.style.height=`${this.rowHeight}px`;e.style.width="100%";e.style.paddingLeft=n(t.node.depth);e.tree=this.tree;e.node=t.node;e.hoverController=this.cellHoverController;e.isScrolling=this.isScrolling;i.bind(t)};this.updateLayoutPosition=()=>{a((()=>{if(this.tableElement!=null){this.layoutOffset=N(this.tableElement)}}))};this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((e=>e*t));this.columnsResized.emit(this.stateMap.columnWidths)}};this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();if(t!=null&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length){this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((e=>e/t))}};this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}));const t=this.getLayoutWidth();if(t!=null){const e=this.stateMap.columnWidths.reduce(((t,e)=>t+e),0);const i=this.stateMap.columnWidths.map((i=>i*(t/e)));this.stateMap.columnWidthPercentages=i.map((e=>e/t));this.stateMap.columnWidths=i}};this.updateColumnElements=()=>{this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column"))};this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const e={index:0,node:{id:{hex:""},name:"Dummy row",expanded:false,selected:false,visible:false,partiallyVisible:false,isLeaf:false,depth:0,columnsList:[],filterHit:false,hasGeometry:false,phantom:false,endItem:false},metadata:{},data:{}};const{bindings:i,element:s}=this.createColumnCellInstance(this.columnElements[0]);i.bind(e);s.style.visibility="hidden";(t=this.columnElements[0])===null||t===void 0?void 0:t.appendChild(s);if(typeof s.componentOnReady==="function"){await s.componentOnReady()}let n=s.clientHeight;if(n===0){n=await new Promise((t=>{setTimeout((()=>t(s.getBoundingClientRect().height)),5)}))}this.rowHeight=n!==null&&n!==void 0?n:this.rowHeight;s.remove();this.isComputingCellHeight=this.rowHeight===0}};this.computeHeaderHeight=()=>{var t;if(this.stateMap.headerHeight==null){this.stateMap.headerHeight=(t=this.headerElement)===null||t===void 0?void 0:t.getBoundingClientRect().height;this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`)}};this.computeColumnGridLayout=()=>{if(this.stateMap.columnWidths.length===0){this.stateMap.columnWidths=this.columnElements.map((t=>{var e;return(e=t.initialWidth)!==null&&e!==void 0?e:100}))}const t=this.getLayoutWidth();if(t!=null){if(this.stateMap.columnWidthPercentages.length===0){this.stateMap.columnWidthPercentages=this.columnElements.map((e=>{var i;return((i=e.initialWidth)!==null&&i!==void 0?i:100)/t}))}}this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,e)=>`${t} ${e}px`),"")} 1fr`;this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,e)=>`${t} ${e}px`),"")}`};this.bindHeaderData=()=>{if(this.stateMap.headerInstances==null){this.stateMap.headerInstances=this.columnElements.map(((t,e)=>{var i;const s=this.createHeaderInstance(t);if(s!=null){s.element.style.paddingRight=e===this.columnElements.length-1?`0`:`var(--scene-tree-table-column-gap)`;s.element.slot="header";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element)}return s})).filter((t=>t!=null))}if(this.stateMap.headerDividerInstances==null){this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,e)=>{var i;const s=this.createDividerInstance();s.element.slot="divider";s.element.style.position="absolute";s.element.style.right="0";s.element.style.pointerEvents="auto";s.element.style.gridColumnStart=`${e+1}`;s.element.style.gridColumnEnd=`${e+2}`;(i=this.hostEl)===null||i===void 0?void 0:i.appendChild(s.element);return s}))}};this.rebindHeaderData=()=>{var t,e;this.removeDividerDragListeners();(t=this.stateMap.headerInstances)===null||t===void 0?void 0:t.forEach((t=>t.element.remove()));(e=this.stateMap.headerDividerInstances)===null||e===void 0?void 0:e.forEach((t=>t.element.remove()));this.stateMap.headerInstances=undefined;this.stateMap.headerDividerInstances=undefined;this.bindHeaderData();this.addDividerDragListeners()};this.createDividerPointerDownHandler=t=>e=>{var i,s;e.preventDefault();e.stopPropagation();this.lastDividerPointerPosition=l.create(Math.floor(e.clientX),Math.floor(e.clientY));this.resizingColumnIndex=t;(s=(i=this.stateMap.headerDividerInstances)===null||i===void 0?void 0:i[t])===null||s===void 0?void 0:s.element.classList.add("dragging");window.addEventListener("pointermove",this.handleDividerPointerMove);window.addEventListener("pointerup",this.handleDividerPointerUp)};this.handleDividerPointerMove=t=>{const e=l.create(Math.floor(t.clientX),Math.floor(t.clientY));if(this.lastDividerPointerPosition!=null&&this.resizingColumnIndex!=null){const t=this.resizingColumnIndex;const i=l.subtract(this.lastDividerPointerPosition,e);if(Math.abs(i.x)>=1&&this.isValidResize(i,t)){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t?e-i.x:e));if(t+1<this.stateMap.columnWidths.length){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((e,s)=>s===t+1?e+i.x:e))}this.lastDividerPointerPosition=e;this.computeColumnGridLayout()}}};this.handleDividerPointerUp=()=>{var t,e;if(this.resizingColumnIndex!=null){(e=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t[this.resizingColumnIndex])===null||e===void 0?void 0:e.element.classList.remove("dragging")}this.lastDividerPointerPosition=undefined;this.resizingColumnIndex=undefined;this.recomputeColumnPercentages();this.recomputeColumnWidths();window.removeEventListener("pointermove",this.handleDividerPointerMove);window.removeEventListener("pointerup",this.handleDividerPointerUp)};this.isValidResize=(t,e)=>{var i,s,n,o;const r=this.columnElements[e];const a=this.columnElements[e+1];const h=this.stateMap.columnWidths[e];const l=this.stateMap.columnWidths[e+1];const c=(i=r.minWidth)!==null&&i!==void 0?i:0;const d=(s=r.maxWidth)!==null&&s!==void 0?s:Number.MAX_SAFE_INTEGER;const u=(n=a.minWidth)!==null&&n!==void 0?n:0;const f=(o=a.maxWidth)!==null&&o!==void 0?o:Number.MAX_SAFE_INTEGER;const v=h-t.x>c&&h-t.x<d;const p=a!=null?l+t.x>u&&l+t.x<f:true;return v&&p};this.handleScrollChanged=async t=>{this.isScrolling=true;this.scrollTimer=O((()=>{this.isScrolling=false}),this.scrollTimer);this.scrollOffset=t.target.scrollTop;await this.computeAndUpdateViewportRows()}}componentWillLoad(){this.updateColumnElements();this.createPools();this.initializeColumnLayout();this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=undefined;this.computeHeaderHeight();this.updateLayoutPosition()}));this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition();this.clearLayoutHeight();this.clearLayoutWidth();this.recomputeColumnWidths();this.computeColumnGridLayout()}))}async componentDidLoad(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.addEventListener("scroll",this.handleScrollChanged,{passive:true});if(this.headerElement!=null){(e=this.headerResizeObserver)===null||e===void 0?void 0:e.observe(this.headerElement)}(i=this.resizeObserver)===null||i===void 0?void 0:i.observe(this.hostEl);await Promise.resolve();await this.initializeMeasuredLayout()}async componentWillRender(){await this.computeAndUpdateViewportRows()}componentDidRender(){this.layoutColumns();this.layoutRendered.emit()}async componentDidUpdate(){if(this.isComputingCellHeight){await this.computeCellHeight()}}disconnectedCallback(){var t,e,i;(t=this.tableElement)===null||t===void 0?void 0:t.removeEventListener("scroll",this.handleScrollChanged);this.removeDividerDragListeners();(e=this.headerResizeObserver)===null||e===void 0?void 0:e.disconnect();(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect();this.stateMap.columnWidths=[];this.stateMap.columnWidthPercentages=[]}async handleViewportRowsPropsChanged(){await this.computeAndUpdateViewportRows()}async scrollToPosition(t,e){if(this.tableElement!=null){B(this.tableElement,t,e)}}async attemptComputeCellHeight(){this.computeCellHeight()}render(){return i(s,{key:"2656824698df951f2a41f2ad223cb459dd78cb05"},i("div",{key:"df621c883d9f8c4e00490eb7665bda5e65bb9ef3",class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},i("slot",{key:"3d6425521dd682166712477f7697544b49267dfd",name:"header"})),i("div",{key:"e54e5bef181ab97fc204c4a67b702d198d10ae9a",class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},i("slot",{key:"4bd35302ad438bf5d20e19afe3d2793c9ea2a073",onSlotchange:()=>{this.ensureDividerTemplateDefined();this.updateColumnElements();this.recreateColumnPools();this.computeInitialColumnWidths();this.rebindHeaderData();this.computeColumnGridLayout()}})),i("div",{key:"2a732b5e4f66a64392f035946bffc9fdd9e569fd",class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},i("slot",{key:"497a76a7cf9e7e8cd41eec79e9a0f89b2946516c",name:"divider"})),this.resizingColumnIndex!=null&&i("div",{key:"d0252a71b7e88f85253a7d47229fc2f664ccdea5",class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();const e=t!=null&&t>0&&!this.isComputingCellHeight;if(e){const e=Math.ceil(t/this.rowHeight);const i=Math.floor(this.scrollOffset/this.rowHeight);const s=i+e;const n=Math.max(0,i-this.overScanCount);const o=Math.min(this.totalRows-1,s+this.overScanCount);const r=this.getViewportRows(n,o);this.viewportStartIndex=n;this.viewportEndIndex=o;this.stateMap.viewportRows=r}}initializeColumnLayout(){this.computeInitialColumnWidths();this.computeColumnGridLayout();this.ensureDividerTemplateDefined();this.rebindHeaderData()}async initializeMeasuredLayout(){await this.computeCellHeight();this.computeHeaderHeight()}async computeAndUpdateViewportRows(){var t;this.computeViewportRows();if(((t=this.controller)===null||t===void 0?void 0:t.isConnected)&&this.totalRows>0){await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}}createPools(){if(this.stateMap.columnElementPools==null){this.stateMap.columnElementPools=this.columnElements.reduce(((t,e)=>t.set(e,new I(e,(()=>this.createColumnCellInstance(e))))),new WeakMap)}}recreateColumnPools(){this.columnElements.forEach((t=>{var e,i,s;if(((e=this.stateMap.columnElementPools)===null||e===void 0?void 0:e.get(t))==null){(i=this.stateMap.columnElementPools)===null||i===void 0?void 0:i.set(t,new I(t,(()=>this.createColumnCellInstance(t))))}else{(s=this.stateMap.columnElementPools.get(t))===null||s===void 0?void 0:s.updateElementFactory((()=>this.createColumnCellInstance(t)))}}))}iterateColumns(t){this.columnElements.forEach(((e,i)=>{var s;const n=(s=this.stateMap.columnElementPools)===null||s===void 0?void 0:s.get(e);if(n!=null){t(e,n,i)}else{throw new Error("Cannot find pool for column")}}))}ensureDividerTemplateDefined(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t==null){const t=document.createElement("template");t.slot="divider";t.innerHTML=`\n <vertex-scene-tree-table-resize-divider slot="divider">\n </vertex-scene-tree-table-resize-divider>\n `;this.hostEl.appendChild(t)}}createHeaderInstance(t){const e=t.querySelector('template[slot="header"]');if(e!=null){return G(e)}}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t!=null){return G(t)}else{throw new Error("Table is missing divider template element")}}createColumnCellInstance(t){const e=t.querySelector('template:not([slot="header"])');if(e!=null){return G(e)}else{throw new Error("Column is missing cell template element")}}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.map(((t,e)=>{const i=this.createDividerPointerDownHandler(e);t.element.addEventListener("pointerdown",i);return i}))}removeDividerDragListeners(){var t;if(this.stateMap.headerDividerListeners!=null){const e=this.stateMap.headerDividerListeners;(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.forEach(((t,i)=>{const s=e[i];if(s!=null){t.element.removeEventListener("pointerdown",s)}}));this.stateMap.headerDividerListeners=undefined}}getViewportRows(t,e){const i=this.rows.slice(t,e+1);return i.map((t=>t!=null?this.populateRowData(t):t))}populateRowData(t){var e;if(this.rowData!=null&&t!=null){const i=((e=this.rowData)===null||e===void 0?void 0:e.call(this,t))||{};return{...t,data:i}}else{return t}}getLayoutHeight(){if(this.layoutHeight==null&&this.tableElement!=null){this.layoutHeight=c(this.tableElement)}return this.layoutHeight}getLayoutWidth(){if(this.layoutWidth==null){const t=Z(this.hostEl);if(t>0){this.layoutWidth=t}}return this.layoutWidth}clearLayoutHeight(){this.layoutHeight=undefined}clearLayoutWidth(){this.layoutWidth=undefined}get hostEl(){return n(this)}static get watchers(){return{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}}};S.style=K();const U=()=>`:host{--scene-tree-toolbar-content-gap:8px;display:flex;padding:0.5rem}.content{display:flex;align-items:center}.content-primary{width:100%}::slotted(:not(:first-child)){margin-left:var(--scene-tree-toolbar-content-gap)}`;const Q=class{constructor(e){t(this,e)}render(){return i(s,{key:"7a3286d46171832c1fae126645568899b1004fa1"},i("div",{key:"ac81e6da67a1c41dbb30a23ec9658ddbac0cd9ea",class:"content"},i("slot",{key:"1993b705fbeeca9f7fee213662981403d89ea4c2",name:"before"})),i("div",{key:"ee8b5cf8eccb88a4b0b029c6f3a33c9c5f20ef09",class:"content content-primary"},i("slot",{key:"2cb220546b02b8dd353aa0270bbfa7f51dc0ca95"})),i("div",{key:"cd0c977e5f42f1dbacaad42306b1705a97b50ab9",class:"content"},i("slot",{key:"0f3af32f24077fa6d0bda7cc1fce3b9921b49f70",name:"after"})))}};Q.style=U();export{v as vertex_scene_tree_notification_banner,b as vertex_scene_tree_search,S as vertex_scene_tree_table_layout,Q as vertex_scene_tree_toolbar};
5
+ //# sourceMappingURL=p-d9fe788f.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sceneTreeNotificationBannerCss","SceneTreeNotificationBanner","render","h","Host","key","class","name","size","this","message","actionLabel","onClick","action","emit","sceneTreeSearchCss","SceneTreeSearch","constructor","hostRef","disabled","placeholder","undefined","value","focused","isSearching","handleTextInput","event","input","target","debounce","emitCurrentValue","handleTextFocus","handleTextBlur","_a","searchDisposable","dispose","lastEmittedValue","handleKeyPress","handleClear","preventDefault","setFocus","inputEl","focus","_b","controllerChanged","controller","setupController","componentDidLoad","handleDebounceChanged","disconnectedCallback","onStateChangeDisposable","clear","slot","classNames","background","length","type","ref","onInput","onFocus","onBlur","onKeyPress","show","tabIndex","onMouseDown","emitter","debounceEvent","search","onStateChange","on","state","searchCompleted","lowerCase","str","toLowerCase","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","noCase","options","splitRegexp","stripRegexp","_c","transform","_d","delimiter","result","replace","start","end","charAt","slice","split","map","join","re","RegExp","reduce","pascalCaseTransform","index","firstChar","lowerChars","substr","toUpperCase","pascalCase","__assign","camelCaseTransform","camelCase","bindingRegEx","CollectionBinding","bindings","bind","data","forEach","binding","NodeBinding","node","expr","TextNodeBinding","super","newContent","replaceBindingString","textContent","AttributeBinding","attr","newValue","oldValue","getAttribute","setAttribute","PropertyBinding","prop","replaceBinding","EventHandlerBinding","eventName","path","extractBindingPath","disposable","listener","getBindableValue","addEventListener","removeEventListener","generateBindings","nodeType","Node","ELEMENT_NODE","el","bindableAttributes","getBindableAttributes","startsWith","push","propName","TEXT_NODE","test","i","childNodes","element","Array","from","attributes","filter","exec","toString","isHead","head","tail","ElementPool","container","elementFactory","instanceMap","Map","elements","swapHeadToTail","count","sliced","splice","concat","swapTailToHead","updateElements","diff","createElement","deleteElement","updateData","f","instance","get","updateElementFactory","iterateElements","set","append","pop","delete","remove","generateInstanceFromTemplate","template","fragment","content","cloneNode","firstElementChild","getSceneTreeTableOffsetTop","getBoundingClientRect","top","getSceneTreeTableViewportWidth","clientWidth","scrollToTop","scrollTo","SceneTreeCellHoverController","EventDispatcher","setHovered","id","stateChanged","restartTimeout","fn","existingTimeout","delay","window","clearTimeout","setTimeout","sceneTreeTableLayoutCss","SceneTreeTableLayout","rows","totalRows","rowHeight","overScanCount","layoutOffset","scrollOffset","viewportStartIndex","viewportEndIndex","columnGridLayout","columnGridFixedLayout","isComputingCellHeight","isScrolling","stateMap","viewportRows","columnWidths","columnWidthPercentages","lastStartIndex","columnElements","cellHoverController","layoutColumns","visibleRowCount","iterateColumns","col","pool","colIndex","style","minHeight","cellPaddingLeft","depth","rowIndex","row","isLoadedRow","updateCell","cell","position","boxSizing","height","width","paddingLeft","tree","hoverController","updateLayoutPosition","readDOM","tableElement","recomputeColumnWidths","layoutWidth","getLayoutWidth","w","columnsResized","recomputeColumnPercentages","computeInitialColumnWidths","c","initialWidth","columnWidthSum","scaledColumnWidths","updateColumnElements","hostEl","querySelectorAll","computeCellHeight","async","dummyData","hex","expanded","selected","visible","partiallyVisible","isLeaf","columnsList","filterHit","hasGeometry","phantom","endItem","metadata","createColumnCellInstance","visibility","appendChild","componentOnReady","clientHeight","Promise","resolve","computeHeaderHeight","headerHeight","headerElement","setProperty","computeColumnGridLayout","res","bindHeaderData","headerInstances","createHeaderInstance","paddingRight","gridColumnStart","gridColumnEnd","headerDividerInstances","_","createDividerInstance","right","pointerEvents","rebindHeaderData","removeDividerDragListeners","addDividerDragListeners","createDividerPointerDownHandler","stopPropagation","lastDividerPointerPosition","Point","create","Math","floor","clientX","clientY","resizingColumnIndex","classList","add","handleDividerPointerMove","handleDividerPointerUp","current","resizingIndex","subtract","abs","x","isValidResize","currentColumn","nextColumn","currentWidth","nextWidth","currentMinWidth","minWidth","currentMaxWidth","maxWidth","Number","MAX_SAFE_INTEGER","nextMinWidth","nextMaxWidth","currentIsValid","nextIsValid","handleScrollChanged","scrollTimer","scrollTop","computeAndUpdateViewportRows","componentWillLoad","createPools","initializeColumnLayout","headerResizeObserver","ResizeObserver","resizeObserver","clearLayoutHeight","clearLayoutWidth","passive","observe","initializeMeasuredLayout","componentWillRender","componentDidRender","layoutRendered","componentDidUpdate","disconnect","handleViewportRowsPropsChanged","scrollToPosition","attemptComputeCellHeight","gridTemplateColumns","display","onSlotchange","ensureDividerTemplateDefined","recreateColumnPools","computeViewportRows","viewportHeight","getLayoutHeight","canComputeIndices","viewportCount","ceil","startIndex","max","endIndex","min","getViewportRows","isConnected","updateActiveRowRange","columnElementPools","WeakMap","column","Error","querySelector","defaultDividerTemplate","document","innerHTML","headerDividerListeners","d","listeners","populateRowData","rowData","call","layoutHeight","getSceneTreeViewportHeight","computedWidth","sceneTreeToolbarCss","SceneTreeToolbar"],"sources":["src/components/scene-tree-notification-banner/scene-tree-notification-banner.css?tag=vertex-scene-tree-notification-banner&encapsulation=shadow","src/components/scene-tree-notification-banner/scene-tree-notification-banner.tsx","src/components/scene-tree-search/scene-tree-search.css?tag=vertex-scene-tree-search&encapsulation=shadow","src/components/scene-tree-search/scene-tree-search.tsx","../html-templates/dist/bundle.js","src/components/scene-tree-table-layout/lib/dom.ts","src/components/scene-tree-table-layout/lib/hover-controller.ts","src/components/scene-tree-table-layout/lib/window.ts","src/components/scene-tree-table-layout/scene-tree-table-layout.css?tag=vertex-scene-tree-table-layout&encapsulation=shadow","src/components/scene-tree-table-layout/scene-tree-table-layout.tsx","src/components/scene-tree-toolbar/scene-tree-toolbar.css?tag=vertex-scene-tree-toolbar&encapsulation=shadow","src/components/scene-tree-toolbar/scene-tree-toolbar.tsx"],"sourcesContent":[".notification-banner {\n background-color: var(--blue-200);\n padding-top: 0px;\n padding-bottom: 0px;\n padding-right: 16px;\n padding-left: 8px;\n display: flex;\n justify-content: space-between;\n font-size: 0.875rem;\n line-height: 0.5;\n color: var(--neutral-600);\n}\n\n.notification-banner-info {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.notification-banner-info .icon {\n color: var(--blue-600);\n}\n\n.notification-banner-actions {\n display: flex;\n align-items: center;\n}\n\n.notification-banner-button {\n background: none;\n border: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n color: var(--blue-600);\n font-size: 0.875rem;\n display: flex;\n align-items: center;\n}\n\n.notification-banner-button:hover {\n color: var(--blue-800);\n}","import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\n\n/**\n * A notification banner that displays a message and an action button.\n */\n@Component({\n tag: 'vertex-scene-tree-notification-banner',\n styleUrl: 'scene-tree-notification-banner.css',\n shadow: true,\n})\nexport class SceneTreeNotificationBanner {\n /**\n * The message to display in the banner.\n */\n @Prop()\n public message?: string;\n\n /**\n * The label of the action button.\n */\n @Prop()\n public actionLabel?: string;\n\n /**\n * An event that is emitted when the action button is clicked.\n */\n @Event()\n public action!: EventEmitter<void>;\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"notification-banner\">\n <div class=\"notification-banner-info\">\n <vertex-viewer-icon class=\"icon\" name=\"info\" size=\"sm\" />\n <p>{this.message}</p>\n </div>\n {this.actionLabel != null && (\n <div class=\"notification-banner-actions\">\n <button\n class=\"notification-banner-button\"\n onClick={() => this.action.emit()}\n >\n {this.actionLabel}\n </button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@import url('../../css/button-reset.css');\n\n:host {\n /**\n * @prop --scene-tree-search-search-icon-offset: A CSS length that specifies\n * the horizontal offset of the search icon\n */\n --scene-tree-search-search-icon-offset: 8px;\n\n /**\n * @prop --scene-tree-search-clear-button-offset: A CSS length that specifies\n * the horizontal offset of the clear button.\n */\n --scene-tree-search-clear-button-offset: 8px;\n\n /**\n * @prop --scene-tree-search-input-padding: A CSS padding value that specifies\n * horizontal and vertical lengths of the internal text input.\n */\n --scene-tree-search-input-padding: 0.5rem 32px;\n\n /**\n * @prop --scene-tree-search-input-border: A CSS border value that specifies\n * the border of the internal text input.\n */\n --scene-tree-search-input-border: none;\n\n /**\n * @prop --scene-tree-search-input-border-radius: A CSS length that specifies\n * the radius of the internal text input.\n */\n --scene-tree-search-input-border-radius: 0.25rem;\n\n /**\n * @prop --scene-tree-search-input-background: A CSS background that specifies\n * the background color or image of the internal text input.\n */\n --scene-tree-search-input-background: none;\n\n /**\n * @prop --scene-tree-search-focused-input-background: A CSS background value\n * that specifies the background of the internal text input when focused.\n */\n --scene-tree-search-focused-input-background: var(--neutral-200);\n\n /**\n * @prop --scene-tree-search-focused-input-outline: A CSS outline value that\n * specifies the outline of the internal text input when focused.\n */\n --scene-tree-search-focused-input-outline: none;\n\n display: block;\n width: 100%;\n font-size: 0.875rem;\n}\n\n.root {\n width: 100%;\n position: relative;\n}\n\n.input {\n background: var(--scene-tree-search-input-background);\n border: var(--scene-tree-search-input-border);\n border-radius: var(--scene-tree-search-input-border-radius);\n box-sizing: border-box;\n font-size: inherit;\n padding: var(--scene-tree-search-input-padding);\n outline: none;\n width: 100%;\n}\n\n.input.background {\n background: var(--scene-tree-search-focused-input-background);\n outline: var(--scene-tree-search-focused-input-outline);\n}\n\n.overlay {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n}\n\n.overlay-clear {\n display: none;\n right: var(--scene-tree-search-clear-button-offset);\n}\n\n.overlay-clear.show {\n display: flex;\n}\n\n.icon {\n color: var(--neutral-700);\n}\n\n.icon-search {\n position: absolute;\n left: var(--scene-tree-search-search-icon-offset);\n pointer-events: none;\n}\n\n.clear-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: initial;\n cursor: pointer;\n}\n.clear-btn:hover {\n color: var(--neutral-800);\n}\n.clear-btn:disabled {\n pointer-events: none;\n opacity: 0.5;\n}","import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\nimport classNames from 'classnames';\n\nimport { debounceEvent } from '../../lib/stencil';\nimport { SceneTreeController } from '../scene-tree/lib/controller';\n\n/**\n * @slot search-icon - A slot that replaces the component's default search icon.\n * @slot clear-icon - A slot that replaces the component's default clear icon.\n */\n@Component({\n tag: 'vertex-scene-tree-search',\n styleUrl: 'scene-tree-search.css',\n shadow: true,\n})\nexport class SceneTreeSearch {\n /**\n * Specifies the delay, in milliseconds, to emit `search` events after user\n * input.\n *\n * If this value is specified, searches will automatically occur after a\n * keystroke has occurred and the debounce threshold has elapsed.\n *\n * Defaults to `undefined`, and searches only occur on an `Enter` press\n * or a `blur` event.\n */\n @Prop()\n public debounce?: number;\n\n /**\n * If `true`, disables user interaction of the component.\n */\n @Prop()\n public disabled = false;\n\n /**\n * Placeholder text if `value` is empty.\n */\n @Prop()\n public placeholder?: string = undefined;\n\n /**\n * The scene tree controller\n */\n @Prop()\n public controller?: SceneTreeController;\n\n /**\n * The current text value of the component. Value is updated on user\n * interaction.\n */\n @Prop({ mutable: true })\n public value = '';\n\n /**\n * An event that is emitted when a user has changed or cleared the search\n * term. The event may be delayed according to the current `debounce` value.\n */\n @Event({ bubbles: true })\n public search!: EventEmitter<string>;\n\n /**\n * An event that is emitted when a search has completed.\n */\n @Event({ bubbles: true })\n public searchCompleted!: EventEmitter<string>;\n\n @State()\n private focused = false;\n\n @State()\n private isSearching = false;\n\n private lastEmittedValue?: string;\n private inputEl?: HTMLInputElement;\n private onStateChangeDisposable?: Disposable;\n private searchDisposable?: Disposable;\n\n /**\n * Gives focus to the component's internal text input.\n */\n @Method()\n public async setFocus(): Promise<void> {\n // HTMLInputElement.focus() doesn't exist in tests.\n if (typeof this.inputEl?.focus === 'function') {\n this.inputEl?.focus();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n public controllerChanged(controller: SceneTreeController): void {\n this.setupController();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.handleDebounceChanged();\n\n this.setupController();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.onStateChangeDisposable?.dispose();\n }\n\n /**\n * Clears the current search term and clears any debounced filters.\n */\n @Method()\n public async clear(): Promise<void> {\n this.value = '';\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"root\">\n <div class=\"overlay icon icon-search\">\n <slot name=\"search-icon\">\n {this.isSearching ? (\n <vertex-viewer-spinner slot=\"search-icon\" size=\"xs\" />\n ) : (\n <vertex-viewer-icon name=\"search\" size=\"sm\" />\n )}\n </slot>\n </div>\n\n <input\n class={classNames('input', {\n background: this.focused || this.value.length > 0,\n })}\n type=\"text\"\n ref={(ref) => (this.inputEl = ref)}\n placeholder={this.placeholder}\n disabled={this.disabled}\n value={this.value}\n onInput={this.handleTextInput}\n onFocus={this.handleTextFocus}\n onBlur={this.handleTextBlur}\n onKeyPress={this.handleKeyPress}\n />\n\n <div\n class={classNames('overlay overlay-clear', {\n show: this.value.length > 0,\n })}\n >\n <button\n class=\"clear-btn icon\"\n tabIndex={-1}\n onMouseDown={this.handleClear}\n disabled={this.disabled}\n >\n <slot name=\"clear-icon\">\n <vertex-viewer-icon name=\"close-circle\" size=\"sm\" />\n </slot>\n </button>\n </div>\n </div>\n </Host>\n );\n }\n\n private handleTextInput = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n\n if (this.debounce != null || this.value === '') {\n this.emitCurrentValue();\n }\n };\n\n private handleTextFocus = (): void => {\n this.focused = true;\n };\n\n private handleTextBlur = (): void => {\n this.focused = false;\n\n this.searchDisposable?.dispose();\n\n if (this.value !== this.lastEmittedValue) {\n this.emitCurrentValue();\n }\n };\n\n private handleKeyPress = (event: KeyboardEvent): void => {\n if (event.key === 'Enter') {\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n }\n };\n\n private handleClear = (event: MouseEvent): void => {\n event.preventDefault();\n\n this.value = '';\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n this.setFocus();\n };\n\n private handleDebounceChanged(): void {\n this.searchDisposable?.dispose();\n\n const emitter = debounceEvent(this.search, this.debounce ?? 0);\n\n // Track this emitter in two separate variables to maintain the `EventEmitter` typing for\n // `this.search`. This allows for correct generation of `CustomEvent` types.\n this.search = emitter;\n this.searchDisposable = emitter;\n }\n\n private setupController(): void {\n this.onStateChangeDisposable?.dispose();\n\n this.onStateChangeDisposable = this.controller?.onStateChange.on(\n (state) => {\n // If a search was previously being performed, but has now finished,\n // emit the event that the search has completed.\n if (this.isSearching && !state.isSearching) {\n this.searchCompleted.emit(this.value);\n }\n\n this.isSearching = state.isSearching;\n },\n );\n }\n\n private emitCurrentValue(): void {\n this.lastEmittedValue = this.value;\n this.search.emit(this.value);\n }\n}\n","import { __assign } from 'tslib';\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\n/**\n * Lower case as a function.\n */\nfunction lowerCase(str) {\n return str.toLowerCase();\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nfunction noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n\nfunction pascalCaseTransform(input, index) {\n var firstChar = input.charAt(0);\n var lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return \"_\" + firstChar + lowerChars;\n }\n return \"\" + firstChar.toUpperCase() + lowerChars;\n}\nfunction pascalCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \"\", transform: pascalCaseTransform }, options));\n}\n\nfunction camelCaseTransform(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\nfunction camelCase(input, options) {\n if (options === void 0) { options = {}; }\n return pascalCase(input, __assign({ transform: camelCaseTransform }, options));\n}\n\nconst bindingRegEx = /{{(.+)}}/;\nclass CollectionBinding {\n constructor(bindings) {\n this.bindings = bindings;\n }\n bind(data) {\n this.bindings.forEach((binding) => binding.bind(data));\n }\n}\nclass NodeBinding {\n constructor(node, expr) {\n this.node = node;\n this.expr = expr;\n }\n}\nclass TextNodeBinding extends NodeBinding {\n constructor(node, expr) {\n super(node, expr);\n }\n bind(data) {\n const newContent = replaceBindingString(data, this.expr);\n if (newContent !== this.node.textContent) {\n this.node.textContent = newContent;\n }\n }\n}\nclass AttributeBinding extends NodeBinding {\n constructor(node, expr, attr) {\n super(node, expr);\n this.attr = attr;\n }\n bind(data) {\n const newValue = replaceBindingString(data, this.expr);\n const oldValue = this.node.getAttribute(this.attr);\n if (oldValue !== newValue) {\n this.node.setAttribute(this.attr, newValue);\n }\n }\n}\nclass PropertyBinding extends NodeBinding {\n constructor(node, expr, prop) {\n super(node, expr);\n this.prop = prop;\n }\n bind(data) {\n const newValue = replaceBinding(data, this.expr);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const oldValue = this.node[this.prop];\n if (oldValue !== newValue) {\n this.node[this.prop] = newValue;\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n}\nclass EventHandlerBinding extends NodeBinding {\n constructor(node, expr, eventName) {\n super(node, expr);\n this.eventName = eventName;\n }\n bind(data) {\n var _a;\n const path = extractBindingPath(this.expr);\n if (path != null) {\n (_a = this.disposable) === null || _a === void 0 ? void 0 : _a.dispose();\n const listener = getBindableValue(data, path, true);\n this.node.addEventListener(this.eventName, listener);\n this.disposable = {\n dispose: () => {\n this.node.removeEventListener(this.eventName, listener);\n },\n };\n }\n }\n}\nfunction generateBindings(node) {\n const bindings = [];\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node;\n const bindableAttributes = getBindableAttributes(el);\n bindableAttributes.forEach((attr) => {\n if (attr.name.startsWith('event:')) {\n const eventName = camelCase(attr.name.replace('event:', ''));\n bindings.push(new EventHandlerBinding(el, attr.value, eventName));\n }\n else if (attr.name.startsWith('attr:')) {\n bindings.push(new AttributeBinding(el, attr.value, attr.name.replace('attr:', '')));\n }\n else if (attr.name.startsWith('prop:')) {\n const propName = camelCase(attr.name.replace('prop:', ''));\n bindings.push(new PropertyBinding(el, attr.value, propName));\n }\n });\n }\n else if (node.nodeType === Node.TEXT_NODE &&\n node.textContent != null &&\n bindingRegEx.test(node.textContent)) {\n bindings.push(new TextNodeBinding(node, node.textContent));\n }\n for (let i = 0; i < node.childNodes.length; i++) {\n bindings.push(...generateBindings(node.childNodes[i]));\n }\n return bindings;\n}\nfunction getBindableAttributes(element) {\n return Array.from(element.attributes).filter((attr) => bindingRegEx.test(attr.value));\n}\nfunction extractBindingPath(expr) {\n const result = bindingRegEx.exec(expr);\n return result != null ? result[1] : undefined;\n}\nfunction replaceBindingString(data, expr) {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return expr.replace(`{{${path}}}`, value === null || value === void 0 ? void 0 : value.toString());\n }\n else {\n return expr;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction replaceBinding(data, expr) {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return value;\n }\n else {\n return expr;\n }\n}\nfunction getBindableValue(data, path, isHead = false) {\n const [head, ...tail] = path.split('.');\n if (isHead && tail.length === 0) {\n return data;\n }\n else if (isHead && tail.length > 0) {\n return getBindableValue(data, tail.join('.'), false);\n }\n else {\n const value = data[head];\n if (tail.length > 0) {\n return getBindableValue(value, tail.join('.'), false);\n }\n else {\n return value;\n }\n }\n}\n\nclass ElementPool {\n constructor(container, elementFactory) {\n this.container = container;\n this.elementFactory = elementFactory;\n this.instanceMap = new Map();\n this.elements = [];\n }\n swapHeadToTail(count) {\n const sliced = this.elements.splice(0, count);\n this.elements.splice(this.elements.length, 0, ...sliced);\n return this.elements.concat();\n }\n swapTailToHead(count) {\n const sliced = this.elements.splice(-count, count);\n this.elements.splice(0, 0, ...sliced);\n return this.elements.concat();\n }\n updateElements(count) {\n const diff = count - this.elements.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n this.createElement();\n }\n }\n else {\n for (let i = 0; i < -diff; i++) {\n this.deleteElement();\n }\n }\n return this.elements.concat();\n }\n updateData(f) {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n const data = f(i);\n instance === null || instance === void 0 ? void 0 : instance.bindings.bind(data);\n });\n }\n updateElementFactory(elementFactory) {\n this.elementFactory = elementFactory;\n this.updateElements(0);\n }\n iterateElements(f) {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n f(el, instance.bindings, i);\n });\n }\n createElement() {\n const instance = this.elementFactory();\n this.elements.push(instance.element);\n this.instanceMap.set(instance.element, instance);\n this.container.append(instance.element);\n return instance;\n }\n deleteElement() {\n const element = this.elements.pop();\n if (element != null) {\n this.instanceMap.delete(element);\n element.remove();\n }\n }\n}\n\nfunction append(container, element, data) {\n const bindings = new CollectionBinding(generateBindings(element));\n bindings.bind(data);\n container.appendChild(element);\n const created = container.lastElementChild;\n if (created != null) {\n return { element: created, bindings };\n }\n else {\n throw new Error('Failed to append element');\n }\n}\nfunction generateInstanceFromTemplate(template) {\n const fragment = template.content.cloneNode(true);\n const element = fragment.firstElementChild;\n const bindings = new CollectionBinding(generateBindings(fragment));\n return { element, bindings };\n}\n\nexport { AttributeBinding, CollectionBinding, ElementPool, EventHandlerBinding, NodeBinding, PropertyBinding, TextNodeBinding, append, generateBindings, generateInstanceFromTemplate };\n//# sourceMappingURL=bundle.js.map\n","export type DomScrollToOptions = ScrollToOptions;\n\nexport function getSceneTreeTableOffsetTop(el: HTMLElement): number {\n return el.getBoundingClientRect().top ?? 0;\n}\n\nexport function getSceneTreeTableViewportWidth(el: HTMLElement): number {\n return el.clientWidth;\n}\n\nexport function scrollToTop(\n el: HTMLElement,\n top: number,\n options: Pick<DomScrollToOptions, 'behavior'>,\n): void {\n el.scrollTo({ top, ...options });\n}\n","import { Disposable, EventDispatcher, Listener } from '@vertexvis/utils';\n\nexport class SceneTreeCellHoverController {\n public onStateChange = new EventDispatcher<string | undefined>();\n\n public setHovered(id?: string): void {\n this.onStateChange.emit(id);\n }\n\n public stateChanged(listener: Listener<string | undefined>): Disposable {\n return this.onStateChange.on(listener);\n }\n}\n","export function restartTimeout(\n fn: VoidFunction,\n existingTimeout?: number,\n delay = 200,\n): number {\n window.clearTimeout(existingTimeout);\n return window.setTimeout(fn, delay);\n}\n",":host {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n font-size: 0.825rem;\n\n /**\n * @prop --scene-tree-table-row-padding: CSS lengths that specifies the amount of\n * padding between the row's border and content.\n */\n --scene-tree-table-row-padding: 2px 0px;\n\n /**\n * @prop --scene-tree-table-column-gap: CSS length that specifies the amount of\n * padding between columns in the table.\n */\n --scene-tree-table-column-gap: 0.5rem;\n\n /**\n * @prop --scene-tree-table-column-resize-cursor: A CSS cursor value that will\n * be displayed when resizing a column. Defaults to `col-resize`.\n */\n --scene-tree-table-column-resize-cursor: col-resize;\n}\n\n.header {\n position: relative;\n display: grid;\n width: 100%;\n border-bottom: var(--scene-tree-toolbar-separator);\n}\n\n.table {\n position: relative;\n display: grid;\n width: 100%;\n height: 100%;\n overflow: auto;\n}\n\n.resize-overlay {\n position: absolute;\n top: 0;\n cursor: var(--scene-tree-table-column-resize-cursor);\n z-index: 1000;\n width: 100%;\n height: 100%;\n}\n\n.divider-overlay {\n position: absolute;\n top: 0;\n display: grid;\n pointer-events: none;\n z-index: 2000;\n width: 100%;\n height: 100%;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\nimport {\n Binding,\n ElementPool,\n generateInstanceFromTemplate,\n InstancedTemplate,\n} from '@vertexvis/html-templates';\n\nimport { readDOM } from '../../lib/stencil';\nimport { SceneTreeController } from '../scene-tree/lib/controller';\nimport { getSceneTreeViewportHeight } from '../scene-tree/lib/dom';\nimport { isLoadedRow, LoadedRow, Row } from '../scene-tree/lib/row';\nimport { RowDataProvider } from '../scene-tree/types';\nimport {\n DomScrollToOptions,\n getSceneTreeTableOffsetTop,\n getSceneTreeTableViewportWidth,\n scrollToTop,\n} from './lib/dom';\nimport { SceneTreeCellHoverController } from './lib/hover-controller';\nimport { restartTimeout } from './lib/window';\n\ninterface StateMap {\n columnElementPools?: WeakMap<\n HTMLVertexSceneTreeTableColumnElement,\n ElementPool\n >;\n headerInstances?: Array<InstancedTemplate<HTMLElement>>;\n headerDividerInstances?: Array<InstancedTemplate<HTMLElement>>;\n headerDividerListeners?: Array<(event: PointerEvent) => void>;\n\n viewportRows: Row[];\n\n headerHeight?: number;\n columnWidths: number[];\n columnWidthPercentages: number[];\n}\n\n@Component({\n tag: 'vertex-scene-tree-table-layout',\n styleUrl: 'scene-tree-table-layout.css',\n shadow: true,\n})\nexport class SceneTreeTableLayout {\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 * @internal\n */\n @Prop()\n public controller?: SceneTreeController;\n\n /**\n * @internal\n */\n @Prop()\n public rows: Row[] = [];\n\n /**\n * @internal\n */\n @Prop()\n public totalRows = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public rowHeight = 24;\n\n /**\n * The number of offscreen rows above and below the viewport to render. Having\n * a higher number reduces the chance of the browser not displaying a row\n * while scrolling.\n *\n * This prop will be automatically populated based on the `overScanCount` prop\n * specified in the parent `<vertex-scene-tree />` element.\n */\n @Prop()\n public overScanCount = 25;\n\n /**\n * A callback that is invoked immediately before a row is about to be rendered.\n * This callback can return additional data that can be bound to in a\n * template.\n *\n * This prop will be automatically populated based on the `rowData` prop\n * specified in the parent `<vertex-scene-tree />` element.\n *\n * @example\n *\n * ```html\n * <script>\n * const table = document.querySelector('vertex-scene-tree-table');\n * table.rowData = (row) => {\n * return { func: () => console.log('row', row.node.name) };\n * }\n * </script>\n *\n * <vertex-scene-tree>\n * <vertex-scene-tree-table>\n * <vertex-scene-tree-table-column>\n * <template>\n * <button event:click=\"{{row.data.func}}\">Hi</button>\n * </template>\n * </vertex-scene-tree-table-column>\n * </vertex-scene-tree-table>\n * </vertex-scene-tree>\n * ```\n */\n @Prop()\n public rowData?: RowDataProvider;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public layoutOffset = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public scrollOffset = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public layoutHeight?: number;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public layoutWidth?: number;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public viewportStartIndex = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public viewportEndIndex = 0;\n\n /**\n * @internal\n */\n @Event()\n public layoutRendered!: EventEmitter<void>;\n\n /**\n * An event that is emitted when the columns of this `<vertex-scene-tree-table-layout>`\n * are resized with an array containing the widths of the columns in pixels.\n */\n @Event({ bubbles: true })\n public columnsResized!: EventEmitter<number[]>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private columnGridLayout = '1fr';\n\n @State()\n private columnGridFixedLayout = '';\n\n @State()\n private isComputingCellHeight = true;\n\n @State()\n private lastDividerPointerPosition?: Point.Point;\n\n @State()\n private resizingColumnIndex?: number;\n\n @State()\n private isScrolling = false;\n\n @State()\n private scrollTimer: number | undefined;\n\n /**\n * This stores internal state that you want to preserve across live-reloads,\n * but shouldn't trigger a refresh if the data changes. Marking this with\n * @State to allow to preserve state across live-reloads.\n */\n @State()\n private stateMap: StateMap = {\n viewportRows: [],\n columnWidths: [],\n columnWidthPercentages: [],\n };\n\n private lastStartIndex = 0;\n private resizeObserver?: ResizeObserver;\n private headerResizeObserver?: ResizeObserver;\n\n private tableElement?: HTMLDivElement;\n private headerElement?: HTMLDivElement;\n private columnElements: HTMLVertexSceneTreeTableColumnElement[] = [];\n\n private cellHoverController = new SceneTreeCellHoverController();\n\n public componentWillLoad(): void {\n this.updateColumnElements();\n this.createPools();\n this.initializeColumnLayout();\n\n this.headerResizeObserver = new ResizeObserver(() => {\n this.stateMap.headerHeight = undefined;\n this.computeHeaderHeight();\n this.updateLayoutPosition();\n });\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateLayoutPosition();\n this.clearLayoutHeight();\n this.clearLayoutWidth();\n this.recomputeColumnWidths();\n this.computeColumnGridLayout();\n });\n }\n\n public async componentDidLoad(): Promise<void> {\n this.tableElement?.addEventListener('scroll', this.handleScrollChanged, {\n passive: true,\n });\n\n if (this.headerElement != null) {\n this.headerResizeObserver?.observe(this.headerElement);\n }\n\n this.resizeObserver?.observe(this.hostEl);\n\n // These measurements require rendered DOM, but mutating tracked values\n // directly in componentDidLoad triggers Stencil dev warnings.\n await Promise.resolve();\n await this.initializeMeasuredLayout();\n }\n\n public async componentWillRender(): Promise<void> {\n await this.computeAndUpdateViewportRows();\n }\n\n public componentDidRender(): void {\n this.layoutColumns();\n\n this.layoutRendered.emit();\n }\n\n public async componentDidUpdate(): Promise<void> {\n if (this.isComputingCellHeight) {\n await this.computeCellHeight();\n }\n }\n\n public disconnectedCallback(): void {\n this.tableElement?.removeEventListener('scroll', this.handleScrollChanged);\n this.removeDividerDragListeners();\n this.headerResizeObserver?.disconnect();\n this.resizeObserver?.disconnect();\n this.stateMap.columnWidths = [];\n this.stateMap.columnWidthPercentages = [];\n }\n\n @Watch('rows')\n @Watch('totalRows')\n @Watch('rowHeight')\n protected async handleViewportRowsPropsChanged(): Promise<void> {\n await this.computeAndUpdateViewportRows();\n }\n\n /**\n * Scrolls the table to the provided top value.\n *\n * @param top The position to scroll to.\n * @param options A set of options to configure the scrolling behavior.\n */\n @Method()\n public async scrollToPosition(\n top: number,\n options: Pick<DomScrollToOptions, 'behavior'>,\n ): Promise<void> {\n if (this.tableElement != null) {\n scrollToTop(this.tableElement, top, options);\n }\n }\n\n /**\n * Attempts to compute the height of templated cells. Used for internals\n * or testing.\n *\n * @internal\n * @ignore\n */\n @Method()\n public async attemptComputeCellHeight(): Promise<void> {\n this.computeCellHeight();\n }\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div\n class=\"header\"\n ref={(ref) => (this.headerElement = ref)}\n style={{\n gridTemplateColumns: this.columnGridFixedLayout,\n display: this.columnElements.length <= 1 ? 'none' : 'grid',\n }}\n >\n <slot name=\"header\" />\n </div>\n <div\n class=\"table\"\n ref={(ref) => (this.tableElement = ref)}\n style={{\n gridTemplateColumns: this.columnGridLayout,\n }}\n >\n <slot\n onSlotchange={() => {\n this.ensureDividerTemplateDefined();\n this.updateColumnElements();\n this.recreateColumnPools();\n this.computeInitialColumnWidths();\n this.rebindHeaderData();\n this.computeColumnGridLayout();\n }}\n />\n </div>\n <div\n class=\"divider-overlay\"\n style={{\n gridTemplateColumns: this.columnGridFixedLayout,\n }}\n >\n <slot name=\"divider\" />\n </div>\n {this.resizingColumnIndex != null && <div class=\"resize-overlay\" />}\n </Host>\n );\n }\n\n private computeViewportRows(): void {\n const viewportHeight = this.getLayoutHeight();\n const canComputeIndices =\n viewportHeight != null &&\n viewportHeight > 0 &&\n !this.isComputingCellHeight;\n\n if (canComputeIndices) {\n const viewportCount = Math.ceil(viewportHeight / this.rowHeight);\n\n const viewportStartIndex = Math.floor(this.scrollOffset / this.rowHeight);\n const viewportEndIndex = viewportStartIndex + viewportCount;\n\n const startIndex = Math.max(0, viewportStartIndex - this.overScanCount);\n const endIndex = Math.min(\n this.totalRows - 1,\n viewportEndIndex + this.overScanCount,\n );\n\n const rows = this.getViewportRows(startIndex, endIndex);\n\n this.viewportStartIndex = startIndex;\n this.viewportEndIndex = endIndex;\n this.stateMap.viewportRows = rows;\n }\n }\n\n private initializeColumnLayout(): void {\n this.computeInitialColumnWidths();\n this.computeColumnGridLayout();\n this.ensureDividerTemplateDefined();\n this.rebindHeaderData();\n }\n\n private async initializeMeasuredLayout(): Promise<void> {\n await this.computeCellHeight();\n this.computeHeaderHeight();\n }\n\n private async computeAndUpdateViewportRows(): Promise<void> {\n this.computeViewportRows();\n\n if (this.controller?.isConnected && this.totalRows > 0) {\n await this.controller.updateActiveRowRange(\n this.viewportStartIndex,\n this.viewportEndIndex,\n );\n }\n }\n\n private layoutColumns = (): void => {\n const visibleRowCount = this.viewportEndIndex - this.viewportStartIndex + 1;\n const diff = this.viewportStartIndex - this.lastStartIndex;\n this.lastStartIndex = this.viewportStartIndex;\n\n this.iterateColumns((col, pool, colIndex) => {\n pool.updateElements(visibleRowCount);\n\n if (diff > 0) {\n pool.swapHeadToTail(diff);\n } else {\n pool.swapTailToHead(-diff);\n }\n\n col.style.minHeight = `${this.rowHeight * this.totalRows}px`;\n\n const cellPaddingLeft =\n colIndex === 0\n ? (depth: number) => `calc(${depth} * 0.5rem)`\n : () => `0`;\n\n pool.iterateElements((el, binding, rowIndex) => {\n const row = this.stateMap.viewportRows[rowIndex];\n\n if (isLoadedRow(row)) {\n this.updateCell(row, el, binding, rowIndex, cellPaddingLeft);\n }\n });\n });\n };\n\n private updateCell = (\n row: LoadedRow,\n cell: HTMLElement,\n binding: Binding,\n rowIndex: number,\n cellPaddingLeft: (depth: number) => string,\n ): void => {\n cell.style.position = 'absolute';\n cell.style.top = `${(this.viewportStartIndex + rowIndex) * this.rowHeight}px`;\n cell.style.boxSizing = 'border-box';\n cell.style.height = `${this.rowHeight}px`;\n cell.style.width = '100%';\n cell.style.paddingLeft = cellPaddingLeft(row.node.depth);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n (cell as any).tree = this.tree;\n (cell as any).node = row.node;\n (cell as any).hoverController = this.cellHoverController;\n (cell as any).isScrolling = this.isScrolling;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n binding.bind(row);\n };\n\n private updateLayoutPosition = (): void => {\n readDOM(() => {\n if (this.tableElement != null) {\n this.layoutOffset = getSceneTreeTableOffsetTop(this.tableElement);\n }\n });\n };\n\n private recomputeColumnWidths = (): void => {\n const layoutWidth = this.getLayoutWidth();\n if (\n layoutWidth != null &&\n this.stateMap.columnWidths.length ===\n this.stateMap.columnWidthPercentages.length\n ) {\n this.stateMap.columnWidths = this.stateMap.columnWidthPercentages.map(\n (w) => w * layoutWidth,\n );\n\n this.columnsResized.emit(this.stateMap.columnWidths);\n }\n };\n\n private recomputeColumnPercentages = (): void => {\n const layoutWidth = this.getLayoutWidth();\n if (\n layoutWidth != null &&\n this.stateMap.columnWidths.length ===\n this.stateMap.columnWidthPercentages.length\n ) {\n this.stateMap.columnWidthPercentages = this.stateMap.columnWidths.map(\n (w) => w / layoutWidth,\n );\n }\n };\n\n private computeInitialColumnWidths = (): void => {\n this.stateMap.columnWidths = this.columnElements.map(\n (c) => c.initialWidth ?? 100,\n );\n\n const layoutWidth = this.getLayoutWidth();\n if (layoutWidth != null) {\n const columnWidthSum = this.stateMap.columnWidths.reduce(\n (result, w) => result + w,\n 0,\n );\n const scaledColumnWidths = this.stateMap.columnWidths.map(\n (w) => w * (layoutWidth / columnWidthSum),\n );\n\n this.stateMap.columnWidthPercentages = scaledColumnWidths.map(\n (w) => w / layoutWidth,\n );\n this.stateMap.columnWidths = scaledColumnWidths;\n }\n };\n\n private updateColumnElements = (): void => {\n this.columnElements = Array.from(\n this.hostEl.querySelectorAll('vertex-scene-tree-table-column'),\n ) as Array<HTMLVertexSceneTreeTableColumnElement>;\n };\n\n private createPools(): void {\n if (this.stateMap.columnElementPools == null) {\n this.stateMap.columnElementPools = this.columnElements.reduce(\n (map, c) =>\n map.set(\n c,\n new ElementPool(c, () => this.createColumnCellInstance(c)),\n ),\n new WeakMap(),\n );\n }\n }\n\n private recreateColumnPools(): void {\n this.columnElements.forEach((c) => {\n if (this.stateMap.columnElementPools?.get(c) == null) {\n this.stateMap.columnElementPools?.set(\n c,\n new ElementPool(c, () => this.createColumnCellInstance(c)),\n );\n } else {\n this.stateMap.columnElementPools\n .get(c)\n ?.updateElementFactory(() => this.createColumnCellInstance(c));\n }\n });\n }\n\n private iterateColumns(\n f: (\n column: HTMLVertexSceneTreeTableColumnElement,\n pool: ElementPool,\n index: number,\n ) => void,\n ): void {\n this.columnElements.forEach((column, i) => {\n const pool = this.stateMap.columnElementPools?.get(column);\n if (pool != null) {\n f(column, pool, i);\n } else {\n throw new Error('Cannot find pool for column');\n }\n });\n }\n\n private ensureDividerTemplateDefined(): void {\n const template = this.hostEl.querySelector(\n 'template[slot=\"divider\"]',\n ) as HTMLTemplateElement;\n if (template == null) {\n const defaultDividerTemplate = document.createElement('template');\n defaultDividerTemplate.slot = 'divider';\n defaultDividerTemplate.innerHTML = `\n <vertex-scene-tree-table-resize-divider slot=\"divider\">\n </vertex-scene-tree-table-resize-divider>\n `;\n this.hostEl.appendChild(defaultDividerTemplate);\n }\n }\n\n private createHeaderInstance(\n column: HTMLVertexSceneTreeTableColumnElement,\n ): InstancedTemplate<HTMLElement> | undefined {\n const template = column.querySelector(\n 'template[slot=\"header\"]',\n ) as HTMLTemplateElement;\n if (template != null) {\n return generateInstanceFromTemplate(template);\n }\n }\n\n private createDividerInstance(): InstancedTemplate<HTMLElement> {\n const template = this.hostEl.querySelector(\n 'template[slot=\"divider\"]',\n ) as HTMLTemplateElement;\n if (template != null) {\n return generateInstanceFromTemplate(template);\n } else {\n throw new Error('Table is missing divider template element');\n }\n }\n\n private createColumnCellInstance(\n column: HTMLVertexSceneTreeTableColumnElement,\n ): InstancedTemplate<HTMLElement> {\n const template = column.querySelector(\n 'template:not([slot=\"header\"])',\n ) as HTMLTemplateElement;\n if (template != null) {\n return generateInstanceFromTemplate(template);\n } else {\n throw new Error('Column is missing cell template element');\n }\n }\n\n private computeCellHeight = async (): Promise<void> => {\n if (this.isComputingCellHeight && this.columnElements.length > 0) {\n const dummyData: LoadedRow = {\n index: 0,\n node: {\n id: { hex: '' },\n name: 'Dummy row',\n expanded: false,\n selected: false,\n visible: false,\n partiallyVisible: false,\n isLeaf: false,\n depth: 0,\n columnsList: [],\n filterHit: false,\n hasGeometry: false,\n phantom: false,\n endItem: false,\n },\n metadata: {},\n data: {},\n };\n const { bindings, element } = this.createColumnCellInstance(\n this.columnElements[0],\n );\n bindings.bind(dummyData);\n element.style.visibility = 'hidden';\n\n this.columnElements[0]?.appendChild(element);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if (typeof (element as any).componentOnReady === 'function') {\n await (element as any).componentOnReady();\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n let height = element.clientHeight;\n if (height === 0) {\n height = await new Promise((resolve) => {\n setTimeout(() => resolve(element.getBoundingClientRect().height), 5);\n });\n }\n\n this.rowHeight = height ?? this.rowHeight;\n element.remove();\n this.isComputingCellHeight = this.rowHeight === 0;\n }\n };\n\n private computeHeaderHeight = (): void => {\n if (this.stateMap.headerHeight == null) {\n this.stateMap.headerHeight =\n this.headerElement?.getBoundingClientRect().height;\n this.hostEl.style.setProperty(\n '--header-height',\n `${this.stateMap.headerHeight}px`,\n );\n }\n };\n\n private computeColumnGridLayout = (): void => {\n if (this.stateMap.columnWidths.length === 0) {\n this.stateMap.columnWidths = this.columnElements.map(\n (c) => c.initialWidth ?? 100,\n );\n }\n\n const layoutWidth = this.getLayoutWidth();\n if (layoutWidth != null) {\n if (this.stateMap.columnWidthPercentages.length === 0) {\n this.stateMap.columnWidthPercentages = this.columnElements.map(\n (c) => (c.initialWidth ?? 100) / layoutWidth,\n );\n }\n }\n\n /**\n * This layout uses `1fr` instead of the final column width to\n * allow the final column to shrink when a scrollbar appears.\n *\n * This flex behavior is not desired for the header and divider\n * elements since they are not scrollable, and `columnGridFixedLayout`\n * should be used instead.\n */\n this.columnGridLayout = `${this.stateMap.columnWidths\n .slice(0, -1)\n .reduce((res, w) => `${res} ${w}px`, '')} 1fr`;\n\n this.columnGridFixedLayout = `${this.stateMap.columnWidths.reduce(\n (res, w) => `${res} ${w}px`,\n '',\n )}`;\n };\n\n private bindHeaderData = (): void => {\n if (this.stateMap.headerInstances == null) {\n this.stateMap.headerInstances = this.columnElements\n .map((c, i) => {\n const instance = this.createHeaderInstance(c);\n\n if (instance != null) {\n instance.element.style.paddingRight =\n i === this.columnElements.length - 1\n ? `0`\n : `var(--scene-tree-table-column-gap)`;\n instance.element.slot = 'header';\n instance.element.style.gridColumnStart = `${i + 1}`;\n instance.element.style.gridColumnEnd = `${i + 2}`;\n this.hostEl?.appendChild(instance.element);\n }\n\n return instance;\n })\n .filter((i) => i != null) as Array<InstancedTemplate<HTMLElement>>;\n }\n\n if (this.stateMap.headerDividerInstances == null) {\n this.stateMap.headerDividerInstances = this.columnElements\n .slice(0, -1)\n .map((_, i) => {\n const instance = this.createDividerInstance();\n\n instance.element.slot = 'divider';\n instance.element.style.position = 'absolute';\n instance.element.style.right = '0';\n instance.element.style.pointerEvents = 'auto';\n instance.element.style.gridColumnStart = `${i + 1}`;\n instance.element.style.gridColumnEnd = `${i + 2}`;\n this.hostEl?.appendChild(instance.element);\n\n return instance;\n });\n }\n };\n\n private rebindHeaderData = (): void => {\n this.removeDividerDragListeners();\n\n this.stateMap.headerInstances?.forEach((i) => i.element.remove());\n this.stateMap.headerDividerInstances?.forEach((i) => i.element.remove());\n this.stateMap.headerInstances = undefined;\n this.stateMap.headerDividerInstances = undefined;\n\n this.bindHeaderData();\n this.addDividerDragListeners();\n };\n\n private addDividerDragListeners(): void {\n this.stateMap.headerDividerListeners =\n this.stateMap.headerDividerInstances?.map((d, i) => {\n const listener = this.createDividerPointerDownHandler(i);\n\n d.element.addEventListener('pointerdown', listener);\n\n return listener;\n });\n }\n\n private removeDividerDragListeners(): void {\n if (this.stateMap.headerDividerListeners != null) {\n const listeners = this.stateMap.headerDividerListeners;\n\n this.stateMap.headerDividerInstances?.forEach((d, i) => {\n const listener = listeners[i];\n if (listener != null) {\n d.element.removeEventListener('pointerdown', listener);\n }\n });\n this.stateMap.headerDividerListeners = undefined;\n }\n }\n\n private createDividerPointerDownHandler = (\n index: number,\n ): ((event: PointerEvent) => void) => {\n return (event: PointerEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n\n this.lastDividerPointerPosition = Point.create(\n Math.floor(event.clientX),\n Math.floor(event.clientY),\n );\n this.resizingColumnIndex = index;\n this.stateMap.headerDividerInstances?.[index]?.element.classList.add(\n 'dragging',\n );\n\n window.addEventListener('pointermove', this.handleDividerPointerMove);\n window.addEventListener('pointerup', this.handleDividerPointerUp);\n };\n };\n\n private handleDividerPointerMove = (event: PointerEvent): void => {\n const current = Point.create(\n Math.floor(event.clientX),\n Math.floor(event.clientY),\n );\n\n if (\n this.lastDividerPointerPosition != null &&\n this.resizingColumnIndex != null\n ) {\n const resizingIndex = this.resizingColumnIndex;\n const diff = Point.subtract(this.lastDividerPointerPosition, current);\n\n if (Math.abs(diff.x) >= 1 && this.isValidResize(diff, resizingIndex)) {\n this.stateMap.columnWidths = this.stateMap.columnWidths.map((w, i) =>\n i === resizingIndex ? w - diff.x : w,\n );\n\n if (resizingIndex + 1 < this.stateMap.columnWidths.length) {\n this.stateMap.columnWidths = this.stateMap.columnWidths.map((w, i) =>\n i === resizingIndex + 1 ? w + diff.x : w,\n );\n }\n\n this.lastDividerPointerPosition = current;\n this.computeColumnGridLayout();\n }\n }\n };\n\n private handleDividerPointerUp = (): void => {\n if (this.resizingColumnIndex != null) {\n this.stateMap.headerDividerInstances?.[\n this.resizingColumnIndex\n ]?.element.classList.remove('dragging');\n }\n this.lastDividerPointerPosition = undefined;\n this.resizingColumnIndex = undefined;\n\n this.recomputeColumnPercentages();\n this.recomputeColumnWidths();\n\n window.removeEventListener('pointermove', this.handleDividerPointerMove);\n window.removeEventListener('pointerup', this.handleDividerPointerUp);\n };\n\n private isValidResize = (diff: Point.Point, index: number): boolean => {\n const currentColumn = this.columnElements[index];\n const nextColumn = this.columnElements[index + 1];\n const currentWidth = this.stateMap.columnWidths[index];\n const nextWidth = this.stateMap.columnWidths[index + 1];\n const currentMinWidth = currentColumn.minWidth ?? 0;\n const currentMaxWidth = currentColumn.maxWidth ?? Number.MAX_SAFE_INTEGER;\n const nextMinWidth = nextColumn.minWidth ?? 0;\n const nextMaxWidth = nextColumn.maxWidth ?? Number.MAX_SAFE_INTEGER;\n\n const currentIsValid =\n currentWidth - diff.x > currentMinWidth &&\n currentWidth - diff.x < currentMaxWidth;\n const nextIsValid =\n nextColumn != null\n ? nextWidth + diff.x > nextMinWidth && nextWidth + diff.x < nextMaxWidth\n : true;\n\n return currentIsValid && nextIsValid;\n };\n\n private handleScrollChanged = async (event: Event): Promise<void> => {\n this.isScrolling = true;\n\n this.scrollTimer = restartTimeout(() => {\n this.isScrolling = false;\n }, this.scrollTimer);\n\n this.scrollOffset = (event.target as HTMLElement).scrollTop;\n await this.computeAndUpdateViewportRows();\n };\n\n private getViewportRows(startIndex: number, endIndex: number): Row[] {\n const rows = this.rows.slice(startIndex, endIndex + 1);\n return rows.map((row) => (row != null ? this.populateRowData(row) : row));\n }\n\n private populateRowData(row: Row): Row {\n if (this.rowData != null && row != null) {\n const data = this.rowData?.(row) || {};\n return { ...row, data };\n } else {\n return row;\n }\n }\n\n private getLayoutHeight(): number | undefined {\n if (this.layoutHeight == null && this.tableElement != null) {\n this.layoutHeight = getSceneTreeViewportHeight(this.tableElement);\n }\n return this.layoutHeight;\n }\n\n private getLayoutWidth(): number | undefined {\n if (this.layoutWidth == null) {\n const computedWidth = getSceneTreeTableViewportWidth(this.hostEl);\n if (computedWidth > 0) {\n this.layoutWidth = computedWidth;\n }\n }\n return this.layoutWidth;\n }\n\n private clearLayoutHeight(): void {\n this.layoutHeight = undefined;\n }\n\n private clearLayoutWidth(): void {\n this.layoutWidth = undefined;\n }\n}\n",":host {\n /**\n * @prop --scene-tree-toolbar-content-gap: A CSS length that specifies the\n * horizontal gap between slots.\n */\n --scene-tree-toolbar-content-gap: 8px;\n\n display: flex;\n padding: 0.5rem;\n}\n\n.content {\n display: flex;\n align-items: center;\n}\n\n.content-primary {\n width: 100%;\n}\n\n::slotted(:not(:first-child)) {\n margin-left: var(--scene-tree-toolbar-content-gap);\n}\n","import { Component, h, Host } from '@stencil/core';\n\n/**\n * @slot The primary content that will be placed in the center of the toolbar\n * and stretch to container's available width.\n * @slot before - Content that is placed before the primary content.\n * @slot after - Content that is placed after the primary content.\n */\n@Component({\n tag: 'vertex-scene-tree-toolbar',\n styleUrl: 'scene-tree-toolbar.css',\n shadow: true,\n})\nexport class SceneTreeToolbar {\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"content\">\n <slot name=\"before\" />\n </div>\n <div class=\"content content-primary\">\n <slot />\n </div>\n <div class=\"content\">\n <slot name=\"after\" />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}