@vertexvis/viewer 0.13.2-canary.9 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/cjs/{_commonjsHelpers-537d719a.js → _commonjsHelpers-dcc4cf71.js} +21 -0
  2. package/dist/cjs/{app-globals-3671e828.js → app-globals-2035678d.js} +1 -1
  3. package/dist/cjs/{browser.esm-075810bf.js → browser.esm-0bcdc581.js} +1 -1
  4. package/dist/cjs/{bundle.esm-618a5fe9.js → bundle.esm-22b6f2d6.js} +35 -1
  5. package/dist/cjs/{config-fb124bac.js → config-c63caa4f.js} +3 -2
  6. package/dist/cjs/{cursors-d71f6a74.js → cursors-f5d3c9a6.js} +13 -1
  7. package/dist/cjs/{dom-57ef84e9.js → dom-8d90bfaf.js} +1 -1
  8. package/dist/cjs/dom-d1bbd67c.js +10 -0
  9. package/dist/cjs/elementRectObserver-9b28f182.js +25 -0
  10. package/dist/cjs/entities-9eb7e608.js +41 -0
  11. package/dist/cjs/{entities-90f1347a.js → entities-e71231d8.js} +4 -4
  12. package/dist/cjs/{grpc-web-client.umd-60a79aae.js → grpc-web-client.umd-2af20c1b.js} +1 -1
  13. package/dist/cjs/{index-e100709a.js → index-4138aa2c.js} +1 -0
  14. package/dist/cjs/{index-3bc6bac0.js → index-b9d13137.js} +1 -1
  15. package/dist/cjs/index.cjs.js +25 -22
  16. package/dist/cjs/loader.cjs.js +4 -4
  17. package/dist/cjs/{mapper-80ee2957.js → mapper-08bbab48.js} +4 -4
  18. package/dist/cjs/{markup-7f7de5f2.js → markup-f7e61d16.js} +2 -2
  19. package/dist/cjs/{measurement-f1ae9248.js → measurement-3367e9b7.js} +2 -2
  20. package/dist/cjs/{model-55abd9ab.js → model-5ca87867.js} +1 -1
  21. package/dist/cjs/model-a9cfd037.js +246 -0
  22. package/dist/cjs/{overlays-68e8eff2.js → overlays-b0ba69fd.js} +2 -2
  23. package/dist/cjs/{png-decoder-076131d8.js → png-decoder-ef097f37.js} +2 -2
  24. package/dist/cjs/{results-e9496869.js → results-178e89a3.js} +1 -1
  25. package/dist/cjs/{scene-92728420.js → scene-b6b78909.js} +49 -12
  26. package/dist/cjs/{stencil-a664cd10.js → stencil-ef19638e.js} +5 -1
  27. package/dist/cjs/{streamAttributes-81eb52f2.js → streamAttributes-c343bdc8.js} +1993 -78
  28. package/dist/cjs/utils-78928e4e.js +162 -0
  29. package/dist/cjs/{utils-6397efca.js → utils-b157b0af.js} +1 -1
  30. package/dist/cjs/{utils-463cd52e.js → utils-c74b8bf0.js} +1 -1
  31. package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +16 -6
  32. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +16 -14
  33. package/dist/cjs/vertex-scene-tree-table-column.cjs.entry.js +1 -1
  34. package/dist/cjs/vertex-scene-tree-table-header.cjs.entry.js +1 -1
  35. package/dist/cjs/vertex-scene-tree-table-resize-divider.cjs.entry.js +3 -3
  36. package/dist/cjs/vertex-scene-tree-toolbar-group.cjs.entry.js +1 -1
  37. package/dist/cjs/vertex-scene-tree.cjs.entry.js +154 -27
  38. package/dist/cjs/vertex-viewer-button_3.cjs.entry.js +3 -3
  39. package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js +1 -1
  40. package/dist/cjs/{vertex-viewer-dom-element_3.cjs.entry.js → vertex-viewer-dom-element_2.cjs.entry.js} +20 -178
  41. package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +191 -0
  42. package/dist/cjs/vertex-viewer-icon.cjs.entry.js +6 -3
  43. package/dist/cjs/vertex-viewer-layer.cjs.entry.js +1 -1
  44. package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +49 -196
  45. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +5 -5
  46. package/dist/cjs/vertex-viewer-markup.cjs.entry.js +5 -5
  47. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +8 -7
  48. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +16 -15
  49. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +10 -9
  50. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +18 -35
  51. package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +8 -7
  52. package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +12 -11
  53. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +167 -0
  54. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js +276 -0
  55. package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +322 -0
  56. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +13272 -0
  57. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +8 -7
  58. package/dist/cjs/vertex-viewer.cjs.entry.js +119 -52
  59. package/dist/cjs/viewer.cjs.js +4 -4
  60. package/dist/cjs/{viewport-54b1389d.js → viewport-5ca619f7.js} +14 -4
  61. package/dist/collection/__mocks__/regl-shape.js +6 -0
  62. package/dist/collection/__mocks__/regl.js +3 -0
  63. package/dist/collection/collection-manifest.json +5 -0
  64. package/dist/collection/components/scene-tree/lib/controller.js +17 -5
  65. package/dist/collection/components/scene-tree/lib/errors.js +7 -1
  66. package/dist/collection/components/scene-tree/lib/viewer-ops.js +12 -1
  67. package/dist/collection/components/scene-tree/scene-tree.js +112 -22
  68. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.css +0 -7
  69. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +34 -12
  70. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +14 -2
  71. package/dist/collection/components/viewer/viewer.js +79 -14
  72. package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +32 -4
  73. package/dist/collection/components/viewer-dom-group/utils.js +3 -2
  74. package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +30 -2
  75. package/dist/collection/components/viewer-icon/viewer-icon.js +5 -2
  76. package/dist/collection/components/viewer-markup/utils.js +3 -2
  77. package/dist/collection/components/viewer-measurement-details/viewer-measurement-details-results.js +2 -2
  78. package/dist/collection/components/viewer-pin-group/pin-renderer.js +12 -0
  79. package/dist/collection/components/viewer-pin-group/utils.js +24 -0
  80. package/dist/collection/components/viewer-pin-group/viewer-pin-group.css +83 -0
  81. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +276 -0
  82. package/dist/collection/components/viewer-pin-label/utils.js +4 -0
  83. package/dist/collection/components/viewer-pin-label/viewer-pin-label.css +154 -0
  84. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js +410 -0
  85. package/dist/collection/components/viewer-pin-label-line/viewer-pin-label-line.css +36 -0
  86. package/dist/collection/components/viewer-pin-label-line/viewer-pin-label-line.js +61 -0
  87. package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.css +9 -0
  88. package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js +277 -0
  89. package/dist/collection/components/viewer-transform-widget/__mocks__/widget.js +21 -0
  90. package/dist/collection/components/viewer-transform-widget/util.js +78 -0
  91. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.css +48 -0
  92. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +442 -0
  93. package/dist/collection/components/viewer-transform-widget/widget.js +259 -0
  94. package/dist/collection/lib/cursors.js +11 -1
  95. package/dist/collection/lib/interactions/baseInteractionHandler.js +9 -2
  96. package/dist/collection/lib/interactions/flyToPositionKeyInteraction.js +4 -3
  97. package/dist/collection/lib/interactions/interactionApi.js +21 -1
  98. package/dist/collection/lib/interactions/interactionApiOrthographic.js +18 -1
  99. package/dist/collection/lib/interactions/mouseInteractionHandler.js +4 -4
  100. package/dist/collection/lib/interactions/mouseInteractions.js +24 -1
  101. package/dist/collection/lib/interactions/multiTouchInteractionHandler.js +1 -2
  102. package/dist/collection/lib/interactions/pointerInteractionHandler.js +3 -3
  103. package/dist/collection/lib/mappers/streamAttributes.js +4 -2
  104. package/dist/collection/lib/pins/controller.js +100 -0
  105. package/dist/collection/lib/pins/interactions.js +183 -0
  106. package/dist/collection/lib/pins/model.js +136 -0
  107. package/dist/collection/lib/rendering/canvas.js +6 -28
  108. package/dist/collection/lib/scenes/camera.js +34 -2
  109. package/dist/collection/lib/scenes/colorMaterial.js +8 -8
  110. package/dist/collection/lib/scenes/mapper.js +2 -1
  111. package/dist/collection/lib/scenes/queries.js +6 -4
  112. package/dist/collection/lib/transforms/axis-lines.js +31 -0
  113. package/dist/collection/lib/transforms/axis-rotation.js +34 -0
  114. package/dist/collection/lib/transforms/axis-translation.js +30 -0
  115. package/dist/collection/lib/transforms/controller.js +117 -0
  116. package/dist/collection/lib/transforms/drawable.js +47 -0
  117. package/dist/collection/lib/transforms/hits.js +51 -0
  118. package/dist/collection/lib/transforms/line.js +58 -0
  119. package/dist/collection/lib/transforms/mesh.js +35 -0
  120. package/dist/collection/lib/transforms/shape.js +2 -0
  121. package/dist/collection/lib/transforms/util.js +4 -0
  122. package/dist/collection/lib/types/depthBuffer.js +2 -2
  123. package/dist/collection/lib/types/frameCamera.js +4 -6
  124. package/dist/collection/lib/types/viewport.js +14 -4
  125. package/dist/custom-elements/index.d.ts +30 -0
  126. package/dist/custom-elements/index.js +16835 -335
  127. package/dist/esm/{_commonjsHelpers-9943807e.js → _commonjsHelpers-11ca3be1.js} +20 -1
  128. package/dist/esm/{app-globals-3a04a531.js → app-globals-40df99a0.js} +1 -1
  129. package/dist/esm/{browser.esm-e72d80ad.js → browser.esm-1ddb69c9.js} +1 -1
  130. package/dist/esm/{bundle.esm-8ceccb91.js → bundle.esm-ce2c7ad3.js} +36 -2
  131. package/dist/esm/{config-fb7cd8ff.js → config-7075833a.js} +3 -2
  132. package/dist/esm/{cursors-fc2deed7.js → cursors-98b7d89d.js} +12 -2
  133. package/dist/esm/{dom-2cd18856.js → dom-5b164305.js} +1 -1
  134. package/dist/esm/dom-be140992.js +8 -0
  135. package/dist/esm/elementRectObserver-39cf7b95.js +23 -0
  136. package/dist/esm/{entities-78557270.js → entities-46be90d5.js} +4 -4
  137. package/dist/esm/entities-ce81dd7f.js +41 -0
  138. package/dist/esm/{grpc-web-client.umd-5982b7b0.js → grpc-web-client.umd-5409853c.js} +1 -1
  139. package/dist/esm/{index-10c1495a.js → index-a9fb8318.js} +1 -1
  140. package/dist/esm/{index-455380d0.js → index-e841d91b.js} +1 -1
  141. package/dist/esm/index.js +15 -14
  142. package/dist/esm/index.mjs +15 -14
  143. package/dist/esm/loader.js +4 -4
  144. package/dist/esm/loader.mjs +4 -4
  145. package/dist/esm/{mapper-da36de17.js → mapper-bde6c607.js} +4 -4
  146. package/dist/esm/{markup-c313d99c.js → markup-8904f2fe.js} +2 -2
  147. package/dist/esm/{measurement-544b69d5.js → measurement-3f9b0ae0.js} +2 -2
  148. package/dist/esm/{model-2a34b443.js → model-e54b081f.js} +1 -1
  149. package/dist/esm/model-f679c493.js +241 -0
  150. package/dist/esm/{overlays-354e275c.js → overlays-ea2d45ec.js} +2 -2
  151. package/dist/esm/{png-decoder-07de80d1.js → png-decoder-d4b65417.js} +2 -2
  152. package/dist/esm/{results-4d0c3568.js → results-3b4df2cf.js} +1 -1
  153. package/dist/esm/{scene-2bfcce74.js → scene-22ebacfd.js} +49 -12
  154. package/dist/esm/{stencil-9bf7fb9e.js → stencil-8b20e5a8.js} +5 -2
  155. package/dist/esm/{streamAttributes-d0b384b3.js → streamAttributes-72a92676.js} +1982 -67
  156. package/dist/esm/{utils-3ea0acdd.js → utils-0b980078.js} +1 -1
  157. package/dist/esm/utils-c714e2f7.js +153 -0
  158. package/dist/esm/{utils-e0941c61.js → utils-f11bd6f7.js} +1 -1
  159. package/dist/esm/vertex-scene-tree-search_3.entry.js +16 -6
  160. package/dist/esm/vertex-scene-tree-table-cell.entry.js +16 -14
  161. package/dist/esm/vertex-scene-tree-table-column.entry.js +1 -1
  162. package/dist/esm/vertex-scene-tree-table-header.entry.js +1 -1
  163. package/dist/esm/vertex-scene-tree-table-resize-divider.entry.js +3 -3
  164. package/dist/esm/vertex-scene-tree-toolbar-group.entry.js +1 -1
  165. package/dist/esm/vertex-scene-tree.entry.js +154 -27
  166. package/dist/esm/vertex-viewer-button_3.entry.js +3 -3
  167. package/dist/esm/vertex-viewer-default-toolbar.entry.js +1 -1
  168. package/dist/esm/{vertex-viewer-dom-element_3.entry.js → vertex-viewer-dom-element_2.entry.js} +21 -178
  169. package/dist/esm/vertex-viewer-dom-group.entry.js +187 -0
  170. package/dist/esm/vertex-viewer-icon.entry.js +6 -3
  171. package/dist/esm/vertex-viewer-layer.entry.js +1 -1
  172. package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +8 -155
  173. package/dist/esm/vertex-viewer-markup-tool.entry.js +5 -5
  174. package/dist/esm/vertex-viewer-markup.entry.js +5 -5
  175. package/dist/esm/vertex-viewer-measurement-details.entry.js +8 -7
  176. package/dist/esm/vertex-viewer-measurement-distance.entry.js +16 -15
  177. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +10 -9
  178. package/dist/esm/vertex-viewer-measurement-precise.entry.js +15 -32
  179. package/dist/esm/vertex-viewer-measurement-tool.entry.js +8 -7
  180. package/dist/esm/vertex-viewer-measurements.entry.js +12 -11
  181. package/dist/esm/vertex-viewer-pin-group.entry.js +163 -0
  182. package/dist/esm/vertex-viewer-pin-label_2.entry.js +271 -0
  183. package/dist/esm/vertex-viewer-pin-tool.entry.js +318 -0
  184. package/dist/esm/vertex-viewer-transform-widget.entry.js +13268 -0
  185. package/dist/esm/vertex-viewer-view-cube.entry.js +8 -7
  186. package/dist/esm/vertex-viewer.entry.js +118 -51
  187. package/dist/esm/viewer.js +4 -4
  188. package/dist/esm/{viewport-5cc7b128.js → viewport-e39e2eba.js} +14 -4
  189. package/dist/types/__mocks__/regl-shape.d.ts +5 -0
  190. package/dist/types/__mocks__/regl.d.ts +5 -0
  191. package/dist/types/components/scene-tree/lib/controller.d.ts +13 -1
  192. package/dist/types/components/scene-tree/lib/errors.d.ts +3 -1
  193. package/dist/types/components/scene-tree/lib/viewer-ops.d.ts +1 -0
  194. package/dist/types/components/scene-tree/scene-tree.d.ts +16 -4
  195. package/dist/types/components/scene-tree-table-cell/scene-tree-table-cell.d.ts +6 -2
  196. package/dist/types/components/scene-tree-table-layout/scene-tree-table-layout.d.ts +2 -0
  197. package/dist/types/components/viewer/viewer.d.ts +13 -1
  198. package/dist/types/components/viewer-dom-element/viewer-dom-element.d.ts +10 -2
  199. package/dist/types/components/viewer-dom-group/viewer-dom-group.d.ts +9 -1
  200. package/dist/types/components/viewer-icon/viewer-icon.d.ts +1 -1
  201. package/dist/types/components/viewer-pin-group/pin-renderer.d.ts +8 -0
  202. package/dist/types/components/viewer-pin-group/utils.d.ts +2 -0
  203. package/dist/types/components/viewer-pin-group/viewer-pin-group.d.ts +49 -0
  204. package/dist/types/components/viewer-pin-label/utils.d.ts +1 -0
  205. package/dist/types/components/viewer-pin-label/viewer-pin-label.d.ts +77 -0
  206. package/dist/types/components/viewer-pin-label-line/viewer-pin-label-line.d.ts +7 -0
  207. package/dist/types/components/viewer-pin-tool/viewer-pin-tool.d.ts +68 -0
  208. package/dist/types/components/viewer-transform-widget/__mocks__/widget.d.ts +11 -0
  209. package/dist/types/components/viewer-transform-widget/util.d.ts +5 -0
  210. package/dist/types/components/viewer-transform-widget/viewer-transform-widget.d.ts +81 -0
  211. package/dist/types/components/viewer-transform-widget/widget.d.ts +74 -0
  212. package/dist/types/components.d.ts +303 -12
  213. package/dist/types/interfaces.d.ts +1 -0
  214. package/dist/types/lib/cursors.d.ts +10 -0
  215. package/dist/types/lib/interactions/baseInteractionHandler.d.ts +4 -3
  216. package/dist/types/lib/interactions/interactionApi.d.ts +10 -1
  217. package/dist/types/lib/interactions/interactionApiOrthographic.d.ts +7 -0
  218. package/dist/types/lib/interactions/mouseInteractionHandler.d.ts +2 -2
  219. package/dist/types/lib/interactions/mouseInteractions.d.ts +6 -0
  220. package/dist/types/lib/pins/controller.d.ts +70 -0
  221. package/dist/types/lib/pins/interactions.d.ts +30 -0
  222. package/dist/types/lib/pins/model.d.ts +104 -0
  223. package/dist/types/lib/rendering/canvas.d.ts +1 -2
  224. package/dist/types/lib/scenes/camera.d.ts +10 -0
  225. package/dist/types/lib/scenes/colorMaterial.d.ts +1 -0
  226. package/dist/types/lib/scenes/queries.d.ts +4 -2
  227. package/dist/types/lib/transforms/axis-lines.d.ts +6 -0
  228. package/dist/types/lib/transforms/axis-rotation.d.ts +6 -0
  229. package/dist/types/lib/transforms/axis-translation.d.ts +6 -0
  230. package/dist/types/lib/transforms/controller.d.ts +17 -0
  231. package/dist/types/lib/transforms/drawable.d.ts +26 -0
  232. package/dist/types/lib/transforms/hits.d.ts +10 -0
  233. package/dist/types/lib/transforms/line.d.ts +31 -0
  234. package/dist/types/lib/transforms/mesh.d.ts +23 -0
  235. package/dist/types/lib/transforms/shape.d.ts +3 -0
  236. package/dist/types/lib/transforms/util.d.ts +2 -0
  237. package/dist/types/lib/types/frameCamera.d.ts +1 -0
  238. package/dist/types/lib/types/viewport.d.ts +8 -0
  239. package/dist/types/regl-shape.d.ts +26 -0
  240. package/dist/viewer/index.esm.js +1 -1
  241. package/dist/viewer/p-058632f4.js +4 -0
  242. package/dist/viewer/p-07aeee89.js +10 -0
  243. package/dist/viewer/{p-e75bba97.js → p-083f427e.js} +1 -1
  244. package/dist/viewer/{p-a455ae02.entry.js → p-08eda2b2.entry.js} +1 -1
  245. package/dist/viewer/{p-bcb66f97.js → p-096e60bd.js} +1 -1
  246. package/dist/viewer/p-0bc4b3f7.js +4 -0
  247. package/dist/viewer/p-148c5f1a.js +4 -0
  248. package/dist/viewer/p-1db9bd1a.entry.js +4 -0
  249. package/dist/viewer/{p-70ca1ea7.entry.js → p-1f251549.entry.js} +1 -1
  250. package/dist/viewer/p-29986489.js +4 -0
  251. package/dist/viewer/{p-cafa57a6.js → p-2e581b2a.js} +1 -1
  252. package/dist/viewer/{p-d2bcf788.entry.js → p-33daeb09.entry.js} +1 -1
  253. package/dist/viewer/p-39803f8f.js +4 -0
  254. package/dist/viewer/p-465a92d9.entry.js +4 -0
  255. package/dist/viewer/p-4a65ddb3.entry.js +4 -0
  256. package/dist/viewer/{p-099fe6ca.entry.js → p-4aaf02b4.entry.js} +1 -1
  257. package/dist/viewer/{p-31658489.entry.js → p-4c3a3738.entry.js} +1 -1
  258. package/dist/viewer/{p-e38458da.js → p-4d37d97c.js} +1 -1
  259. package/dist/viewer/p-4fdf8553.entry.js +4 -0
  260. package/dist/viewer/p-5679f46b.entry.js +4 -0
  261. package/dist/viewer/p-5809b400.js +4 -0
  262. package/dist/viewer/{p-fa9a0bed.js → p-58dacdce.js} +1 -1
  263. package/dist/viewer/p-61a042f0.entry.js +4 -0
  264. package/dist/viewer/{p-b8774c9c.js → p-6c377932.js} +1 -1
  265. package/dist/viewer/p-6d379d4a.js +4 -0
  266. package/dist/viewer/p-6d70b198.entry.js +4 -0
  267. package/dist/viewer/p-6e7e094a.entry.js +4 -0
  268. package/dist/viewer/{p-661f0612.js → p-70e5e8a8.js} +1 -1
  269. package/dist/viewer/p-74102b29.entry.js +32 -0
  270. package/dist/viewer/p-7a5a9a93.entry.js +4 -0
  271. package/dist/viewer/p-7c755e0e.entry.js +4 -0
  272. package/dist/viewer/{p-3a20a038.js → p-92fe4417.js} +1 -1
  273. package/dist/viewer/{p-7e0328aa.js → p-98e6a50e.js} +1 -1
  274. package/dist/viewer/{p-388a43f7.js → p-990f98c2.js} +1 -1
  275. package/dist/viewer/{p-487e054a.js → p-99352cf0.js} +1 -1
  276. package/dist/viewer/{p-1ca95f9a.entry.js → p-99799a71.entry.js} +1 -1
  277. package/dist/viewer/p-9acd1b44.js +4 -0
  278. package/dist/viewer/{p-69058178.js → p-9bcde9c8.js} +1 -1
  279. package/dist/viewer/{p-5b342e97.js → p-a2ef15e5.js} +1 -1
  280. package/dist/viewer/{p-61b1097b.entry.js → p-a32cc378.entry.js} +1 -1
  281. package/dist/viewer/p-a380f0c2.js +4 -0
  282. package/dist/viewer/{p-41028d3b.entry.js → p-af37b63e.entry.js} +1 -1
  283. package/dist/viewer/p-b6b727a6.entry.js +4 -0
  284. package/dist/viewer/p-c2e3312b.js +4 -0
  285. package/dist/viewer/{p-4717c98e.entry.js → p-c9f91798.entry.js} +1 -1
  286. package/dist/viewer/p-ca518dcb.entry.js +4 -0
  287. package/dist/viewer/p-d828fd18.entry.js +4 -0
  288. package/dist/viewer/p-d996b1d2.entry.js +4 -0
  289. package/dist/viewer/{p-3f0f83ad.js → p-db01460a.js} +1 -1
  290. package/dist/viewer/p-db716103.entry.js +4 -0
  291. package/dist/viewer/p-df8fbe56.js +4 -0
  292. package/dist/viewer/p-dfe5a97d.js +4 -0
  293. package/dist/viewer/p-e42cb163.js +4 -0
  294. package/dist/viewer/p-eb8e5db5.js +4 -0
  295. package/dist/viewer/{p-46459921.entry.js → p-ebb801c3.entry.js} +1 -1
  296. package/dist/viewer/p-ebd85d58.entry.js +4 -0
  297. package/dist/viewer/p-eefae62a.entry.js +4 -0
  298. package/dist/viewer/viewer.esm.js +1 -1
  299. package/package.json +12 -10
  300. package/readme.md +4 -4
  301. package/dist/viewer/p-0a189e62.entry.js +0 -4
  302. package/dist/viewer/p-112455b1.js +0 -4
  303. package/dist/viewer/p-3561d910.js +0 -4
  304. package/dist/viewer/p-49d36e94.entry.js +0 -4
  305. package/dist/viewer/p-73a5eacc.entry.js +0 -4
  306. package/dist/viewer/p-77be081a.js +0 -4
  307. package/dist/viewer/p-809d09d9.js +0 -4
  308. package/dist/viewer/p-858bd2c7.entry.js +0 -4
  309. package/dist/viewer/p-89b66838.entry.js +0 -32
  310. package/dist/viewer/p-90bb0a1f.entry.js +0 -4
  311. package/dist/viewer/p-a93a63a9.js +0 -4
  312. package/dist/viewer/p-b043b076.entry.js +0 -4
  313. package/dist/viewer/p-b0ac6b3c.entry.js +0 -4
  314. package/dist/viewer/p-bcde5521.entry.js +0 -4
  315. package/dist/viewer/p-d1584404.js +0 -4
  316. package/dist/viewer/p-d32b54cb.js +0 -4
  317. package/dist/viewer/p-d3a20af4.entry.js +0 -4
  318. package/dist/viewer/p-d9f99f4d.entry.js +0 -4
  319. package/dist/viewer/p-ebd55df7.entry.js +0 -4
  320. package/dist/viewer/p-f0411993.entry.js +0 -4
  321. package/dist/viewer/p-f482325b.js +0 -10
  322. package/dist/viewer/p-fad9693e.js +0 -4
  323. package/dist/viewer/p-ffdeb08c.js +0 -4
