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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/dist/cjs/config-20ozv4y8.js.map +1 -1
  2. package/dist/cjs/controller-BhcNbaX_.js.map +1 -1
  3. package/dist/cjs/controller-CSwG6gbQ.js.map +1 -1
  4. package/dist/cjs/cursors-BZmDRtaZ.js.map +1 -1
  5. package/dist/cjs/dom-BBil4aN3.js.map +1 -1
  6. package/dist/cjs/dom-CvGkFQon.js.map +1 -1
  7. package/dist/cjs/entities-D6kgGria.js.map +1 -1
  8. package/dist/cjs/geometry_pb-BTko2Wi0.js.map +1 -1
  9. package/dist/cjs/grpc-BsWFEUrc.js.map +1 -1
  10. package/dist/cjs/index.cjs.js.map +1 -1
  11. package/dist/cjs/model-C9WvOKYT.js.map +1 -1
  12. package/dist/cjs/model-D17EQTIh.js.map +1 -1
  13. package/dist/cjs/model-DAB4oD5n.js.map +1 -1
  14. package/dist/cjs/model-DkXCzhs_.js.map +1 -1
  15. package/dist/cjs/multiElementInteractionHandler-BHvRKVIp.js.map +1 -1
  16. package/dist/cjs/overlays-B-06bUbI.js.map +1 -1
  17. package/dist/cjs/queries-Da9I-xMf.js.map +1 -1
  18. package/dist/cjs/regl-component-HhKCyGQ3.js.map +1 -1
  19. package/dist/cjs/representation_pb-CrCGjlyP.js.map +1 -1
  20. package/dist/cjs/results-1wRRZiYG.js.map +1 -1
  21. package/dist/cjs/row-Cet6xXup.js.map +1 -1
  22. package/dist/cjs/stencil-Hsr_8Chs.js.map +1 -1
  23. package/dist/cjs/streamAttributes-D_J-W8-2.js.map +1 -1
  24. package/dist/cjs/templates-DvjgjnlO.js.map +1 -1
  25. package/dist/cjs/util-DIJSIQXH.js.map +1 -1
  26. package/dist/cjs/utils-CibrnHQ4.js.map +1 -1
  27. package/dist/cjs/utils-D8MbXbwO.js.map +1 -1
  28. package/dist/cjs/utils-qErVs2Vt.js.map +1 -1
  29. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +6 -8
  30. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
  31. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
  32. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
  33. package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
  34. package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
  35. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +2 -2
  36. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
  37. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  38. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js.map +1 -1
  39. package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
  40. package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js.map +1 -1
  41. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +1 -1
  42. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js.map +1 -1
  43. package/dist/cjs/vertex-viewer-icon.cjs.entry.js.map +1 -1
  44. package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js.map +1 -1
  45. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
  46. package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
  47. package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
  48. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js.map +1 -1
  49. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
  50. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
  51. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js.map +1 -1
  52. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js.map +1 -1
  53. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +2 -2
  54. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
  55. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
  56. package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +1 -1
  57. package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js.map +1 -1
  58. package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js.map +1 -1
  59. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +4 -5
  60. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
  61. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
  62. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js.map +1 -1
  63. package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js.map +1 -1
  64. package/dist/cjs/vertex-viewer.cjs.entry.js +9 -5
  65. package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
  66. package/dist/cjs/viewport-CG1VYkIU.js.map +1 -1
  67. package/dist/collection/components/scene-tree/errors.js.map +1 -1
  68. package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
  69. package/dist/collection/components/scene-tree/lib/dom.js.map +1 -1
  70. package/dist/collection/components/scene-tree/lib/errors.js.map +1 -1
  71. package/dist/collection/components/scene-tree/lib/grpc.js.map +1 -1
  72. package/dist/collection/components/scene-tree/lib/handlers.js.map +1 -1
  73. package/dist/collection/components/scene-tree/lib/row.js.map +1 -1
  74. package/dist/collection/components/scene-tree/lib/viewer-ops.js.map +1 -1
  75. package/dist/collection/components/scene-tree/scene-tree.js +2 -2
  76. package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
  77. package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
  78. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
  79. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
  80. package/dist/collection/components/scene-tree-table-cell/utils.js.map +1 -1
  81. package/dist/collection/components/scene-tree-table-layout/lib/dom.js.map +1 -1
  82. package/dist/collection/components/scene-tree-table-layout/lib/window.js.map +1 -1
  83. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +5 -5
  84. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js.map +1 -1
  85. package/dist/collection/components/viewer/utils.js.map +1 -1
  86. package/dist/collection/components/viewer/viewer.js +9 -5
  87. package/dist/collection/components/viewer/viewer.js.map +1 -1
  88. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +2 -2
  89. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js.map +1 -1
  90. package/dist/collection/components/viewer-dom-element/utils.js.map +1 -1
  91. package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +1 -1
  92. package/dist/collection/components/viewer-dom-element/viewer-dom-element.js.map +1 -1
  93. package/dist/collection/components/viewer-dom-group/utils.js.map +1 -1
  94. package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +1 -1
  95. package/dist/collection/components/viewer-dom-group/viewer-dom-group.js.map +1 -1
  96. package/dist/collection/components/viewer-dom-renderer/renderer2d.js.map +1 -1
  97. package/dist/collection/components/viewer-dom-renderer/renderer3d.js.map +1 -1
  98. package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js.map +1 -1
  99. package/dist/collection/components/viewer-hit-result-indicator/lib/dom.js.map +1 -1
  100. package/dist/collection/components/viewer-hit-result-indicator/lib/indicator.js.map +1 -1
  101. package/dist/collection/components/viewer-hit-result-indicator/lib/plane.js.map +1 -1
  102. package/dist/collection/components/viewer-hit-result-indicator/lib/point.js.map +1 -1
  103. package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js +1 -1
  104. package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js.map +1 -1
  105. package/dist/collection/components/viewer-icon/viewer-icon.js.map +1 -1
  106. package/dist/collection/components/viewer-markup/markup-utils.js.map +1 -1
  107. package/dist/collection/components/viewer-markup/viewer-markup-components.js.map +1 -1
  108. package/dist/collection/components/viewer-markup/viewer-markup.js +1 -1
  109. package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
  110. package/dist/collection/components/viewer-markup-arrow/interactions.js.map +1 -1
  111. package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
  112. package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow-components.js.map +1 -1
  113. package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js.map +1 -1
  114. package/dist/collection/components/viewer-markup-circle/interactions.js.map +1 -1
  115. package/dist/collection/components/viewer-markup-circle/utils.js.map +1 -1
  116. package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js.map +1 -1
  117. package/dist/collection/components/viewer-markup-freeform/interactions.js.map +1 -1
  118. package/dist/collection/components/viewer-markup-freeform/utils.js.map +1 -1
  119. package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js.map +1 -1
  120. package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
  121. package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js.map +1 -1
  122. package/dist/collection/components/viewer-measurement-distance/hitTest.js.map +1 -1
  123. package/dist/collection/components/viewer-measurement-distance/interactions.js.map +1 -1
  124. package/dist/collection/components/viewer-measurement-distance/utils.js.map +1 -1
  125. package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
  126. package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js +1 -1
  127. package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js.map +1 -1
  128. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +1 -1
  129. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js.map +1 -1
  130. package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js.map +1 -1
  131. package/dist/collection/components/viewer-pin-group/utils.js.map +1 -1
  132. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +2 -2
  133. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js.map +1 -1
  134. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
  135. package/dist/collection/components/viewer-pin-tool/utils.js.map +1 -1
  136. package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js +1 -1
  137. package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js.map +1 -1
  138. package/dist/collection/components/viewer-teleport-tool/viewer-teleport-tool.js.map +1 -1
  139. package/dist/collection/components/viewer-transform-widget/util.js +1 -2
  140. package/dist/collection/components/viewer-transform-widget/util.js.map +1 -1
  141. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
  142. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +3 -3
  143. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
  144. package/dist/collection/components/viewer-transform-widget/widget.js.map +1 -1
  145. package/dist/collection/components/viewer-view-cube/viewer-view-cube.js +1 -1
  146. package/dist/collection/components/viewer-view-cube/viewer-view-cube.js.map +1 -1
  147. package/dist/collection/components/viewer-walk-mode-tool/viewer-walk-mode-tool.js.map +1 -1
  148. package/dist/collection/lib/annotations/controller.js.map +1 -1
  149. package/dist/collection/lib/canvases/controller.js.map +1 -1
  150. package/dist/collection/lib/canvases/mapper.js.map +1 -1
  151. package/dist/collection/lib/config.js.map +1 -1
  152. package/dist/collection/lib/cursors.js.map +1 -1
  153. package/dist/collection/lib/dom.js.map +1 -1
  154. package/dist/collection/lib/grpc.js.map +1 -1
  155. package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
  156. package/dist/collection/lib/interactions/flyToPartKeyInteraction.js.map +1 -1
  157. package/dist/collection/lib/interactions/flyToPositionKeyInteraction.js.map +1 -1
  158. package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
  159. package/dist/collection/lib/interactions/interactionApiOrthographic.js.map +1 -1
  160. package/dist/collection/lib/interactions/interactionApiPerspective.js.map +1 -1
  161. package/dist/collection/lib/interactions/mouseInteractionHandler.js.map +1 -1
  162. package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
  163. package/dist/collection/lib/interactions/multiElementInteractionHandler.js.map +1 -1
  164. package/dist/collection/lib/interactions/multiPointerInteractionHandler.js.map +1 -1
  165. package/dist/collection/lib/interactions/multiTouchInteractionHandler.js.map +1 -1
  166. package/dist/collection/lib/interactions/pointerInteractionHandler.js.map +1 -1
  167. package/dist/collection/lib/interactions/tapInteractionHandler.js.map +1 -1
  168. package/dist/collection/lib/interactions/touchInteractionHandler.js.map +1 -1
  169. package/dist/collection/lib/keyBinding.js.map +1 -1
  170. package/dist/collection/lib/mappers/annotation.js.map +1 -1
  171. package/dist/collection/lib/mappers/camera.js.map +1 -1
  172. package/dist/collection/lib/mappers/color.js.map +1 -1
  173. package/dist/collection/lib/mappers/colorMaterial.js.map +1 -1
  174. package/dist/collection/lib/mappers/corePb.js.map +1 -1
  175. package/dist/collection/lib/mappers/corePbJs.js.map +1 -1
  176. package/dist/collection/lib/mappers/frameStreaming.js.map +1 -1
  177. package/dist/collection/lib/mappers/geometry.js.map +1 -1
  178. package/dist/collection/lib/mappers/material.js.map +1 -1
  179. package/dist/collection/lib/mappers/pagination.js.map +1 -1
  180. package/dist/collection/lib/mappers/scalar.js.map +1 -1
  181. package/dist/collection/lib/mappers/streamAttributes.js.map +1 -1
  182. package/dist/collection/lib/markup/interactions.js.map +1 -1
  183. package/dist/collection/lib/measurement/controller.js.map +1 -1
  184. package/dist/collection/lib/measurement/entities.js.map +1 -1
  185. package/dist/collection/lib/measurement/interactions.js.map +1 -1
  186. package/dist/collection/lib/measurement/mapper.js.map +1 -1
  187. package/dist/collection/lib/measurement/model.js.map +1 -1
  188. package/dist/collection/lib/measurement/overlays.js.map +1 -1
  189. package/dist/collection/lib/measurement/results.js.map +1 -1
  190. package/dist/collection/lib/meters.js.map +1 -1
  191. package/dist/collection/lib/model-views/controller.js.map +1 -1
  192. package/dist/collection/lib/model-views/mapper.js.map +1 -1
  193. package/dist/collection/lib/pins/controller.js.map +1 -1
  194. package/dist/collection/lib/pins/interactions.js.map +1 -1
  195. package/dist/collection/lib/pmi/controller.js.map +1 -1
  196. package/dist/collection/lib/pmi/mapper.js.map +1 -1
  197. package/dist/collection/lib/rendering/canvas.js.map +1 -1
  198. package/dist/collection/lib/rendering/imageLoaders.js.map +1 -1
  199. package/dist/collection/lib/rendering/matrices.js.map +1 -1
  200. package/dist/collection/lib/rendering/timing.js.map +1 -1
  201. package/dist/collection/lib/rendering/utils.js.map +1 -1
  202. package/dist/collection/lib/rendering/vectors.js.map +1 -1
  203. package/dist/collection/lib/scene-items/controller.js.map +1 -1
  204. package/dist/collection/lib/scene-items/mapper.js.map +1 -1
  205. package/dist/collection/lib/scenes/camera.js.map +1 -1
  206. package/dist/collection/lib/scenes/cameraRenderResult.js.map +1 -1
  207. package/dist/collection/lib/scenes/colorMaterial.js.map +1 -1
  208. package/dist/collection/lib/scenes/crossSectioner.js.map +1 -1
  209. package/dist/collection/lib/scenes/mapper.js.map +1 -1
  210. package/dist/collection/lib/scenes/operations.js.map +1 -1
  211. package/dist/collection/lib/scenes/queries.js.map +1 -1
  212. package/dist/collection/lib/scenes/raycaster.js.map +1 -1
  213. package/dist/collection/lib/scenes/scene.js.map +1 -1
  214. package/dist/collection/lib/scenes/sceneOperationExecuteResult.js.map +1 -1
  215. package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
  216. package/dist/collection/lib/stencil.js.map +1 -1
  217. package/dist/collection/lib/storage.js.map +1 -1
  218. package/dist/collection/lib/stream/dispatcher.js.map +1 -1
  219. package/dist/collection/lib/stream/stream.js.map +1 -1
  220. package/dist/collection/lib/stream/utils.js.map +1 -1
  221. package/dist/collection/lib/teleportation/interactions.js.map +1 -1
  222. package/dist/collection/lib/templates.js.map +1 -1
  223. package/dist/collection/lib/token.js.map +1 -1
  224. package/dist/collection/lib/transforms/axis-lines.js.map +1 -1
  225. package/dist/collection/lib/transforms/axis-rotation.js.map +1 -1
  226. package/dist/collection/lib/transforms/axis-translation.js.map +1 -1
  227. package/dist/collection/lib/transforms/controller.js.map +1 -1
  228. package/dist/collection/lib/transforms/drawable.js.map +1 -1
  229. package/dist/collection/lib/transforms/hits.js.map +1 -1
  230. package/dist/collection/lib/transforms/line.js.map +1 -1
  231. package/dist/collection/lib/transforms/mesh.js.map +1 -1
  232. package/dist/collection/lib/transforms/shape.js.map +1 -1
  233. package/dist/collection/lib/transforms/transformation-delta.js.map +1 -1
  234. package/dist/collection/lib/transforms/util.js.map +1 -1
  235. package/dist/collection/lib/types/clippingPlanes.js.map +1 -1
  236. package/dist/collection/lib/types/depthBuffer.js.map +1 -1
  237. package/dist/collection/lib/types/featureMap.js.map +1 -1
  238. package/dist/collection/lib/types/flags.js.map +1 -1
  239. package/dist/collection/lib/types/frame.js.map +1 -1
  240. package/dist/collection/lib/types/frameCamera.js.map +1 -1
  241. package/dist/collection/lib/types/loadableResource.js.map +1 -1
  242. package/dist/collection/lib/types/orientation.js.map +1 -1
  243. package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
  244. package/dist/collection/lib/types/standardView.js.map +1 -1
  245. package/dist/collection/lib/types/stencilBuffer.js.map +1 -1
  246. package/dist/collection/lib/types/synchronizedClock.js.map +1 -1
  247. package/dist/collection/lib/types/viewport.js.map +1 -1
  248. package/dist/collection/lib/visibilityObserver.js.map +1 -1
  249. package/dist/collection/lib/volume-intersection/controller.js.map +1 -1
  250. package/dist/collection/lib/volume-intersection/interactions.js.map +1 -1
  251. package/dist/collection/lib/volume-intersection/model.js.map +1 -1
  252. package/dist/collection/lib/walk-mode/controller.js.map +1 -1
  253. package/dist/collection/lib/walk-mode/interactions.js.map +1 -1
  254. package/dist/collection/lib/walk-mode/model.js.map +1 -1
  255. package/dist/collection/lib/webgl/regl-component.js.map +1 -1
  256. package/dist/collection/testing/annotations.js.map +1 -1
  257. package/dist/collection/testing/canvases.js.map +1 -1
  258. package/dist/collection/testing/colors.js.map +1 -1
  259. package/dist/collection/testing/eventually.js.map +1 -1
  260. package/dist/collection/testing/fixtures.js.map +1 -1
  261. package/dist/collection/testing/grpc.js +3 -9
  262. package/dist/collection/testing/grpc.js.map +1 -1
  263. package/dist/collection/testing/modelViews.js.map +1 -1
  264. package/dist/collection/testing/pmi.js.map +1 -1
  265. package/dist/collection/testing/random.js.map +1 -1
  266. package/dist/collection/testing/resizeObserver.js.map +1 -1
  267. package/dist/collection/testing/scene-items-helper.js.map +1 -1
  268. package/dist/collection/testing/sceneTree.js.map +1 -1
  269. package/dist/collection/testing/viewer.js.map +1 -1
  270. package/dist/collection/testing/webgl.js.map +1 -1
  271. package/dist/components/index.js.map +1 -1
  272. package/dist/components/{p-St4ctu2K.js → p-3-bKfpqr.js} +2 -2
  273. package/dist/components/{p-St4ctu2K.js.map → p-3-bKfpqr.js.map} +1 -1
  274. package/dist/components/p-3DqRAYgO.js.map +1 -1
  275. package/dist/components/p-B-ToCp8-.js.map +1 -1
  276. package/dist/components/p-B156bTbY.js +5 -0
  277. package/dist/components/p-B156bTbY.js.map +1 -0
  278. package/dist/components/p-B9R0QWr4.js.map +1 -1
  279. package/dist/components/p-BCOD9yfw.js.map +1 -1
  280. package/dist/components/p-BHAaIoH5.js.map +1 -1
  281. package/dist/components/{p-Doltf1wO.js → p-BOJJZ1cN.js} +2 -2
  282. package/dist/components/p-BOJJZ1cN.js.map +1 -0
  283. package/dist/components/p-BkHp-aAR.js.map +1 -1
  284. package/dist/components/p-Bkm6H5uq.js.map +1 -1
  285. package/dist/components/p-C-VWDW9n.js.map +1 -1
  286. package/dist/components/p-C79PxobX.js.map +1 -1
  287. package/dist/components/p-CAugdB_8.js.map +1 -1
  288. package/dist/components/p-CEzVEgdQ.js.map +1 -1
  289. package/dist/components/p-CGCJ5hbJ.js.map +1 -1
  290. package/dist/components/p-COlcifvm.js.map +1 -1
  291. package/dist/components/p-CXTH3zrN.js.map +1 -1
  292. package/dist/components/p-CZCXdo3t.js.map +1 -1
  293. package/dist/components/p-Cd7kap5W.js.map +1 -1
  294. package/dist/components/p-CiSHWNC4.js.map +1 -1
  295. package/dist/components/p-CjG1fMh1.js.map +1 -1
  296. package/dist/components/p-CkjXRDNL.js.map +1 -1
  297. package/dist/components/p-D0KZu516.js.map +1 -1
  298. package/dist/components/p-D12q-fpW.js.map +1 -1
  299. package/dist/components/p-D33gVA2W.js.map +1 -1
  300. package/dist/components/p-DC86ZXai.js.map +1 -1
  301. package/dist/components/{p-B80hfIq6.js → p-DF4kEsJU.js} +2 -2
  302. package/dist/components/p-DF4kEsJU.js.map +1 -0
  303. package/dist/components/p-DRh4_Z-g.js.map +1 -1
  304. package/dist/components/p-DRnMrHWY.js.map +1 -1
  305. package/dist/components/{p-b0ZzPHz8.js → p-DUC59SSO.js} +2 -2
  306. package/dist/components/p-DUC59SSO.js.map +1 -0
  307. package/dist/components/p-DVW2WZTq.js.map +1 -1
  308. package/dist/components/p-DZI8pnGz.js.map +1 -1
  309. package/dist/components/p-Dbz9yUqC.js.map +1 -1
  310. package/dist/components/p-Yfi0i5Kj.js.map +1 -1
  311. package/dist/components/p-abSJ29r7.js.map +1 -1
  312. package/dist/components/p-ahjMltGJ.js.map +1 -1
  313. package/dist/components/p-bal2RLiw.js.map +1 -1
  314. package/dist/components/{p-BopQW1sA.js → p-oK38ynrd.js} +2 -2
  315. package/dist/components/p-oK38ynrd.js.map +1 -0
  316. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  317. package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
  318. package/dist/components/vertex-scene-tree-table-layout.js +1 -1
  319. package/dist/components/vertex-scene-tree.js +1 -1
  320. package/dist/components/vertex-scene-tree.js.map +1 -1
  321. package/dist/components/vertex-viewer-box-query-tool.js +1 -1
  322. package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
  323. package/dist/components/vertex-viewer-dom-element.js +1 -1
  324. package/dist/components/vertex-viewer-dom-group.js +1 -1
  325. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  326. package/dist/components/vertex-viewer-hit-result-indicator.js.map +1 -1
  327. package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
  328. package/dist/components/vertex-viewer-markup.js +1 -1
  329. package/dist/components/vertex-viewer-markup.js.map +1 -1
  330. package/dist/components/vertex-viewer-measurement-details.js.map +1 -1
  331. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  332. package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
  333. package/dist/components/vertex-viewer-measurement-line.js +1 -1
  334. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  335. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  336. package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
  337. package/dist/components/vertex-viewer-pin-group.js +1 -1
  338. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  339. package/dist/components/vertex-viewer-pin-tool.js.map +1 -1
  340. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  341. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  342. package/dist/components/vertex-viewer-view-cube.js +1 -1
  343. package/dist/components/vertex-viewer-view-cube.js.map +1 -1
  344. package/dist/components/vertex-viewer-walk-mode-tool.js.map +1 -1
  345. package/dist/components/vertex-viewer.js +1 -1
  346. package/dist/components/vertex-viewer.js.map +1 -1
  347. package/dist/esm/config-lglER3mU.js.map +1 -1
  348. package/dist/esm/controller-BMWGs-I6.js.map +1 -1
  349. package/dist/esm/controller-Iymb_J2R.js.map +1 -1
  350. package/dist/esm/cursors-BbBDEutb.js.map +1 -1
  351. package/dist/esm/dom-B3m2VjbN.js.map +1 -1
  352. package/dist/esm/dom-DX6pEG54.js.map +1 -1
  353. package/dist/esm/entities-zRken6VS.js.map +1 -1
  354. package/dist/esm/geometry_pb-BiZRfctN.js.map +1 -1
  355. package/dist/esm/grpc-CZAYqbTu.js.map +1 -1
  356. package/dist/esm/index.js.map +1 -1
  357. package/dist/esm/model-BYW5YIye.js.map +1 -1
  358. package/dist/esm/model-CLtwOS0o.js.map +1 -1
  359. package/dist/esm/model-D0EJdHmW.js.map +1 -1
  360. package/dist/esm/model-DHJ5aE4y.js.map +1 -1
  361. package/dist/esm/multiElementInteractionHandler-DwjL-r55.js.map +1 -1
  362. package/dist/esm/overlays-BE1oqniA.js.map +1 -1
  363. package/dist/esm/queries-DEzCmbTD.js.map +1 -1
  364. package/dist/esm/regl-component-DmkowWhg.js.map +1 -1
  365. package/dist/esm/representation_pb-g4f0WC4k.js.map +1 -1
  366. package/dist/esm/results-CFB6nKu8.js.map +1 -1
  367. package/dist/esm/row-CiSHWNC4.js.map +1 -1
  368. package/dist/esm/stencil-BV-7pO4q.js.map +1 -1
  369. package/dist/esm/streamAttributes-Cp8PEH9A.js.map +1 -1
  370. package/dist/esm/templates-DRh4_Z-g.js.map +1 -1
  371. package/dist/esm/util-BCZZYmp4.js.map +1 -1
  372. package/dist/esm/utils-BvZ9-fs0.js.map +1 -1
  373. package/dist/esm/utils-DC86ZXai.js.map +1 -1
  374. package/dist/esm/utils-D_pIldrS.js.map +1 -1
  375. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +6 -8
  376. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
  377. package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
  378. package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
  379. package/dist/esm/vertex-scene-tree.entry.js +2 -2
  380. package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
  381. package/dist/esm/vertex-viewer-box-query-tool.entry.js +2 -2
  382. package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
  383. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  384. package/dist/esm/vertex-viewer-dom-element_2.entry.js.map +1 -1
  385. package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
  386. package/dist/esm/vertex-viewer-dom-group.entry.js.map +1 -1
  387. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +1 -1
  388. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js.map +1 -1
  389. package/dist/esm/vertex-viewer-icon.entry.js.map +1 -1
  390. package/dist/esm/vertex-viewer-markup-arrow_3.entry.js.map +1 -1
  391. package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
  392. package/dist/esm/vertex-viewer-markup.entry.js +1 -1
  393. package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
  394. package/dist/esm/vertex-viewer-measurement-details.entry.js.map +1 -1
  395. package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
  396. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
  397. package/dist/esm/vertex-viewer-measurement-line_2.entry.js.map +1 -1
  398. package/dist/esm/vertex-viewer-measurement-precise.entry.js.map +1 -1
  399. package/dist/esm/vertex-viewer-pin-group.entry.js +2 -2
  400. package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
  401. package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
  402. package/dist/esm/vertex-viewer-pin-tool.entry.js +1 -1
  403. package/dist/esm/vertex-viewer-pin-tool.entry.js.map +1 -1
  404. package/dist/esm/vertex-viewer-teleport-tool.entry.js.map +1 -1
  405. package/dist/esm/vertex-viewer-transform-widget.entry.js +4 -5
  406. package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
  407. package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
  408. package/dist/esm/vertex-viewer-view-cube.entry.js.map +1 -1
  409. package/dist/esm/vertex-viewer-walk-mode-tool.entry.js.map +1 -1
  410. package/dist/esm/vertex-viewer.entry.js +9 -5
  411. package/dist/esm/vertex-viewer.entry.js.map +1 -1
  412. package/dist/esm/viewport-C8WQZxvx.js.map +1 -1
  413. package/dist/types/regl-shape.d.ts +1 -1
  414. package/dist/viewer/index.esm.js.map +1 -1
  415. package/dist/viewer/{p-eac63070.entry.js → p-051b5154.entry.js} +2 -2
  416. package/dist/viewer/p-051b5154.entry.js.map +1 -0
  417. package/dist/viewer/{p-3d3a7eeb.entry.js → p-0984c51f.entry.js} +2 -2
  418. package/dist/viewer/{p-3d3a7eeb.entry.js.map → p-0984c51f.entry.js.map} +1 -1
  419. package/dist/viewer/{p-864f40c7.entry.js → p-11cf755a.entry.js} +2 -2
  420. package/dist/viewer/p-11cf755a.entry.js.map +1 -0
  421. package/dist/viewer/{p-29d14611.entry.js → p-16775f7d.entry.js} +2 -2
  422. package/dist/viewer/p-16775f7d.entry.js.map +1 -0
  423. package/dist/viewer/{p-5a85cae5.entry.js → p-1eb636f8.entry.js} +2 -2
  424. package/dist/viewer/p-1eb636f8.entry.js.map +1 -0
  425. package/dist/viewer/{p-e993f300.entry.js → p-228d1d43.entry.js} +2 -2
  426. package/dist/viewer/p-228d1d43.entry.js.map +1 -0
  427. package/dist/viewer/p-33f44cc1.entry.js.map +1 -1
  428. package/dist/viewer/{p-3300d3dc.entry.js → p-35601c85.entry.js} +2 -2
  429. package/dist/viewer/p-35601c85.entry.js.map +1 -0
  430. package/dist/viewer/p-47766566.entry.js.map +1 -1
  431. package/dist/viewer/p-6e3a6bbd.entry.js.map +1 -1
  432. package/dist/viewer/p-7f388b45.entry.js.map +1 -1
  433. package/dist/viewer/p-89544066.entry.js.map +1 -1
  434. package/dist/viewer/{p-07b99ac9.entry.js → p-8c369777.entry.js} +2 -2
  435. package/dist/viewer/p-8c369777.entry.js.map +1 -0
  436. package/dist/viewer/{p-e59983dc.entry.js → p-9835c5e2.entry.js} +2 -2
  437. package/dist/viewer/p-9835c5e2.entry.js.map +1 -0
  438. package/dist/viewer/{p-aa95e21a.entry.js → p-9d8ff406.entry.js} +2 -2
  439. package/dist/viewer/p-9d8ff406.entry.js.map +1 -0
  440. package/dist/viewer/p-BDvACHun.js.map +1 -1
  441. package/dist/viewer/p-BIkuvTVH.js.map +1 -1
  442. package/dist/viewer/p-BRPkbTVP.js.map +1 -1
  443. package/dist/viewer/p-BsBIynwj.js.map +1 -1
  444. package/dist/viewer/p-BxtKMwBH.js.map +1 -1
  445. package/dist/viewer/p-C4y4Noe-.js.map +1 -1
  446. package/dist/viewer/p-C6KrfydC.js.map +1 -1
  447. package/dist/viewer/p-C7dYsPFU.js.map +1 -1
  448. package/dist/viewer/p-C9Cqbq6H.js.map +1 -1
  449. package/dist/viewer/p-CVWO4w6b.js.map +1 -1
  450. package/dist/viewer/p-ChqXy0cG.js.map +1 -1
  451. package/dist/viewer/p-CiSHWNC4.js.map +1 -1
  452. package/dist/viewer/p-CjG1fMh1.js.map +1 -1
  453. package/dist/viewer/p-Cs5KOvOQ.js.map +1 -1
  454. package/dist/viewer/p-CyGlYje2.js.map +1 -1
  455. package/dist/viewer/p-D6eJC1q4.js.map +1 -1
  456. package/dist/viewer/p-DC86ZXai.js.map +1 -1
  457. package/dist/viewer/p-DRh4_Z-g.js.map +1 -1
  458. package/dist/viewer/p-DUX5FvBC.js.map +1 -1
  459. package/dist/viewer/p-DX6pEG54.js.map +1 -1
  460. package/dist/viewer/p-D_ixWHO7.js.map +1 -1
  461. package/dist/viewer/p-DacE-wPp.js.map +1 -1
  462. package/dist/viewer/p-Dp56p_jX.js.map +1 -1
  463. package/dist/viewer/p-EsKoKfmx.js.map +1 -1
  464. package/dist/viewer/p-F8e15or2.js.map +1 -1
  465. package/dist/viewer/p-Jfxh0jq9.js.map +1 -1
  466. package/dist/viewer/p-WPRMWirY.js.map +1 -1
  467. package/dist/viewer/p-_93RRNxT.js.map +1 -1
  468. package/dist/viewer/p-a8a81cba.entry.js +5 -0
  469. package/dist/viewer/p-a8a81cba.entry.js.map +1 -0
  470. package/dist/viewer/p-a9282481.entry.js.map +1 -1
  471. package/dist/viewer/{p-63f4f702.entry.js → p-c7e62d66.entry.js} +2 -2
  472. package/dist/viewer/p-c7e62d66.entry.js.map +1 -0
  473. package/dist/viewer/p-d37e647b.entry.js.map +1 -1
  474. package/dist/viewer/{p-302f2078.entry.js → p-d9fe788f.entry.js} +2 -2
  475. package/dist/viewer/p-d9fe788f.entry.js.map +1 -0
  476. package/dist/viewer/p-e9b83dae.entry.js.map +1 -1
  477. package/dist/viewer/{p-70f3629d.entry.js → p-f271dc4a.entry.js} +2 -2
  478. package/dist/viewer/p-f271dc4a.entry.js.map +1 -0
  479. package/dist/viewer/p-f65c0769.entry.js.map +1 -1
  480. package/dist/viewer/viewer.esm.js +1 -1
  481. package/package.json +7 -7
  482. package/dist/components/p-B80hfIq6.js.map +0 -1
  483. package/dist/components/p-BopQW1sA.js.map +0 -1
  484. package/dist/components/p-DNtS2F8J.js +0 -5
  485. package/dist/components/p-DNtS2F8J.js.map +0 -1
  486. package/dist/components/p-Doltf1wO.js.map +0 -1
  487. package/dist/components/p-b0ZzPHz8.js.map +0 -1
  488. package/dist/viewer/p-07b99ac9.entry.js.map +0 -1
  489. package/dist/viewer/p-29d14611.entry.js.map +0 -1
  490. package/dist/viewer/p-302f2078.entry.js.map +0 -1
  491. package/dist/viewer/p-3300d3dc.entry.js.map +0 -1
  492. package/dist/viewer/p-5a85cae5.entry.js.map +0 -1
  493. package/dist/viewer/p-60c915e3.entry.js +0 -5
  494. package/dist/viewer/p-60c915e3.entry.js.map +0 -1
  495. package/dist/viewer/p-63f4f702.entry.js.map +0 -1
  496. package/dist/viewer/p-70f3629d.entry.js.map +0 -1
  497. package/dist/viewer/p-864f40c7.entry.js.map +0 -1
  498. package/dist/viewer/p-aa95e21a.entry.js.map +0 -1
  499. package/dist/viewer/p-e59983dc.entry.js.map +0 -1
  500. package/dist/viewer/p-e993f300.entry.js.map +0 -1
  501. package/dist/viewer/p-eac63070.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["fromNodeProto","index","nodes","columns","Array","isArray","map","node","i","toObject","metadata","makeMetadataMap","columnsList","data","keys","values","reduce","key","isLoadedRow","obj","hasOwnProperty"],"sources":["src/components/scene-tree/lib/row.ts"],"sourcesContent":["import { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';\n\nimport { MetadataKey } from '../types';\n\nexport type MetadataMap = Record<MetadataKey, string | undefined>;\n\nexport interface LoadedRow {\n index: number;\n node: Node.AsObject;\n metadata: MetadataMap;\n data: Record<string, unknown>;\n}\n\nexport type Row = LoadedRow | undefined;\n\n/* eslint-disable padding-line-between-statements */\nexport function fromNodeProto(\n index: number,\n node: Node,\n columns: MetadataKey[]\n): Row;\nexport function fromNodeProto(\n index: number,\n nodes: Node[],\n columns: MetadataKey[]\n): Row[];\nexport function fromNodeProto(\n index: number,\n nodes: Node | Node[],\n columns: MetadataKey[]\n): Row | Row[] {\n if (Array.isArray(nodes)) {\n return nodes.map((node, i) => fromNodeProto(index + i, node, columns));\n } else {\n const node = nodes.toObject();\n return {\n index,\n node,\n metadata: makeMetadataMap(columns, node.columnsList),\n data: {},\n };\n }\n}\n/* eslint-enable padding-line-between-statements */\n\nfunction makeMetadataMap(keys: MetadataKey[], values: string[]): MetadataMap {\n return keys.reduce((map, key, i) => {\n map[key] = values[i];\n return map;\n }, {} as MetadataMap);\n}\n\nexport function isLoadedRow(obj: unknown): obj is LoadedRow {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return obj != null && (obj as any).hasOwnProperty('node');\n}\n"],"mappings":";;;SA0BgBA,EACdC,EACAC,EACAC,GAEA,GAAIC,MAAMC,QAAQH,GAAQ,CACxB,OAAOA,EAAMI,KAAI,CAACC,EAAMC,IAAMR,EAAcC,EAAQO,EAAGD,EAAMJ,I,KACxD,CACL,MAAMI,EAAOL,EAAMO,WACnB,MAAO,CACLR,QACAM,OACAG,SAAUC,EAAgBR,EAASI,EAAKK,aACxCC,KAAM,G,CAGZ,CAGA,SAASF,EAAgBG,EAAqBC,GAC5C,OAAOD,EAAKE,QAAO,CAACV,EAAKW,EAAKT,KAC5BF,EAAIW,GAAOF,EAAOP,GAClB,OAAOF,CAAG,GACT,GACL,CAEM,SAAUY,EAAYC,GAE1B,OAAOA,GAAO,MAASA,EAAYC,eAAe,OACpD,Q","ignoreList":[]}