@@ -1,14 +1,15 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { h, F as Fragment, r as registerInstance, c as createEvent, f as forceUpdate, H as Host, g as getElement } from './index-10c1495a.js';
5
- import { o as __rest } from './bundle.esm-8ceccb91.js';
6
- import { c as createCommonjsModule } from './_commonjsHelpers-9943807e.js';
7
- import { a as googleProtobuf, w as wrappers_pb, g as grpcWebClient_umd } from './grpc-web-client.umd-5982b7b0.js';
8
- import { p as parseConfig } from './config-fb7cd8ff.js';
9
- import { E as EventDispatcher } from './browser.esm-e72d80ad.js';
4
+ import { h, F as Fragment, r as registerInstance, c as createEvent, f as forceUpdate, H as Host, g as getElement } from './index-a9fb8318.js';
5
+ import { o as __rest } from './bundle.esm-ce2c7ad3.js';
6
+ import { c as createCommonjsModule } from './_commonjsHelpers-11ca3be1.js';
7
+ import { a as googleProtobuf, w as wrappers_pb, g as grpcWebClient_umd } from './grpc-web-client.umd-5409853c.js';
8
+ import { p as parseConfig } from './config-7075833a.js';
9
+ import { E as EventDispatcher } from './browser.esm-1ddb69c9.js';
10
10
  import { g as getSceneTreeContainsElement } from './dom-2111ed19.js';