1
+ {"version":3,"names":["fromNodeProto","index","nodes","columns","Array","isArray","map","node","i","toObject","metadata","makeMetadataMap","columnsList","data","keys","values","reduce","key","isLoadedRow","obj","hasOwnProperty"],"sources":["src/components/scene-tree/lib/row.ts"],"sourcesContent":["import { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';\n\nimport { MetadataKey } from '../types';\n\nexport type MetadataMap = Record<MetadataKey, string | undefined>;\n\nexport interface LoadedRow {\n index: number;\n node: Node.AsObject;\n metadata: MetadataMap;\n data: Record<string, unknown>;\n}\n\nexport type Row = LoadedRow | undefined;\n\n/* eslint-disable padding-line-between-statements */\nexport function fromNodeProto(\n index: number,\n node: Node,\n columns: MetadataKey[],\n): Row;\nexport function fromNodeProto(\n index: number,\n nodes: Node[],\n columns: MetadataKey[],\n): Row[];\nexport function fromNodeProto(\n index: number,\n nodes: Node | Node[],\n columns: MetadataKey[],\n): Row | Row[] {\n if (Array.isArray(nodes)) {\n return nodes.map((node, i) => fromNodeProto(index + i, node, columns));\n } else {\n const node = nodes.toObject();\n return {\n index,\n node,\n metadata: makeMetadataMap(columns, node.columnsList),\n data: {},\n };\n }\n}\n/* eslint-enable padding-line-between-statements */\n\nfunction makeMetadataMap(keys: MetadataKey[], values: string[]): MetadataMap {\n return keys.reduce((map, key, i) => {\n map[key] = values[i];\n return map;\n }, {} as MetadataMap);\n}\n\nexport function isLoadedRow(obj: unknown): obj is LoadedRow {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return obj != null && (obj as any).hasOwnProperty('node');\n}\n"],"mappings":";;;SA0BgBA,EACdC,EACAC,EACAC,GAEA,GAAIC,MAAMC,QAAQH,GAAQ,CACxB,OAAOA,EAAMI,KAAI,CAACC,EAAMC,IAAMR,EAAcC,EAAQO,EAAGD,EAAMJ,I,KACxD,CACL,MAAMI,EAAOL,EAAMO,WACnB,MAAO,CACLR,QACAM,OACAG,SAAUC,EAAgBR,EAASI,EAAKK,aACxCC,KAAM,G,CAGZ,CAGA,SAASF,EAAgBG,EAAqBC,GAC5C,OAAOD,EAAKE,QAAO,CAACV,EAAKW,EAAKT,KAC5BF,EAAIW,GAAOF,EAAOP,GAClB,OAAOF,CAAG,GACT,GACL,CAEM,SAAUY,EAAYC,GAE1B,OAAOA,GAAO,MAASA,EAAYC,eAAe,OACpD,Q","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["requestUnary","caller","Promise","resolve","reject","err","res","Error","async","requestPaged","fetch","next","cursor","undefined","createMetadata","jwtProvider","deviceId","jwt","meta","grpc","Metadata","JSON","stringify","metadata"],"sources":["src/lib/grpc.ts"],"sourcesContent":["import { grpc } from '@improbable-eng/grpc-web';\n\nexport type GrpcCaller<R, E> = (\n handler: GrpcHandler<R, E>\n) => void | Promise<void>;\n\ntype GrpcHandler<R, E> = (err: E | null, res: R | null) => void | Promise<void>;\n\nexport type JwtProvider = () =>\n | Promise<string | undefined>\n | string\n | undefined;\n\nexport function requestUnary<R, E = unknown>(\n caller: GrpcCaller<R, E>\n): Promise<R> {\n return new Promise((resolve, reject) => {\n caller((err, res) => {\n if (err != null) {\n reject(err);\n } else if (res != null) {\n resolve(res);\n } else {\n reject(new Error('Invalid gRPC response. Error and result are empty.'));\n }\n });\n });\n}\n\nexport async function* requestPaged<R, E = unknown>(\n fetch: (cursor: string | undefined) => GrpcCaller<R, E>,\n next: (res: R) => string | undefined\n): AsyncGenerator<R, void, void> {\n let cursor = undefined;\n\n do {\n const res = await requestUnary(fetch(cursor));\n yield res;\n cursor = next(res);\n } while (cursor != null);\n}\n\nexport async function createMetadata(\n jwtProvider: JwtProvider,\n deviceId?: string\n): Promise<grpc.Metadata> {\n const jwt = await jwtProvider();\n const meta = new grpc.Metadata({\n 'jwt-context': JSON.stringify({\n jwt,\n metadata: { 'x-device-id': deviceId || '' },\n }),\n });\n\n return meta;\n}\n"],"mappings":";;;oCAaM,SAAUA,EACdC,GAEA,OAAO,IAAIC,SAAQ,CAACC,EAASC,KAC3BH,GAAO,CAACI,EAAKC,KACX,GAAID,GAAO,KAAM,CACfD,EAAOC,E,MACF,GAAIC,GAAO,KAAM,CACtBH,EAAQG,E,KACH,CACLF,EAAO,IAAIG,MAAM,sD,IAEnB,GAEN,CAEOC,eAAgBC,EACrBC,EACAC,GAEA,IAAIC,EAASC,UAEb,EAAG,CACD,MAAMP,QAAYN,EAAaU,EAAME,UAC/BN,EACNM,EAASD,EAAKL,EAChB,OAASM,GAAU,KACrB,CAEOJ,eAAeM,EACpBC,EACAC,GAEA,MAAMC,QAAYF,IAClB,MAAMG,EAAO,IAAIC,OAAKC,SAAS,CAC7B,cAAeC,KAAKC,UAAU,CAC5BL,MACAM,SAAU,CAAE,cAAeP,GAAY,QAI3C,OAAOE,CACT,Q","ignoreList":[]}
1
+ {"version":3,"names":["requestUnary","caller","Promise","resolve","reject","err","res","Error","async","requestPaged","fetch","next","cursor","undefined","createMetadata","jwtProvider","deviceId","jwt","meta","grpc","Metadata","JSON","stringify","metadata"],"sources":["src/lib/grpc.ts"],"sourcesContent":["import { grpc } from '@improbable-eng/grpc-web';\n\nexport type GrpcCaller<R, E> = (\n handler: GrpcHandler<R, E>,\n) => void | Promise<void>;\n\ntype GrpcHandler<R, E> = (err: E | null, res: R | null) => void | Promise<void>;\n\nexport type JwtProvider = () =>\n | Promise<string | undefined>\n | string\n | undefined;\n\nexport function requestUnary<R, E = unknown>(\n caller: GrpcCaller<R, E>,\n): Promise<R> {\n return new Promise((resolve, reject) => {\n caller((err, res) => {\n if (err != null) {\n reject(err);\n } else if (res != null) {\n resolve(res);\n } else {\n reject(new Error('Invalid gRPC response. Error and result are empty.'));\n }\n });\n });\n}\n\nexport async function* requestPaged<R, E = unknown>(\n fetch: (cursor: string | undefined) => GrpcCaller<R, E>,\n next: (res: R) => string | undefined,\n): AsyncGenerator<R, void, void> {\n let cursor = undefined;\n\n do {\n const res = await requestUnary(fetch(cursor));\n yield res;\n cursor = next(res);\n } while (cursor != null);\n}\n\nexport async function createMetadata(\n jwtProvider: JwtProvider,\n deviceId?: string,\n): Promise<grpc.Metadata> {\n const jwt = await jwtProvider();\n const meta = new grpc.Metadata({\n 'jwt-context': JSON.stringify({\n jwt,\n metadata: { 'x-device-id': deviceId || '' },\n }),\n });\n\n return meta;\n}\n"],"mappings":";;;oCAaM,SAAUA,EACdC,GAEA,OAAO,IAAIC,SAAQ,CAACC,EAASC,KAC3BH,GAAO,CAACI,EAAKC,KACX,GAAID,GAAO,KAAM,CACfD,EAAOC,E,MACF,GAAIC,GAAO,KAAM,CACtBH,EAAQG,E,KACH,CACLF,EAAO,IAAIG,MAAM,sD,IAEnB,GAEN,CAEOC,eAAgBC,EACrBC,EACAC,GAEA,IAAIC,EAASC,UAEb,EAAG,CACD,MAAMP,QAAYN,EAAaU,EAAME,UAC/BN,EACNM,EAASD,EAAKL,EAChB,OAASM,GAAU,KACrB,CAEOJ,eAAeM,EACpBC,EACAC,GAEA,MAAMC,QAAYF,IAClB,MAAMG,EAAO,IAAIC,OAAKC,SAAS,CAC7B,cAAeC,KAAKC,UAAU,CAC5BL,MACAM,SAAU,CAAE,cAAeP,GAAY,QAI3C,OAAOE,CACT,Q","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementOverlayManager","constructor","this","overlays","Map","overlaysChanged","EventDispatcher","addLineFromResult","result","addLine","point1","point2","start","end","id","UUID","create","overlay","type","dispose","remove","addOverlay","addDistanceVectorFromResult","addDistanceVector","v","Vector3","subtract","ye","add","y","ze","z","xe","x","has","set","emit","getOverlays","Array","from","values","delete","onOverlaysChanged","listener","on"],"sources":["src/lib/measurement/overlays.ts"],"sourcesContent":["import { Vector3 } from '@vertexvis/geometry';\nimport { Disposable, EventDispatcher, Listener, UUID } from '@vertexvis/utils';\n\nimport { MinimumDistanceMeasurementResult } from './results';\n\nexport interface LineOverlay extends Disposable {\n type: 'line';\n id: string;\n start: Vector3.Vector3;\n end: Vector3.Vector3;\n}\n\nexport interface DistanceVectorOverlay extends Disposable {\n type: 'distance-vector';\n id: string;\n x: { start: Vector3.Vector3; end: Vector3.Vector3 };\n y: { start: Vector3.Vector3; end: Vector3.Vector3 };\n z: { start: Vector3.Vector3; end: Vector3.Vector3 };\n}\n\nexport type MeasurementOverlay = LineOverlay | DistanceVectorOverlay;\n\nexport class MeasurementOverlayManager {\n private overlays = new Map<string, MeasurementOverlay>();\n private overlaysChanged = new EventDispatcher<MeasurementOverlay[]>();\n\n public addLineFromResult(\n result: MinimumDistanceMeasurementResult\n ): LineOverlay {\n return this.addLine(result.point1, result.point2);\n }\n\n public addLine(start: Vector3.Vector3, end: Vector3.Vector3): LineOverlay {\n const id = UUID.create();\n const overlay: LineOverlay = {\n type: 'line',\n id: id,\n start,\n end,\n dispose: () => this.remove(id),\n };\n this.addOverlay(overlay);\n return overlay;\n }\n\n public addDistanceVectorFromResult(\n result: MinimumDistanceMeasurementResult\n ): DistanceVectorOverlay {\n return this.addDistanceVector(result.point1, result.point2);\n }\n\n public addDistanceVector(\n start: Vector3.Vector3,\n end: Vector3.Vector3\n ): DistanceVectorOverlay {\n const id = UUID.create();\n const v = Vector3.subtract(start, end);\n\n const ye = Vector3.add(start, Vector3.create(0, -v.y, 0));\n const y = { start: start, end: ye };\n\n const ze = Vector3.add(ye, Vector3.create(0, 0, -v.z));\n const z = { start: ye, end: ze };\n\n const xe = Vector3.add(ze, Vector3.create(-v.x, 0, 0));\n const x = { start: ze, end: xe };\n\n const overlay: DistanceVectorOverlay = {\n type: 'distance-vector',\n id,\n x,\n y,\n z,\n dispose: () => this.remove(id),\n };\n this.addOverlay(overlay);\n return overlay;\n }\n\n private addOverlay(overlay: MeasurementOverlay): void {\n if (!this.overlays.has(overlay.id)) {\n this.overlays.set(overlay.id, overlay);\n this.overlaysChanged.emit(this.getOverlays());\n }\n }\n\n public getOverlays(): MeasurementOverlay[] {\n return Array.from(this.overlays.values());\n }\n\n private remove(id: string): boolean {\n if (this.overlays.has(id)) {\n this.overlays.delete(id);\n this.overlaysChanged.emit(this.getOverlays());\n return true;\n } else {\n return false;\n }\n }\n\n public onOverlaysChanged(\n listener: Listener<MeasurementOverlay[]>\n ): Disposable {\n return this.overlaysChanged.on(listener);\n }\n}\n"],"mappings":";;;qFAsBaA,EAAb,WAAAC,GACUC,KAAAC,SAAW,IAAIC,IACfF,KAAAG,gBAAkB,IAAIC,C,CAEvB,iBAAAC,CACLC,GAEA,OAAON,KAAKO,QAAQD,EAAOE,OAAQF,EAAOG,O,CAGrC,OAAAF,CAAQG,EAAwBC,GACrC,MAAMC,EAAKC,EAAKC,SAChB,MAAMC,EAAuB,CAC3BC,KAAM,OACNJ,GAAIA,EACJF,QACAC,MACAM,QAAS,IAAMjB,KAAKkB,OAAON,IAE7BZ,KAAKmB,WAAWJ,GAChB,OAAOA,C,CAGF,2BAAAK,CACLd,GAEA,OAAON,KAAKqB,kBAAkBf,EAAOE,OAAQF,EAAOG,O,CAG/C,iBAAAY,CACLX,EACAC,GAEA,MAAMC,EAAKC,EAAKC,SAChB,MAAMQ,EAAIC,EAAQC,SAASd,EAAOC,GAElC,MAAMc,EAAKF,EAAQG,IAAIhB,EAAOa,EAAQT,OAAO,GAAIQ,EAAEK,EAAG,IACtD,MAAMA,EAAI,CAAEjB,MAAOA,EAAOC,IAAKc,GAE/B,MAAMG,EAAKL,EAAQG,IAAID,EAAIF,EAAQT,OAAO,EAAG,GAAIQ,EAAEO,IACnD,MAAMA,EAAI,CAAEnB,MAAOe,EAAId,IAAKiB,GAE5B,MAAME,EAAKP,EAAQG,IAAIE,EAAIL,EAAQT,QAAQQ,EAAES,EAAG,EAAG,IACnD,MAAMA,EAAI,CAAErB,MAAOkB,EAAIjB,IAAKmB,GAE5B,MAAMf,EAAiC,CACrCC,KAAM,kBACNJ,KACAmB,IACAJ,IACAE,IACAZ,QAAS,IAAMjB,KAAKkB,OAAON,IAE7BZ,KAAKmB,WAAWJ,GAChB,OAAOA,C,CAGD,UAAAI,CAAWJ,GACjB,IAAKf,KAAKC,SAAS+B,IAAIjB,EAAQH,IAAK,CAClCZ,KAAKC,SAASgC,IAAIlB,EAAQH,GAAIG,GAC9Bf,KAAKG,gBAAgB+B,KAAKlC,KAAKmC,c,EAI5B,WAAAA,GACL,OAAOC,MAAMC,KAAKrC,KAAKC,SAASqC,S,CAG1B,MAAApB,CAAON,GACb,GAAIZ,KAAKC,SAAS+B,IAAIpB,GAAK,CACzBZ,KAAKC,SAASsC,OAAO3B,GACrBZ,KAAKG,gBAAgB+B,KAAKlC,KAAKmC,eAC/B,OAAO,I,KACF,CACL,OAAO,K,EAIJ,iBAAAK,CACLC,GAEA,OAAOzC,KAAKG,gBAAgBuC,GAAGD,E","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementOverlayManager","constructor","this","overlays","Map","overlaysChanged","EventDispatcher","addLineFromResult","result","addLine","point1","point2","start","end","id","UUID","create","overlay","type","dispose","remove","addOverlay","addDistanceVectorFromResult","addDistanceVector","v","Vector3","subtract","ye","add","y","ze","z","xe","x","has","set","emit","getOverlays","Array","from","values","delete","onOverlaysChanged","listener","on"],"sources":["src/lib/measurement/overlays.ts"],"sourcesContent":["import { Vector3 } from '@vertexvis/geometry';\nimport { Disposable, EventDispatcher, Listener, UUID } from '@vertexvis/utils';\n\nimport { MinimumDistanceMeasurementResult } from './results';\n\nexport interface LineOverlay extends Disposable {\n type: 'line';\n id: string;\n start: Vector3.Vector3;\n end: Vector3.Vector3;\n}\n\nexport interface DistanceVectorOverlay extends Disposable {\n type: 'distance-vector';\n id: string;\n x: { start: Vector3.Vector3; end: Vector3.Vector3 };\n y: { start: Vector3.Vector3; end: Vector3.Vector3 };\n z: { start: Vector3.Vector3; end: Vector3.Vector3 };\n}\n\nexport type MeasurementOverlay = LineOverlay | DistanceVectorOverlay;\n\nexport class MeasurementOverlayManager {\n private overlays = new Map<string, MeasurementOverlay>();\n private overlaysChanged = new EventDispatcher<MeasurementOverlay[]>();\n\n public addLineFromResult(\n result: MinimumDistanceMeasurementResult,\n ): LineOverlay {\n return this.addLine(result.point1, result.point2);\n }\n\n public addLine(start: Vector3.Vector3, end: Vector3.Vector3): LineOverlay {\n const id = UUID.create();\n const overlay: LineOverlay = {\n type: 'line',\n id: id,\n start,\n end,\n dispose: () => this.remove(id),\n };\n this.addOverlay(overlay);\n return overlay;\n }\n\n public addDistanceVectorFromResult(\n result: MinimumDistanceMeasurementResult,\n ): DistanceVectorOverlay {\n return this.addDistanceVector(result.point1, result.point2);\n }\n\n public addDistanceVector(\n start: Vector3.Vector3,\n end: Vector3.Vector3,\n ): DistanceVectorOverlay {\n const id = UUID.create();\n const v = Vector3.subtract(start, end);\n\n const ye = Vector3.add(start, Vector3.create(0, -v.y, 0));\n const y = { start: start, end: ye };\n\n const ze = Vector3.add(ye, Vector3.create(0, 0, -v.z));\n const z = { start: ye, end: ze };\n\n const xe = Vector3.add(ze, Vector3.create(-v.x, 0, 0));\n const x = { start: ze, end: xe };\n\n const overlay: DistanceVectorOverlay = {\n type: 'distance-vector',\n id,\n x,\n y,\n z,\n dispose: () => this.remove(id),\n };\n this.addOverlay(overlay);\n return overlay;\n }\n\n private addOverlay(overlay: MeasurementOverlay): void {\n if (!this.overlays.has(overlay.id)) {\n this.overlays.set(overlay.id, overlay);\n this.overlaysChanged.emit(this.getOverlays());\n }\n }\n\n public getOverlays(): MeasurementOverlay[] {\n return Array.from(this.overlays.values());\n }\n\n private remove(id: string): boolean {\n if (this.overlays.has(id)) {\n this.overlays.delete(id);\n this.overlaysChanged.emit(this.getOverlays());\n return true;\n } else {\n return false;\n }\n }\n\n public onOverlaysChanged(\n listener: Listener<MeasurementOverlay[]>,\n ): Disposable {\n return this.overlaysChanged.on(listener);\n }\n}\n"],"mappings":";;;qFAsBaA,EAAb,WAAAC,GACUC,KAAAC,SAAW,IAAIC,IACfF,KAAAG,gBAAkB,IAAIC,C,CAEvB,iBAAAC,CACLC,GAEA,OAAON,KAAKO,QAAQD,EAAOE,OAAQF,EAAOG,O,CAGrC,OAAAF,CAAQG,EAAwBC,GACrC,MAAMC,EAAKC,EAAKC,SAChB,MAAMC,EAAuB,CAC3BC,KAAM,OACNJ,GAAIA,EACJF,QACAC,MACAM,QAAS,IAAMjB,KAAKkB,OAAON,IAE7BZ,KAAKmB,WAAWJ,GAChB,OAAOA,C,CAGF,2BAAAK,CACLd,GAEA,OAAON,KAAKqB,kBAAkBf,EAAOE,OAAQF,EAAOG,O,CAG/C,iBAAAY,CACLX,EACAC,GAEA,MAAMC,EAAKC,EAAKC,SAChB,MAAMQ,EAAIC,EAAQC,SAASd,EAAOC,GAElC,MAAMc,EAAKF,EAAQG,IAAIhB,EAAOa,EAAQT,OAAO,GAAIQ,EAAEK,EAAG,IACtD,MAAMA,EAAI,CAAEjB,MAAOA,EAAOC,IAAKc,GAE/B,MAAMG,EAAKL,EAAQG,IAAID,EAAIF,EAAQT,OAAO,EAAG,GAAIQ,EAAEO,IACnD,MAAMA,EAAI,CAAEnB,MAAOe,EAAId,IAAKiB,GAE5B,MAAME,EAAKP,EAAQG,IAAIE,EAAIL,EAAQT,QAAQQ,EAAES,EAAG,EAAG,IACnD,MAAMA,EAAI,CAAErB,MAAOkB,EAAIjB,IAAKmB,GAE5B,MAAMf,EAAiC,CACrCC,KAAM,kBACNJ,KACAmB,IACAJ,IACAE,IACAZ,QAAS,IAAMjB,KAAKkB,OAAON,IAE7BZ,KAAKmB,WAAWJ,GAChB,OAAOA,C,CAGD,UAAAI,CAAWJ,GACjB,IAAKf,KAAKC,SAAS+B,IAAIjB,EAAQH,IAAK,CAClCZ,KAAKC,SAASgC,IAAIlB,EAAQH,GAAIG,GAC9Bf,KAAKG,gBAAgB+B,KAAKlC,KAAKmC,c,EAI5B,WAAAA,GACL,OAAOC,MAAMC,KAAKrC,KAAKC,SAASqC,S,CAG1B,MAAApB,CAAON,GACb,GAAIZ,KAAKC,SAAS+B,IAAIpB,GAAK,CACzBZ,KAAKC,SAASsC,OAAO3B,GACrBZ,KAAKG,gBAAgB+B,KAAKlC,KAAKmC,eAC/B,OAAO,I,KACF,CACL,OAAO,K,EAIJ,iBAAAK,CACLC,GAEA,OAAOzC,KAAKG,gBAAgBuC,GAAGD,E","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["sceneTreeSearchCss","SceneTreeSearch","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","disabled","placeholder","undefined","value","focused","isSearching","handleTextInput","event","input","target","debounce","emitCurrentValue","handleTextFocus","handleTextBlur","_a","searchDisposable","dispose","lastEmittedValue","handleKeyPress","key","handleClear","preventDefault","setFocus","inputEl","focus","_b","controllerChanged","controller","setupController","componentDidLoad","handleDebounceChanged","disconnectedCallback","onStateChangeDisposable","clear","render","h","Host","class","name","slot","size","classNames","background","length","type","ref","onInput","onFocus","onBlur","onKeyPress","show","tabIndex","onMouseDown","emitter","debounceEvent","search","onStateChange","on","state","searchCompleted","emit"],"sources":["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"],"sourcesContent":["@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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["sceneTreeSearchCss","SceneTreeSearch","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","disabled","placeholder","undefined","value","focused","isSearching","handleTextInput","event","input","target","debounce","emitCurrentValue","handleTextFocus","handleTextBlur","_a","searchDisposable","dispose","lastEmittedValue","handleKeyPress","key","handleClear","preventDefault","setFocus","inputEl","focus","_b","controllerChanged","controller","setupController","componentDidLoad","handleDebounceChanged","disconnectedCallback","onStateChangeDisposable","clear","render","h","Host","class","name","slot","size","classNames","background","length","type","ref","onInput","onFocus","onBlur","onKeyPress","show","tabIndex","onMouseDown","emitter","debounceEvent","search","onStateChange","on","state","searchCompleted","emit"],"sources":["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"],"sourcesContent":["@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"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["mapPlanePair","M","defineMapper","read","mapRequiredProp","fromPbPlane","start","end","mapPlanarDistance","getProp","compose","requiredProp","distance","plane1","plane2","type","mapPlanarAngle","angle","mapMinimumDistance","fromPbVector3f","point1","point2","mapSurfaceArea","area","mapPlanarDistanceFromResult","mapProp","ifDefined","mapPlanarAngleFromResult","mapMinimumDistanceFromResult","mapSurfaceAreaFromResult","mapMeasurementResult","pickFirst","required","mapMeasureResponse","mapArray","results","isApproximate","mapMeasureResponseOrThrow","ifInvalidThrow"],"sources":["src/lib/measurement/mapper.ts"],"sourcesContent":["import { Plane } from '@vertexvis/geometry';\nimport type {\n MeasurementResult as PbMeasurementResult,\n MinimumDistanceResult as PbMinimumDistanceResult,\n PlanarAngleResult as PbPlanarAngleResult,\n PlanarDistanceResult as PbPlanarDistanceResult,\n PlanePair as PbPlanePair,\n SurfaceAreaResult as PbSurfaceAreaResult,\n} from '@vertexvis/scene-view-protos/core/protos/measurement_pb';\nimport type { MeasureResponse as PbMeasureResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { fromPbPlane, fromPbVector3f } from '../mappers';\nimport { MeasurementOutcome } from './outcomes';\nimport {\n MeasurementResult,\n MinimumDistanceMeasurementResult,\n PlanarAngleMeasurementResult,\n PlanarDistanceMeasurementResult,\n SurfaceAreaMeasurementResult,\n} from './results';\n\nconst mapPlanePair: M.Func<\n PbPlanePair.AsObject,\n { start: Plane.Plane; end: Plane.Plane }\n> = M.defineMapper(\n M.read(\n M.mapRequiredProp('start', fromPbPlane),\n M.mapRequiredProp('end', fromPbPlane)\n ),\n ([start, end]) => ({ start, end })\n);\n\nconst mapPlanarDistance: M.Func<\n PbPlanarDistanceResult.AsObject,\n PlanarDistanceMeasurementResult\n> = M.defineMapper(\n M.read(\n M.getProp('distance'),\n M.mapRequiredProp(\n 'planes',\n M.compose(mapPlanePair, M.requiredProp('start'))\n ),\n M.mapRequiredProp('planes', M.compose(mapPlanePair, M.requiredProp('end')))\n ),\n ([distance, plane1, plane2]) => ({\n type: 'planar-distance',\n distance,\n plane1,\n plane2,\n })\n);\n\nconst mapPlanarAngle: M.Func<\n PbPlanarAngleResult.AsObject,\n PlanarAngleMeasurementResult\n> = M.defineMapper(\n M.read(\n M.getProp('angleInRadians'),\n M.mapRequiredProp(\n 'planes',\n M.compose(mapPlanePair, M.requiredProp('start'))\n ),\n M.mapRequiredProp('planes', M.compose(mapPlanePair, M.requiredProp('end')))\n ),\n ([angle, plane1, plane2]) => ({\n type: 'planar-angle',\n angle,\n plane1,\n plane2,\n })\n);\n\nconst mapMinimumDistance: M.Func<\n PbMinimumDistanceResult.AsObject,\n MinimumDistanceMeasurementResult\n> = M.defineMapper(\n M.read(\n M.getProp('distance'),\n M.mapRequiredProp('closestPoint1', fromPbVector3f),\n M.mapRequiredProp('closestPoint2', fromPbVector3f)\n ),\n ([distance, point1, point2]) => ({\n type: 'minimum-distance',\n distance,\n point1,\n point2,\n })\n);\n\nconst mapSurfaceArea: M.Func<\n PbSurfaceAreaResult.AsObject,\n SurfaceAreaMeasurementResult\n> = M.defineMapper(M.read(M.getProp('area')), ([area]) => ({\n type: 'surface-area',\n area,\n}));\n\nconst mapPlanarDistanceFromResult: M.Func<\n PbMeasurementResult.AsObject,\n PlanarDistanceMeasurementResult | undefined | null\n> = M.mapProp('planarDistance', M.ifDefined(mapPlanarDistance));\n\nconst mapPlanarAngleFromResult: M.Func<\n PbMeasurementResult.AsObject,\n PlanarAngleMeasurementResult | undefined | null\n> = M.mapProp('planarAngle', M.ifDefined(mapPlanarAngle));\n\nconst mapMinimumDistanceFromResult: M.Func<\n PbMeasurementResult.AsObject,\n MinimumDistanceMeasurementResult | undefined | null\n> = M.mapProp('minimumDistance', M.ifDefined(mapMinimumDistance));\n\nconst mapSurfaceAreaFromResult: M.Func<\n PbMeasurementResult.AsObject,\n SurfaceAreaMeasurementResult | undefined | null\n> = M.mapProp('totalSurfaceArea', M.ifDefined(mapSurfaceArea));\n\nconst mapMeasurementResult: M.Func<\n PbMeasurementResult.AsObject,\n MeasurementResult\n> = M.compose(\n M.pickFirst(\n mapPlanarDistanceFromResult,\n mapPlanarAngleFromResult,\n mapMinimumDistanceFromResult,\n mapSurfaceAreaFromResult\n ),\n M.required('Result field')\n);\n\nexport const mapMeasureResponse: M.Func<\n PbMeasureResponse.AsObject,\n MeasurementOutcome\n> = M.defineMapper(\n M.read(\n M.mapRequiredProp(\n 'outcome',\n M.mapRequiredProp('resultsList', M.mapArray(mapMeasurementResult))\n ),\n M.mapRequiredProp('outcome', M.getProp('isApproximate'))\n ),\n ([results, isApproximate]) => ({ results, isApproximate })\n);\n\nexport const mapMeasureResponseOrThrow = M.ifInvalidThrow(mapMeasureResponse);\n"],"mappings":";;;oIAsBA,MAAMA,EAGFC,EAAEC,aACJD,EAAEE,KACAF,EAAEG,gBAAgB,QAASC,GAC3BJ,EAAEG,gBAAgB,MAAOC,KAE3B,EAAEC,EAAOC,MAAI,CAAQD,QAAOC,UAG9B,MAAMC,EAGFP,EAAEC,aACJD,EAAEE,KACAF,EAAEQ,QAAQ,YACVR,EAAEG,gBACA,SACAH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAEzCV,EAAEG,gBAAgB,SAAUH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAErE,EAAEC,EAAUC,EAAQC,MAAO,CACzBC,KAAM,kBACNH,WACAC,SACAC,aAIJ,MAAME,EAGFf,EAAEC,aACJD,EAAEE,KACAF,EAAEQ,QAAQ,kBACVR,EAAEG,gBACA,SACAH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAEzCV,EAAEG,gBAAgB,SAAUH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAErE,EAAEM,EAAOJ,EAAQC,MAAO,CACtBC,KAAM,eACNE,QACAJ,SACAC,aAIJ,MAAMI,EAGFjB,EAAEC,aACJD,EAAEE,KACAF,EAAEQ,QAAQ,YACVR,EAAEG,gBAAgB,gBAAiBe,GACnClB,EAAEG,gBAAgB,gBAAiBe,KAErC,EAAEP,EAAUQ,EAAQC,MAAO,CACzBN,KAAM,mBACNH,WACAQ,SACAC,aAIJ,MAAMC,EAGFrB,EAAEC,aAAaD,EAAEE,KAAKF,EAAEQ,QAAQ,UAAU,EAAEc,MAAK,CACnDR,KAAM,eACNQ,WAGF,MAAMC,EAGFvB,EAAEwB,QAAQ,iBAAkBxB,EAAEyB,UAAUlB,IAE5C,MAAMmB,EAGF1B,EAAEwB,QAAQ,cAAexB,EAAEyB,UAAUV,IAEzC,MAAMY,EAGF3B,EAAEwB,QAAQ,kBAAmBxB,EAAEyB,UAAUR,IAE7C,MAAMW,EAGF5B,EAAEwB,QAAQ,mBAAoBxB,EAAEyB,UAAUJ,IAE9C,MAAMQ,EAGF7B,EAAES,QACJT,EAAE8B,UACAP,EACAG,EACAC,EACAC,GAEF5B,EAAE+B,SAAS,iBAGN,MAAMC,EAGThC,EAAEC,aACJD,EAAEE,KACAF,EAAEG,gBACA,UACAH,EAAEG,gBAAgB,cAAeH,EAAEiC,SAASJ,KAE9C7B,EAAEG,gBAAgB,UAAWH,EAAEQ,QAAQ,oBAEzC,EAAE0B,EAASC,MAAc,CAAQD,UAASC,oBAGrC,MAAMC,EAA4BpC,EAAEqC,eAAeL,G","ignoreList":[]}
1
+ {"version":3,"names":["mapPlanePair","M","defineMapper","read","mapRequiredProp","fromPbPlane","start","end","mapPlanarDistance","getProp","compose","requiredProp","distance","plane1","plane2","type","mapPlanarAngle","angle","mapMinimumDistance","fromPbVector3f","point1","point2","mapSurfaceArea","area","mapPlanarDistanceFromResult","mapProp","ifDefined","mapPlanarAngleFromResult","mapMinimumDistanceFromResult","mapSurfaceAreaFromResult","mapMeasurementResult","pickFirst","required","mapMeasureResponse","mapArray","results","isApproximate","mapMeasureResponseOrThrow","ifInvalidThrow"],"sources":["src/lib/measurement/mapper.ts"],"sourcesContent":["import { Plane } from '@vertexvis/geometry';\nimport type {\n MeasurementResult as PbMeasurementResult,\n MinimumDistanceResult as PbMinimumDistanceResult,\n PlanarAngleResult as PbPlanarAngleResult,\n PlanarDistanceResult as PbPlanarDistanceResult,\n PlanePair as PbPlanePair,\n SurfaceAreaResult as PbSurfaceAreaResult,\n} from '@vertexvis/scene-view-protos/core/protos/measurement_pb';\nimport type { MeasureResponse as PbMeasureResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { fromPbPlane, fromPbVector3f } from '../mappers';\nimport { MeasurementOutcome } from './outcomes';\nimport {\n MeasurementResult,\n MinimumDistanceMeasurementResult,\n PlanarAngleMeasurementResult,\n PlanarDistanceMeasurementResult,\n SurfaceAreaMeasurementResult,\n} from './results';\n\nconst mapPlanePair: M.Func<\n PbPlanePair.AsObject,\n { start: Plane.Plane; end: Plane.Plane }\n> = M.defineMapper(\n M.read(\n M.mapRequiredProp('start', fromPbPlane),\n M.mapRequiredProp('end', fromPbPlane),\n ),\n ([start, end]) => ({ start, end }),\n);\n\nconst mapPlanarDistance: M.Func<\n PbPlanarDistanceResult.AsObject,\n PlanarDistanceMeasurementResult\n> = M.defineMapper(\n M.read(\n M.getProp('distance'),\n M.mapRequiredProp(\n 'planes',\n M.compose(mapPlanePair, M.requiredProp('start')),\n ),\n M.mapRequiredProp('planes', M.compose(mapPlanePair, M.requiredProp('end'))),\n ),\n ([distance, plane1, plane2]) => ({\n type: 'planar-distance',\n distance,\n plane1,\n plane2,\n }),\n);\n\nconst mapPlanarAngle: M.Func<\n PbPlanarAngleResult.AsObject,\n PlanarAngleMeasurementResult\n> = M.defineMapper(\n M.read(\n M.getProp('angleInRadians'),\n M.mapRequiredProp(\n 'planes',\n M.compose(mapPlanePair, M.requiredProp('start')),\n ),\n M.mapRequiredProp('planes', M.compose(mapPlanePair, M.requiredProp('end'))),\n ),\n ([angle, plane1, plane2]) => ({\n type: 'planar-angle',\n angle,\n plane1,\n plane2,\n }),\n);\n\nconst mapMinimumDistance: M.Func<\n PbMinimumDistanceResult.AsObject,\n MinimumDistanceMeasurementResult\n> = M.defineMapper(\n M.read(\n M.getProp('distance'),\n M.mapRequiredProp('closestPoint1', fromPbVector3f),\n M.mapRequiredProp('closestPoint2', fromPbVector3f),\n ),\n ([distance, point1, point2]) => ({\n type: 'minimum-distance',\n distance,\n point1,\n point2,\n }),\n);\n\nconst mapSurfaceArea: M.Func<\n PbSurfaceAreaResult.AsObject,\n SurfaceAreaMeasurementResult\n> = M.defineMapper(M.read(M.getProp('area')), ([area]) => ({\n type: 'surface-area',\n area,\n}));\n\nconst mapPlanarDistanceFromResult: M.Func<\n PbMeasurementResult.AsObject,\n PlanarDistanceMeasurementResult | undefined | null\n> = M.mapProp('planarDistance', M.ifDefined(mapPlanarDistance));\n\nconst mapPlanarAngleFromResult: M.Func<\n PbMeasurementResult.AsObject,\n PlanarAngleMeasurementResult | undefined | null\n> = M.mapProp('planarAngle', M.ifDefined(mapPlanarAngle));\n\nconst mapMinimumDistanceFromResult: M.Func<\n PbMeasurementResult.AsObject,\n MinimumDistanceMeasurementResult | undefined | null\n> = M.mapProp('minimumDistance', M.ifDefined(mapMinimumDistance));\n\nconst mapSurfaceAreaFromResult: M.Func<\n PbMeasurementResult.AsObject,\n SurfaceAreaMeasurementResult | undefined | null\n> = M.mapProp('totalSurfaceArea', M.ifDefined(mapSurfaceArea));\n\nconst mapMeasurementResult: M.Func<\n PbMeasurementResult.AsObject,\n MeasurementResult\n> = M.compose(\n M.pickFirst(\n mapPlanarDistanceFromResult,\n mapPlanarAngleFromResult,\n mapMinimumDistanceFromResult,\n mapSurfaceAreaFromResult,\n ),\n M.required('Result field'),\n);\n\nexport const mapMeasureResponse: M.Func<\n PbMeasureResponse.AsObject,\n MeasurementOutcome\n> = M.defineMapper(\n M.read(\n M.mapRequiredProp(\n 'outcome',\n M.mapRequiredProp('resultsList', M.mapArray(mapMeasurementResult)),\n ),\n M.mapRequiredProp('outcome', M.getProp('isApproximate')),\n ),\n ([results, isApproximate]) => ({ results, isApproximate }),\n);\n\nexport const mapMeasureResponseOrThrow = M.ifInvalidThrow(mapMeasureResponse);\n"],"mappings":";;;oIAsBA,MAAMA,EAGFC,EAAEC,aACJD,EAAEE,KACAF,EAAEG,gBAAgB,QAASC,GAC3BJ,EAAEG,gBAAgB,MAAOC,KAE3B,EAAEC,EAAOC,MAAI,CAAQD,QAAOC,UAG9B,MAAMC,EAGFP,EAAEC,aACJD,EAAEE,KACAF,EAAEQ,QAAQ,YACVR,EAAEG,gBACA,SACAH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAEzCV,EAAEG,gBAAgB,SAAUH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAErE,EAAEC,EAAUC,EAAQC,MAAO,CACzBC,KAAM,kBACNH,WACAC,SACAC,aAIJ,MAAME,EAGFf,EAAEC,aACJD,EAAEE,KACAF,EAAEQ,QAAQ,kBACVR,EAAEG,gBACA,SACAH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAEzCV,EAAEG,gBAAgB,SAAUH,EAAES,QAAQV,EAAcC,EAAEU,aAAa,WAErE,EAAEM,EAAOJ,EAAQC,MAAO,CACtBC,KAAM,eACNE,QACAJ,SACAC,aAIJ,MAAMI,EAGFjB,EAAEC,aACJD,EAAEE,KACAF,EAAEQ,QAAQ,YACVR,EAAEG,gBAAgB,gBAAiBe,GACnClB,EAAEG,gBAAgB,gBAAiBe,KAErC,EAAEP,EAAUQ,EAAQC,MAAO,CACzBN,KAAM,mBACNH,WACAQ,SACAC,aAIJ,MAAMC,EAGFrB,EAAEC,aAAaD,EAAEE,KAAKF,EAAEQ,QAAQ,UAAU,EAAEc,MAAK,CACnDR,KAAM,eACNQ,WAGF,MAAMC,EAGFvB,EAAEwB,QAAQ,iBAAkBxB,EAAEyB,UAAUlB,IAE5C,MAAMmB,EAGF1B,EAAEwB,QAAQ,cAAexB,EAAEyB,UAAUV,IAEzC,MAAMY,EAGF3B,EAAEwB,QAAQ,kBAAmBxB,EAAEyB,UAAUR,IAE7C,MAAMW,EAGF5B,EAAEwB,QAAQ,mBAAoBxB,EAAEyB,UAAUJ,IAE9C,MAAMQ,EAGF7B,EAAES,QACJT,EAAE8B,UACAP,EACAG,EACAC,EACAC,GAEF5B,EAAE+B,SAAS,iBAGN,MAAMC,EAGThC,EAAEC,aACJD,EAAEE,KACAF,EAAEG,gBACA,UACAH,EAAEG,gBAAgB,cAAeH,EAAEiC,SAASJ,KAE9C7B,EAAEG,gBAAgB,UAAWH,EAAEQ,QAAQ,oBAEzC,EAAE0B,EAASC,MAAc,CAAQD,UAASC,oBAGrC,MAAMC,EAA4BpC,EAAEqC,eAAeL,G","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TransformController","constructor","stream","this","isTransforming","currentDelta","Matrix4","makeIdentity","dispose","endTransform","beginTransform","delta","clearEndInteractionTimeout","console","debug","beginInteraction","transform","toDeltaTransform","updateTransform","updateInteraction","updateTranslation","makeTranslation","getCurrentDelta","endInteraction","endTransformDebounced","startCallback","endCallback","restartEndInteractionTimeout","clearTransform","previousDelta","undefined","EXPERIMENTAL_undoTransform","undoDelta","invert","endDebounceTimeout","setTimeout","async","clearTimeout","columnMajor","asObject","toObject","basisX","x","m11","y","m21","z","m31","m12","m13","basisY","m22","m32","m23","basisZ","m33","xlate","m14","m24","m34","scale","m44"],"sources":["src/lib/transforms/controller.ts"],"sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Matrix4, Vector3 } from '@vertexvis/geometry';\nimport { StreamApi } from '@vertexvis/stream-api';\n\nexport class TransformController {\n private isTransforming = false;\n private previousDelta?: Matrix4.Matrix4;\n private currentDelta: Matrix4.Matrix4 = Matrix4.makeIdentity();\n private endDebounceTimeout?: NodeJS.Timeout;\n\n public constructor(private stream: StreamApi) {}\n\n public async dispose(): Promise<void> {\n if (this.isTransforming) {\n this.endTransform();\n }\n }\n\n public async beginTransform(\n delta: Matrix4.Matrix4 = Matrix4.makeIdentity()\n ): Promise<void> {\n this.clearEndInteractionTimeout();\n\n if (!this.isTransforming) {\n this.currentDelta = delta;\n this.isTransforming = true;\n\n console.debug('Beginning transform interaction');\n\n await this.stream.beginInteraction({\n transform: {\n delta: this.toDeltaTransform(delta),\n },\n });\n }\n }\n\n public async updateTransform(delta: Matrix4.Matrix4): Promise<void> {\n this.currentDelta = delta;\n\n await this.stream.updateInteraction({\n transform: {\n delta: this.toDeltaTransform(this.currentDelta, true),\n },\n });\n }\n\n public async updateTranslation(delta: Vector3.Vector3): Promise<void> {\n this.currentDelta = Matrix4.makeTranslation(delta);\n\n await this.stream.updateInteraction({\n transform: {\n delta: this.toDeltaTransform(this.currentDelta),\n },\n });\n }\n\n public getCurrentDelta(): Matrix4.Matrix4 | undefined {\n return this.currentDelta;\n }\n\n public async endTransform(): Promise<void> {\n if (this.isTransforming) {\n await this.endInteraction();\n }\n }\n\n public async endTransformDebounced(\n startCallback?: VoidFunction,\n endCallback?: VoidFunction\n ): Promise<void> {\n if (this.isTransforming) {\n this.restartEndInteractionTimeout(startCallback, endCallback);\n }\n }\n\n public clearTransform(): void {\n this.currentDelta = Matrix4.makeIdentity();\n this.previousDelta = undefined;\n this.endTransform();\n }\n\n public async EXPERIMENTAL_undoTransform(): Promise<\n Matrix4.Matrix4 | undefined\n > {\n if (this.previousDelta != null) {\n const undoDelta = Matrix4.invert(this.previousDelta);\n\n console.debug(`Undo of previous transform [delta-applied=${undoDelta}]`);\n\n await this.beginTransform();\n await this.updateTransform(Matrix4.invert(this.previousDelta));\n await this.endTransform();\n\n this.previousDelta = undefined;\n\n return undoDelta;\n } else {\n console.debug('No previous transform to undo.');\n }\n }\n\n private async endInteraction(): Promise<void> {\n console.debug(`Ending transform interaction [delta=${this.currentDelta}]`);\n\n this.clearEndInteractionTimeout();\n\n this.previousDelta = this.currentDelta;\n await this.stream.endInteraction({\n transform: {\n delta: this.toDeltaTransform(this.currentDelta),\n },\n });\n this.isTransforming = false;\n this.currentDelta = Matrix4.makeIdentity();\n }\n\n private restartEndInteractionTimeout(\n startCallback?: VoidFunction,\n endCallback?: VoidFunction\n ): void {\n this.clearEndInteractionTimeout();\n\n this.endDebounceTimeout = setTimeout(async () => {\n startCallback?.();\n await this.endInteraction();\n endCallback?.();\n }, 500);\n }\n\n private clearEndInteractionTimeout(): void {\n if (this.endDebounceTimeout != null) {\n clearTimeout(this.endDebounceTimeout);\n this.endDebounceTimeout = undefined;\n }\n }\n\n private toDeltaTransform(\n delta: Matrix4.Matrix4,\n columnMajor = false\n ): vertexvis.protobuf.core.IAffineMatrix4f {\n const asObject = Matrix4.toObject(delta);\n\n // TODO: update this to pass a single order for the\n // transform matrix after work in https://vertexvis.atlassian.net/browse/PLAT-1582\n const basisX = columnMajor\n ? {\n x: asObject.m11,\n y: asObject.m21,\n z: asObject.m31,\n }\n : {\n x: asObject.m11,\n y: asObject.m12,\n z: asObject.m13,\n };\n const basisY = columnMajor\n ? {\n x: asObject.m12,\n y: asObject.m22,\n z: asObject.m32,\n }\n : {\n x: asObject.m21,\n y: asObject.m22,\n z: asObject.m23,\n };\n const basisZ = columnMajor\n ? {\n x: asObject.m13,\n y: asObject.m23,\n z: asObject.m33,\n }\n : {\n x: asObject.m31,\n y: asObject.m32,\n z: asObject.m33,\n };\n\n return {\n basisX,\n basisY,\n basisZ,\n xlate: {\n x: asObject.m14,\n y: asObject.m24,\n z: asObject.m34,\n },\n scale: asObject.m44,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["TransformController","constructor","stream","this","isTransforming","currentDelta","Matrix4","makeIdentity","dispose","endTransform","beginTransform","delta","clearEndInteractionTimeout","console","debug","beginInteraction","transform","toDeltaTransform","updateTransform","updateInteraction","updateTranslation","makeTranslation","getCurrentDelta","endInteraction","endTransformDebounced","startCallback","endCallback","restartEndInteractionTimeout","clearTransform","previousDelta","undefined","EXPERIMENTAL_undoTransform","undoDelta","invert","endDebounceTimeout","setTimeout","async","clearTimeout","columnMajor","asObject","toObject","basisX","x","m11","y","m21","z","m31","m12","m13","basisY","m22","m32","m23","basisZ","m33","xlate","m14","m24","m34","scale","m44"],"sources":["src/lib/transforms/controller.ts"],"sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Matrix4, Vector3 } from '@vertexvis/geometry';\nimport { StreamApi } from '@vertexvis/stream-api';\n\nexport class TransformController {\n private isTransforming = false;\n private previousDelta?: Matrix4.Matrix4;\n private currentDelta: Matrix4.Matrix4 = Matrix4.makeIdentity();\n private endDebounceTimeout?: NodeJS.Timeout;\n\n public constructor(private stream: StreamApi) {}\n\n public async dispose(): Promise<void> {\n if (this.isTransforming) {\n this.endTransform();\n }\n }\n\n public async beginTransform(\n delta: Matrix4.Matrix4 = Matrix4.makeIdentity(),\n ): Promise<void> {\n this.clearEndInteractionTimeout();\n\n if (!this.isTransforming) {\n this.currentDelta = delta;\n this.isTransforming = true;\n\n console.debug('Beginning transform interaction');\n\n await this.stream.beginInteraction({\n transform: {\n delta: this.toDeltaTransform(delta),\n },\n });\n }\n }\n\n public async updateTransform(delta: Matrix4.Matrix4): Promise<void> {\n this.currentDelta = delta;\n\n await this.stream.updateInteraction({\n transform: {\n delta: this.toDeltaTransform(this.currentDelta, true),\n },\n });\n }\n\n public async updateTranslation(delta: Vector3.Vector3): Promise<void> {\n this.currentDelta = Matrix4.makeTranslation(delta);\n\n await this.stream.updateInteraction({\n transform: {\n delta: this.toDeltaTransform(this.currentDelta),\n },\n });\n }\n\n public getCurrentDelta(): Matrix4.Matrix4 | undefined {\n return this.currentDelta;\n }\n\n public async endTransform(): Promise<void> {\n if (this.isTransforming) {\n await this.endInteraction();\n }\n }\n\n public async endTransformDebounced(\n startCallback?: VoidFunction,\n endCallback?: VoidFunction,\n ): Promise<void> {\n if (this.isTransforming) {\n this.restartEndInteractionTimeout(startCallback, endCallback);\n }\n }\n\n public clearTransform(): void {\n this.currentDelta = Matrix4.makeIdentity();\n this.previousDelta = undefined;\n this.endTransform();\n }\n\n public async EXPERIMENTAL_undoTransform(): Promise<\n Matrix4.Matrix4 | undefined\n > {\n if (this.previousDelta != null) {\n const undoDelta = Matrix4.invert(this.previousDelta);\n\n console.debug(`Undo of previous transform [delta-applied=${undoDelta}]`);\n\n await this.beginTransform();\n await this.updateTransform(Matrix4.invert(this.previousDelta));\n await this.endTransform();\n\n this.previousDelta = undefined;\n\n return undoDelta;\n } else {\n console.debug('No previous transform to undo.');\n }\n }\n\n private async endInteraction(): Promise<void> {\n console.debug(`Ending transform interaction [delta=${this.currentDelta}]`);\n\n this.clearEndInteractionTimeout();\n\n this.previousDelta = this.currentDelta;\n await this.stream.endInteraction({\n transform: {\n delta: this.toDeltaTransform(this.currentDelta),\n },\n });\n this.isTransforming = false;\n this.currentDelta = Matrix4.makeIdentity();\n }\n\n private restartEndInteractionTimeout(\n startCallback?: VoidFunction,\n endCallback?: VoidFunction,\n ): void {\n this.clearEndInteractionTimeout();\n\n this.endDebounceTimeout = setTimeout(async () => {\n startCallback?.();\n await this.endInteraction();\n endCallback?.();\n }, 500);\n }\n\n private clearEndInteractionTimeout(): void {\n if (this.endDebounceTimeout != null) {\n clearTimeout(this.endDebounceTimeout);\n this.endDebounceTimeout = undefined;\n }\n }\n\n private toDeltaTransform(\n delta: Matrix4.Matrix4,\n columnMajor = false,\n ): vertexvis.protobuf.core.IAffineMatrix4f {\n const asObject = Matrix4.toObject(delta);\n\n // TODO: update this to pass a single order for the\n // transform matrix after work in https://vertexvis.atlassian.net/browse/PLAT-1582\n const basisX = columnMajor\n ? {\n x: asObject.m11,\n y: asObject.m21,\n z: asObject.m31,\n }\n : {\n x: asObject.m11,\n y: asObject.m12,\n z: asObject.m13,\n };\n const basisY = columnMajor\n ? {\n x: asObject.m12,\n y: asObject.m22,\n z: asObject.m32,\n }\n : {\n x: asObject.m21,\n y: asObject.m22,\n z: asObject.m23,\n };\n const basisZ = columnMajor\n ? {\n x: asObject.m13,\n y: asObject.m23,\n z: asObject.m33,\n }\n : {\n x: asObject.m31,\n y: asObject.m32,\n z: asObject.m33,\n };\n\n return {\n basisX,\n basisY,\n basisZ,\n xlate: {\n x: asObject.m14,\n y: asObject.m24,\n z: asObject.m34,\n },\n scale: asObject.m44,\n };\n }\n}\n"],"mappings":";;;0CAIaA,EAMX,WAAAC,CAA2BC,GAAAC,KAAAD,SALnBC,KAAAC,eAAiB,MAEjBD,KAAAE,aAAgCC,EAAQC,c,CAKzC,aAAMC,GACX,GAAIL,KAAKC,eAAgB,CACvBD,KAAKM,c,EAIF,oBAAMC,CACXC,EAAyBL,EAAQC,gBAEjCJ,KAAKS,6BAEL,IAAKT,KAAKC,eAAgB,CACxBD,KAAKE,aAAeM,EACpBR,KAAKC,eAAiB,KAEtBS,QAAQC,MAAM,yCAERX,KAAKD,OAAOa,iBAAiB,CACjCC,UAAW,CACTL,MAAOR,KAAKc,iBAAiBN,K,EAM9B,qBAAMO,CAAgBP,GAC3BR,KAAKE,aAAeM,QAEdR,KAAKD,OAAOiB,kBAAkB,CAClCH,UAAW,CACTL,MAAOR,KAAKc,iBAAiBd,KAAKE,aAAc,Q,CAK/C,uBAAMe,CAAkBT,GAC7BR,KAAKE,aAAeC,EAAQe,gBAAgBV,SAEtCR,KAAKD,OAAOiB,kBAAkB,CAClCH,UAAW,CACTL,MAAOR,KAAKc,iBAAiBd,KAAKE,gB,CAKjC,eAAAiB,GACL,OAAOnB,KAAKE,Y,CAGP,kBAAMI,GACX,GAAIN,KAAKC,eAAgB,OACjBD,KAAKoB,gB,EAIR,2BAAMC,CACXC,EACAC,GAEA,GAAIvB,KAAKC,eAAgB,CACvBD,KAAKwB,6BAA6BF,EAAeC,E,EAI9C,cAAAE,GACLzB,KAAKE,aAAeC,EAAQC,eAC5BJ,KAAK0B,cAAgBC,UACrB3B,KAAKM,c,CAGA,gCAAMsB,GAGX,GAAI5B,KAAK0B,eAAiB,KAAM,CAC9B,MAAMG,EAAY1B,EAAQ2B,OAAO9B,KAAK0B,eAEtChB,QAAQC,MAAM,6CAA6CkB,YAErD7B,KAAKO,uBACLP,KAAKe,gBAAgBZ,EAAQ2B,OAAO9B,KAAK0B,sBACzC1B,KAAKM,eAEXN,KAAK0B,cAAgBC,UAErB,OAAOE,C,KACF,CACLnB,QAAQC,MAAM,iC,EAIV,oBAAMS,GACZV,QAAQC,MAAM,uCAAuCX,KAAKE,iBAE1DF,KAAKS,6BAELT,KAAK0B,cAAgB1B,KAAKE,mBACpBF,KAAKD,OAAOqB,eAAe,CAC/BP,UAAW,CACTL,MAAOR,KAAKc,iBAAiBd,KAAKE,iBAGtCF,KAAKC,eAAiB,MACtBD,KAAKE,aAAeC,EAAQC,c,CAGtB,4BAAAoB,CACNF,EACAC,GAEAvB,KAAKS,6BAELT,KAAK+B,mBAAqBC,YAAWC,UACnCX,IAAa,MAAbA,SAAa,SAAbA,UACMtB,KAAKoB,iBACXG,IAAW,MAAXA,SAAW,SAAXA,GAAe,GACd,I,CAGG,0BAAAd,GACN,GAAIT,KAAK+B,oBAAsB,KAAM,CACnCG,aAAalC,KAAK+B,oBAClB/B,KAAK+B,mBAAqBJ,S,EAItB,gBAAAb,CACNN,EACA2B,EAAc,OAEd,MAAMC,EAAWjC,EAAQkC,SAAS7B,GAIlC,MAAM8B,EAASH,EACX,CACEI,EAAGH,EAASI,IACZC,EAAGL,EAASM,IACZC,EAAGP,EAASQ,KAEd,CACEL,EAAGH,EAASI,IACZC,EAAGL,EAASS,IACZF,EAAGP,EAASU,KAElB,MAAMC,EAASZ,EACX,CACEI,EAAGH,EAASS,IACZJ,EAAGL,EAASY,IACZL,EAAGP,EAASa,KAEd,CACEV,EAAGH,EAASM,IACZD,EAAGL,EAASY,IACZL,EAAGP,EAASc,KAElB,MAAMC,EAAShB,EACX,CACEI,EAAGH,EAASU,IACZL,EAAGL,EAASc,IACZP,EAAGP,EAASgB,KAEd,CACEb,EAAGH,EAASQ,IACZH,EAAGL,EAASa,IACZN,EAAGP,EAASgB,KAGlB,MAAO,CACLd,SACAS,SACAI,SACAE,MAAO,CACLd,EAAGH,EAASkB,IACZb,EAAGL,EAASmB,IACZZ,EAAGP,EAASoB,KAEdC,MAAOrB,EAASsB,I","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["isSceneTreeTableCellElement","el","nodeName","blurElement","element","blur"],"sources":["src/components/scene-tree-table-cell/utils.ts"],"sourcesContent":["export function isSceneTreeTableCellElement(\n el: unknown\n): el is HTMLVertexSceneTreeTableCellElement {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return el != null && (el as any).nodeName === 'VERTEX-SCENE-TREE-TABLE-CELL';\n}\n\nexport function blurElement(element: HTMLElement): void {\n element.blur();\n}\n"],"mappings":";;;AAAM,SAAUA,EACdC,GAGA,OAAOA,GAAM,MAASA,EAAWC,WAAa,8BAChD,CAEM,SAAUC,EAAYC,GAC1BA,EAAQC,MACV,Q","ignoreList":[]}
1
+ {"version":3,"names":["isSceneTreeTableCellElement","el","nodeName","blurElement","element","blur"],"sources":["src/components/scene-tree-table-cell/utils.ts"],"sourcesContent":["export function isSceneTreeTableCellElement(\n el: unknown,\n): el is HTMLVertexSceneTreeTableCellElement {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return el != null && (el as any).nodeName === 'VERTEX-SCENE-TREE-TABLE-CELL';\n}\n\nexport function blurElement(element: HTMLElement): void {\n element.blur();\n}\n"],"mappings":";;;AAAM,SAAUA,EACdC,GAGA,OAAOA,GAAM,MAASA,EAAWC,WAAa,8BAChD,CAEM,SAAUC,EAAYC,GAC1BA,EAAQC,MACV,Q","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{h as e,F as i,t,p as n,H as o}from"./p-Bb32XUUS.js";import{p as s,m as r,v as a}from"./p-DDQcM-So.js";import"./p-Dbz9yUqC.js";import"./p-B-ToCp8-.js";import"./p-D12q-fpW.js";import"./p-FRKLa468.js";import"./p-ux1ckSDN.js";import"./p-BoB09nlv.js";import"./p-B9R0QWr4.js";import"./p-DRnMrHWY.js";import{V as l}from"./p-BHAaIoH5.js";import{d,P as c,t as p}from"./p-DVW2WZTq.js";import{g as h,i as v,a as u,P as m}from"./p-BWUNIo7P.js";import{c as b}from"./p-C6gMOKYg.js";import{d as f}from"./p-BopQW1sA.js";import{d as w}from"./p-Bkm6H5uq.js";import{d as x}from"./p-B5FnyWQm.js";const y=({pin:t,selected:n,occluded:o,detached:s})=>{const{primaryColor:r}=h(t);return e(i,null,u(t)&&e("div",{id:"pin-anchor",class:b("pin-anchor",{selected:n,"pin-occluded":o,"pin-detached":s}),style:{background:r}}),v(t)&&e("vertex-viewer-icon",{name:"pin-fill",size:"lg",class:b("pin",{"pin-selected":n,"pin-occluded":o,"pin-detached":s}),style:{color:r}}))};function g(e,i,t){const n={x:e.x+t.width/2,y:e.y};const o={x:e.x+t.width/2,y:e.y+t.height};const r={x:e.x+t.width,y:e.y+t.height/2};const a={x:e.x,y:e.y+t.height/2};const l=[n,o,a,r];const d=l.map((e=>s.distance(e,i)));const c=d.indexOf(Math.min(...d));return l[c]}const P=()=>`:host{--viewer-annotations-pin-primary-color:var(--blue-700);--viewer-annotations-pin-accent-color:var(--blue-200);--viewer-annotations-pin-dot-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-font-size:0.75rem;--viewer-annotations-pin-selected-stroke:var(--white);--viewer-annotations-pin-selected-border:2px solid var(--white);--viewer-annotations-pin-label-border:2px solid var(--black);--viewer-annotations-pin-selected-stroke:var(--white);font-size:var(--viewer-annotations-pin-font-size);position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}.pin-anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;width:9px;height:9px;box-sizing:border-box;border:var(--viewer-annotations-pin-label-border);background:var(--viewer-annotations-pin-dot-color);pointer-events:auto;cursor:pointer}.selected{width:13px;height:13px;border:var(--viewer-annotations-pin-selected-border)}.pin{color:var(--viewer-annotations-pin-color);cursor:pointer;transition:opacity 0.3s ease-in;transform:translate(0px, -12px)}.pin-selected{stroke-width:1;stroke:var(--viewer-annotations-pin-selected-stroke)}.pin-occluded{opacity:.3;transition:opacity 0.3s ease-in}.pin-detached{visibility:hidden}`;const k=n(class t extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.matrix=r.makeIdentity();this.projectionViewMatrix=r.makeIdentity();this.pinModel=new m;this.selected=false;this.occluded=false;this.detached=false;this.invalidateStateCounter=0;this.invalidateState=()=>{this.invalidateStateCounter=this.invalidateStateCounter+1}}componentWillLoad(){if(this.pinController==null){this.pinController=new c(this.pinModel)}}componentDidLoad(){var e;this.setLabelObserver();if(this.selected){(e=this.labelEl)===null||e===void 0?void 0:e.setFocus()}}async handleOcclusionStateChanged(e){this.occluded=e.detail}async handleDetachedStateChanged(e){this.detached=e.detail}disconnectedCallback(){var e,i;(e=this.labelEl)===null||e===void 0?void 0:e.removeEventListener("labelChanged",this.invalidateState);(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect()}render(){var t;if(this.pin==null){throw new Error("Unable to draw pin")}const{pinPoint:n,labelPoint:o}=this.computePinPoints(this.pin);return e(i,{key:"e3a02afe3d6a71677e15a9b4d31251970cb9a85e"},e("vertex-viewer-dom-element",{key:"182ec8f3fb4440045d8d9afef16dcb182087e4dd","data-testid":`drawn-pin-${this.pin.id}`,position:this.pin.worldPosition,onPointerDown:async()=>{var e;await((e=this.labelEl)===null||e===void 0?void 0:e.submit());this.selectPin();this.handleAnchorPointerDown()},detachedOff:false},e(y,{key:"53368cba2d76f71dbdb367760ede137d4b1c3a9e",pin:this.pin,selected:this.selected,occluded:this.occluded,detached:this.detached})),u(this.pin)&&!this.occluded&&!this.detached&&e(i,{key:"5318ed3e3afb2680ec4c4b2050dfb34b663ebd08"},e("vertex-viewer-pin-label-line",{key:"a84145a009f83969b47deef61649d65dd594d1ce",id:`pin-label-line-${(t=this.pin)===null||t===void 0?void 0:t.id}`,pinPoint:n,pin:this.pin,labelPoint:o,onPointerDown:()=>this.selectPin()}),e("vertex-viewer-pin-label",{key:"efce5f94d0e1e7e3803b089a94f0e23671a0f6f4",pin:this.pin,ref:e=>this.labelEl=e,elementBounds:this.elementBounds,pinController:this.pinController,onPointerDown:()=>this.selectPin()})))}setLabelObserver(){if(this.labelEl!=null){this.labelEl.addEventListener("labelChanged",this.invalidateState);this.resizeObserver=new ResizeObserver((()=>this.invalidateState()));this.resizeObserver.observe(this.labelEl)}}computePinPoints(e){if(this.elementBounds!=null&&this.pin!=null){return u(this.pin)&&this.pin.label.point!=null?this.computeTextPinPoints(this.pin,this.elementBounds):this.computeDefaultPinPoints(this.pin,this.elementBounds)}return{pinPoint:e.worldPosition}}computeDefaultPinPoints(e,i){return{pinPoint:this.getFromWorldPosition(e.worldPosition,this.projectionViewMatrix,i)}}computeTextPinPoints(e,i){var t,n,o,s;const{pinPoint:r}=this.computeDefaultPinPoints(e,i);const a=p(e.label.point,i);const l=((n=(t=this.labelEl)===null||t===void 0?void 0:t.firstElementChild)===null||n===void 0?void 0:n.clientWidth)||0;const d=((s=(o=this.labelEl)===null||o===void 0?void 0:o.firstElementChild)===null||s===void 0?void 0:s.clientHeight)||0;return{pinPoint:r,labelPoint:g(a,r,{width:l,height:d})}}handleAnchorPointerDown(){var e,i;if(this.elementBounds!=null&&((e=this.pinController)===null||e===void 0?void 0:e.getToolMode())==="edit"&&this.pin!=null){(i=this.pinController)===null||i===void 0?void 0:i.setDraggable({id:this.pin.id})}}selectPin(){var e,i;(e=this.pinController)===null||e===void 0?void 0:e.setSelectedPinId((i=this.pin)===null||i===void 0?void 0:i.id)}getFromWorldPosition(e,i,t){const n=a.transformMatrix(e,i);return l.fromDimensions(t).transformVectorToViewport(n)}static get style(){return P()}},[0,"vertex-viewer-pin-group",{pin:[16],matrix:[1040],projectionViewMatrix:[16],elementBounds:[1040],pinModel:[16],pinController:[1040],selected:[4],occluded:[1540],detached:[1540],invalidateStateCounter:[32]},[[0,"occlusionStateChanged","handleOcclusionStateChanged"],[0,"detachedStateChanged","handleDetachedStateChanged"]]]);function j(){if(typeof customElements==="undefined"){return}const e=["vertex-viewer-pin-group","vertex-viewer-dom-element","vertex-viewer-icon","vertex-viewer-pin-label","vertex-viewer-pin-label-line"];e.forEach((e=>{switch(e){case"vertex-viewer-pin-group":if(!customElements.get(t(e))){customElements.define(t(e),k)}break;case"vertex-viewer-dom-element":if(!customElements.get(t(e))){f()}break;case"vertex-viewer-icon":if(!customElements.get(t(e))){w()}break;case"vertex-viewer-pin-label":if(!customElements.get(t(e))){d()}break;case"vertex-viewer-pin-label-line":if(!customElements.get(t(e))){x()}break}}))}j();export{k as V,j as d};
5
- //# sourceMappingURL=p-B80hfIq6.js.map
4
+ import{h as e,F as i,t,p as n,H as o}from"./p-Bb32XUUS.js";import{p as s,m as r,v as a}from"./p-DDQcM-So.js";import"./p-Dbz9yUqC.js";import"./p-B-ToCp8-.js";import"./p-D12q-fpW.js";import"./p-FRKLa468.js";import"./p-ux1ckSDN.js";import"./p-BoB09nlv.js";import"./p-B9R0QWr4.js";import"./p-DRnMrHWY.js";import{V as l}from"./p-BHAaIoH5.js";import{d,P as c,t as p}from"./p-DVW2WZTq.js";import{g as h,i as v,a as u,P as m}from"./p-BWUNIo7P.js";import{c as b}from"./p-C6gMOKYg.js";import{d as f}from"./p-oK38ynrd.js";import{d as w}from"./p-Bkm6H5uq.js";import{d as x}from"./p-B5FnyWQm.js";const y=({pin:t,selected:n,occluded:o,detached:s})=>{const{primaryColor:r}=h(t);return e(i,null,u(t)&&e("div",{id:"pin-anchor",class:b("pin-anchor",{selected:n,"pin-occluded":o,"pin-detached":s}),style:{background:r}}),v(t)&&e("vertex-viewer-icon",{name:"pin-fill",size:"lg",class:b("pin",{"pin-selected":n,"pin-occluded":o,"pin-detached":s}),style:{color:r}}))};function g(e,i,t){const n={x:e.x+t.width/2,y:e.y};const o={x:e.x+t.width/2,y:e.y+t.height};const r={x:e.x+t.width,y:e.y+t.height/2};const a={x:e.x,y:e.y+t.height/2};const l=[n,o,a,r];const d=l.map((e=>s.distance(e,i)));const c=d.indexOf(Math.min(...d));return l[c]}const P=()=>`:host{--viewer-annotations-pin-primary-color:var(--blue-700);--viewer-annotations-pin-accent-color:var(--blue-200);--viewer-annotations-pin-dot-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-font-size:0.75rem;--viewer-annotations-pin-selected-stroke:var(--white);--viewer-annotations-pin-selected-border:2px solid var(--white);--viewer-annotations-pin-label-border:2px solid var(--black);--viewer-annotations-pin-selected-stroke:var(--white);font-size:var(--viewer-annotations-pin-font-size);position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}.pin-anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;width:9px;height:9px;box-sizing:border-box;border:var(--viewer-annotations-pin-label-border);background:var(--viewer-annotations-pin-dot-color);pointer-events:auto;cursor:pointer}.selected{width:13px;height:13px;border:var(--viewer-annotations-pin-selected-border)}.pin{color:var(--viewer-annotations-pin-color);cursor:pointer;transition:opacity 0.3s ease-in;transform:translate(0px, -12px)}.pin-selected{stroke-width:1;stroke:var(--viewer-annotations-pin-selected-stroke)}.pin-occluded{opacity:.3;transition:opacity 0.3s ease-in}.pin-detached{visibility:hidden}`;const k=n(class t extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.matrix=r.makeIdentity();this.projectionViewMatrix=r.makeIdentity();this.pinModel=new m;this.selected=false;this.occluded=false;this.detached=false;this.invalidateStateCounter=0;this.invalidateState=()=>{this.invalidateStateCounter=this.invalidateStateCounter+1}}componentWillLoad(){if(this.pinController==null){this.pinController=new c(this.pinModel)}}componentDidLoad(){var e;this.setLabelObserver();if(this.selected){(e=this.labelEl)===null||e===void 0?void 0:e.setFocus()}}async handleOcclusionStateChanged(e){this.occluded=e.detail}async handleDetachedStateChanged(e){this.detached=e.detail}disconnectedCallback(){var e,i;(e=this.labelEl)===null||e===void 0?void 0:e.removeEventListener("labelChanged",this.invalidateState);(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect()}render(){var t;if(this.pin==null){throw new Error("Unable to draw pin")}const{pinPoint:n,labelPoint:o}=this.computePinPoints(this.pin);return e(i,{key:"3275077c2f3febce611262f97ad52424381eeeaf"},e("vertex-viewer-dom-element",{key:"95c6a4cadb1b0437b0a8c9d9e8a4c8b6612bad44","data-testid":`drawn-pin-${this.pin.id}`,position:this.pin.worldPosition,onPointerDown:async()=>{var e;await((e=this.labelEl)===null||e===void 0?void 0:e.submit());this.selectPin();this.handleAnchorPointerDown()},detachedOff:false},e(y,{key:"cf3f679745095b62a6d8dacd705ee4f6093e3773",pin:this.pin,selected:this.selected,occluded:this.occluded,detached:this.detached})),u(this.pin)&&!this.occluded&&!this.detached&&e(i,{key:"b3f3318043cf62dc50021e5af93a333412ddffbb"},e("vertex-viewer-pin-label-line",{key:"ccb1e7184620f7d1d1a497066ea70c6e79ac6807",id:`pin-label-line-${(t=this.pin)===null||t===void 0?void 0:t.id}`,pinPoint:n,pin:this.pin,labelPoint:o,onPointerDown:()=>this.selectPin()}),e("vertex-viewer-pin-label",{key:"ad4d024b1b1b50aedd70cc35ad16abbca3aef827",pin:this.pin,ref:e=>this.labelEl=e,elementBounds:this.elementBounds,pinController:this.pinController,onPointerDown:()=>this.selectPin()})))}setLabelObserver(){if(this.labelEl!=null){this.labelEl.addEventListener("labelChanged",this.invalidateState);this.resizeObserver=new ResizeObserver((()=>this.invalidateState()));this.resizeObserver.observe(this.labelEl)}}computePinPoints(e){if(this.elementBounds!=null&&this.pin!=null){return u(this.pin)&&this.pin.label.point!=null?this.computeTextPinPoints(this.pin,this.elementBounds):this.computeDefaultPinPoints(this.pin,this.elementBounds)}return{pinPoint:e.worldPosition}}computeDefaultPinPoints(e,i){return{pinPoint:this.getFromWorldPosition(e.worldPosition,this.projectionViewMatrix,i)}}computeTextPinPoints(e,i){var t,n,o,s;const{pinPoint:r}=this.computeDefaultPinPoints(e,i);const a=p(e.label.point,i);const l=((n=(t=this.labelEl)===null||t===void 0?void 0:t.firstElementChild)===null||n===void 0?void 0:n.clientWidth)||0;const d=((s=(o=this.labelEl)===null||o===void 0?void 0:o.firstElementChild)===null||s===void 0?void 0:s.clientHeight)||0;return{pinPoint:r,labelPoint:g(a,r,{width:l,height:d})}}handleAnchorPointerDown(){var e,i;if(this.elementBounds!=null&&((e=this.pinController)===null||e===void 0?void 0:e.getToolMode())==="edit"&&this.pin!=null){(i=this.pinController)===null||i===void 0?void 0:i.setDraggable({id:this.pin.id})}}selectPin(){var e,i;(e=this.pinController)===null||e===void 0?void 0:e.setSelectedPinId((i=this.pin)===null||i===void 0?void 0:i.id)}getFromWorldPosition(e,i,t){const n=a.transformMatrix(e,i);return l.fromDimensions(t).transformVectorToViewport(n)}static get style(){return P()}},[0,"vertex-viewer-pin-group",{pin:[16],matrix:[1040],projectionViewMatrix:[16],elementBounds:[1040],pinModel:[16],pinController:[1040],selected:[4],occluded:[1540],detached:[1540],invalidateStateCounter:[32]},[[0,"occlusionStateChanged","handleOcclusionStateChanged"],[0,"detachedStateChanged","handleDetachedStateChanged"]]]);function j(){if(typeof customElements==="undefined"){return}const e=["vertex-viewer-pin-group","vertex-viewer-dom-element","vertex-viewer-icon","vertex-viewer-pin-label","vertex-viewer-pin-label-line"];e.forEach((e=>{switch(e){case"vertex-viewer-pin-group":if(!customElements.get(t(e))){customElements.define(t(e),k)}break;case"vertex-viewer-dom-element":if(!customElements.get(t(e))){f()}break;case"vertex-viewer-icon":if(!customElements.get(t(e))){w()}break;case"vertex-viewer-pin-label":if(!customElements.get(t(e))){d()}break;case"vertex-viewer-pin-label-line":if(!customElements.get(t(e))){x()}break}}))}j();export{k as V,j as d};
5
+ //# sourceMappingURL=p-DF4kEsJU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PinRenderer","pin","selected","occluded","detached","primaryColor","getPinColors","h","Fragment","isTextPin","id","class","classNames","style","background","isIconPin","name","size","color","getClosestCenterToPoint","boxPoint","pointToMeasure","dimensions","topPoint","x","width","y","bottomPoint","height","rightPoint","leftPoint","candidates","distances","map","candidate","Point","distance","candidateIndex","indexOf","Math","min","viewerPinGroupCss","ViewerPinGroup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","matrix","Matrix4","makeIdentity","projectionViewMatrix","pinModel","PinModel","invalidateStateCounter","invalidateState","componentWillLoad","pinController","PinController","componentDidLoad","setLabelObserver","_a","labelEl","setFocus","handleOcclusionStateChanged","event","detail","handleDetachedStateChanged","disconnectedCallback","removeEventListener","_b","resizeObserver","disconnect","render","Error","pinPoint","labelPoint","computePinPoints","key","position","worldPosition","onPointerDown","async","submit","selectPin","handleAnchorPointerDown","detachedOff","ref","el","elementBounds","addEventListener","ResizeObserver","observe","label","point","computeTextPinPoints","computeDefaultPinPoints","getFromWorldPosition","screenPosition","translatePointToScreen","labelWidth","firstElementChild","clientWidth","labelHeight","_d","_c","clientHeight","getToolMode","setDraggable","setSelectedPinId","pt","ndcPt","Vector3","transformMatrix","Viewport","fromDimensions","transformVectorToViewport"],"sources":["src/components/viewer-pin-group/pin-renderer.tsx","src/components/viewer-pin-group/utils.ts","src/components/viewer-pin-group/viewer-pin-group.css?tag=vertex-viewer-pin-group","src/components/viewer-pin-group/viewer-pin-group.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { getPinColors, isIconPin, isTextPin, Pin } from '../../lib/pins/model';\n\ninterface PinRendererProps {\n pin?: Pin;\n selected: boolean;\n occluded: boolean;\n detached: boolean;\n}\n\nexport const PinRenderer: FunctionalComponent<PinRendererProps> = ({\n pin,\n selected,\n occluded,\n detached,\n}) => {\n const { primaryColor } = getPinColors(pin);\n\n return (\n <Fragment>\n {isTextPin(pin) && (\n <div\n id=\"pin-anchor\"\n class={classNames('pin-anchor', {\n selected: selected,\n 'pin-occluded': occluded,\n 'pin-detached': detached,\n })}\n style={{\n background: primaryColor,\n }}\n ></div>\n )}\n\n {isIconPin(pin) && (\n <vertex-viewer-icon\n name=\"pin-fill\"\n size=\"lg\"\n class={classNames('pin', {\n 'pin-selected': selected,\n 'pin-occluded': occluded,\n 'pin-detached': detached,\n })}\n style={{\n color: primaryColor,\n }}\n />\n )}\n </Fragment>\n );\n};\n","import { Dimensions, Point } from '@vertexvis/geometry';\n\nexport function getClosestCenterToPoint(\n boxPoint: Point.Point,\n pointToMeasure: Point.Point,\n dimensions: Dimensions.Dimensions,\n): Point.Point {\n const topPoint = {\n x: boxPoint.x + dimensions.width / 2,\n y: boxPoint.y,\n };\n\n const bottomPoint = {\n x: boxPoint.x + dimensions.width / 2,\n y: boxPoint.y + dimensions.height,\n };\n\n const rightPoint = {\n x: boxPoint.x + dimensions.width,\n y: boxPoint.y + dimensions.height / 2,\n };\n\n const leftPoint = {\n x: boxPoint.x,\n y: boxPoint.y + dimensions.height / 2,\n };\n\n const candidates = [topPoint, bottomPoint, leftPoint, rightPoint];\n\n const distances = candidates.map((candidate) =>\n Point.distance(candidate, pointToMeasure),\n );\n\n const candidateIndex = distances.indexOf(Math.min(...distances));\n return candidates[candidateIndex];\n}\n",":host {\n\n /**\n * @prop --viewer-annotations-pin-primary-color: A CSS color that\n * specifies the primary color for the pins. This value gets used for the dot color \n * and borders\n */\n --viewer-annotations-pin-primary-color: var(--blue-700);\n\n /**\n * @prop --viewer-annotations-pin-accent-color: A CSS color that\n * specifies the accent color for the pins. This value gets used for background colors\n * \n */\n\n --viewer-annotations-pin-accent-color: var(--blue-200);\n /**\n * @prop viewer-annotations-pin-dot-color: A CSS color that\n * specifies the color of the anchor dot\n */\n --viewer-annotations-pin-dot-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-color: A CSS color that\n * specifies the color of the pin\n */\n --viewer-annotations-pin-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-font-size: A CSS property to specify\n the font size of the pin\n */\n --viewer-annotations-pin-font-size: 0.75rem;\n\n /**\n * @prop --viewer-annotations-pin-selected-stroke: A CSS color that\n * specifies the stroke color of a selected pin\n */\n --viewer-annotations-pin-selected-stroke: var(--white);\n\n /**\n * @prop --viewer-annotations-pin-selected-border: A CSS color that\n * specifies the border of a selected pin\n */\n --viewer-annotations-pin-selected-border: 2px solid var(--white);\n\n /**\n * @prop --viewer-annotations-pin-label-border: A CSS color that\n * specifies the border of a text pin anchor\n */\n --viewer-annotations-pin-label-border: 2px solid var(--black);\n\n /**\n * @prop --viewer-annotations-pin-selected-border: A CSS color that\n * specifies the stroke of a selected default pin\n */\n --viewer-annotations-pin-selected-stroke: var(--white);\n\n font-size: var(--viewer-annotations-pin-font-size);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.pin-anchor {\n position: absolute;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 9px;\n height: 9px;\n box-sizing: border-box;\n border: var(--viewer-annotations-pin-label-border);\n background: var(--viewer-annotations-pin-dot-color);\n pointer-events: auto;\n cursor: pointer;\n}\n\n.selected {\n width: 13px;\n height: 13px;\n border: var(--viewer-annotations-pin-selected-border)\n}\n\n.pin {\n color: var(--viewer-annotations-pin-color);\n cursor: pointer;\n transition: opacity 0.3s ease-in;\n\n /**\n * Place bottom point of the pin at the location instead of the middle of the pin\n */\n transform: translate(0px, -12px);\n}\n\n.pin-selected {\n stroke-width: 1;\n stroke: var(--viewer-annotations-pin-selected-stroke);\n}\n\n.pin-occluded {\n opacity: .3;\n transition: opacity 0.3s ease-in;\n}\n\n.pin-detached {\n visibility: hidden;\n}","import {\n Component,\n Fragment,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n JSX,\n Listen,\n Prop,\n State,\n} from '@stencil/core';\nimport { Dimensions, Matrix4, Point, Vector3 } from '@vertexvis/geometry';\n\nimport { Viewport } from '../..';\nimport { PinController } from '../../lib/pins/controller';\nimport { isTextPin, Pin, TextPin } from '../../lib/pins/model';\nimport { PinModel } from '../../lib/pins/model';\nimport { translatePointToScreen } from '../viewer-pin-tool/utils';\nimport { PinRenderer } from './pin-renderer';\nimport { getClosestCenterToPoint } from './utils';\n\ninterface ComputedPoints {\n pinPoint: Point.Point;\n labelPoint?: Point.Point;\n}\n\n@Component({\n tag: 'vertex-viewer-pin-group',\n styleUrl: 'viewer-pin-group.css',\n shadow: false,\n})\nexport class ViewerPinGroup {\n /**\n * The pin to draw for the group\n */\n @Prop()\n public pin?: Pin;\n\n /**\n * The local matrix of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public matrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * Projection view matrix used for computing the position of the pin line\n */\n @Prop()\n public projectionViewMatrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * The dimensions of the canvas for the pins\n */\n @Prop({ mutable: true })\n public elementBounds?: DOMRect;\n\n /**\n * The model that contains the entities and outcomes from performing pin operations\n */\n @Prop()\n public pinModel: PinModel = new PinModel();\n\n /**\n * The controller that drives behavior for pin operations\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * Whether the pin is \"selected\"\n */\n @Prop()\n public selected = false;\n\n /**\n * @internal\n * Whether the pin is occluded\n */\n @Prop({ mutable: true, reflect: true })\n public occluded = false;\n\n /**\n * @internal\n * Whether the pin is detached\n */\n @Prop({ mutable: true, reflect: true })\n public detached = false;\n\n @State()\n private invalidateStateCounter = 0;\n\n private labelEl: HTMLVertexViewerPinLabelElement | undefined;\n\n private resizeObserver?: ResizeObserver;\n\n protected componentWillLoad(): void {\n if (this.pinController == null) {\n this.pinController = new PinController(this.pinModel);\n }\n }\n\n protected componentDidLoad(): void {\n this.setLabelObserver();\n\n if (this.selected) {\n this.labelEl?.setFocus();\n }\n }\n\n /**\n * @ignore\n */\n @Listen('occlusionStateChanged')\n protected async handleOcclusionStateChanged(\n event: CustomEvent<boolean>,\n ): Promise<void> {\n this.occluded = event.detail;\n }\n\n /**\n * @ignore\n */\n @Listen('detachedStateChanged')\n protected async handleDetachedStateChanged(\n event: CustomEvent<boolean>,\n ): Promise<void> {\n this.detached = event.detail;\n }\n\n protected disconnectedCallback(): void {\n this.labelEl?.removeEventListener('labelChanged', this.invalidateState);\n this.resizeObserver?.disconnect();\n }\n\n protected render(): JSX.Element {\n if (this.pin == null) {\n throw new Error('Unable to draw pin');\n }\n\n const { pinPoint, labelPoint } = this.computePinPoints(this.pin);\n\n return (\n <Fragment>\n <vertex-viewer-dom-element\n data-testid={`drawn-pin-${this.pin.id}`}\n position={this.pin.worldPosition}\n onPointerDown={async () => {\n await this.labelEl?.submit();\n this.selectPin();\n this.handleAnchorPointerDown();\n }}\n detachedOff={false}\n >\n <PinRenderer\n pin={this.pin}\n selected={this.selected}\n occluded={this.occluded}\n detached={this.detached}\n />\n </vertex-viewer-dom-element>\n\n {isTextPin(this.pin) && !this.occluded && !this.detached && (\n <Fragment>\n <vertex-viewer-pin-label-line\n id={`pin-label-line-${this.pin?.id}`}\n pinPoint={pinPoint}\n pin={this.pin}\n labelPoint={labelPoint}\n onPointerDown={() => this.selectPin()}\n ></vertex-viewer-pin-label-line>\n\n <vertex-viewer-pin-label\n pin={this.pin}\n ref={(el) => (this.labelEl = el)}\n elementBounds={this.elementBounds}\n pinController={this.pinController}\n onPointerDown={() => this.selectPin()}\n ></vertex-viewer-pin-label>\n </Fragment>\n )}\n </Fragment>\n );\n }\n\n private invalidateState = (): void => {\n this.invalidateStateCounter = this.invalidateStateCounter + 1;\n };\n\n private setLabelObserver(): void {\n if (this.labelEl != null) {\n this.labelEl.addEventListener('labelChanged', this.invalidateState);\n\n this.resizeObserver = new ResizeObserver(() => this.invalidateState());\n this.resizeObserver.observe(this.labelEl);\n }\n }\n\n private computePinPoints(pin: Pin): ComputedPoints {\n if (this.elementBounds != null && this.pin != null) {\n return isTextPin(this.pin) && this.pin.label.point != null\n ? this.computeTextPinPoints(this.pin, this.elementBounds)\n : this.computeDefaultPinPoints(this.pin, this.elementBounds);\n }\n\n return { pinPoint: pin.worldPosition };\n }\n\n private computeDefaultPinPoints(\n pin: Pin,\n elementBounds: DOMRect,\n ): ComputedPoints {\n return {\n pinPoint: this.getFromWorldPosition(\n pin.worldPosition,\n this.projectionViewMatrix,\n elementBounds,\n ),\n };\n }\n\n private computeTextPinPoints(\n pin: TextPin,\n elementBounds: DOMRect,\n ): ComputedPoints {\n const { pinPoint } = this.computeDefaultPinPoints(pin, elementBounds);\n\n const screenPosition = translatePointToScreen(\n pin.label.point,\n elementBounds,\n );\n\n const labelWidth = this.labelEl?.firstElementChild?.clientWidth || 0;\n const labelHeight = this.labelEl?.firstElementChild?.clientHeight || 0;\n\n return {\n pinPoint,\n labelPoint: getClosestCenterToPoint(screenPosition, pinPoint, {\n width: labelWidth,\n height: labelHeight,\n }),\n };\n }\n\n private handleAnchorPointerDown(): void {\n if (\n this.elementBounds != null &&\n this.pinController?.getToolMode() === 'edit' &&\n this.pin != null\n ) {\n this.pinController?.setDraggable({ id: this.pin.id });\n }\n }\n\n private selectPin(): void {\n this.pinController?.setSelectedPinId(this.pin?.id);\n }\n\n private getFromWorldPosition(\n pt: Vector3.Vector3,\n projectionViewMatrix: Matrix4.Matrix4,\n dimensions: Dimensions.Dimensions,\n ): Point.Point {\n const ndcPt = Vector3.transformMatrix(pt, projectionViewMatrix);\n return Viewport.fromDimensions(dimensions).transformVectorToViewport(ndcPt);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["stampTemplate","template","fragment","content","cloneNode","element","firstElementChild","stampTemplateWithValidation","validation","errorMsg","stampTemplateWithId","parent","id","templateNotFoundErrorMsg","validationErrorMsg","getTemplateWithId","querySelector","HTMLTemplateElement"],"sources":["src/lib/templates.ts"],"sourcesContent":["export function stampTemplate<E extends Element>(\n template: HTMLTemplateElement\n): E {\n const fragment = template.content.cloneNode(true) as HTMLElement;\n const element = fragment.firstElementChild;\n return element as E;\n}\n\nexport function stampTemplateWithValidation<E extends Element>(\n template: HTMLTemplateElement,\n validation: (value: unknown) => value is E,\n errorMsg?: () => void\n): E | undefined {\n const element = stampTemplate(template);\n if (validation(element)) {\n return element;\n } else {\n errorMsg?.();\n }\n}\n\nexport function stampTemplateWithId<E extends Element>(\n parent: Element,\n id: string,\n validation: (value: unknown) => value is E,\n templateNotFoundErrorMsg: () => void,\n validationErrorMsg: () => void\n): E | undefined {\n const template = getTemplateWithId(parent, id, templateNotFoundErrorMsg);\n if (template != null) {\n return stampTemplateWithValidation(\n template,\n validation,\n validationErrorMsg\n );\n }\n}\n\nexport function getTemplateWithId(\n parent: Element,\n id: string,\n errorMsg?: () => void\n): HTMLTemplateElement | undefined {\n const element = parent.querySelector(`#${id}`);\n\n if (element instanceof HTMLTemplateElement) {\n return element;\n } else {\n errorMsg?.();\n }\n}\n"],"mappings":";;;AAAM,SAAUA,EACdC,GAEA,MAAMC,EAAWD,EAASE,QAAQC,UAAU,MAC5C,MAAMC,EAAUH,EAASI,kBACzB,OAAOD,CACT,C,SAEgBE,EACdN,EACAO,EACAC,GAEA,MAAMJ,EAAUL,EAAcC,GAC9B,GAAIO,EAAWH,GAAU,CACvB,OAAOA,C,KACF,CACLI,IAAQ,MAARA,SAAQ,SAARA,G,CAEJ,CAEM,SAAUC,EACdC,EACAC,EACAJ,EACAK,EACAC,GAEA,MAAMb,EAAWc,EAAkBJ,EAAQC,EAAIC,GAC/C,GAAIZ,GAAY,KAAM,CACpB,OAAOM,EACLN,EACAO,EACAM,E,CAGN,C,SAEgBC,EACdJ,EACAC,EACAH,GAEA,MAAMJ,EAAUM,EAAOK,cAAc,IAAIJ,KAEzC,GAAIP,aAAmBY,oBAAqB,CAC1C,OAAOZ,C,KACF,CACLI,IAAQ,MAARA,SAAQ,SAARA,G,CAEJ,Q","ignoreList":[]}
1
+ {"version":3,"names":["stampTemplate","template","fragment","content","cloneNode","element","firstElementChild","stampTemplateWithValidation","validation","errorMsg","stampTemplateWithId","parent","id","templateNotFoundErrorMsg","validationErrorMsg","getTemplateWithId","querySelector","HTMLTemplateElement"],"sources":["src/lib/templates.ts"],"sourcesContent":["export function stampTemplate<E extends Element>(\n template: HTMLTemplateElement,\n): E {\n const fragment = template.content.cloneNode(true) as HTMLElement;\n const element = fragment.firstElementChild;\n return element as E;\n}\n\nexport function stampTemplateWithValidation<E extends Element>(\n template: HTMLTemplateElement,\n validation: (value: unknown) => value is E,\n errorMsg?: () => void,\n): E | undefined {\n const element = stampTemplate(template);\n if (validation(element)) {\n return element;\n } else {\n errorMsg?.();\n }\n}\n\nexport function stampTemplateWithId<E extends Element>(\n parent: Element,\n id: string,\n validation: (value: unknown) => value is E,\n templateNotFoundErrorMsg: () => void,\n validationErrorMsg: () => void,\n): E | undefined {\n const template = getTemplateWithId(parent, id, templateNotFoundErrorMsg);\n if (template != null) {\n return stampTemplateWithValidation(\n template,\n validation,\n validationErrorMsg,\n );\n }\n}\n\nexport function getTemplateWithId(\n parent: Element,\n id: string,\n errorMsg?: () => void,\n): HTMLTemplateElement | undefined {\n const element = parent.querySelector(`#${id}`);\n\n if (element instanceof HTMLTemplateElement) {\n return element;\n } else {\n errorMsg?.();\n }\n}\n"],"mappings":";;;AAAM,SAAUA,EACdC,GAEA,MAAMC,EAAWD,EAASE,QAAQC,UAAU,MAC5C,MAAMC,EAAUH,EAASI,kBACzB,OAAOD,CACT,C,SAEgBE,EACdN,EACAO,EACAC,GAEA,MAAMJ,EAAUL,EAAcC,GAC9B,GAAIO,EAAWH,GAAU,CACvB,OAAOA,C,KACF,CACLI,IAAQ,MAARA,SAAQ,SAARA,G,CAEJ,CAEM,SAAUC,EACdC,EACAC,EACAJ,EACAK,EACAC,GAEA,MAAMb,EAAWc,EAAkBJ,EAAQC,EAAIC,GAC/C,GAAIZ,GAAY,KAAM,CACpB,OAAOM,EACLN,EACAO,EACAM,E,CAGN,C,SAEgBC,EACdJ,EACAC,EACAH,GAEA,MAAMJ,EAAUM,EAAOK,cAAc,IAAIJ,KAEzC,GAAIP,aAAmBY,oBAAqB,CAC1C,OAAOZ,C,KACF,CACLI,IAAQ,MAARA,SAAQ,SAARA,G,CAEJ,Q","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["mapModelView","M","defineMapper","read","mapRequiredProp","fromPbUuid2l","getProp","fromPbCamera","id","displayName","partRevisionId","camera","mapListItemModelViewsResponse","mapProp","mapArray","mapCursor","modelViews","next","paging","mapListItemModelViewsResponseOrThrow","ifInvalidThrow","mapItemModelView","toPbJsUuid2l","modelViewId","sceneItemId","mapItemModelViewOrThrow","mapPmiAnnotation","mapListPmiAnnotationsResponse","annotations","mapListPmiAnnotationsResponseOrThrow"],"sources":["src/lib/model-views/mapper.ts","src/lib/pmi/mapper.ts"],"sourcesContent":["import type { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { ModelView as PBModelView } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListItemModelViewsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M, UUID } from '@vertexvis/utils';\n\nimport {\n fromPbCamera,\n fromPbUuid2l,\n mapCursor,\n toPbJsUuid2l,\n} from '../mappers';\nimport { ModelView, ModelViewListResponse } from './types';\n\nconst mapModelView: M.Func<PBModelView.AsObject, ModelView> = M.defineMapper(\n M.read(\n M.mapRequiredProp('id', fromPbUuid2l),\n M.getProp('displayName'),\n M.mapRequiredProp('partRevisionId', fromPbUuid2l),\n M.mapRequiredProp('camera', fromPbCamera)\n ),\n ([id, displayName, partRevisionId, camera]) => ({\n id,\n displayName,\n partRevisionId,\n camera,\n })\n);\n\nconst mapListItemModelViewsResponse: M.Func<\n ListItemModelViewsResponse.AsObject,\n ModelViewListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewsList', M.mapArray(mapModelView)),\n M.mapProp('nextPageCursor', mapCursor)\n ),\n ([modelViews, next]) => ({ modelViews, paging: { next } })\n);\n\nexport const mapListItemModelViewsResponseOrThrow = M.ifInvalidThrow(\n mapListItemModelViewsResponse\n);\n\nconst mapItemModelView: M.Func<\n { modelViewId: UUID.UUID; sceneItemId: UUID.UUID },\n vertexvis.protobuf.core.IItemModelView\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewId', toPbJsUuid2l),\n M.mapProp('sceneItemId', toPbJsUuid2l)\n ),\n ([modelViewId, sceneItemId]) => ({ modelViewId, sceneItemId })\n);\n\nexport const mapItemModelViewOrThrow = M.ifInvalidThrow(mapItemModelView);\n","import { PmiAnnotation as PBPmiAnnotation } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListPmiAnnotationsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { fromPbUuid2l, mapCursor } from '../mappers';\nimport { PmiAnnotation, PmiAnnotationListResponse } from './types';\n\nconst mapPmiAnnotation: M.Func<PBPmiAnnotation.AsObject, PmiAnnotation> =\n M.defineMapper(\n M.read(M.mapRequiredProp('id', fromPbUuid2l), M.getProp('displayName')),\n ([id, displayName]) => ({ id, displayName })\n );\n\nconst mapListPmiAnnotationsResponse: M.Func<\n ListPmiAnnotationsResponse.AsObject,\n PmiAnnotationListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('annotationsList', M.mapArray(mapPmiAnnotation)),\n M.mapProp('nextPageCursor', mapCursor)\n ),\n ([annotations, next]) => ({ annotations, paging: { next } })\n);\n\nexport const mapListPmiAnnotationsResponseOrThrow = M.ifInvalidThrow(\n mapListPmiAnnotationsResponse\n);\n"],"mappings":";;;mKAaA,MAAMA,EAAwDC,EAAEC,aAC9DD,EAAEE,KACAF,EAAEG,gBAAgB,KAAMC,GACxBJ,EAAEK,QAAQ,eACVL,EAAEG,gBAAgB,iBAAkBC,GACpCJ,EAAEG,gBAAgB,SAAUG,KAE9B,EAAEC,EAAIC,EAAaC,EAAgBC,MAAO,CACxCH,KACAC,cACAC,iBACAC,aAIJ,MAAMC,EAGFX,EAAEC,aACJD,EAAEE,KACAF,EAAEY,QAAQ,iBAAkBZ,EAAEa,SAASd,IACvCC,EAAEY,QAAQ,iBAAkBE,KAE9B,EAAEC,EAAYC,MAAK,CAAQD,aAAYE,OAAQ,CAAED,YAG5C,MAAME,EAAuClB,EAAEmB,eACpDR,GAGF,MAAMS,EAGFpB,EAAEC,aACJD,EAAEE,KACAF,EAAEY,QAAQ,cAAeS,GACzBrB,EAAEY,QAAQ,cAAeS,KAE3B,EAAEC,EAAaC,MAAY,CAAQD,cAAaC,kBAG3C,MAAMC,EAA0BxB,EAAEmB,eAAeC,GC/CxD,MAAMK,EACJzB,EAAEC,aACAD,EAAEE,KAAKF,EAAEG,gBAAgB,KAAMC,GAAeJ,EAAEK,QAAQ,iBACxD,EAAEE,EAAIC,MAAY,CAAQD,KAAIC,kBAGlC,MAAMkB,EAGF1B,EAAEC,aACJD,EAAEE,KACAF,EAAEY,QAAQ,kBAAmBZ,EAAEa,SAASY,IACxCzB,EAAEY,QAAQ,iBAAkBE,KAE9B,EAAEa,EAAaX,MAAK,CAAQW,cAAaV,OAAQ,CAAED,YAG9C,MAAMY,EAAuC5B,EAAEmB,eACpDO,G","ignoreList":[]}
1
+ {"version":3,"names":["mapModelView","M","defineMapper","read","mapRequiredProp","fromPbUuid2l","getProp","fromPbCamera","id","displayName","partRevisionId","camera","mapListItemModelViewsResponse","mapProp","mapArray","mapCursor","modelViews","next","paging","mapListItemModelViewsResponseOrThrow","ifInvalidThrow","mapItemModelView","toPbJsUuid2l","modelViewId","sceneItemId","mapItemModelViewOrThrow","mapPmiAnnotation","mapListPmiAnnotationsResponse","annotations","mapListPmiAnnotationsResponseOrThrow"],"sources":["src/lib/model-views/mapper.ts","src/lib/pmi/mapper.ts"],"sourcesContent":["import type { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { ModelView as PBModelView } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListItemModelViewsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M, UUID } from '@vertexvis/utils';\n\nimport {\n fromPbCamera,\n fromPbUuid2l,\n mapCursor,\n toPbJsUuid2l,\n} from '../mappers';\nimport { ModelView, ModelViewListResponse } from './types';\n\nconst mapModelView: M.Func<PBModelView.AsObject, ModelView> = M.defineMapper(\n M.read(\n M.mapRequiredProp('id', fromPbUuid2l),\n M.getProp('displayName'),\n M.mapRequiredProp('partRevisionId', fromPbUuid2l),\n M.mapRequiredProp('camera', fromPbCamera),\n ),\n ([id, displayName, partRevisionId, camera]) => ({\n id,\n displayName,\n partRevisionId,\n camera,\n }),\n);\n\nconst mapListItemModelViewsResponse: M.Func<\n ListItemModelViewsResponse.AsObject,\n ModelViewListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewsList', M.mapArray(mapModelView)),\n M.mapProp('nextPageCursor', mapCursor),\n ),\n ([modelViews, next]) => ({ modelViews, paging: { next } }),\n);\n\nexport const mapListItemModelViewsResponseOrThrow = M.ifInvalidThrow(\n mapListItemModelViewsResponse,\n);\n\nconst mapItemModelView: M.Func<\n { modelViewId: UUID.UUID; sceneItemId: UUID.UUID },\n vertexvis.protobuf.core.IItemModelView\n> = M.defineMapper(\n M.read(\n M.mapProp('modelViewId', toPbJsUuid2l),\n M.mapProp('sceneItemId', toPbJsUuid2l),\n ),\n ([modelViewId, sceneItemId]) => ({ modelViewId, sceneItemId }),\n);\n\nexport const mapItemModelViewOrThrow = M.ifInvalidThrow(mapItemModelView);\n","import { PmiAnnotation as PBPmiAnnotation } from '@vertexvis/scene-view-protos/core/protos/model_views_pb';\nimport { ListPmiAnnotationsResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport { fromPbUuid2l, mapCursor } from '../mappers';\nimport { PmiAnnotation, PmiAnnotationListResponse } from './types';\n\nconst mapPmiAnnotation: M.Func<PBPmiAnnotation.AsObject, PmiAnnotation> =\n M.defineMapper(\n M.read(M.mapRequiredProp('id', fromPbUuid2l), M.getProp('displayName')),\n ([id, displayName]) => ({ id, displayName }),\n );\n\nconst mapListPmiAnnotationsResponse: M.Func<\n ListPmiAnnotationsResponse.AsObject,\n PmiAnnotationListResponse\n> = M.defineMapper(\n M.read(\n M.mapProp('annotationsList', M.mapArray(mapPmiAnnotation)),\n M.mapProp('nextPageCursor', mapCursor),\n ),\n ([annotations, next]) => ({ annotations, paging: { next } }),\n);\n\nexport const mapListPmiAnnotationsResponseOrThrow = M.ifInvalidThrow(\n mapListPmiAnnotationsResponse,\n);\n"],"mappings":";;;mKAaA,MAAMA,EAAwDC,EAAEC,aAC9DD,EAAEE,KACAF,EAAEG,gBAAgB,KAAMC,GACxBJ,EAAEK,QAAQ,eACVL,EAAEG,gBAAgB,iBAAkBC,GACpCJ,EAAEG,gBAAgB,SAAUG,KAE9B,EAAEC,EAAIC,EAAaC,EAAgBC,MAAO,CACxCH,KACAC,cACAC,iBACAC,aAIJ,MAAMC,EAGFX,EAAEC,aACJD,EAAEE,KACAF,EAAEY,QAAQ,iBAAkBZ,EAAEa,SAASd,IACvCC,EAAEY,QAAQ,iBAAkBE,KAE9B,EAAEC,EAAYC,MAAK,CAAQD,aAAYE,OAAQ,CAAED,YAG5C,MAAME,EAAuClB,EAAEmB,eACpDR,GAGF,MAAMS,EAGFpB,EAAEC,aACJD,EAAEE,KACAF,EAAEY,QAAQ,cAAeS,GACzBrB,EAAEY,QAAQ,cAAeS,KAE3B,EAAEC,EAAaC,MAAY,CAAQD,cAAaC,kBAG3C,MAAMC,EAA0BxB,EAAEmB,eAAeC,GC/CxD,MAAMK,EACJzB,EAAEC,aACAD,EAAEE,KAAKF,EAAEG,gBAAgB,KAAMC,GAAeJ,EAAEK,QAAQ,iBACxD,EAAEE,EAAIC,MAAY,CAAQD,KAAIC,kBAGlC,MAAMkB,EAGF1B,EAAEC,aACJD,EAAEE,KACAF,EAAEY,QAAQ,kBAAmBZ,EAAEa,SAASY,IACxCzB,EAAEY,QAAQ,iBAAkBE,KAE9B,EAAEa,EAAaX,MAAK,CAAQW,cAAaV,OAAQ,CAAED,YAG9C,MAAMY,EAAuC5B,EAAEmB,eACpDO,G","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t,p as i,H as s,d as e,h as n,e as o}from"./p-Bb32XUUS.js";import{p as h}from"./p-DDQcM-So.js";import{_ as r}from"./p-Ck9IspfK.js";import{r as l}from"./p-Cd7kap5W.js";import{i as a}from"./p-CiSHWNC4.js";import{E as d}from"./p-CHdoymO5.js";function u(t){return t.clientHeight}function c(t,i){return t.contains(i)}function f(t){return t.toLowerCase()}var v=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var p=/[^A-Z0-9]+/gi;function m(t,i){if(i===void 0){i={}}var s=i.splitRegexp,e=s===void 0?v:s,n=i.stripRegexp,o=n===void 0?p:n,h=i.transform,r=h===void 0?f:h,l=i.delimiter,a=l===void 0?" ":l;var d=w(w(t,e,"$1\0$2"),o,"\0");var u=0;var c=d.length;while(d.charAt(u)==="\0")u++;while(d.charAt(c-1)==="\0")c--;return d.slice(u,c).split("\0").map(r).join(a)}function w(t,i,s){if(i instanceof RegExp)return t.replace(i,s);return i.reduce((function(t,i){return t.replace(i,s)}),t)}function g(t,i){var s=t.charAt(0);var e=t.substr(1).toLowerCase();if(i>0&&s>="0"&&s<="9"){return"_"+s+e}return""+s.toUpperCase()+e}function y(t,i){if(i===void 0){i={}}return m(t,r({delimiter:"",transform:g},i))}function b(t,i){if(i===0)return t.toLowerCase();return g(t,i)}function x(t,i){if(i===void 0){i={}}return y(t,r({transform:b},i))}const C=/{{(.+)}}/;class R{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((i=>i.bind(t)))}}class z{constructor(t,i){this.node=t;this.expr=i}}class $ extends z{constructor(t,i){super(t,i)}bind(t){const i=k(t,this.expr);if(i!==this.node.textContent){this.node.textContent=i}}}class D extends z{constructor(t,i,s){super(t,i);this.attr=s}bind(t){const i=k(t,this.expr);const s=this.node.getAttribute(this.attr);if(s!==i){this.node.setAttribute(this.attr,i)}}}class H extends z{constructor(t,i,s){super(t,i);this.prop=s}bind(t){const i=T(t,this.expr);const s=this.node[this.prop];if(s!==i){this.node[this.prop]=i}}}class P extends z{constructor(t,i,s){super(t,i);this.eventName=s}bind(t){var i;const s=M(this.expr);if(s!=null){(i=this.disposable)===null||i===void 0?void 0:i.dispose();const e=V(t,s,true);this.node.addEventListener(this.eventName,e);this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,e)}}}}}function E(t){const i=[];if(t.nodeType===Node.ELEMENT_NODE){const s=t;const e=L(s);e.forEach((t=>{if(t.name.startsWith("event:")){const e=x(t.name.replace("event:",""));i.push(new P(s,t.value,e))}else if(t.name.startsWith("attr:")){i.push(new D(s,t.value,t.name.replace("attr:","")))}else if(t.name.startsWith("prop:")){const e=x(t.name.replace("prop:",""));i.push(new H(s,t.value,e))}}))}else if(t.nodeType===Node.TEXT_NODE&&t.textContent!=null&&C.test(t.textContent)){i.push(new $(t,t.textContent))}for(let s=0;s<t.childNodes.length;s++){i.push(...E(t.childNodes[s]))}return i}function L(t){return Array.from(t.attributes).filter((t=>C.test(t.value)))}function M(t){const i=C.exec(t);return i!=null?i[1]:undefined}function k(t,i){const s=M(i);if(s!=null){const e=V(t,s,true);return i.replace(`{{${s}}}`,e===null||e===void 0?void 0:e.toString())}else{return i}}function T(t,i){const s=M(i);if(s!=null){const i=V(t,s,true);return i}else{return i}}function V(t,i,s=false){const[e,...n]=i.split(".");if(s&&n.length===0){return t}else if(s&&n.length>0){return V(t,n.join("."),false)}else{const i=t[e];if(n.length>0){return V(i,n.join("."),false)}else{return i}}}class W{constructor(t,i){this.container=t;this.elementFactory=i;this.instanceMap=new Map;this.elements=[]}swapHeadToTail(t){const i=this.elements.splice(0,t);this.elements.splice(this.elements.length,0,...i);return this.elements.concat()}swapTailToHead(t){const i=this.elements.splice(-t,t);this.elements.splice(0,0,...i);return this.elements.concat()}updateElements(t){const i=t-this.elements.length;if(i>0){for(let t=0;t<i;t++){this.createElement()}}else{for(let t=0;t<-i;t++){this.deleteElement()}}return this.elements.concat()}updateData(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);const n=t(s);e===null||e===void 0?void 0:e.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t;this.updateElements(0)}iterateElements(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);t(i,e.bindings,s)}))}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 I(t){const i=t.content.cloneNode(true);const s=i.firstElementChild;const e=new R(E(i));return{element:s,bindings:e}}function S(t){var i;return(i=t.getBoundingClientRect().top)!==null&&i!==void 0?i:0}function A(t){return t.clientWidth}function j(t,i,s){t.scrollTo({top:i,...s})}class N{constructor(){this.onStateChange=new d}setHovered(t){this.onStateChange.emit(t)}stateChanged(t){return this.onStateChange.on(t)}}function O(t,i,s=200){window.clearTimeout(i);return window.setTimeout(t,s)}const U=()=>`: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 Z=i(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();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 N;this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1;const i=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex;this.iterateColumns(((s,e,n)=>{e.updateElements(t);if(i>0){e.swapHeadToTail(i)}else{e.swapTailToHead(-i)}s.style.minHeight=`${this.rowHeight*this.totalRows}px`;const o=n===0?t=>`calc(${t} * 0.5rem)`:()=>`0`;e.iterateElements(((t,i,s)=>{const e=this.stateMap.viewportRows[s];if(a(e)){this.updateCell(e,t,i,s,o)}}))}))};this.updateCell=(t,i,s,e,n)=>{i.style.position="absolute";i.style.top=`${(this.viewportStartIndex+e)*this.rowHeight}px`;i.style.boxSizing="border-box";i.style.height=`${this.rowHeight}px`;i.style.width="100%";i.style.paddingLeft=n(t.node.depth);i.tree=this.tree;i.node=t.node;i.hoverController=this.cellHoverController;i.isScrolling=this.isScrolling;s.bind(t)};this.updateLayoutPosition=()=>{l((()=>{if(this.tableElement!=null){this.layoutOffset=S(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((i=>i*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((i=>i/t))}};this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return(i=t.initialWidth)!==null&&i!==void 0?i:100}));const t=this.getLayoutWidth();if(t!=null){const i=this.stateMap.columnWidths.reduce(((t,i)=>t+i),0);const s=this.stateMap.columnWidths.map((s=>s*(t/i)));this.stateMap.columnWidthPercentages=s.map((i=>i/t));this.stateMap.columnWidths=s}};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 i={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:s,element:e}=this.createColumnCellInstance(this.columnElements[0]);s.bind(i);e.style.visibility="hidden";(t=this.columnElements[0])===null||t===void 0?void 0:t.appendChild(e);if(typeof e.componentOnReady==="function"){await e.componentOnReady()}let n=e.clientHeight;if(n===0){n=await new Promise((t=>{setTimeout((()=>t(e.getBoundingClientRect().height)),5)}))}this.rowHeight=n!==null&&n!==void 0?n:this.rowHeight;e.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 i;return(i=t.initialWidth)!==null&&i!==void 0?i:100}))}const t=this.getLayoutWidth();if(t!=null){if(this.stateMap.columnWidthPercentages.length===0){this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return((s=i.initialWidth)!==null&&s!==void 0?s:100)/t}))}}this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,i)=>`${t} ${i}px`),"")} 1fr`;this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,i)=>`${t} ${i}px`),"")}`};this.bindHeaderData=()=>{if(this.stateMap.headerInstances==null){this.stateMap.headerInstances=this.columnElements.map(((t,i)=>{var s;const e=this.createHeaderInstance(t);if(e!=null){e.element.style.paddingRight=i===this.columnElements.length-1?`0`:`var(--scene-tree-table-column-gap)`;e.element.slot="header";e.element.style.gridColumnStart=`${i+1}`;e.element.style.gridColumnEnd=`${i+2}`;(s=this.hostEl)===null||s===void 0?void 0:s.appendChild(e.element)}return e})).filter((t=>t!=null))}if(this.stateMap.headerDividerInstances==null){this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,i)=>{var s;const e=this.createDividerInstance();e.element.slot="divider";e.element.style.position="absolute";e.element.style.right="0";e.element.style.pointerEvents="auto";e.element.style.gridColumnStart=`${i+1}`;e.element.style.gridColumnEnd=`${i+2}`;(s=this.hostEl)===null||s===void 0?void 0:s.appendChild(e.element);return e}))}};this.rebindHeaderData=()=>{var t,i;this.removeDividerDragListeners();(t=this.stateMap.headerInstances)===null||t===void 0?void 0:t.forEach((t=>t.element.remove()));(i=this.stateMap.headerDividerInstances)===null||i===void 0?void 0:i.forEach((t=>t.element.remove()));this.stateMap.headerInstances=undefined;this.stateMap.headerDividerInstances=undefined;this.bindHeaderData();this.addDividerDragListeners()};this.createDividerPointerDownHandler=t=>i=>{var s,e;i.preventDefault();i.stopPropagation();this.lastDividerPointerPosition=h.create(Math.floor(i.clientX),Math.floor(i.clientY));this.resizingColumnIndex=t;(e=(s=this.stateMap.headerDividerInstances)===null||s===void 0?void 0:s[t])===null||e===void 0?void 0:e.element.classList.add("dragging");window.addEventListener("pointermove",this.handleDividerPointerMove);window.addEventListener("pointerup",this.handleDividerPointerUp)};this.handleDividerPointerMove=t=>{const i=h.create(Math.floor(t.clientX),Math.floor(t.clientY));if(this.lastDividerPointerPosition!=null&&this.resizingColumnIndex!=null){const t=this.resizingColumnIndex;const s=h.subtract(this.lastDividerPointerPosition,i);if(Math.abs(s.x)>=1&&this.isValidResize(s,t)){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((i,e)=>e===t?i-s.x:i));if(t+1<this.stateMap.columnWidths.length){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((i,e)=>e===t+1?i+s.x:i))}this.lastDividerPointerPosition=i;this.computeColumnGridLayout()}}};this.handleDividerPointerUp=()=>{var t,i;if(this.resizingColumnIndex!=null){(i=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t[this.resizingColumnIndex])===null||i===void 0?void 0:i.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,i)=>{var s,e,n,o;const h=this.columnElements[i];const r=this.columnElements[i+1];const l=this.stateMap.columnWidths[i];const a=this.stateMap.columnWidths[i+1];const d=(s=h.minWidth)!==null&&s!==void 0?s:0;const u=(e=h.maxWidth)!==null&&e!==void 0?e:Number.MAX_SAFE_INTEGER;const c=(n=r.minWidth)!==null&&n!==void 0?n:0;const f=(o=r.maxWidth)!==null&&o!==void 0?o:Number.MAX_SAFE_INTEGER;const v=l-t.x>d&&l-t.x<u;const p=r!=null?a+t.x>c&&a+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,i,s;(t=this.tableElement)===null||t===void 0?void 0:t.addEventListener("scroll",this.handleScrollChanged,{passive:true});if(this.headerElement!=null){(i=this.headerResizeObserver)===null||i===void 0?void 0:i.observe(this.headerElement)}(s=this.resizeObserver)===null||s===void 0?void 0:s.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,i,s;(t=this.tableElement)===null||t===void 0?void 0:t.removeEventListener("scroll",this.handleScrollChanged);this.removeDividerDragListeners();(i=this.headerResizeObserver)===null||i===void 0?void 0:i.disconnect();(s=this.resizeObserver)===null||s===void 0?void 0:s.disconnect();this.stateMap.columnWidths=[];this.stateMap.columnWidthPercentages=[]}async handleViewportRowsPropsChanged(){await this.computeAndUpdateViewportRows()}async scrollToPosition(t,i){if(this.tableElement!=null){j(this.tableElement,t,i)}}async attemptComputeCellHeight(){this.computeCellHeight()}render(){return n(o,{key:"d03ad68c3f972ae06117323ee2d93ea72fba68df"},n("div",{key:"f0bf6530a25bf37a898792c2547e5617d96f0e8f",class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},n("slot",{key:"859ae58af0f796e3334c02e3a32613fa6eb46aa3",name:"header"})),n("div",{key:"0554485cbc8a6640a76f2999c783fe8802db0535",class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},n("slot",{key:"03bbe18d7b24f8d54816e2c967990fda96c85c1d",onSlotchange:()=>{this.ensureDividerTemplateDefined();this.updateColumnElements();this.recreateColumnPools();this.computeInitialColumnWidths();this.rebindHeaderData();this.computeColumnGridLayout()}})),n("div",{key:"a70e34447a0414fd268233cb3cdc41389a339990",class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},n("slot",{key:"cf0f78b06877eca19a28c9b49f1182e79c57e78f",name:"divider"})),this.resizingColumnIndex!=null&&n("div",{key:"12ef4a77e9921c018f0598b51a80764c1649a5e5",class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();const i=t!=null&&t>0&&!this.isComputingCellHeight;if(i){const i=Math.ceil(t/this.rowHeight);const s=Math.floor(this.scrollOffset/this.rowHeight);const e=s+i;const n=Math.max(0,s-this.overScanCount);const o=Math.min(this.totalRows-1,e+this.overScanCount);const h=this.getViewportRows(n,o);this.viewportStartIndex=n;this.viewportEndIndex=o;this.stateMap.viewportRows=h}}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,i)=>t.set(i,new W(i,(()=>this.createColumnCellInstance(i))))),new WeakMap)}}recreateColumnPools(){this.columnElements.forEach((t=>{var i,s,e;if(((i=this.stateMap.columnElementPools)===null||i===void 0?void 0:i.get(t))==null){(s=this.stateMap.columnElementPools)===null||s===void 0?void 0:s.set(t,new W(t,(()=>this.createColumnCellInstance(t))))}else{(e=this.stateMap.columnElementPools.get(t))===null||e===void 0?void 0:e.updateElementFactory((()=>this.createColumnCellInstance(t)))}}))}iterateColumns(t){this.columnElements.forEach(((i,s)=>{var e;const n=(e=this.stateMap.columnElementPools)===null||e===void 0?void 0:e.get(i);if(n!=null){t(i,n,s)}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 i=t.querySelector('template[slot="header"]');if(i!=null){return I(i)}}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t!=null){return I(t)}else{throw new Error("Table is missing divider template element")}}createColumnCellInstance(t){const i=t.querySelector('template:not([slot="header"])');if(i!=null){return I(i)}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,i)=>{const s=this.createDividerPointerDownHandler(i);t.element.addEventListener("pointerdown",s);return s}))}removeDividerDragListeners(){var t;if(this.stateMap.headerDividerListeners!=null){const i=this.stateMap.headerDividerListeners;(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.forEach(((t,s)=>{const e=i[s];if(e!=null){t.element.removeEventListener("pointerdown",e)}}));this.stateMap.headerDividerListeners=undefined}}getViewportRows(t,i){const s=this.rows.slice(t,i+1);return s.map((t=>t!=null?this.populateRowData(t):t))}populateRowData(t){var i;if(this.rowData!=null&&t!=null){const s=((i=this.rowData)===null||i===void 0?void 0:i.call(this,t))||{};return{...t,data:s}}else{return t}}getLayoutHeight(){if(this.layoutHeight==null&&this.tableElement!=null){this.layoutHeight=u(this.tableElement)}return this.layoutHeight}getLayoutWidth(){if(this.layoutWidth==null){const t=A(this.hostEl);if(t>0){this.layoutWidth=t}}return this.layoutWidth}clearLayoutHeight(){this.layoutHeight=undefined}clearLayoutWidth(){this.layoutWidth=undefined}get hostEl(){return this}static get watchers(){return{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}}static get style(){return U()}},[257,"vertex-scene-tree-table-layout",{tree:[16],controller:[16],rows:[16],totalRows:[2,"total-rows"],rowHeight:[1026,"row-height"],overScanCount:[2,"over-scan-count"],rowData:[16],layoutOffset:[1026,"layout-offset"],scrollOffset:[1026,"scroll-offset"],layoutHeight:[1026,"layout-height"],layoutWidth:[1026,"layout-width"],viewportStartIndex:[1026,"viewport-start-index"],viewportEndIndex:[1026,"viewport-end-index"],columnGridLayout:[32],columnGridFixedLayout:[32],isComputingCellHeight:[32],lastDividerPointerPosition:[32],resizingColumnIndex:[32],isScrolling:[32],scrollTimer:[32],stateMap:[32],scrollToPosition:[64],attemptComputeCellHeight:[64]},undefined,{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}]);function G(){if(typeof customElements==="undefined"){return}const i=["vertex-scene-tree-table-layout"];i.forEach((i=>{switch(i){case"vertex-scene-tree-table-layout":if(!customElements.get(t(i))){customElements.define(t(i),Z)}break}}))}G();export{Z as S,G as d,c as g};
5
- //# sourceMappingURL=p-b0ZzPHz8.js.map
4
+ import{t,p as i,H as s,d as e,h as n,e as o}from"./p-Bb32XUUS.js";import{p as h}from"./p-DDQcM-So.js";import{_ as r}from"./p-Ck9IspfK.js";import{r as l}from"./p-Cd7kap5W.js";import{i as a}from"./p-CiSHWNC4.js";import{E as d}from"./p-CHdoymO5.js";function u(t){return t.clientHeight}function c(t,i){return t.contains(i)}function f(t){return t.toLowerCase()}var v=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var p=/[^A-Z0-9]+/gi;function m(t,i){if(i===void 0){i={}}var s=i.splitRegexp,e=s===void 0?v:s,n=i.stripRegexp,o=n===void 0?p:n,h=i.transform,r=h===void 0?f:h,l=i.delimiter,a=l===void 0?" ":l;var d=w(w(t,e,"$1\0$2"),o,"\0");var u=0;var c=d.length;while(d.charAt(u)==="\0")u++;while(d.charAt(c-1)==="\0")c--;return d.slice(u,c).split("\0").map(r).join(a)}function w(t,i,s){if(i instanceof RegExp)return t.replace(i,s);return i.reduce((function(t,i){return t.replace(i,s)}),t)}function g(t,i){var s=t.charAt(0);var e=t.substr(1).toLowerCase();if(i>0&&s>="0"&&s<="9"){return"_"+s+e}return""+s.toUpperCase()+e}function y(t,i){if(i===void 0){i={}}return m(t,r({delimiter:"",transform:g},i))}function b(t,i){if(i===0)return t.toLowerCase();return g(t,i)}function x(t,i){if(i===void 0){i={}}return y(t,r({transform:b},i))}const C=/{{(.+)}}/;class R{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((i=>i.bind(t)))}}class z{constructor(t,i){this.node=t;this.expr=i}}class $ extends z{constructor(t,i){super(t,i)}bind(t){const i=k(t,this.expr);if(i!==this.node.textContent){this.node.textContent=i}}}class D extends z{constructor(t,i,s){super(t,i);this.attr=s}bind(t){const i=k(t,this.expr);const s=this.node.getAttribute(this.attr);if(s!==i){this.node.setAttribute(this.attr,i)}}}class H extends z{constructor(t,i,s){super(t,i);this.prop=s}bind(t){const i=T(t,this.expr);const s=this.node[this.prop];if(s!==i){this.node[this.prop]=i}}}class P extends z{constructor(t,i,s){super(t,i);this.eventName=s}bind(t){var i;const s=M(this.expr);if(s!=null){(i=this.disposable)===null||i===void 0?void 0:i.dispose();const e=V(t,s,true);this.node.addEventListener(this.eventName,e);this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,e)}}}}}function E(t){const i=[];if(t.nodeType===Node.ELEMENT_NODE){const s=t;const e=L(s);e.forEach((t=>{if(t.name.startsWith("event:")){const e=x(t.name.replace("event:",""));i.push(new P(s,t.value,e))}else if(t.name.startsWith("attr:")){i.push(new D(s,t.value,t.name.replace("attr:","")))}else if(t.name.startsWith("prop:")){const e=x(t.name.replace("prop:",""));i.push(new H(s,t.value,e))}}))}else if(t.nodeType===Node.TEXT_NODE&&t.textContent!=null&&C.test(t.textContent)){i.push(new $(t,t.textContent))}for(let s=0;s<t.childNodes.length;s++){i.push(...E(t.childNodes[s]))}return i}function L(t){return Array.from(t.attributes).filter((t=>C.test(t.value)))}function M(t){const i=C.exec(t);return i!=null?i[1]:undefined}function k(t,i){const s=M(i);if(s!=null){const e=V(t,s,true);return i.replace(`{{${s}}}`,e===null||e===void 0?void 0:e.toString())}else{return i}}function T(t,i){const s=M(i);if(s!=null){const i=V(t,s,true);return i}else{return i}}function V(t,i,s=false){const[e,...n]=i.split(".");if(s&&n.length===0){return t}else if(s&&n.length>0){return V(t,n.join("."),false)}else{const i=t[e];if(n.length>0){return V(i,n.join("."),false)}else{return i}}}class W{constructor(t,i){this.container=t;this.elementFactory=i;this.instanceMap=new Map;this.elements=[]}swapHeadToTail(t){const i=this.elements.splice(0,t);this.elements.splice(this.elements.length,0,...i);return this.elements.concat()}swapTailToHead(t){const i=this.elements.splice(-t,t);this.elements.splice(0,0,...i);return this.elements.concat()}updateElements(t){const i=t-this.elements.length;if(i>0){for(let t=0;t<i;t++){this.createElement()}}else{for(let t=0;t<-i;t++){this.deleteElement()}}return this.elements.concat()}updateData(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);const n=t(s);e===null||e===void 0?void 0:e.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t;this.updateElements(0)}iterateElements(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);t(i,e.bindings,s)}))}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 I(t){const i=t.content.cloneNode(true);const s=i.firstElementChild;const e=new R(E(i));return{element:s,bindings:e}}function S(t){var i;return(i=t.getBoundingClientRect().top)!==null&&i!==void 0?i:0}function A(t){return t.clientWidth}function j(t,i,s){t.scrollTo({top:i,...s})}class N{constructor(){this.onStateChange=new d}setHovered(t){this.onStateChange.emit(t)}stateChanged(t){return this.onStateChange.on(t)}}function O(t,i,s=200){window.clearTimeout(i);return window.setTimeout(t,s)}const U=()=>`: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 Z=i(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();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 N;this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1;const i=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex;this.iterateColumns(((s,e,n)=>{e.updateElements(t);if(i>0){e.swapHeadToTail(i)}else{e.swapTailToHead(-i)}s.style.minHeight=`${this.rowHeight*this.totalRows}px`;const o=n===0?t=>`calc(${t} * 0.5rem)`:()=>`0`;e.iterateElements(((t,i,s)=>{const e=this.stateMap.viewportRows[s];if(a(e)){this.updateCell(e,t,i,s,o)}}))}))};this.updateCell=(t,i,s,e,n)=>{i.style.position="absolute";i.style.top=`${(this.viewportStartIndex+e)*this.rowHeight}px`;i.style.boxSizing="border-box";i.style.height=`${this.rowHeight}px`;i.style.width="100%";i.style.paddingLeft=n(t.node.depth);i.tree=this.tree;i.node=t.node;i.hoverController=this.cellHoverController;i.isScrolling=this.isScrolling;s.bind(t)};this.updateLayoutPosition=()=>{l((()=>{if(this.tableElement!=null){this.layoutOffset=S(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((i=>i*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((i=>i/t))}};this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return(i=t.initialWidth)!==null&&i!==void 0?i:100}));const t=this.getLayoutWidth();if(t!=null){const i=this.stateMap.columnWidths.reduce(((t,i)=>t+i),0);const s=this.stateMap.columnWidths.map((s=>s*(t/i)));this.stateMap.columnWidthPercentages=s.map((i=>i/t));this.stateMap.columnWidths=s}};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 i={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:s,element:e}=this.createColumnCellInstance(this.columnElements[0]);s.bind(i);e.style.visibility="hidden";(t=this.columnElements[0])===null||t===void 0?void 0:t.appendChild(e);if(typeof e.componentOnReady==="function"){await e.componentOnReady()}let n=e.clientHeight;if(n===0){n=await new Promise((t=>{setTimeout((()=>t(e.getBoundingClientRect().height)),5)}))}this.rowHeight=n!==null&&n!==void 0?n:this.rowHeight;e.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 i;return(i=t.initialWidth)!==null&&i!==void 0?i:100}))}const t=this.getLayoutWidth();if(t!=null){if(this.stateMap.columnWidthPercentages.length===0){this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return((s=i.initialWidth)!==null&&s!==void 0?s:100)/t}))}}this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,i)=>`${t} ${i}px`),"")} 1fr`;this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,i)=>`${t} ${i}px`),"")}`};this.bindHeaderData=()=>{if(this.stateMap.headerInstances==null){this.stateMap.headerInstances=this.columnElements.map(((t,i)=>{var s;const e=this.createHeaderInstance(t);if(e!=null){e.element.style.paddingRight=i===this.columnElements.length-1?`0`:`var(--scene-tree-table-column-gap)`;e.element.slot="header";e.element.style.gridColumnStart=`${i+1}`;e.element.style.gridColumnEnd=`${i+2}`;(s=this.hostEl)===null||s===void 0?void 0:s.appendChild(e.element)}return e})).filter((t=>t!=null))}if(this.stateMap.headerDividerInstances==null){this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,i)=>{var s;const e=this.createDividerInstance();e.element.slot="divider";e.element.style.position="absolute";e.element.style.right="0";e.element.style.pointerEvents="auto";e.element.style.gridColumnStart=`${i+1}`;e.element.style.gridColumnEnd=`${i+2}`;(s=this.hostEl)===null||s===void 0?void 0:s.appendChild(e.element);return e}))}};this.rebindHeaderData=()=>{var t,i;this.removeDividerDragListeners();(t=this.stateMap.headerInstances)===null||t===void 0?void 0:t.forEach((t=>t.element.remove()));(i=this.stateMap.headerDividerInstances)===null||i===void 0?void 0:i.forEach((t=>t.element.remove()));this.stateMap.headerInstances=undefined;this.stateMap.headerDividerInstances=undefined;this.bindHeaderData();this.addDividerDragListeners()};this.createDividerPointerDownHandler=t=>i=>{var s,e;i.preventDefault();i.stopPropagation();this.lastDividerPointerPosition=h.create(Math.floor(i.clientX),Math.floor(i.clientY));this.resizingColumnIndex=t;(e=(s=this.stateMap.headerDividerInstances)===null||s===void 0?void 0:s[t])===null||e===void 0?void 0:e.element.classList.add("dragging");window.addEventListener("pointermove",this.handleDividerPointerMove);window.addEventListener("pointerup",this.handleDividerPointerUp)};this.handleDividerPointerMove=t=>{const i=h.create(Math.floor(t.clientX),Math.floor(t.clientY));if(this.lastDividerPointerPosition!=null&&this.resizingColumnIndex!=null){const t=this.resizingColumnIndex;const s=h.subtract(this.lastDividerPointerPosition,i);if(Math.abs(s.x)>=1&&this.isValidResize(s,t)){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((i,e)=>e===t?i-s.x:i));if(t+1<this.stateMap.columnWidths.length){this.stateMap.columnWidths=this.stateMap.columnWidths.map(((i,e)=>e===t+1?i+s.x:i))}this.lastDividerPointerPosition=i;this.computeColumnGridLayout()}}};this.handleDividerPointerUp=()=>{var t,i;if(this.resizingColumnIndex!=null){(i=(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t[this.resizingColumnIndex])===null||i===void 0?void 0:i.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,i)=>{var s,e,n,o;const h=this.columnElements[i];const r=this.columnElements[i+1];const l=this.stateMap.columnWidths[i];const a=this.stateMap.columnWidths[i+1];const d=(s=h.minWidth)!==null&&s!==void 0?s:0;const u=(e=h.maxWidth)!==null&&e!==void 0?e:Number.MAX_SAFE_INTEGER;const c=(n=r.minWidth)!==null&&n!==void 0?n:0;const f=(o=r.maxWidth)!==null&&o!==void 0?o:Number.MAX_SAFE_INTEGER;const v=l-t.x>d&&l-t.x<u;const p=r!=null?a+t.x>c&&a+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,i,s;(t=this.tableElement)===null||t===void 0?void 0:t.addEventListener("scroll",this.handleScrollChanged,{passive:true});if(this.headerElement!=null){(i=this.headerResizeObserver)===null||i===void 0?void 0:i.observe(this.headerElement)}(s=this.resizeObserver)===null||s===void 0?void 0:s.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,i,s;(t=this.tableElement)===null||t===void 0?void 0:t.removeEventListener("scroll",this.handleScrollChanged);this.removeDividerDragListeners();(i=this.headerResizeObserver)===null||i===void 0?void 0:i.disconnect();(s=this.resizeObserver)===null||s===void 0?void 0:s.disconnect();this.stateMap.columnWidths=[];this.stateMap.columnWidthPercentages=[]}async handleViewportRowsPropsChanged(){await this.computeAndUpdateViewportRows()}async scrollToPosition(t,i){if(this.tableElement!=null){j(this.tableElement,t,i)}}async attemptComputeCellHeight(){this.computeCellHeight()}render(){return n(o,{key:"2656824698df951f2a41f2ad223cb459dd78cb05"},n("div",{key:"df621c883d9f8c4e00490eb7665bda5e65bb9ef3",class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},n("slot",{key:"3d6425521dd682166712477f7697544b49267dfd",name:"header"})),n("div",{key:"e54e5bef181ab97fc204c4a67b702d198d10ae9a",class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},n("slot",{key:"4bd35302ad438bf5d20e19afe3d2793c9ea2a073",onSlotchange:()=>{this.ensureDividerTemplateDefined();this.updateColumnElements();this.recreateColumnPools();this.computeInitialColumnWidths();this.rebindHeaderData();this.computeColumnGridLayout()}})),n("div",{key:"2a732b5e4f66a64392f035946bffc9fdd9e569fd",class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},n("slot",{key:"497a76a7cf9e7e8cd41eec79e9a0f89b2946516c",name:"divider"})),this.resizingColumnIndex!=null&&n("div",{key:"d0252a71b7e88f85253a7d47229fc2f664ccdea5",class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();const i=t!=null&&t>0&&!this.isComputingCellHeight;if(i){const i=Math.ceil(t/this.rowHeight);const s=Math.floor(this.scrollOffset/this.rowHeight);const e=s+i;const n=Math.max(0,s-this.overScanCount);const o=Math.min(this.totalRows-1,e+this.overScanCount);const h=this.getViewportRows(n,o);this.viewportStartIndex=n;this.viewportEndIndex=o;this.stateMap.viewportRows=h}}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,i)=>t.set(i,new W(i,(()=>this.createColumnCellInstance(i))))),new WeakMap)}}recreateColumnPools(){this.columnElements.forEach((t=>{var i,s,e;if(((i=this.stateMap.columnElementPools)===null||i===void 0?void 0:i.get(t))==null){(s=this.stateMap.columnElementPools)===null||s===void 0?void 0:s.set(t,new W(t,(()=>this.createColumnCellInstance(t))))}else{(e=this.stateMap.columnElementPools.get(t))===null||e===void 0?void 0:e.updateElementFactory((()=>this.createColumnCellInstance(t)))}}))}iterateColumns(t){this.columnElements.forEach(((i,s)=>{var e;const n=(e=this.stateMap.columnElementPools)===null||e===void 0?void 0:e.get(i);if(n!=null){t(i,n,s)}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 i=t.querySelector('template[slot="header"]');if(i!=null){return I(i)}}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(t!=null){return I(t)}else{throw new Error("Table is missing divider template element")}}createColumnCellInstance(t){const i=t.querySelector('template:not([slot="header"])');if(i!=null){return I(i)}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,i)=>{const s=this.createDividerPointerDownHandler(i);t.element.addEventListener("pointerdown",s);return s}))}removeDividerDragListeners(){var t;if(this.stateMap.headerDividerListeners!=null){const i=this.stateMap.headerDividerListeners;(t=this.stateMap.headerDividerInstances)===null||t===void 0?void 0:t.forEach(((t,s)=>{const e=i[s];if(e!=null){t.element.removeEventListener("pointerdown",e)}}));this.stateMap.headerDividerListeners=undefined}}getViewportRows(t,i){const s=this.rows.slice(t,i+1);return s.map((t=>t!=null?this.populateRowData(t):t))}populateRowData(t){var i;if(this.rowData!=null&&t!=null){const s=((i=this.rowData)===null||i===void 0?void 0:i.call(this,t))||{};return{...t,data:s}}else{return t}}getLayoutHeight(){if(this.layoutHeight==null&&this.tableElement!=null){this.layoutHeight=u(this.tableElement)}return this.layoutHeight}getLayoutWidth(){if(this.layoutWidth==null){const t=A(this.hostEl);if(t>0){this.layoutWidth=t}}return this.layoutWidth}clearLayoutHeight(){this.layoutHeight=undefined}clearLayoutWidth(){this.layoutWidth=undefined}get hostEl(){return this}static get watchers(){return{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}}static get style(){return U()}},[257,"vertex-scene-tree-table-layout",{tree:[16],controller:[16],rows:[16],totalRows:[2,"total-rows"],rowHeight:[1026,"row-height"],overScanCount:[2,"over-scan-count"],rowData:[16],layoutOffset:[1026,"layout-offset"],scrollOffset:[1026,"scroll-offset"],layoutHeight:[1026,"layout-height"],layoutWidth:[1026,"layout-width"],viewportStartIndex:[1026,"viewport-start-index"],viewportEndIndex:[1026,"viewport-end-index"],columnGridLayout:[32],columnGridFixedLayout:[32],isComputingCellHeight:[32],lastDividerPointerPosition:[32],resizingColumnIndex:[32],isScrolling:[32],scrollTimer:[32],stateMap:[32],scrollToPosition:[64],attemptComputeCellHeight:[64]},undefined,{rows:[{handleViewportRowsPropsChanged:0}],totalRows:[{handleViewportRowsPropsChanged:0}],rowHeight:[{handleViewportRowsPropsChanged:0}]}]);function G(){if(typeof customElements==="undefined"){return}const i=["vertex-scene-tree-table-layout"];i.forEach((i=>{switch(i){case"vertex-scene-tree-table-layout":if(!customElements.get(t(i))){customElements.define(t(i),Z)}break}}))}G();export{Z as S,G as d,c as g};
5
+ //# sourceMappingURL=p-DUC59SSO.js.map