11
- import './streamAttributes-d0b384b3.js';
11
+ import './streamAttributes-72a92676.js';
12
+ import './entities-ce81dd7f.js';
12
13
 
13
14
  window.requestIdleCallback =
14
15
  window.requestIdleCallback ||
@@ -4348,7 +4349,8 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterRequest.toObject = function(in
4348
4349
  var obj = {
4349
4350
  filter: googleProtobuf.Message.getFieldWithDefault(msg, 1, ""),
4350
4351
  fullTree: googleProtobuf.Message.getFieldWithDefault(msg, 2, false),
4351
- columnsKeysList: googleProtobuf.Message.getRepeatedField(msg, 3)
4352
+ columnsKeysList: googleProtobuf.Message.getRepeatedField(msg, 3),
4353
+ exactMatch: googleProtobuf.Message.getFieldWithDefault(msg, 4, false)
4352
4354
  };
4353
4355
 
4354
4356
  if (includeInstance) {
@@ -4397,6 +4399,10 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterRequest.deserializeBinaryFromR
4397
4399
  var value = /** @type {string} */ (reader.readString());
4398
4400
  msg.addColumnsKeys(value);
4399
4401
  break;
4402
+ case 4:
4403
+ var value = /** @type {boolean} */ (reader.readBool());
4404
+ msg.setExactMatch(value);
4405
+ break;
4400
4406
  default:
4401
4407
  reader.skipField();
4402
4408
  break;
@@ -4447,6 +4453,13 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterRequest.serializeBinaryToWrite
4447
4453
  f
4448
4454
  );
4449
4455
  }
4456
+ f = message.getExactMatch();
4457
+ if (f) {
4458
+ writer.writeBool(
4459
+ 4,
4460
+ f
4461
+ );
4462
+ }
4450
4463
  };
4451
4464
 
4452
4465
 
@@ -4511,6 +4524,23 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterRequest.prototype.clearColumns
4511
4524
  };
4512
4525
 
4513
4526
 
4527
+ /**
4528
+ * optional bool exact_match = 4;
4529
+ * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
4530
+ * You should avoid comparisons like {@code val === true/false} in those cases.
4531
+ * @return {boolean}
4532
+ */
4533
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterRequest.prototype.getExactMatch = function() {
4534
+ return /** @type {boolean} */ (googleProtobuf.Message.getFieldWithDefault(this, 4, false));
4535
+ };
4536
+
4537
+
4538
+ /** @param {boolean} value */
4539
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterRequest.prototype.setExactMatch = function(value) {
4540
+ googleProtobuf.Message.setProto3BooleanField(this, 4, value);
4541
+ };
4542
+
4543
+
4514
4544
 
4515
4545
  /**
4516
4546
  * Generated by JsPbCodeGenerator.
@@ -4558,7 +4588,7 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterResponse.prototype.toObject =
4558
4588
  */
4559
4589
  proto.vertexvis.protobuf.scenetree.v1alpha1.FilterResponse.toObject = function(includeInstance, msg) {
4560
4590
  var obj = {
4561
-
4591
+ numberOfResults: googleProtobuf.Message.getFieldWithDefault(msg, 1, 0)
4562
4592
  };
4563
4593
 
4564
4594
  if (includeInstance) {
@@ -4595,6 +4625,10 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterResponse.deserializeBinaryFrom
4595
4625
  }
4596
4626
  var field = reader.getFieldNumber();
4597
4627
  switch (field) {
4628
+ case 1:
4629
+ var value = /** @type {number} */ (reader.readUint32());
4630
+ msg.setNumberOfResults(value);
4631
+ break;
4598
4632
  default:
4599
4633
  reader.skipField();
4600
4634
  break;
@@ -4623,6 +4657,29 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterResponse.prototype.serializeBi
4623
4657
  * @suppress {unusedLocalVariables} f is only used for nested messages
4624
4658
  */
4625
4659
  proto.vertexvis.protobuf.scenetree.v1alpha1.FilterResponse.serializeBinaryToWriter = function(message, writer) {
4660
+ var f = undefined;
4661
+ f = message.getNumberOfResults();
4662
+ if (f !== 0) {
4663
+ writer.writeUint32(
4664
+ 1,
4665
+ f
4666
+ );
4667
+ }
4668
+ };
4669
+
4670
+
4671
+ /**
4672
+ * optional uint32 number_of_results = 1;
4673
+ * @return {number}
4674
+ */
4675
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterResponse.prototype.getNumberOfResults = function() {
4676
+ return /** @type {number} */ (googleProtobuf.Message.getFieldWithDefault(this, 1, 0));
4677
+ };
4678
+
4679
+
4680
+ /** @param {number} value */
4681
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterResponse.prototype.setNumberOfResults = function(value) {
4682
+ googleProtobuf.Message.setProto3IntField(this, 1, value);
4626
4683
  };
4627
4684
 
4628
4685
 
@@ -6495,6 +6552,8 @@ var SceneTreeErrorCode;
6495
6552
  (function (SceneTreeErrorCode) {
6496
6553
  SceneTreeErrorCode[SceneTreeErrorCode["UNKNOWN"] = 0] = "UNKNOWN";
6497
6554
  SceneTreeErrorCode[SceneTreeErrorCode["SCENE_TREE_DISABLED"] = 1] = "SCENE_TREE_DISABLED";
6555
+ SceneTreeErrorCode[SceneTreeErrorCode["MISSING_VIEWER"] = 2] = "MISSING_VIEWER";
6556
+ SceneTreeErrorCode[SceneTreeErrorCode["DISCONNECTED"] = 3] = "DISCONNECTED";
6498
6557
  })(SceneTreeErrorCode || (SceneTreeErrorCode = {}));
6499
6558
  class SceneTreeErrorDetails {
6500
6559
  constructor(code, link) {
@@ -6509,6 +6568,10 @@ function getSceneTreeErrorMessage(code) {
6509
6568
  return 'An unknown error occurred.';
6510
6569
  case SceneTreeErrorCode.SCENE_TREE_DISABLED:
6511
6570
  return 'The tree for this scene is not enabled. Enable the tree for this scene to interact with the tree.';
6571
+ case SceneTreeErrorCode.MISSING_VIEWER:
6572
+ return 'Could not find reference to the viewer';
6573
+ case SceneTreeErrorCode.DISCONNECTED:
6574
+ return 'Disconnected from server.';
6512
6575
  }
6513
6576
  }
6514
6577
 
@@ -6585,6 +6648,15 @@ class SceneTreeController {
6585
6648
  get isConnected() {
6586
6649
  return this.state.connection.type === 'connected';
6587
6650
  }
6651
+ /**
6652
+ * Registers an event listener that will be invoked when the state changes
6653
+ *
6654
+ * @param listener The listener to add.
6655
+ * @returns A disposable that can be used to remove the listener.
6656
+ */
6657
+ stateChanged(listener) {
6658
+ return this.onStateChange.on(listener);
6659
+ }
6588
6660
  async connect(jwtProvider) {
6589
6661
  const { connection } = this.state;
6590
6662
  const jwt = jwtProvider();
@@ -6842,16 +6914,19 @@ class SceneTreeController {
6842
6914
  * @param options The options to apply to the filter.
6843
6915
  */
6844
6916
  async filter(term, options = {}) {
6845
- await this.ifConnectionHasJwt((jwt) => {
6846
- return this.requestUnary(jwt, (metadata, handler) => {
6917
+ return this.ifConnectionHasJwt(async (jwt) => {
6918
+ const res = await this.requestUnary(jwt, (metadata, handler) => {
6847
6919
  var _a;
6848
6920
  const req = new scene_tree_api_pb.FilterRequest();
6849
6921
  req.setFilter(term);
6850
- req.setFullTree(((_a = options.includeCollapsed) !== null && _a !== void 0 ? _a : true) === true);
6922
+ req.setFullTree((_a = options.includeCollapsed) !== null && _a !== void 0 ? _a : true);
6923
+ req.setExactMatch(!!options.exactMatch);
6851
6924
  if (options.columns)
6852
6925
  req.setColumnsKeysList(options.columns);
6853
6926
  this.client.filter(req, metadata, handler);
6854
6927
  });
6928
+ const { numberOfResults } = res.toObject();
6929
+ this.updateState(Object.assign(Object.assign({}, this.state), { totalFilteredRows: numberOfResults }));
6855
6930
  });
6856
6931
  }
6857
6932
  /**
@@ -7018,7 +7093,7 @@ class SceneTreeController {
7018
7093
  const end = this.state.rows.slice(start.length + fetchedRows.length, totalRows);
7019
7094
  const fill = new Array(Math.max(0, totalRows - start.length - fetchedRows.length - end.length));
7020
7095
  const rows = [...start, ...fetchedRows, ...end, ...fill];
7021
- this.updateState(Object.assign(Object.assign({}, this.state), { totalRows, rows }));
7096
+ this.updateState(Object.assign(Object.assign({}, this.state), { totalRows: totalRows, rows: rows }));
7022
7097
  }
7023
7098
  }
7024
7099
  catch (e) {
@@ -7166,6 +7241,17 @@ async function selectRangeInSceneTree(viewer, start, end, { material, append = t
7166
7241
  ])
7167
7242
  .execute();
7168
7243
  }
7244
+ async function selectFilterResults(viewer, filter, keys, exactMatch, { material = undefined, append = false }) {
7245
+ const scene = await viewer.scene();
7246
+ return scene
7247
+ .items((op) => [
7248
+ ...(append ? [] : [op.where((q) => q.all()).deselect()]),
7249
+ op
7250
+ .where((q) => q.withMetadata(filter, keys, exactMatch))
7251
+ .select(material),
7252
+ ])
7253
+ .execute();
7254
+ }
7169
7255
  async function deselectItem(viewer, id) {
7170
7256
  const scene = await viewer.scene();
7171
7257
  return scene
@@ -7199,10 +7285,13 @@ let SceneTree = class {
7199
7285
  */
7200
7286
  this.configEnv = 'platprod';
7201
7287
  /**
7202
- * Temporary flag to indicate whether metadata should be used when filtering
7203
- * as opposed to just the name of the item.
7288
+ * Indicates whether the metadata search should use an exact match.
7204
7289
  */
7205
- this.filterOnMetadata = false;
7290
+ this.metadataSearchExactMatch = false;
7291
+ /**
7292
+ * A list of the metadata keys that a scene tree search should be performed on.
7293
+ */
7294
+ this.metadataSearchKeys = [];
7206
7295
  /**
7207
7296
  * A list of part metadata keys that will be made available to each row. This
7208
7297
  * metadata can be used for data binding inside the scene tree's template.
@@ -7453,7 +7542,7 @@ let SceneTree = class {
7453
7542
  async getRowForEvent(event) {
7454
7543
  const { clientY, target } = event;
7455
7544
  if (target != null &&
7456
- this.connectionErrorDetails == null &&
7545
+ this.errorDetails == null &&
7457
7546
  getSceneTreeContainsElement(this.el, target) &&
7458
7547
  isSceneTreeTableCellElement(target)) {
7459
7548
  return this.getRowAtClientY(clientY);
@@ -7488,6 +7577,23 @@ let SceneTree = class {
7488
7577
  var _a;
7489
7578
  return (_a = this.controller) === null || _a === void 0 ? void 0 : _a.filter(term, options);
7490
7579
  }
7580
+ /**
7581
+ * Performs an async request that will select the filtered items in the tree
7582
+ * that match the given term.
7583
+ *
7584
+ * @param term The filter term.
7585
+ * @returns A promise that completes when the request has completed.
7586
+ */
7587
+ async selectFilteredItems(term) {
7588
+ if (this.viewer != null) {
7589
+ const columnsToSearch = this.metadataSearchKeys.length > 0
7590
+ ? this.metadataSearchKeys
7591
+ : this.metadataKeys;
7592
+ await selectFilterResults(this.viewer, term, columnsToSearch, this.metadataSearchExactMatch, {
7593
+ append: false,
7594
+ });
7595
+ }
7596
+ }
7491
7597
  /**
7492
7598
  * Fetches the metadata keys that are available to the scene tree. Metadata
7493
7599
  * keys can be assigned to the scene tree using the `metadataKeys` property.
@@ -7511,9 +7617,6 @@ let SceneTree = class {
7511
7617
  * @ignore
7512
7618
  */
7513
7619
  componentWillLoad() {
7514
- if (this.viewerSelector != null) {
7515
- this.viewer = document.querySelector(this.viewerSelector);
7516
- }
7517
7620
  if (this.controller == null) {
7518
7621
  const { sceneTreeHost } = this.getConfig().network;
7519
7622
  const client = new SceneTreeAPIClient_1(sceneTreeHost);
@@ -7528,6 +7631,7 @@ let SceneTree = class {
7528
7631
  async componentDidLoad() {
7529
7632
  var _a;
7530
7633
  this.ensureLayoutDefined();
7634
+ this.updateLayoutElement();
7531
7635
  const layoutEl = this.getLayoutElement();
7532
7636
  const resizeObserver = new ResizeObserver(() => {
7533
7637
  this.invalidateRows();
@@ -7536,16 +7640,23 @@ let SceneTree = class {
7536
7640
  this.stateMap.resizeObserver = resizeObserver;
7537
7641
  this.stateMap.componentLoaded = true;
7538
7642
  (_a = this.controller) === null || _a === void 0 ? void 0 : _a.setMetadataKeys(this.metadataKeys);
7643
+ if (this.viewer == null) {
7644
+ this.errorDetails = new SceneTreeErrorDetails(SceneTreeErrorCode.MISSING_VIEWER);
7645
+ }
7646
+ }
7647
+ componentWillRender() {
7648
+ // The controller can load data prior to the first render
7649
+ // ensure that this renders any time the state changes.
7650
+ this.updateLayoutElement();
7539
7651
  }
7540
7652
  /**
7541
7653
  * @ignore
7542
7654
  */
7543
7655
  render() {
7544
- return (h(Host, null, h("div", { class: "header" }, h("slot", { name: "header" }, h("vertex-scene-tree-toolbar", { class: "search-toolbar" }, h("vertex-scene-tree-search", null)))), this.connectionErrorDetails != null &&
7545
- this.renderError(this.connectionErrorDetails), this.connectionErrorDetails == null && (h("div", { class: "rows-scroll" }, h("slot", null))), h("div", { class: "footer" }, h("slot", { name: "footer" }))));
7656
+ return (h(Host, null, h("div", { class: "header" }, h("slot", { name: "header" }, h("vertex-scene-tree-toolbar", { class: "search-toolbar" }, h("vertex-scene-tree-search", null)))), this.errorDetails != null && this.renderError(this.errorDetails), this.errorDetails == null && (h("div", { class: "rows-scroll" }, h("slot", null))), h("div", { class: "footer" }, h("slot", { name: "footer" }))));
7546
7657
  }
7547
7658
  renderError(details) {
7548
- if (details.code === SceneTreeErrorCode.UNKNOWN) {
7659
+ if (details.code !== SceneTreeErrorCode.SCENE_TREE_DISABLED) {
7549
7660
  return (h(SceneTreeError, { details: details }, h("button", { class: "button button-secondary", onClick: () => this.retryConnectToViewer(), disabled: this.attemptingRetry }, "Retry")));
7550
7661
  }
7551
7662
  else {
@@ -7590,14 +7701,21 @@ let SceneTree = class {
7590
7701
  }
7591
7702
  retryConnectToViewer() {
7592
7703
  this.attemptingRetry = true;
7704
+ this.errorDetails = undefined;
7593
7705
  this.connectToViewer();
7594
7706
  }
7595
7707
  connectToViewer() {
7596
7708
  var _a, _b;
7597
7709
  (_a = this.stateMap.viewerDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
7710
+ if (this.viewer == null && this.viewerSelector != null) {
7711
+ this.viewer = document.querySelector(this.viewerSelector);
7712
+ }
7598
7713
  if (this.viewer != null) {
7599
7714
  this.stateMap.viewerDisposable = (_b = this.controller) === null || _b === void 0 ? void 0 : _b.connectToViewer(this.viewer);
7600
7715
  }
7716
+ else {
7717
+ this.attemptingRetry = false;
7718
+ }
7601
7719
  }
7602
7720
  scheduleClearUnusedData() {
7603
7721
  if (this.stateMap.idleCallbackId != null) {
@@ -7623,13 +7741,15 @@ let SceneTree = class {
7623
7741
  handleControllerStateChange(state) {
7624
7742
  this.rows = state.rows;
7625
7743
  this.totalRows = state.totalRows;
7626
- this.updateLayoutElement();
7627
7744
  if (state.connection.type === 'failure') {
7628
- this.connectionErrorDetails = state.connection.details;
7745
+ this.errorDetails = state.connection.details;
7629
7746
  this.connectionError.emit(state.connection.details);
7630
7747
  }
7748
+ else if (state.connection.type === 'disconnected') {
7749
+ this.errorDetails = new SceneTreeErrorDetails(SceneTreeErrorCode.DISCONNECTED);
7750
+ }
7631
7751
  else {
7632
- this.connectionErrorDetails = undefined;
7752
+ this.errorDetails = undefined;
7633
7753
  }
7634
7754
  if (state.connection.type === 'connected' ||
7635
7755
  state.connection.type === 'failure') {
@@ -7651,8 +7771,12 @@ let SceneTree = class {
7651
7771
  await op({ viewer: this.viewer, id: node.id.hex, node });
7652
7772
  }
7653
7773
  handleSearch(event) {
7774
+ const columnsToSearch = this.metadataSearchKeys.length > 0
7775
+ ? this.metadataSearchKeys
7776
+ : this.metadataKeys;
7654
7777
  this.filterItems(event.detail, {
7655
- columns: this.filterOnMetadata ? this.metadataKeys : undefined,
7778
+ columns: columnsToSearch,
7779
+ exactMatch: this.metadataSearchExactMatch,
7656
7780
  });
7657
7781
  }
7658
7782
  getScrollToPosition(index, position) {
@@ -7700,6 +7824,9 @@ let SceneTree = class {
7700
7824
  layout.controller = this.controller;
7701
7825
  layout.rowData = this.rowData;
7702
7826
  }
7827
+ else if (!this.stateMap.componentLoaded && this.totalRows > 0) {
7828
+ console.debug('Scene tree has rows, but the component has not yet rendered');
7829
+ }
7703
7830
  }
7704
7831
  getLayoutElement() {
7705
7832
  if (this.stateMap.layoutEl != null) {
@@ -1,9 +1,9 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { r as registerInstance, h, H as Host } from './index-10c1495a.js';
5
- import { c as classnames } from './index-455380d0.js';
6
- import './_commonjsHelpers-9943807e.js';
4
+ import { r as registerInstance, h, H as Host } from './index-a9fb8318.js';
5
+ import { c as classnames } from './index-e841d91b.js';
6
+ import './_commonjsHelpers-11ca3be1.js';
7
7
 
8
8
  const viewerButtonCss = ":host{cursor:pointer}.viewer-button{align-items:center;background:none;border:none;color:inherit;cursor:inherit;display:flex;padding:0}";
9
9
 
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { r as registerInstance, h } from './index-10c1495a.js';
4
+ import { r as registerInstance, h } from './index-a9fb8318.js';
5
5
 
6
6
  const viewerDefaultToolbarCss = ":host{--viewer-toolbar-group-gap:0.5rem;--viewer-toolbar-group-background:rgba(245, 245, 245, 0.95);--viewer-toolbar-group-border-radius:0.25rem;--viewer-toolbar-group-box-shadow:-1px 0 2px rgba(0, 0, 0, 0.12),\n 1px 0 2px rgba(0, 0, 0, 0.13);--viewer-toolbar-group-padding:0.25rem;--viewer-toolbar-group-item-gap:0.25rem}.group{background:var(--viewer-toolbar-group-background);border-radius:var(--viewer-toolbar-group-border-radius);box-shadow:var(--viewer-toolbar-group-box-shadow);padding:var(--viewer-toolbar-group-padding)}.group[data-direction='horizontal']:not(:first-child){margin-left:var(--viewer-toolbar-group-gap)}.group[data-direction='horizontal'] .group-item:not(:first-child){margin-left:var(--viewer-toolbar-group-item-gap)}.group[data-direction='vertical']:not(:first-child){margin-top:var(--viewer-toolbar-group-gap)}.group[data-direction='vertical'] .group-item:not(:first-child){margin-top:var(--viewer-toolbar-group-item-gap)}.btn{color:var(--neutral-800);padding:0.125rem;border-radius:0.125rem}.btn:hover{background:var(--neutral-300)}";
7
7
 
@@ -1,18 +1,20 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { r as registerInstance, h, H as Host, g as getElement } from './index-10c1495a.js';
5
- import { v as vector3, t as quaternion, m as matrix4, u as euler } from './bundle.esm-8ceccb91.js';
6
- import './streamAttributes-d0b384b3.js';
7
- import { V as Viewport } from './viewport-5cc7b128.js';
8
- import './browser.esm-e72d80ad.js';
9
- import './_commonjsHelpers-9943807e.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-a9fb8318.js';
5
+ import { v as vector3, q as quaternion, m as matrix4, u as euler } from './bundle.esm-ce2c7ad3.js';
6
+ import { o as objects } from './browser.esm-1ddb69c9.js';
7
+ import './streamAttributes-72a92676.js';
8
+ import './entities-ce81dd7f.js';
9
+ import { V as Viewport } from './viewport-e39e2eba.js';
10
+ import './_commonjsHelpers-11ca3be1.js';
10
11
 
11
12
  const viewerDomElementCss = ":host{position:absolute;pointer-events:none}:host(:not([interactions-off]))>*{pointer-events:auto}";
12
13
 
13
14
  let ViewerDomElement = class {
14
15
  constructor(hostRef) {
15
16
  registerInstance(this, hostRef);
17
+ this.propertyChange = createEvent(this, "propertyChange", 7);
16
18
  /**
17
19
  * The local 3D position of where this element is located.
18
20
  */
@@ -28,7 +30,7 @@ let ViewerDomElement = class {
28
30
  */
29
31
  this.quaternion = quaternion.create();
30
32
  /**
31
- * The local rotation of this element, as a JSON string. JSON
33
+ * The local quaternion rotation of this element, as a JSON string. JSON
32
34
  * representation can either be `[x, y, z, w]` or `{"x": 0, "y": 0, "z":
33
35
  * 0, "w": 1}`.
34
36
  */
@@ -131,183 +133,22 @@ let ViewerDomElement = class {
131
133
  /**
132
134
  * @ignore
133
135
  */
134
- connectedCallback() {
135
- this.syncProperties();
136
- }
137
- /**
138
- * @ignore
139
- */
140
- componentShouldUpdate(newValue, oldValue, prop) {
141
- return prop === 'occluded';
142
- }
143
- syncProperties() {
144
- this.syncPosition();
145
- this.syncRotation();
146
- this.syncQuaternion();
147
- this.syncScale();
148
- this.syncMatrix();
149
- }
150
- syncPosition() {
151
- this.position =
152
- this.positionJson.length > 0
153
- ? this.parseJson('positionJson', this.positionJson, vector3.fromJson)
154
- : this.position;
155
- }
156
- syncRotation() {
157
- this.rotation =
158
- this.rotationJson != null && this.rotationJson.length > 0
159
- ? this.parseJson('rotationJson', this.rotationJson, euler.fromJson)
160
- : this.rotation;
161
- this.syncQuaternionWithRotation();
162
- }
163
- syncQuaternionWithRotation() {
164
- this.quaternion =
165
- this.rotation != null
166
- ? quaternion.fromEuler(this.rotation)
167
- : this.quaternion;
168
- }
169
- syncQuaternion() {
170
- this.quaternion =
171
- this.quaternionJson.length > 0
172
- ? this.parseJson('quaternionJson', this.quaternionJson, quaternion.fromJson)
173
- : this.quaternion;
174
- }
175
- syncScale() {
176
- this.scale =
177
- this.scaleJson.length > 0
178
- ? this.parseJson('scaleJson', this.scaleJson, vector3.fromJson)
179
- : this.scale;
180
- }
181
- syncMatrix() {
182
- this.matrix = matrix4.makeTRS(this.position, this.quaternion, this.scale);
183
- }
184
- parseJson(propName, value, parse) {
185
- try {
186
- return parse(value);
187
- }
188
- catch (e) {
189
- console.warn(`Could not parse \`${propName}\`. Invalid JSON.`);
190
- throw e;
136
+ handleMatrixChanged(newMatrix, oldMatrix) {
137
+ if (!objects.isEqual(newMatrix, oldMatrix)) {
138
+ this.propertyChange.emit();
191
139
  }
192
140
  }
193
141
  /**
194
142
  * @ignore
195
143
  */
196
- render() {
197
- return (h(Host, null, h("slot", null)));
198
- }
199
- static get watchers() { return {
200
- "position": ["handlePositionChange"],
201
- "positionJson": ["handlePositionJsonChanged"],
202
- "rotation": ["handleRotationChanged"],
203
- "rotationJson": ["handleRotationJsonChanged"],
204
- "quaternion": ["handleQuaternionChange"],
205
- "quaternionJson": ["handleQuaternionJsonChanged"],
206
- "scale": ["handleScaleChange"],
207
- "scaleJson": ["handleScaleJsonChanged"]
208
- }; }
209
- };
210
- ViewerDomElement.style = viewerDomElementCss;
211
-
212
- const viewerDomGroupCss = ":host{display:block;transform-style:preserve-3d}";
213
-
214
- let ViewerDomGroup = class {
215
- constructor(hostRef) {
216
- registerInstance(this, hostRef);
217
- /**
218
- * The local 3D position of where this element is located.
219
- */
220
- this.position = vector3.origin();
221
- /**
222
- * The local 3D position of where this element is located, as a JSON string.
223
- * JSON representation can either be in the format of `[x, y, z]` or `{"x": 0,
224
- * "y": 0, "z": 0}`.
225
- */
226
- this.positionJson = '';
227
- /**
228
- * The local rotation of this element.
229
- */
230
- this.quaternion = quaternion.create();
231
- /**
232
- * The local rotation of this element, as a JSON string. JSON
233
- * representation can either be `[x, y, z, w]` or `{"x": 0, "y": 0, "z":
234
- * 0, "w": 1}`.
235
- */
236
- this.quaternionJson = '';
237
- /**
238
- * The local scale of this element.
239
- */
240
- this.scale = vector3.create(1, 1, 1);
241
- /**
242
- * The local scale of this element, as a JSON string. JSON string
243
- * representation can either be in the format of `[x, y, z]` or `{"x": 0, "y":
244
- * 0, "z": 0}`.
245
- */
246
- this.scaleJson = '';
247
- /**
248
- * The local matrix of this element.
249
- */
250
- this.matrix = matrix4.makeIdentity();
251
- }
252
- /**
253
- * @ignore
254
- */
255
- handlePositionChange() {
256
- this.syncMatrix();
257
- }
258
- /**
259
- * @ignore
260
- */
261
- handlePositionJsonChanged() {
262
- this.syncPosition();
263
- }
264
- /**
265
- * @ignore
266
- */
267
- handleRotationChanged() {
268
- this.syncQuaternionWithRotation();
269
- }
270
- /**
271
- * @ignore
272
- */
273
- handleRotationJsonChanged() {
274
- this.syncRotation();
275
- }
276
- /**
277
- * @ignore
278
- */
279
- handleQuaternionChange() {
280
- this.syncMatrix();
281
- }
282
- /**
283
- * @ignore
284
- */
285
- handleQuaternionJsonChanged() {
286
- this.syncQuaternion();
287
- }
288
- /**
289
- * @ignore
290
- */
291
- handleScaleChange() {
292
- this.syncMatrix();
293
- }
294
- /**
295
- * @ignore
296
- */
297
- handleScaleJsonChanged() {
298
- this.syncScale();
299
- }
300
- /**
301
- * @ignore
302
- */
303
- componentWillLoad() {
144
+ connectedCallback() {
304
145
  this.syncProperties();
305
146
  }
306
147
  /**
307
148
  * @ignore
308
149
  */
309
- componentShouldUpdate() {
310
- return false;
150
+ componentShouldUpdate(newValue, oldValue, prop) {
151
+ return prop === 'occluded';
311
152
  }
312
153
  syncProperties() {
313
154
  this.syncPosition();
@@ -373,17 +214,19 @@ let ViewerDomGroup = class {
373
214
  "quaternion": ["handleQuaternionChange"],
374
215
  "quaternionJson": ["handleQuaternionJsonChanged"],
375
216
  "scale": ["handleScaleChange"],
376
- "scaleJson": ["handleScaleJsonChanged"]
217
+ "scaleJson": ["handleScaleJsonChanged"],
218
+ "matrix": ["handleMatrixChanged"]
377
219
  }; }
378
220
  };
379
- ViewerDomGroup.style = viewerDomGroupCss;
221
+ ViewerDomElement.style = viewerDomElementCss;
380
222
 
381
223
  function isVertexViewerDomElement(el) {
382
224
  return (el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-DOM-ELEMENT');
383
225
  }
384
226
 
385
227
  function isVertexViewerDomGroup(el) {
386
- return el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-DOM-GROUP';
228
+ return ((el instanceof HTMLElement && el.nodeName === 'VERTEX-VIEWER-DOM-GROUP') ||
229
+ (el instanceof HTMLElement && el.dataset.isDomGroupElement != null));
387
230
  }
388
231
 
389
232
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -633,4 +476,4 @@ let ViewerDomRenderer = class {
633
476
  };
634
477
  ViewerDomRenderer.style = viewerDomRendererCss;
635
478
 
636
- export { ViewerDomElement as vertex_viewer_dom_element, ViewerDomGroup as vertex_viewer_dom_group, ViewerDomRenderer as vertex_viewer_dom_renderer };
479
+ export { ViewerDomElement as vertex_viewer_dom_element, ViewerDomRenderer as vertex_viewer_dom_renderer };