@vertexvis/viewer 0.18.2-testing.0 → 0.18.2-testing.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/dist/cjs/index-b99cd335.js +126 -1
  2. package/dist/esm/index-fd7d7b68.js +126 -1
  3. package/package.json +7 -7
  4. package/dist/components/_commonjsHelpers.js +0 -41
  5. package/dist/components/_commonjsHelpers.js.map +0 -1
  6. package/dist/components/browser.esm.js +0 -3173
  7. package/dist/components/browser.esm.js.map +0 -1
  8. package/dist/components/bundle.esm.js +0 -2250
  9. package/dist/components/bundle.esm.js.map +0 -1
  10. package/dist/components/bundle.esm2.js +0 -39740
  11. package/dist/components/bundle.esm2.js.map +0 -1
  12. package/dist/components/config.js +0 -81
  13. package/dist/components/config.js.map +0 -1
  14. package/dist/components/controller.js +0 -7627
  15. package/dist/components/controller.js.map +0 -1
  16. package/dist/components/controller2.js +0 -124
  17. package/dist/components/controller2.js.map +0 -1
  18. package/dist/components/controller3.js +0 -111
  19. package/dist/components/controller3.js.map +0 -1
  20. package/dist/components/cursors.js +0 -110
  21. package/dist/components/cursors.js.map +0 -1
  22. package/dist/components/dom.js +0 -43
  23. package/dist/components/dom.js.map +0 -1
  24. package/dist/components/dom2.js +0 -10
  25. package/dist/components/dom2.js.map +0 -1
  26. package/dist/components/elementRectObserver.js +0 -25
  27. package/dist/components/elementRectObserver.js.map +0 -1
  28. package/dist/components/entities.js +0 -179
  29. package/dist/components/entities.js.map +0 -1
  30. package/dist/components/errors.js +0 -80
  31. package/dist/components/errors.js.map +0 -1
  32. package/dist/components/events.js +0 -11
  33. package/dist/components/events.js.map +0 -1
  34. package/dist/components/index.d.ts +0 -26
  35. package/dist/components/index.js +0 -365
  36. package/dist/components/index.js.map +0 -1
  37. package/dist/components/index2.js +0 -63
  38. package/dist/components/index2.js.map +0 -1
  39. package/dist/components/interactions.js +0 -236
  40. package/dist/components/interactions.js.map +0 -1
  41. package/dist/components/mapper.js +0 -9811
  42. package/dist/components/mapper.js.map +0 -1
  43. package/dist/components/markup.js +0 -33
  44. package/dist/components/markup.js.map +0 -1
  45. package/dist/components/model.js +0 -134
  46. package/dist/components/model.js.map +0 -1
  47. package/dist/components/model2.js +0 -157
  48. package/dist/components/model2.js.map +0 -1
  49. package/dist/components/overlays.js +0 -76
  50. package/dist/components/overlays.js.map +0 -1
  51. package/dist/components/png-decoder.js +0 -2405
  52. package/dist/components/png-decoder.js.map +0 -1
  53. package/dist/components/regl-component.js +0 -12582
  54. package/dist/components/regl-component.js.map +0 -1
  55. package/dist/components/results.js +0 -24
  56. package/dist/components/results.js.map +0 -1
  57. package/dist/components/row.js +0 -32
  58. package/dist/components/row.js.map +0 -1
  59. package/dist/components/scene-tree-search.js +0 -146
  60. package/dist/components/scene-tree-search.js.map +0 -1
  61. package/dist/components/scene-tree-table-layout.js +0 -928
  62. package/dist/components/scene-tree-table-layout.js.map +0 -1
  63. package/dist/components/scene-tree-toolbar.js +0 -35
  64. package/dist/components/scene-tree-toolbar.js.map +0 -1
  65. package/dist/components/scene.js +0 -1508
  66. package/dist/components/scene.js.map +0 -1
  67. package/dist/components/stencil.js +0 -25
  68. package/dist/components/stencil.js.map +0 -1
  69. package/dist/components/streamAttributes.js +0 -40833
  70. package/dist/components/streamAttributes.js.map +0 -1
  71. package/dist/components/templates.js +0 -36
  72. package/dist/components/templates.js.map +0 -1
  73. package/dist/components/tslib.es6.js +0 -125
  74. package/dist/components/tslib.es6.js.map +0 -1
  75. package/dist/components/vertex-scene-tree-search.d.ts +0 -11
  76. package/dist/components/vertex-scene-tree-search.js +0 -11
  77. package/dist/components/vertex-scene-tree-search.js.map +0 -1
  78. package/dist/components/vertex-scene-tree-table-cell.d.ts +0 -11
  79. package/dist/components/vertex-scene-tree-table-cell.js +0 -209
  80. package/dist/components/vertex-scene-tree-table-cell.js.map +0 -1
  81. package/dist/components/vertex-scene-tree-table-column.d.ts +0 -11
  82. package/dist/components/vertex-scene-tree-table-column.js +0 -42
  83. package/dist/components/vertex-scene-tree-table-column.js.map +0 -1
  84. package/dist/components/vertex-scene-tree-table-header.d.ts +0 -11
  85. package/dist/components/vertex-scene-tree-table-header.js +0 -38
  86. package/dist/components/vertex-scene-tree-table-header.js.map +0 -1
  87. package/dist/components/vertex-scene-tree-table-layout.d.ts +0 -11
  88. package/dist/components/vertex-scene-tree-table-layout.js +0 -11
  89. package/dist/components/vertex-scene-tree-table-layout.js.map +0 -1
  90. package/dist/components/vertex-scene-tree-table-resize-divider.d.ts +0 -11
  91. package/dist/components/vertex-scene-tree-table-resize-divider.js +0 -57
  92. package/dist/components/vertex-scene-tree-table-resize-divider.js.map +0 -1
  93. package/dist/components/vertex-scene-tree-toolbar-group.d.ts +0 -11
  94. package/dist/components/vertex-scene-tree-toolbar-group.js +0 -38
  95. package/dist/components/vertex-scene-tree-toolbar-group.js.map +0 -1
  96. package/dist/components/vertex-scene-tree-toolbar.d.ts +0 -11
  97. package/dist/components/vertex-scene-tree-toolbar.js +0 -11
  98. package/dist/components/vertex-scene-tree-toolbar.js.map +0 -1
  99. package/dist/components/vertex-scene-tree.d.ts +0 -11
  100. package/dist/components/vertex-scene-tree.js +0 -803
  101. package/dist/components/vertex-scene-tree.js.map +0 -1
  102. package/dist/components/vertex-viewer-box-query-tool.d.ts +0 -11
  103. package/dist/components/vertex-viewer-box-query-tool.js +0 -352
  104. package/dist/components/vertex-viewer-box-query-tool.js.map +0 -1
  105. package/dist/components/vertex-viewer-button.d.ts +0 -11
  106. package/dist/components/vertex-viewer-button.js +0 -11
  107. package/dist/components/vertex-viewer-button.js.map +0 -1
  108. package/dist/components/vertex-viewer-default-toolbar.d.ts +0 -11
  109. package/dist/components/vertex-viewer-default-toolbar.js +0 -99
  110. package/dist/components/vertex-viewer-default-toolbar.js.map +0 -1
  111. package/dist/components/vertex-viewer-dom-element.d.ts +0 -11
  112. package/dist/components/vertex-viewer-dom-element.js +0 -11
  113. package/dist/components/vertex-viewer-dom-element.js.map +0 -1
  114. package/dist/components/vertex-viewer-dom-group.d.ts +0 -11
  115. package/dist/components/vertex-viewer-dom-group.js +0 -11
  116. package/dist/components/vertex-viewer-dom-group.js.map +0 -1
  117. package/dist/components/vertex-viewer-dom-renderer.d.ts +0 -11
  118. package/dist/components/vertex-viewer-dom-renderer.js +0 -11
  119. package/dist/components/vertex-viewer-dom-renderer.js.map +0 -1
  120. package/dist/components/vertex-viewer-hit-result-indicator.d.ts +0 -11
  121. package/dist/components/vertex-viewer-hit-result-indicator.js +0 -335
  122. package/dist/components/vertex-viewer-hit-result-indicator.js.map +0 -1
  123. package/dist/components/vertex-viewer-icon.d.ts +0 -11
  124. package/dist/components/vertex-viewer-icon.js +0 -11
  125. package/dist/components/vertex-viewer-icon.js.map +0 -1
  126. package/dist/components/vertex-viewer-layer.d.ts +0 -11
  127. package/dist/components/vertex-viewer-layer.js +0 -11
  128. package/dist/components/vertex-viewer-layer.js.map +0 -1
  129. package/dist/components/vertex-viewer-markup-arrow.d.ts +0 -11
  130. package/dist/components/vertex-viewer-markup-arrow.js +0 -11
  131. package/dist/components/vertex-viewer-markup-arrow.js.map +0 -1
  132. package/dist/components/vertex-viewer-markup-circle.d.ts +0 -11
  133. package/dist/components/vertex-viewer-markup-circle.js +0 -11
  134. package/dist/components/vertex-viewer-markup-circle.js.map +0 -1
  135. package/dist/components/vertex-viewer-markup-freeform.d.ts +0 -11
  136. package/dist/components/vertex-viewer-markup-freeform.js +0 -11
  137. package/dist/components/vertex-viewer-markup-freeform.js.map +0 -1
  138. package/dist/components/vertex-viewer-markup-tool.d.ts +0 -11
  139. package/dist/components/vertex-viewer-markup-tool.js +0 -257
  140. package/dist/components/vertex-viewer-markup-tool.js.map +0 -1
  141. package/dist/components/vertex-viewer-markup.d.ts +0 -11
  142. package/dist/components/vertex-viewer-markup.js +0 -362
  143. package/dist/components/vertex-viewer-markup.js.map +0 -1
  144. package/dist/components/vertex-viewer-measurement-details.d.ts +0 -11
  145. package/dist/components/vertex-viewer-measurement-details.js +0 -307
  146. package/dist/components/vertex-viewer-measurement-details.js.map +0 -1
  147. package/dist/components/vertex-viewer-measurement-distance.d.ts +0 -11
  148. package/dist/components/vertex-viewer-measurement-distance.js +0 -1067
  149. package/dist/components/vertex-viewer-measurement-distance.js.map +0 -1
  150. package/dist/components/vertex-viewer-measurement-line.d.ts +0 -11
  151. package/dist/components/vertex-viewer-measurement-line.js +0 -11
  152. package/dist/components/vertex-viewer-measurement-line.js.map +0 -1
  153. package/dist/components/vertex-viewer-measurement-overlays.d.ts +0 -11
  154. package/dist/components/vertex-viewer-measurement-overlays.js +0 -11
  155. package/dist/components/vertex-viewer-measurement-overlays.js.map +0 -1
  156. package/dist/components/vertex-viewer-measurement-precise.d.ts +0 -11
  157. package/dist/components/vertex-viewer-measurement-precise.js +0 -362
  158. package/dist/components/vertex-viewer-measurement-precise.js.map +0 -1
  159. package/dist/components/vertex-viewer-pin-group.d.ts +0 -11
  160. package/dist/components/vertex-viewer-pin-group.js +0 -11
  161. package/dist/components/vertex-viewer-pin-group.js.map +0 -1
  162. package/dist/components/vertex-viewer-pin-label-line.d.ts +0 -11
  163. package/dist/components/vertex-viewer-pin-label-line.js +0 -11
  164. package/dist/components/vertex-viewer-pin-label-line.js.map +0 -1
  165. package/dist/components/vertex-viewer-pin-label.d.ts +0 -11
  166. package/dist/components/vertex-viewer-pin-label.js +0 -11
  167. package/dist/components/vertex-viewer-pin-label.js.map +0 -1
  168. package/dist/components/vertex-viewer-pin-tool.d.ts +0 -11
  169. package/dist/components/vertex-viewer-pin-tool.js +0 -430
  170. package/dist/components/vertex-viewer-pin-tool.js.map +0 -1
  171. package/dist/components/vertex-viewer-spinner.d.ts +0 -11
  172. package/dist/components/vertex-viewer-spinner.js +0 -11
  173. package/dist/components/vertex-viewer-spinner.js.map +0 -1
  174. package/dist/components/vertex-viewer-toolbar-group.d.ts +0 -11
  175. package/dist/components/vertex-viewer-toolbar-group.js +0 -11
  176. package/dist/components/vertex-viewer-toolbar-group.js.map +0 -1
  177. package/dist/components/vertex-viewer-toolbar.d.ts +0 -11
  178. package/dist/components/vertex-viewer-toolbar.js +0 -11
  179. package/dist/components/vertex-viewer-toolbar.js.map +0 -1
  180. package/dist/components/vertex-viewer-transform-widget.d.ts +0 -11
  181. package/dist/components/vertex-viewer-transform-widget.js +0 -838
  182. package/dist/components/vertex-viewer-transform-widget.js.map +0 -1
  183. package/dist/components/vertex-viewer-view-cube.d.ts +0 -11
  184. package/dist/components/vertex-viewer-view-cube.js +0 -270
  185. package/dist/components/vertex-viewer-view-cube.js.map +0 -1
  186. package/dist/components/vertex-viewer.d.ts +0 -11
  187. package/dist/components/vertex-viewer.js +0 -3543
  188. package/dist/components/vertex-viewer.js.map +0 -1
  189. package/dist/components/viewer-button.js +0 -35
  190. package/dist/components/viewer-button.js.map +0 -1
  191. package/dist/components/viewer-dom-element.js +0 -250
  192. package/dist/components/viewer-dom-element.js.map +0 -1
  193. package/dist/components/viewer-dom-group.js +0 -214
  194. package/dist/components/viewer-dom-group.js.map +0 -1
  195. package/dist/components/viewer-dom-renderer.js +0 -295
  196. package/dist/components/viewer-dom-renderer.js.map +0 -1
  197. package/dist/components/viewer-icon.js +0 -87
  198. package/dist/components/viewer-icon.js.map +0 -1
  199. package/dist/components/viewer-layer.js +0 -46
  200. package/dist/components/viewer-layer.js.map +0 -1
  201. package/dist/components/viewer-markup-arrow.js +0 -235
  202. package/dist/components/viewer-markup-arrow.js.map +0 -1
  203. package/dist/components/viewer-markup-circle-components.js +0 -42
  204. package/dist/components/viewer-markup-circle-components.js.map +0 -1
  205. package/dist/components/viewer-markup-circle.js +0 -201
  206. package/dist/components/viewer-markup-circle.js.map +0 -1
  207. package/dist/components/viewer-markup-freeform.js +0 -251
  208. package/dist/components/viewer-markup-freeform.js.map +0 -1
  209. package/dist/components/viewer-measurement-line.js +0 -77
  210. package/dist/components/viewer-measurement-line.js.map +0 -1
  211. package/dist/components/viewer-measurement-overlays.js +0 -184
  212. package/dist/components/viewer-measurement-overlays.js.map +0 -1
  213. package/dist/components/viewer-pin-group.js +0 -207
  214. package/dist/components/viewer-pin-group.js.map +0 -1
  215. package/dist/components/viewer-pin-label-line.js +0 -43
  216. package/dist/components/viewer-pin-label-line.js.map +0 -1
  217. package/dist/components/viewer-pin-label.js +0 -427
  218. package/dist/components/viewer-pin-label.js.map +0 -1
  219. package/dist/components/viewer-spinner.js +0 -53
  220. package/dist/components/viewer-spinner.js.map +0 -1
  221. package/dist/components/viewer-toolbar-group.js +0 -42
  222. package/dist/components/viewer-toolbar-group.js.map +0 -1
  223. package/dist/components/viewer-toolbar.js +0 -61
  224. package/dist/components/viewer-toolbar.js.map +0 -1
  225. package/dist/components/viewport.js +0 -188
  226. package/dist/components/viewport.js.map +0 -1
  227. package/dist/components/wrappers_pb.js +0 -1926
  228. package/dist/components/wrappers_pb.js.map +0 -1
@@ -1 +0,0 @@
1
- {"file":"vertex-scene-tree.js","mappings":"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","names":["SceneTreeAPIClient"],"sources":["../../node_modules/requestidlecallback-polyfill/index.js","./src/components/scene-tree-table-cell/utils.ts","./src/components/scene-tree/errors.tsx","./src/components/scene-tree/lib/viewer-ops.ts","./src/components/scene-tree/scene-tree.css?tag=vertex-scene-tree&encapsulation=shadow","./src/components/scene-tree/scene-tree.tsx"],"sourcesContent":["window.requestIdleCallback =\n window.requestIdleCallback ||\n function(cb) {\n var start = Date.now();\n return setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n },\n });\n }, 1);\n };\n\nwindow.cancelIdleCallback =\n window.cancelIdleCallback ||\n function(id) {\n clearTimeout(id);\n };\n","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","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\n\nimport { SceneTreeErrorDetails } from './lib/errors';\n\ninterface SceneTreeErrorProps {\n details: SceneTreeErrorDetails;\n}\n\nexport const SceneTreeError: FunctionalComponent<SceneTreeErrorProps> = (\n { details },\n children\n) => {\n return (\n <div class=\"error\">\n <div class=\"error-section error-message\">\n <span>{details.message}</span>\n {details.link && (\n <Fragment>\n <span> See our </span>\n <a href={details.link} target=\"_blank\">\n documentation\n </a>{' '}\n <span> for more information.</span>\n </Fragment>\n )}\n </div>\n <div class=\"error-section\">{children}</div>\n </div>\n );\n};\n","export interface ViewerItemOptions {\n suppliedCorrelationId?: string;\n}\nexport interface ViewerSelectItemOptions extends ViewerItemOptions {\n append?: boolean;\n range?: boolean;\n}\n\nexport async function showItem(\n viewer: HTMLVertexViewerElement,\n id: string,\n { suppliedCorrelationId }: ViewerItemOptions = {}\n): Promise<void> {\n const scene = await viewer.scene();\n return scene\n .items((op) => op.where((q) => q.withItemId(id)).show())\n .execute({ suppliedCorrelationId });\n}\n\nexport async function hideItem(\n viewer: HTMLVertexViewerElement,\n id: string,\n { suppliedCorrelationId }: ViewerItemOptions = {}\n): Promise<void> {\n const scene = await viewer.scene();\n return scene\n .items((op) => op.where((q) => q.withItemId(id)).hide())\n .execute({\n suppliedCorrelationId,\n });\n}\n\nexport async function selectItem(\n viewer: HTMLVertexViewerElement,\n id: string,\n { append = false, suppliedCorrelationId }: ViewerSelectItemOptions\n): Promise<void> {\n const scene = await viewer.scene();\n return scene\n .items((op) => [\n ...(append ? [] : [op.where((q) => q.all()).deselect()]),\n op.where((q) => q.withItemId(id)).select(),\n ])\n .execute({ suppliedCorrelationId });\n}\n\nexport async function selectRangeInSceneTree(\n viewer: HTMLVertexViewerElement,\n start: number,\n end: number,\n { append = true, suppliedCorrelationId }: ViewerSelectItemOptions\n): Promise<void> {\n const scene = await viewer.scene();\n return scene\n .items((op) => [\n ...(append ? [] : [op.where((q) => q.all()).deselect()]),\n op.where((q) => q.withSceneTreeRange({ start, end })).select(),\n ])\n .execute({\n suppliedCorrelationId,\n });\n}\n\nexport async function selectFilterResults(\n viewer: HTMLVertexViewerElement,\n filter: string,\n keys: string[],\n exactMatch: boolean,\n { append = false, suppliedCorrelationId }: ViewerSelectItemOptions\n): Promise<void> {\n const scene = await viewer.scene();\n return scene\n .items((op) => [\n ...(append ? [] : [op.where((q) => q.all()).deselect()]),\n op.where((q) => q.withMetadata(filter, keys, exactMatch)).select(),\n ])\n .execute({\n suppliedCorrelationId,\n });\n}\n\nexport async function deselectItem(\n viewer: HTMLVertexViewerElement,\n id: string,\n { suppliedCorrelationId }: ViewerItemOptions = {}\n): Promise<void> {\n const scene = await viewer.scene();\n return scene\n .items((op) => op.where((q) => q.withItemId(id)).deselect())\n .execute({\n suppliedCorrelationId,\n });\n}\n","@import url('../../css/button.css');\n\n:host {\n /**\n * @prop --scene-tree-toolbar-separator: A CSS border value that specifies the\n * border between scene tree toolbars.\n */\n --scene-tree-toolbar-separator: 1px solid var(--neutral-300);\n\n width: 300px;\n height: 100%;\n user-select: none;\n -webkit-user-select: none;\n cursor: default;\n display: flex;\n flex-direction: column;\n}\n\n.rows-scroll {\n position: relative;\n height: var(--scene-tree-row-height, 0);\n flex-grow: 1;\n}\n\n.rows {\n position: relative;\n}\n\n.row {\n position: absolute;\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--scene-tree-row-height);\n padding: var(--scene-tree-row-padding);\n box-sizing: border-box;\n}\n\n.row:hover {\n background-color: var(--scene-tree-row-hover-color);\n}\n\n.row.is-selected {\n background-color: var(--scene-tree-row-selected-color);\n}\n\n.expand-toggle {\n cursor: pointer;\n width: 16px;\n}\n\n.row-text {\n margin-left: 0.25rem;\n width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.visibility-btn {\n display: flex;\n align-items: center;\n visibility: hidden;\n padding: 4px;\n}\n\n.visibility-btn.is-hidden {\n visibility: visible;\n}\n\n.row:hover .visibility-btn {\n visibility: visible;\n}\n\n.error,\n.empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n font-size: 0.875rem;\n width: 100%;\n height: 100%;\n padding: 1rem;\n box-sizing: border-box;\n justify-content: center;\n}\n\n.error-section {\n margin-top: 1rem;\n}\n\n.error-message {\n text-align: center;\n}\n\n.search-toolbar,\nslot[name='header']::slotted(*) {\n border-bottom: var(--scene-tree-toolbar-separator);\n}\n\nslot[name='footer']::slotted(:not(:last-child)) {\n border-top: var(--scene-tree-toolbar-separator);\n}\n\n.header {\n display: flex;\n flex-direction: column;\n}\n\n.footer {\n display: flex;\n flex-direction: column;\n}\n\n.loading {\n position: absolute;\n top: 150px;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center;\n}\n","import 'requestidlecallback-polyfill';\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n forceUpdate,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { ElementPool } from '@vertexvis/html-templates';\nimport { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';\nimport { SceneTreeAPIClient } from '@vertexvis/scene-tree-protos/scenetree/protos/scene_tree_api_pb_service';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Config, parseConfig, PartialConfig } from '../../lib/config';\nimport { Environment } from '../../lib/environment';\nimport { isSceneTreeTableCellElement } from '../scene-tree-table-cell/utils';\nimport { SceneTreeError } from './errors';\nimport {\n FilterTreeOptions,\n SceneTreeController,\n SceneTreeState,\n} from './lib/controller';\nimport { getSceneTreeContainsElement } from './lib/dom';\nimport { SceneTreeErrorCode, SceneTreeErrorDetails } from './lib/errors';\nimport { webSocketSubscriptionTransportFactory } from './lib/grpc';\nimport { isLoadedRow, Row } from './lib/row';\nimport {\n deselectItem,\n hideItem,\n selectFilterResults,\n selectItem,\n selectRangeInSceneTree,\n showItem,\n} from './lib/viewer-ops';\nimport {\n MetadataKey,\n RowArg,\n RowDataProvider,\n SceneTreeOperationOptions,\n ScrollToOptions,\n SelectItemOptions,\n} from './types';\n\n/**\n * The minimum amount of time provided by requestIdleCallback to clear purged\n * data. A value too low may cause contention with browser rendering. A value\n * too high will cause too many items to be accumulated.\n */\nconst MIN_CLEAR_UNUSED_DATA_MS = 25;\n\ninterface StateMap {\n idleCallbackId?: number;\n resizeObserver?: ResizeObserver;\n componentLoaded: boolean;\n\n client?: SceneTreeAPIClient;\n jwt?: string;\n\n onStateChangeDisposable?: Disposable;\n subscribeDisposable?: Disposable;\n viewerDisposable?: Disposable;\n\n elementPool?: ElementPool;\n template?: HTMLTemplateElement;\n\n selectionPath?: string[];\n\n layoutEl?: HTMLVertexSceneTreeTableLayoutElement;\n}\n\ntype OperationHandler = (data: {\n viewer: HTMLVertexViewerElement;\n id: string;\n node: Node.AsObject;\n}) => void;\n\n/**\n * @slot header - A slot that places content above the rows in the tree. By\n * default, a search toolbar will be placed in this slot. Elements can be\n * stacked by assigning multiple elements to this slot.\n * @slot footer - A slot that places content below the rows in the tree.\n * Elements can be stacked by assigning multiple elements to this slot.\n */\n@Component({\n tag: 'vertex-scene-tree',\n styleUrl: 'scene-tree.css',\n shadow: true,\n})\nexport class SceneTree {\n /**\n * The number of offscreen rows above and below the viewport to render. Having\n * a higher number reduces the chance of the browser not displaying a row\n * while scrolling.\n */\n @Prop()\n public overScanCount = 25;\n\n /**\n * A CSS selector that points to a `<vertex-viewer>` element. Either this\n * property or `viewer` must be set.\n */\n @Prop()\n public viewerSelector?: string;\n\n /**\n * An instance of a `<vertex-viewer>` element. Either this property or\n * `viewerSelector` must be set.\n */\n @Prop({ reflect: true, mutable: true })\n public viewer?: HTMLVertexViewerElement | null;\n\n /**\n * A callback that is invoked immediately before a row is about to rendered.\n * This callback can return additional data that can be bound to in a\n * template.\n *\n * @example\n *\n * ```html\n * <script>\n * const table = document.querySelector('vertex-scene-tree-table');\n * table.rowData = (row) => {\n * return { func: () => console.log('row', row.node.name) };\n * }\n * </script>\n *\n * <vertex-scene-tree>\n * <vertex-scene-tree-table>\n * <vertex-scene-tree-table-column>\n * <template>\n * <button event:click=\"{{row.data.func}}\">Hi</button>\n * </template>\n * </vertex-scene-tree-table-column>\n * </vertex-scene-tree-table>\n * </vertex-scene-tree>\n * ```\n */\n @Prop()\n public rowData?: RowDataProvider;\n\n /**\n * An object to configure the scene tree.\n */\n @Prop()\n public config?: PartialConfig | string;\n\n /**\n * Sets the default environment for the viewer. This setting is used for\n * auto-configuring network hosts.\n *\n * Use the `config` property for manually setting hosts.\n */\n @Prop()\n public configEnv: Environment = 'platprod';\n\n @Prop({ mutable: true })\n public controller?: SceneTreeController;\n\n /**\n * Indicates whether the metadata search should use an exact match.\n */\n @Prop({ mutable: true })\n public metadataSearchExactMatch = false;\n\n /**\n * A list of the metadata keys that a scene tree search should be performed on.\n */\n @Prop({ mutable: true })\n public metadataSearchKeys: MetadataKey[] = [];\n\n /**\n * A list of part metadata keys that will be made available to each row. This\n * metadata can be used for data binding inside the scene tree's template.\n */\n @Prop()\n public metadataKeys: MetadataKey[] = [];\n\n /**\n * An event that is emitted when this <vertex-scene-tree> encounters a connection\n * error.\n */\n @Event()\n public connectionError!: EventEmitter<SceneTreeErrorDetails>;\n\n /**\n * An event that is emitted when the first row of this <vertex-scene-tree> has\n * been rendered.\n */\n @Event()\n public firstRowRendered!: EventEmitter<void>;\n\n @State()\n private rows: Row[] = [];\n\n @State()\n private totalRows = 0;\n\n @State()\n private showLoader = false;\n\n @State()\n private showEmptyResults = false;\n\n /**\n * This stores internal state that you want to preserve across live-reloads,\n * but shouldn't trigger a refresh if the data changes. Marking this with\n * @State to allow to preserve state across live-reloads.\n */\n @State()\n private stateMap: StateMap = {\n componentLoaded: false,\n };\n\n @State()\n private errorDetails: SceneTreeErrorDetails | undefined;\n\n @State()\n private attemptingRetry = false;\n\n @Element()\n private el!: HTMLElement;\n\n private lastSelectedItemId?: string;\n private firstCellRendered = false;\n\n /**\n * Schedules a render of the rows in the scene tree. Useful if any custom\n * data in your scene tree has changed, and you want to update the row's\n * contents.\n *\n * **Note:** This is an asynchronous operation. The update may happen on the\n * next frame.\n */\n @Method()\n public async invalidateRows(): Promise<void> {\n forceUpdate(this.getLayoutElement());\n }\n\n /**\n * Scrolls the tree to the given row index.\n *\n * @param index An index of the row to scroll to.\n * @param options A set of options to configure the scrolling behavior.\n */\n @Method()\n public async scrollToIndex(\n index: number,\n options: ScrollToOptions = {}\n ): Promise<void> {\n const { animate, position = 'middle' } = options;\n const i = Math.max(0, Math.min(index, this.totalRows));\n\n const top = this.getScrollToPosition(i, position);\n\n this.getLayoutElement().scrollToPosition(top, {\n behavior: animate ? 'smooth' : undefined,\n });\n }\n\n /**\n * Scrolls the tree to an item with the given ID. If the node for the item is\n * not expanded, the tree will expand each of its parent nodes.\n *\n * @param itemId An ID of an item to scroll to.\n * @param options A set of options to configure the scrolling behavior.\n * @returns A promise that resolves when the operation is finished.\n */\n @Method()\n public async scrollToItem(\n itemId: string,\n options: ScrollToOptions = {}\n ): Promise<void> {\n const rowsBeforeExpand = this.totalRows;\n const index = await this.controller?.expandParentNodes(itemId);\n\n if (index != null && rowsBeforeExpand !== this.totalRows) {\n return new Promise((resolve) => {\n const layoutEl = this.getLayoutElement();\n const handleLayoutRendered = async (): Promise<void> => {\n layoutEl.removeEventListener('layoutRendered', handleLayoutRendered);\n await this.scrollToIndex(index, options);\n resolve();\n };\n\n layoutEl.addEventListener('layoutRendered', handleLayoutRendered);\n });\n } else if (index != null) {\n await this.scrollToIndex(index, options);\n }\n }\n\n /**\n * Performs an API call to expand all nodes in the tree.\n */\n @Method()\n public async expandAll(): Promise<void> {\n await this.controller?.expandAll();\n }\n\n /**\n * Performs an API call to collapse all nodes in the tree.\n */\n @Method()\n public async collapseAll(): Promise<void> {\n await this.controller?.collapseAll();\n }\n\n /**\n * Performs an API call that will expand the node associated to the specified\n * row or row index.\n *\n * @param row A row, row index, or node to expand.\n */\n @Method()\n public async expandItem(row: RowArg): Promise<void> {\n await this.performRowOperation(row, async ({ id, node }) => {\n if (!node.expanded) {\n await this.controller?.expandNode(id);\n }\n });\n }\n\n /**\n * Performs an API call that will collapse the node associated to the\n * specified row or row index.\n *\n * @param row A row, row index, or node to collapse.\n */\n @Method()\n public async collapseItem(row: RowArg): Promise<void> {\n await this.performRowOperation(row, async ({ id, node }) => {\n if (node.expanded) {\n await this.controller?.collapseNode(id);\n }\n });\n }\n\n /**\n * Performs an API call that will either expand or collapse the node\n * associated to the given row or row index.\n *\n * @param row The row, row index, or node to collapse or expand.\n */\n @Method()\n public async toggleExpandItem(row: RowArg): Promise<void> {\n await this.performRowOperation(row, async ({ node }) => {\n if (node.expanded) {\n await this.collapseItem(node);\n } else {\n await this.expandItem(node);\n }\n });\n }\n\n /**\n * Performs an API call that will either hide or show the item associated to\n * the given row or row index.\n *\n * @param row The row, row index, or node to toggle visibility.\n */\n @Method()\n public async toggleItemVisibility(row: RowArg): Promise<void> {\n await this.performRowOperation(row, async ({ viewer, id, node }) => {\n if (node.visible || node.partiallyVisible) {\n await hideItem(viewer, id);\n } else {\n await showItem(viewer, id);\n }\n });\n }\n\n /**\n * Performs an API call that will hide the item associated to the given row\n * or row index.\n *\n * @param row The row, row index, or node to hide.\n */\n @Method()\n public async hideItem(row: RowArg): Promise<void> {\n await this.performRowOperation(row, async ({ viewer, id, node }) => {\n if (node.visible) {\n await hideItem(viewer, id);\n }\n });\n }\n\n /**\n * Performs an API call that will show the item associated to the given row\n * or row index.\n *\n * @param row The row, row index, or node to show.\n */\n @Method()\n public async showItem(row: RowArg): Promise<void> {\n await this.performRowOperation(row, async ({ viewer, id, node }) => {\n if (!node.visible) {\n await showItem(viewer, id);\n }\n });\n }\n\n /**\n * Performs an API call that will select the item associated to the given row\n * or row index.\n *\n * This method supports a `recurseParent` option that allows for recursively\n * selecting the next unselected parent node. This behavior is considered\n * stateful. Each call to `selectItem` will track the ancestry of the passed\n * in `rowArg`. If calling `selectItem` with a row not belonging to the\n * ancestry of a previous selection, then this method will perform a standard\n * selection.\n *\n * @param row The row, row index or node to select.\n * @param options A set of options to configure selection behavior.\n */\n @Method()\n public async selectItem(\n row: RowArg,\n { recurseParent, ...options }: SelectItemOptions = {}\n ): Promise<void> {\n await this.performRowOperation(row, async ({ viewer, id }) => {\n const ancestors = (await this.controller?.fetchNodeAncestors(id)) || [];\n const isInPath = this.stateMap.selectionPath?.includes(id);\n\n if (recurseParent && isInPath) {\n const nextNode = ancestors.find(({ selected }) => !selected);\n if (nextNode != null) {\n await this.selectItem(nextNode, options);\n this.lastSelectedItemId = id;\n }\n } else if (options.range && this.lastSelectedItemId != null) {\n const currentRowIndex = await this.controller?.expandParentNodes(id);\n const previouslySelectedIndex =\n await this.controller?.expandParentNodes(this.lastSelectedItemId);\n\n if (previouslySelectedIndex && currentRowIndex) {\n const start = Math.min(previouslySelectedIndex, currentRowIndex);\n const end = Math.max(previouslySelectedIndex, currentRowIndex);\n await selectRangeInSceneTree(viewer, start, end, options);\n }\n } else {\n await selectItem(viewer, id, options);\n this.lastSelectedItemId = id;\n }\n\n this.stateMap.selectionPath = [\n ...ancestors.map(({ id }) => id?.hex || ''),\n id,\n ];\n });\n }\n\n /**\n * Performs an API call that will deselect the item associated to the given\n * row or row index.\n *\n * @param row The row, row index, or node to deselect.\n */\n @Method()\n public async deselectItem(row: RowArg): Promise<void> {\n await this.performRowOperation(row, async ({ viewer, id, node }) => {\n if (node.selected) {\n this.lastSelectedItemId = undefined;\n await deselectItem(viewer, id);\n }\n });\n }\n\n /**\n * Returns a row at the given index. If the row data has not been loaded,\n * returns `undefined`.\n *\n * @param index The index of the row.\n * @returns A row, or `undefined` if the row hasn't been loaded.\n */\n @Method()\n public async getRowAtIndex(index: number): Promise<Row> {\n return this.rows[index];\n }\n\n /**\n * Returns the row data from the given mouse or pointer event. The event must\n * originate from a `vertex-scene-tree-table-cell` contained by this element,\n * otherwise `undefined` is returned.\n *\n * @param event A mouse or pointer event that originated from this component.\n * @returns A row, or `undefined` if the row hasn't been loaded.\n */\n @Method()\n public async getRowForEvent(event: MouseEvent | PointerEvent): Promise<Row> {\n const { clientY, target } = event;\n\n if (\n target != null &&\n this.errorDetails == null &&\n getSceneTreeContainsElement(this.el, target as HTMLElement) &&\n isSceneTreeTableCellElement(target)\n ) {\n return this.getRowAtClientY(clientY);\n } else {\n return undefined;\n }\n }\n\n /**\n * Returns the row data from the given vertical client position.\n *\n * @param clientY The vertical client position.\n * @returns A row or `undefined` if the row hasn't been loaded.\n */\n @Method()\n public getRowAtClientY(clientY: number): Promise<Row> {\n const layoutEl = this.getLayoutElement();\n const top = layoutEl.layoutOffset;\n const index = Math.floor(\n (clientY - top + layoutEl.scrollOffset) / layoutEl.rowHeight\n );\n return this.getRowAtIndex(index);\n }\n\n /**\n * Performs an async request that will filter the displayed items in the tree\n * that match the given term and options.\n *\n * @param term The filter term.\n * @param options The options to apply to the filter.\n * @returns A promise that completes when the request has completed. Note,\n * items are displayed asynchronously. So the displayed items may not reflect\n * the result of this filter when the promise completes.\n */\n @Method()\n public async filterItems(\n term: string,\n options: FilterTreeOptions = {}\n ): Promise<void> {\n return this.controller?.filter(term, options);\n }\n\n /**\n * Performs an async request that will select the filtered items in the tree\n * that match the given term.\n *\n * @param term The filter term.\n * @returns A promise that completes when the request has completed.\n */\n @Method()\n public async selectFilteredItems(\n term: string,\n options?: SceneTreeOperationOptions\n ): Promise<void> {\n if (this.viewer != null) {\n const definedMetadataKeys =\n this.metadataSearchKeys.length > 0\n ? this.metadataSearchKeys\n : this.metadataKeys;\n\n if (definedMetadataKeys.length === 0) {\n console.warn(\n \"No metadata keys were found to perform the selection. Defaulting to ['VERTEX_SCENE_ITEM_NAME']\"\n );\n }\n\n const columnsToSearch =\n definedMetadataKeys.length > 0\n ? definedMetadataKeys\n : ['VERTEX_SCENE_ITEM_NAME'];\n\n await selectFilterResults(\n this.viewer,\n term,\n columnsToSearch,\n this.metadataSearchExactMatch,\n {\n append: false,\n ...options,\n }\n );\n }\n }\n\n /**\n * Fetches the metadata keys that are available to the scene tree. Metadata\n * keys can be assigned to the scene tree using the `metadataKeys` property.\n * The scene tree will fetch this metadata and make these values available\n * for data binding.\n *\n * @returns A promise that resolves with the names of available keys.\n */\n @Method()\n public async fetchMetadataKeys(): Promise<MetadataKey[]> {\n return this.controller?.fetchMetadataKeys() ?? [];\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.stateMap.viewerDisposable?.dispose();\n this.controller?.cancel();\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n if (this.controller == null) {\n const { sceneTreeHost } = this.getConfig().network;\n const client = new SceneTreeAPIClient(\n sceneTreeHost,\n this.getConfig().flags.grpcUseStreamingWebSocketTransport\n ? {\n transport: webSocketSubscriptionTransportFactory,\n }\n : undefined\n );\n this.controller = new SceneTreeController(client, 100);\n this.controller?.setMetadataKeys(this.metadataKeys);\n }\n\n this.stateMap.onStateChangeDisposable = this.controller.onStateChange.on(\n (state) => this.handleControllerStateChange(state)\n );\n\n this.connectToViewer();\n }\n\n /**\n * @ignore\n */\n protected async componentDidLoad(): Promise<void> {\n this.ensureLayoutDefined();\n this.updateLayoutElement();\n\n const layoutEl = this.getLayoutElement();\n const resizeObserver = new ResizeObserver(() => {\n this.invalidateRows();\n });\n resizeObserver.observe(layoutEl);\n this.stateMap.resizeObserver = resizeObserver;\n\n this.stateMap.componentLoaded = true;\n\n this.controller?.setMetadataKeys(this.metadataKeys);\n\n if (this.viewer == null) {\n this.errorDetails = new SceneTreeErrorDetails(\n 'MISSING_VIEWER',\n SceneTreeErrorCode.MISSING_VIEWER\n );\n }\n }\n\n public componentWillRender(): void {\n // The controller can load data prior to the first render\n // ensure that this renders any time the state changes.\n this.updateLayoutElement();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"header\">\n <slot name=\"header\">\n <vertex-scene-tree-toolbar class=\"search-toolbar\">\n <vertex-scene-tree-search controller={this.controller} />\n </vertex-scene-tree-toolbar>\n </slot>\n </div>\n\n {this.errorDetails != null && this.renderError(this.errorDetails)}\n\n {this.errorDetails == null && (\n <div class=\"rows-scroll\">\n {this.showLoader && (\n <slot name=\"loading\">\n <vertex-viewer-spinner class=\"loading\" size=\"md\" />\n </slot>\n )}\n {this.showEmptyResults && (\n <slot name=\"empty-results\">\n <div class=\"empty-results\">No Results Found.</div>\n </slot>\n )}\n\n <slot />\n </div>\n )}\n\n <div class=\"footer\">\n <slot name=\"footer\" />\n </div>\n </Host>\n );\n }\n\n private renderError(details: SceneTreeErrorDetails): h.JSX.IntrinsicElements {\n if (details.code !== SceneTreeErrorCode.SCENE_TREE_DISABLED) {\n return (\n <SceneTreeError details={details}>\n <button\n class=\"button button-secondary\"\n onClick={() => this.retryConnectToViewer()}\n disabled={this.attemptingRetry}\n >\n Retry\n </button>\n </SceneTreeError>\n );\n } else {\n return <SceneTreeError details={details} />;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer: HTMLVertexViewerElement | undefined,\n oldViewer: HTMLVertexViewerElement | undefined\n ): void {\n // StencilJS will invoke this callback even before the component has been\n // loaded. According to their docs, this shouldn't happen. Return if the\n // component hasn't been loaded.\n // See https://stenciljs.com/docs/reactive-data#watch-decorator\n if (!this.stateMap.componentLoaded) {\n return;\n }\n\n this.connectToViewer();\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(newController: SceneTreeController): void {\n // StencilJS will invoke this callback even before the component has been\n // loaded. According to their docs, this shouldn't happen. Return if the\n // component hasn't been loaded.\n // See https://stenciljs.com/docs/reactive-data#watch-decorator\n if (!this.stateMap.componentLoaded) {\n return;\n }\n\n this.stateMap.onStateChangeDisposable?.dispose();\n\n this.stateMap.onStateChangeDisposable = newController.onStateChange.on(\n (state) => this.handleControllerStateChange(state)\n );\n\n newController.setMetadataKeys(this.metadataKeys);\n }\n\n /**\n * @ignore\n */\n @Watch('metadataKeys')\n protected handleMetadataKeysChanged(): void {\n this.controller?.setMetadataKeys(this.metadataKeys);\n }\n\n private retryConnectToViewer(): void {\n this.attemptingRetry = true;\n this.errorDetails = undefined;\n this.connectToViewer();\n }\n\n private connectToViewer(): void {\n this.stateMap.viewerDisposable?.dispose();\n\n if (this.viewer == null && this.viewerSelector != null) {\n this.viewer = document.querySelector(this.viewerSelector) as\n | HTMLVertexViewerElement\n | undefined;\n }\n\n if (this.viewer != null) {\n this.stateMap.viewerDisposable = this.controller?.connectToViewer(\n this.viewer\n );\n } else {\n this.attemptingRetry = false;\n }\n }\n\n private scheduleClearUnusedData(): void {\n if (this.stateMap.idleCallbackId != null) {\n window.cancelIdleCallback(this.stateMap.idleCallbackId);\n }\n\n this.stateMap.idleCallbackId = window.requestIdleCallback((foo) => {\n const remaining = foo.timeRemaining?.();\n\n if (remaining == null || remaining >= MIN_CLEAR_UNUSED_DATA_MS) {\n const layoutEl = this.getLayoutElement();\n const startIndex = layoutEl.viewportStartIndex;\n const endIndex = layoutEl.viewportEndIndex;\n const [start, end] =\n this.controller?.getPageIndexesForRange(startIndex, endIndex) || [];\n\n if (start != null && end != null) {\n this.controller?.invalidatePagesOutsideRange(start, end, 50);\n }\n } else {\n this.scheduleClearUnusedData();\n }\n });\n }\n\n private handleControllerStateChange(state: SceneTreeState): void {\n this.showLoader = !!state.shouldShowLoading;\n this.showEmptyResults = !!state.shouldShowEmptyResults;\n this.rows = state.rows;\n this.totalRows = state.totalRows;\n\n if (state.connection.type === 'failure') {\n this.errorDetails = state.connection.details;\n this.connectionError.emit(state.connection.details);\n } else if (state.connection.type === 'disconnected') {\n this.errorDetails = new SceneTreeErrorDetails(\n 'DISCONNECTED',\n SceneTreeErrorCode.DISCONNECTED\n );\n } else {\n this.errorDetails = undefined;\n }\n\n if (\n state.connection.type === 'connected' ||\n state.connection.type === 'failure'\n ) {\n this.attemptingRetry = false;\n }\n }\n\n private async performRowOperation(\n rowOrIndex: number | Row | Node.AsObject,\n op: OperationHandler\n ): Promise<void> {\n const row =\n typeof rowOrIndex === 'number' ? this.rows[rowOrIndex] : rowOrIndex;\n\n if (row == null) {\n throw new Error(`Cannot perform scene tree operation. Row not found.`);\n }\n\n const node = isLoadedRow(row) ? row.node : row;\n\n if (node.id == null) {\n throw new Error(`Cannot perform scene tree operation. ID is undefined.`);\n }\n\n if (this.viewer == null) {\n throw new Error(\n `Cannot perform scene tree operation. Cannot get reference to viewer.`\n );\n }\n\n await op({ viewer: this.viewer, id: node.id.hex, node });\n }\n\n @Listen('search')\n protected async handleSearch(event: CustomEvent<string>): Promise<void> {\n const columnsToSearch =\n this.metadataSearchKeys.length > 0\n ? this.metadataSearchKeys\n : this.metadataKeys;\n\n try {\n await this.filterItems(event.detail, {\n columns: columnsToSearch,\n exactMatch: this.metadataSearchExactMatch,\n });\n } catch (e) {\n console.error('Failed to filter tree with exception: ', e);\n }\n }\n\n @Listen('cellLoaded')\n protected async handleCellLoaded(): Promise<void> {\n if (!this.firstCellRendered && this.rows.length > 0) {\n this.firstCellRendered = true;\n this.firstRowRendered.emit();\n }\n }\n\n private getScrollToPosition(\n index: number,\n position: ScrollToOptions['position']\n ): number {\n const layoutEl = this.getLayoutElement();\n const constrainedIndex = Math.max(0, Math.min(index, this.totalRows - 1));\n const viewportHeight = layoutEl.layoutHeight ?? 0;\n const rowHeight = layoutEl.rowHeight;\n\n if (position === 'start') {\n return constrainedIndex * rowHeight;\n } else if (position === 'middle') {\n const rowCenterY = constrainedIndex * rowHeight + rowHeight / 2;\n return rowCenterY - viewportHeight / 2;\n } else {\n const rowBottomY = constrainedIndex * rowHeight + rowHeight;\n return rowBottomY - viewportHeight;\n }\n }\n\n private getConfig(): Config {\n return parseConfig(this.configEnv, this.config);\n }\n\n private ensureLayoutDefined(): void {\n let layout = this.el.querySelector('vertex-scene-tree-table-layout');\n if (layout == null) {\n layout = document.createElement('vertex-scene-tree-table-layout');\n layout.innerHTML = `\n <vertex-scene-tree-table-column>\n <template>\n <vertex-scene-tree-table-cell prop:value=\"{{row.node.name}}\" expand-toggle visibility-toggle></vertex-scene-tree-table-cell>\n </template>\n </vertex-scene-tree-table-column>\n `;\n\n this.el.appendChild(layout);\n }\n this.stateMap.layoutEl = layout;\n }\n\n private updateLayoutElement(): void {\n const layout = this.stateMap.layoutEl;\n if (layout != null) {\n layout.rows = this.rows;\n layout.tree = this.el as HTMLVertexSceneTreeElement;\n layout.totalRows = this.totalRows;\n layout.controller = this.controller;\n layout.rowData = this.rowData;\n } else if (!this.stateMap.componentLoaded && this.totalRows > 0) {\n console.debug(\n 'Scene tree has rows, but the component has not yet rendered'\n );\n }\n }\n\n private getLayoutElement(): HTMLVertexSceneTreeTableLayoutElement {\n if (this.stateMap.layoutEl != null) {\n return this.stateMap.layoutEl;\n } else {\n throw new Error('Layout element is undefined');\n }\n }\n}\n"],"version":3}
@@ -1,11 +0,0 @@
1
- import type { Components, JSX } from "../types/regl-shape";
2
-
3
- interface VertexViewerBoxQueryTool extends Components.VertexViewerBoxQueryTool, HTMLElement {}
4
- export const VertexViewerBoxQueryTool: {
5
- prototype: VertexViewerBoxQueryTool;
6
- new (): VertexViewerBoxQueryTool;
7
- };
8
- /**
9
- * Used to define this component and all nested components recursively.
10
- */
11
- export const defineCustomElement: () => void;
@@ -1,352 +0,0 @@
1
- /*!
2
- * Copyright (c) 2023 Vertex Software LLC. All rights reserved.
3
- */
4
- import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
5
- import { V as VolumeIntersectionQueryController } from './controller3.js';
6
- import { b as boxQueryCursor } from './cursors.js';
7
- import { g as getMouseClientPosition } from './dom.js';
8
- import { p as point, e as rectangle } from './bundle.esm.js';
9
- import { E as EventDispatcher } from './browser.esm.js';
10
- import { d as defineCustomElement$2 } from './viewer-layer.js';
11
-
12
- class VolumeIntersectionQueryInteractionHandler {
13
- constructor(controller) {
14
- this.controller = controller;
15
- this.handleDragBegin = this.handleDragBegin.bind(this);
16
- this.handleDrag = this.handleDrag.bind(this);
17
- this.handleDragEnd = this.handleDragEnd.bind(this);
18
- this.enabled = true;
19
- }
20
- initialize(element, api) {
21
- this.element = element;
22
- this.api = api;
23
- this.element.addEventListener('pointerdown', this.handleDragBegin);
24
- this.addCrosshairCursor();
25
- }
26
- dispose() {
27
- var _a, _b, _c;
28
- (_a = this.element) === null || _a === void 0 ? void 0 : _a.removeEventListener('pointerdown', this.handleDragBegin);
29
- window.removeEventListener('pointermove', this.handleDrag);
30
- window.removeEventListener('pointerup', this.handleDragEnd);
31
- (_b = this.crosshairCursorDisposable) === null || _b === void 0 ? void 0 : _b.dispose();
32
- (_c = this.waitCursorDisposable) === null || _c === void 0 ? void 0 : _c.dispose();
33
- this.element = undefined;
34
- this.api = undefined;
35
- this.enabled = true;
36
- }
37
- disable() {
38
- this.enabled = false;
39
- }
40
- enable() {
41
- this.enabled = true;
42
- }
43
- handleDragBegin(event) {
44
- var _a;
45
- if (this.enabled &&
46
- this.isPrimaryMouseButtonClick(event) &&
47
- !this.isInteracting) {
48
- this.elementBounds = (_a = this.element) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
49
- this.isInteracting = true;
50
- this.controller.setStartPoint(getMouseClientPosition(event, this.elementBounds));
51
- window.addEventListener('pointermove', this.handleDrag);
52
- window.addEventListener('pointerup', this.handleDragEnd);
53
- }
54
- }
55
- handleDrag(event) {
56
- if (this.enabled) {
57
- this.controller.setEndPoint(getMouseClientPosition(event, this.elementBounds));
58
- }
59
- }
60
- async handleDragEnd() {
61
- var _a, _b;
62
- this.isInteracting = false;
63
- window.removeEventListener('pointermove', this.handleDrag);
64
- window.removeEventListener('pointerup', this.handleDragEnd);
65
- (_a = this.crosshairCursorDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
66
- if (this.enabled) {
67
- this.addWaitCursor();
68
- try {
69
- await this.controller.execute();
70
- }
71
- finally {
72
- (_b = this.waitCursorDisposable) === null || _b === void 0 ? void 0 : _b.dispose();
73
- this.addCrosshairCursor();
74
- }
75
- }
76
- }
77
- isPrimaryMouseButtonClick(event) {
78
- return event.buttons === 1;
79
- }
80
- addCrosshairCursor() {
81
- var _a, _b;
82
- (_a = this.crosshairCursorDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
83
- this.crosshairCursorDisposable = (_b = this.api) === null || _b === void 0 ? void 0 : _b.addCursor(boxQueryCursor);
84
- }
85
- addWaitCursor() {
86
- var _a, _b;
87
- (_a = this.waitCursorDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
88
- this.waitCursorDisposable = (_b = this.api) === null || _b === void 0 ? void 0 : _b.addCursor('wait');
89
- }
90
- }
91
-
92
- class VolumeIntersectionQueryModel {
93
- constructor(mode) {
94
- this.mode = mode;
95
- this.dragStarted = new EventDispatcher();
96
- this.dragComplete = new EventDispatcher();
97
- this.dragCancelled = new EventDispatcher();
98
- this.screenBoundsChanged = new EventDispatcher();
99
- }
100
- setStartPoint(point) {
101
- this.startPoint = point;
102
- this.dragStarted.emit();
103
- }
104
- setEndPoint(point$1) {
105
- if (this.startPoint != null &&
106
- point.distance(this.startPoint, point$1) >= 2) {
107
- this.endPoint = point$1;
108
- this.updateQueryType();
109
- this.screenBoundsChanged.emit(this.getQueryDetails());
110
- }
111
- }
112
- setMode(mode) {
113
- this.mode = mode;
114
- }
115
- complete() {
116
- if (this.startPoint != null && this.endPoint != null) {
117
- this.screenBoundsChanged.emit(undefined);
118
- this.dragComplete.emit(this.getQueryDetails());
119
- this.reset();
120
- }
121
- }
122
- cancel() {
123
- this.screenBoundsChanged.emit(undefined);
124
- this.dragCancelled.emit();
125
- this.reset();
126
- }
127
- reset() {
128
- this.startPoint = undefined;
129
- this.endPoint = undefined;
130
- this.type = undefined;
131
- }
132
- getScreenBounds() {
133
- return this.startPoint != null && this.endPoint != null
134
- ? rectangle.fromPoints(this.startPoint, this.endPoint)
135
- : undefined;
136
- }
137
- getType() {
138
- return this.type;
139
- }
140
- onScreenBoundsChanged(listener) {
141
- return this.screenBoundsChanged.on(listener);
142
- }
143
- onDragStarted(listener) {
144
- return this.dragStarted.on(listener);
145
- }
146
- onDragComplete(listener) {
147
- return this.dragComplete.on(listener);
148
- }
149
- onDragCancelled(listener) {
150
- return this.dragCancelled.on(listener);
151
- }
152
- getQueryDetails() {
153
- if (this.startPoint != null && this.endPoint != null && this.type != null) {
154
- return {
155
- screenBounds: rectangle.fromPoints(this.startPoint, this.endPoint),
156
- type: this.type,
157
- };
158
- }
159
- else {
160
- throw new Error('Failed to create query details, the start and end points must be set.');
161
- }
162
- }
163
- updateQueryType() {
164
- var _a;
165
- if (this.startPoint != null && this.endPoint != null) {
166
- const directionalType = point.subtract(this.endPoint, this.startPoint).x > 0
167
- ? 'exclusive'
168
- : 'inclusive';
169
- this.type = (_a = this.mode) !== null && _a !== void 0 ? _a : directionalType;
170
- }
171
- }
172
- }
173
-
174
- const viewerBoxQueryToolCss = ":host{--viewer-box-query-outline-exclusive-color:#0099cc;--viewer-box-query-outline-exclusive-border-style:solid;--viewer-box-query-outline-inclusive-color:#00cc00;--viewer-box-query-outline-inclusive-border-style:dashed;--viewer-box-query-outline-border-radius:0.25rem;--viewer-box-query-outline-fill-opacity:0.25}.bounds{position:absolute}.outline{position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;border-radius:var(--viewer-box-query-outline-border-radius)}:host([exclusive=\"true\"]) .outline{border:3px var(--viewer-box-query-outline-exclusive-border-style) var(--viewer-box-query-outline-exclusive-color)}:host([inclusive=\"true\"]) .outline{border:3px var(--viewer-box-query-outline-inclusive-border-style) var(--viewer-box-query-outline-inclusive-color)}.fill{position:absolute;top:0;left:0;width:100%;height:100%;opacity:var(--viewer-box-query-outline-fill-opacity);border-radius:var(--viewer-box-query-outline-border-radius)}:host([exclusive=\"true\"]) .fill{background-color:var(--viewer-box-query-outline-exclusive-color)}:host([inclusive=\"true\"]) .fill{background-color:var(--viewer-box-query-outline-inclusive-color)}";
175
-
176
- const ViewerBoxQueryTool = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
177
- constructor() {
178
- super();
179
- this.__registerHost();
180
- this.__attachShadow();
181
- /**
182
- * The default operation to perform when a drag has completed and the intersection
183
- * query will be run. Defaults to `clearAndSelect`, and can be changed to `select` or `deselect`.
184
- *
185
- * `clearAndSelect` will clear all existing selection, and select the results of the query.
186
- * `select` will maintain existing selection, and select the results of the query.
187
- * `deselect` will maintain existing selection, and deselect the results of the query.
188
- *
189
- * The operation behavior for this intersection query tool can also be changed by
190
- * providing a custom implementation of the `VolumeIntersectionQueryController`, or
191
- * by using the `setOperationTransform` method of the default controller.
192
- */
193
- this.operationType = 'clearAndSelect';
194
- this.handleScreenBoundsChanged = this.handleScreenBoundsChanged.bind(this);
195
- this.handleExecuteStarted = this.handleExecuteStarted.bind(this);
196
- this.handleExecuteComplete = this.handleExecuteComplete.bind(this);
197
- }
198
- componentWillLoad() {
199
- var _a;
200
- this.model = (_a = this.model) !== null && _a !== void 0 ? _a : new VolumeIntersectionQueryModel(this.mode);
201
- this.screenBoundsChangedDisposable = this.model.onScreenBoundsChanged(this.handleScreenBoundsChanged);
202
- this.handleViewerChanged(this.viewer);
203
- this.handleControllerChange(this.controller);
204
- this.handleDefaultOperationChange(this.operationType);
205
- }
206
- disconnectedCallback() {
207
- var _a, _b, _c, _d;
208
- (_a = this.model) === null || _a === void 0 ? void 0 : _a.reset();
209
- (_b = this.screenBoundsChangedDisposable) === null || _b === void 0 ? void 0 : _b.dispose();
210
- (_c = this.operationStartedDisposable) === null || _c === void 0 ? void 0 : _c.dispose();
211
- (_d = this.operationCompleteDisposable) === null || _d === void 0 ? void 0 : _d.dispose();
212
- this.deregisterInteractionHandler();
213
- }
214
- /**
215
- * @ignore
216
- */
217
- handleViewerChanged(newViewer) {
218
- this.deregisterInteractionHandler();
219
- if (this.model != null && newViewer != null) {
220
- this.controller = new VolumeIntersectionQueryController(this.model, newViewer);
221
- this.handleDefaultOperationChange(this.operationType);
222
- this.registerInteractionHandler(this.controller, newViewer);
223
- }
224
- }
225
- /**
226
- * @ignore
227
- */
228
- handleDefaultOperationChange(updatedOperationType) {
229
- switch (updatedOperationType) {
230
- case 'clearAndSelect':
231
- this.setDefaultClearAndSelectOperation();
232
- break;
233
- case 'select':
234
- this.setDefaultSelectOperation();
235
- break;
236
- case 'deselect':
237
- this.setDefaultDeselectOperation();
238
- break;
239
- }
240
- }
241
- /**
242
- * @ignore
243
- */
244
- handleModeChange(updatedMode) {
245
- var _a;
246
- (_a = this.model) === null || _a === void 0 ? void 0 : _a.setMode(updatedMode);
247
- }
248
- /**
249
- * @ignore
250
- */
251
- handleControllerChange(controller) {
252
- var _a, _b;
253
- (_a = this.operationStartedDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
254
- (_b = this.operationCompleteDisposable) === null || _b === void 0 ? void 0 : _b.dispose();
255
- this.operationStartedDisposable = controller === null || controller === void 0 ? void 0 : controller.onExecuteStarted(this.handleExecuteStarted);
256
- this.operationStartedDisposable = controller === null || controller === void 0 ? void 0 : controller.onExecuteComplete(this.handleExecuteComplete);
257
- }
258
- /**
259
- * @ignore
260
- */
261
- render() {
262
- return (h(Host, null, h("vertex-viewer-layer", null, this.details != null && (h("div", { class: "bounds", style: {
263
- left: `${this.details.screenBounds.x}px`,
264
- top: `${this.details.screenBounds.y}px`,
265
- width: `${this.details.screenBounds.width}px`,
266
- height: `${this.details.screenBounds.height}px`,
267
- } }, h("slot", { name: "bounds" }, h("div", { class: "outline" }), h("div", { class: "fill" })))))));
268
- }
269
- handleScreenBoundsChanged(details) {
270
- this.details = details;
271
- this.updateTypeAttribute(details === null || details === void 0 ? void 0 : details.type);
272
- }
273
- handleExecuteStarted() {
274
- var _a;
275
- (_a = this.interactionHandler) === null || _a === void 0 ? void 0 : _a.disable();
276
- }
277
- handleExecuteComplete() {
278
- var _a;
279
- (_a = this.interactionHandler) === null || _a === void 0 ? void 0 : _a.enable();
280
- }
281
- async registerInteractionHandler(controller, viewer) {
282
- this.interactionHandler = new VolumeIntersectionQueryInteractionHandler(controller);
283
- this.interactionHandlerDisposable = await viewer.registerInteractionHandler(this.interactionHandler);
284
- }
285
- deregisterInteractionHandler() {
286
- var _a, _b;
287
- (_a = this.interactionHandlerDisposable) === null || _a === void 0 ? void 0 : _a.dispose();
288
- (_b = this.interactionHandler) === null || _b === void 0 ? void 0 : _b.dispose();
289
- this.interactionHandler = undefined;
290
- }
291
- updateTypeAttribute(type) {
292
- this.hostEl.setAttribute('inclusive', `${type === 'inclusive'}`);
293
- this.hostEl.setAttribute('exclusive', `${type === 'exclusive'}`);
294
- }
295
- setDefaultClearAndSelectOperation() {
296
- var _a, _b;
297
- (_a = this.controller) === null || _a === void 0 ? void 0 : _a.setOperationTransform((builder) => builder.select());
298
- (_b = this.controller) === null || _b === void 0 ? void 0 : _b.setAdditionalTransforms([
299
- (op) => op.where((q) => q.withSelected()).deselect(),
300
- ]);
301
- }
302
- setDefaultSelectOperation() {
303
- var _a, _b;
304
- (_a = this.controller) === null || _a === void 0 ? void 0 : _a.setOperationTransform((builder) => builder.select());
305
- (_b = this.controller) === null || _b === void 0 ? void 0 : _b.setAdditionalTransforms([]);
306
- }
307
- setDefaultDeselectOperation() {
308
- var _a, _b;
309
- (_a = this.controller) === null || _a === void 0 ? void 0 : _a.setOperationTransform((builder) => builder.deselect());
310
- (_b = this.controller) === null || _b === void 0 ? void 0 : _b.setAdditionalTransforms([]);
311
- }
312
- get hostEl() { return this; }
313
- static get watchers() { return {
314
- "viewer": ["handleViewerChanged"],
315
- "operationType": ["handleDefaultOperationChange"],
316
- "mode": ["handleModeChange"],
317
- "controller": ["handleControllerChange"]
318
- }; }
319
- static get style() { return viewerBoxQueryToolCss; }
320
- }, [1, "vertex-viewer-box-query-tool", {
321
- "viewer": [16],
322
- "controller": [1040],
323
- "model": [1040],
324
- "operationType": [1, "operation-type"],
325
- "mode": [1],
326
- "details": [32]
327
- }]);
328
- function defineCustomElement$1() {
329
- if (typeof customElements === "undefined") {
330
- return;
331
- }
332
- const components = ["vertex-viewer-box-query-tool", "vertex-viewer-layer"];
333
- components.forEach(tagName => { switch (tagName) {
334
- case "vertex-viewer-box-query-tool":
335
- if (!customElements.get(tagName)) {
336
- customElements.define(tagName, ViewerBoxQueryTool);
337
- }
338
- break;
339
- case "vertex-viewer-layer":
340
- if (!customElements.get(tagName)) {
341
- defineCustomElement$2();
342
- }
343
- break;
344
- } });
345
- }
346
-
347
- const VertexViewerBoxQueryTool = ViewerBoxQueryTool;
348
- const defineCustomElement = defineCustomElement$1;
349
-
350
- export { VertexViewerBoxQueryTool, defineCustomElement };
351
-
352
- //# sourceMappingURL=vertex-viewer-box-query-tool.js.map
@@ -1 +0,0 @@
1
- {"file":"vertex-viewer-box-query-tool.js","mappings":"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","names":["point","Point","Rectangle"],"sources":["./src/lib/volume-intersection/interactions.ts","./src/lib/volume-intersection/model.ts","./src/components/viewer-box-query-tool/viewer-box-query-tool.css?tag=vertex-viewer-box-query-tool&encapsulation=shadow","./src/components/viewer-box-query-tool/viewer-box-query-tool.tsx"],"sourcesContent":["import { Disposable } from '@vertexvis/utils';\n\nimport { boxQueryCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { InteractionApi } from '../interactions';\nimport { InteractionHandler } from '../interactions/interactionHandler';\nimport { VolumeIntersectionQueryController } from './controller';\n\nexport class VolumeIntersectionQueryInteractionHandler\n implements InteractionHandler\n{\n private element?: HTMLElement;\n private api?: InteractionApi;\n private isInteracting?: boolean;\n private enabled?: boolean;\n private elementBounds?: DOMRect;\n private crosshairCursorDisposable?: Disposable;\n private waitCursorDisposable?: Disposable;\n\n public constructor(private controller: VolumeIntersectionQueryController) {\n this.handleDragBegin = this.handleDragBegin.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n\n this.enabled = true;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.element.addEventListener('pointerdown', this.handleDragBegin);\n this.addCrosshairCursor();\n }\n\n public dispose(): void {\n this.element?.removeEventListener('pointerdown', this.handleDragBegin);\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n this.crosshairCursorDisposable?.dispose();\n this.waitCursorDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n this.enabled = true;\n }\n\n public disable(): void {\n this.enabled = false;\n }\n\n public enable(): void {\n this.enabled = true;\n }\n\n private handleDragBegin(event: PointerEvent): void {\n if (\n this.enabled &&\n this.isPrimaryMouseButtonClick(event) &&\n !this.isInteracting\n ) {\n this.elementBounds = this.element?.getBoundingClientRect();\n this.isInteracting = true;\n this.controller.setStartPoint(\n getMouseClientPosition(event, this.elementBounds)\n );\n\n window.addEventListener('pointermove', this.handleDrag);\n window.addEventListener('pointerup', this.handleDragEnd);\n }\n }\n\n private handleDrag(event: PointerEvent): void {\n if (this.enabled) {\n this.controller.setEndPoint(\n getMouseClientPosition(event, this.elementBounds)\n );\n }\n }\n\n private async handleDragEnd(): Promise<void> {\n this.isInteracting = false;\n\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n\n this.crosshairCursorDisposable?.dispose();\n if (this.enabled) {\n this.addWaitCursor();\n try {\n await this.controller.execute();\n } finally {\n this.waitCursorDisposable?.dispose();\n this.addCrosshairCursor();\n }\n }\n }\n\n private isPrimaryMouseButtonClick(event: PointerEvent): boolean {\n return event.buttons === 1;\n }\n\n private addCrosshairCursor(): void {\n this.crosshairCursorDisposable?.dispose();\n this.crosshairCursorDisposable = this.api?.addCursor(boxQueryCursor);\n }\n\n private addWaitCursor(): void {\n this.waitCursorDisposable?.dispose();\n this.waitCursorDisposable = this.api?.addCursor('wait');\n }\n}\n","import { Point, Rectangle } from '@vertexvis/geometry';\nimport { Disposable, EventDispatcher, Listener } from '@vertexvis/utils';\n\nimport { VolumeIntersectionQueryMode } from '../../components/viewer-box-query-tool/types';\n\nexport type QueryType = 'inclusive' | 'exclusive';\n\nexport interface VolumeIntersectionQueryDetails {\n screenBounds: Rectangle.Rectangle;\n type: QueryType;\n}\n\nexport class VolumeIntersectionQueryModel {\n private startPoint?: Point.Point;\n private endPoint?: Point.Point;\n private type?: QueryType;\n\n private dragStarted = new EventDispatcher<void>();\n private dragComplete = new EventDispatcher<VolumeIntersectionQueryDetails>();\n private dragCancelled = new EventDispatcher<void>();\n\n private screenBoundsChanged = new EventDispatcher<\n VolumeIntersectionQueryDetails | undefined\n >();\n\n public constructor(private mode?: VolumeIntersectionQueryMode) {}\n\n public setStartPoint(point: Point.Point): void {\n this.startPoint = point;\n\n this.dragStarted.emit();\n }\n\n public setEndPoint(point: Point.Point): void {\n if (\n this.startPoint != null &&\n Point.distance(this.startPoint, point) >= 2\n ) {\n this.endPoint = point;\n\n this.updateQueryType();\n this.screenBoundsChanged.emit(this.getQueryDetails());\n }\n }\n\n public setMode(mode?: VolumeIntersectionQueryMode): void {\n this.mode = mode;\n }\n\n public complete(): void {\n if (this.startPoint != null && this.endPoint != null) {\n this.screenBoundsChanged.emit(undefined);\n this.dragComplete.emit(this.getQueryDetails());\n this.reset();\n }\n }\n\n public cancel(): void {\n this.screenBoundsChanged.emit(undefined);\n this.dragCancelled.emit();\n this.reset();\n }\n\n public reset(): void {\n this.startPoint = undefined;\n this.endPoint = undefined;\n this.type = undefined;\n }\n\n public getScreenBounds(): Rectangle.Rectangle | undefined {\n return this.startPoint != null && this.endPoint != null\n ? Rectangle.fromPoints(this.startPoint, this.endPoint)\n : undefined;\n }\n\n public getType(): QueryType | undefined {\n return this.type;\n }\n\n public onScreenBoundsChanged(\n listener: Listener<VolumeIntersectionQueryDetails | undefined>\n ): Disposable {\n return this.screenBoundsChanged.on(listener);\n }\n\n public onDragStarted(listener: Listener<void>): Disposable {\n return this.dragStarted.on(listener);\n }\n\n public onDragComplete(\n listener: Listener<VolumeIntersectionQueryDetails>\n ): Disposable {\n return this.dragComplete.on(listener);\n }\n\n public onDragCancelled(listener: Listener<void>): Disposable {\n return this.dragCancelled.on(listener);\n }\n\n private getQueryDetails(): VolumeIntersectionQueryDetails {\n if (this.startPoint != null && this.endPoint != null && this.type != null) {\n return {\n screenBounds: Rectangle.fromPoints(this.startPoint, this.endPoint),\n type: this.type,\n };\n } else {\n throw new Error(\n 'Failed to create query details, the start and end points must be set.'\n );\n }\n }\n\n private updateQueryType(): void {\n if (this.startPoint != null && this.endPoint != null) {\n const directionalType =\n Point.subtract(this.endPoint, this.startPoint).x > 0\n ? 'exclusive'\n : 'inclusive';\n\n this.type = this.mode ?? directionalType;\n }\n }\n}\n",":host {\n /**\n * @prop --viewer-box-query-outline-exclusive-color: A CSS color that\n * specifies the color of box for an exclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#0099cc`.\n */\n --viewer-box-query-outline-exclusive-color: #0099cc;\n /**\n * @prop --viewer-box-query-outline-exclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * exclusive query. Defaults to `solid`.\n */\n --viewer-box-query-outline-exclusive-border-style: solid;\n /**\n * @prop --viewer-box-query-outline-inclusive-color: A CSS color that\n * specifies the color of box for an inclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#00cc00`.\n */\n --viewer-box-query-outline-inclusive-color: #00cc00;\n /**\n * @prop --viewer-box-query-outline-inclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * inclusive query. Defaults to `dashed`.\n */\n --viewer-box-query-outline-inclusive-border-style: dashed;\n /**\n * @prop --viewer-box-query-outline-border-radius: A CSS length that\n * specifies the border radius of the drawn box. Defaults to `0.25rem`.\n */\n --viewer-box-query-outline-border-radius: 0.25rem;\n /**\n * @prop--viewer-box-query-outline-fill-opacity: A number between \n * 0 and 1 that specifies the opacity of the background of the drawn box.\n * Defaults to `0.25`.\n */\n --viewer-box-query-outline-fill-opacity: 0.25;\n}\n\n.bounds {\n position: absolute;\n}\n\n.outline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive=\"true\"]) .outline {\n border: 3px var(--viewer-box-query-outline-exclusive-border-style) var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive=\"true\"]) .outline {\n border: 3px var(--viewer-box-query-outline-inclusive-border-style) var(--viewer-box-query-outline-inclusive-color);\n}\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: var(--viewer-box-query-outline-fill-opacity);\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive=\"true\"]) .fill {\n background-color: var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive=\"true\"]) .fill {\n background-color: var(--viewer-box-query-outline-inclusive-color);\n}","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { VolumeIntersectionQueryController } from '../../lib/volume-intersection/controller';\nimport { VolumeIntersectionQueryInteractionHandler } from '../../lib/volume-intersection/interactions';\nimport {\n QueryType,\n VolumeIntersectionQueryDetails,\n VolumeIntersectionQueryModel,\n} from '../../lib/volume-intersection/model';\nimport {\n VolumeIntersectionQueryMode,\n VolumeIntersectionQueryType,\n} from './types';\n\n/**\n * The `ViewerBoxQueryTool` allows for the drawing of a \"box\" on screen to represent\n * a query for items in a specific area of the viewer. This tool then allows for an\n * operation to be performed on the items contained (exclusive) by the box or both\n * contained by and intersecting with (inclusive) the box.\n */\n@Component({\n tag: 'vertex-viewer-box-query-tool',\n styleUrl: 'viewer-box-query-tool.css',\n shadow: true,\n})\nexport class ViewerBoxQueryTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The controller that is responsible for performing operations using the\n * volume intersection query defined by the drawn box and updating the model.\n */\n @Prop({ mutable: true })\n public controller?: VolumeIntersectionQueryController;\n\n /**\n * The model that contains the points representing the corners of the box\n * displayed on screen, the type of the query to be performed, and methods\n * for setting these values.\n */\n @Prop({ mutable: true })\n public model?: VolumeIntersectionQueryModel;\n\n /**\n * The default operation to perform when a drag has completed and the intersection\n * query will be run. Defaults to `clearAndSelect`, and can be changed to `select` or `deselect`.\n *\n * `clearAndSelect` will clear all existing selection, and select the results of the query.\n * `select` will maintain existing selection, and select the results of the query.\n * `deselect` will maintain existing selection, and deselect the results of the query.\n *\n * The operation behavior for this intersection query tool can also be changed by\n * providing a custom implementation of the `VolumeIntersectionQueryController`, or\n * by using the `setOperationTransform` method of the default controller.\n */\n @Prop()\n public operationType: VolumeIntersectionQueryType = 'clearAndSelect';\n\n /**\n * An optional value to specify a singular mode of intersection query. This value\n * defaults to `undefined`, which will indicate that both `exclusive` and `inclusive`\n * queries should be made, with `inclusive` being represented by a left to right\n * drag behavior and `exclusive` being represented by a right to left drag.\n *\n * Setting this value to `inclusive` will cause dragging left to right and left to right\n * to result in an `inclusive` query, and the box will only be styled for `inclusive` queries.\n *\n * Setting this value to `exclusive` will cause dragging left to right and left to right\n * to result in an `exclusive` query, and the box will only be styled for `exclusive` queries.\n */\n @Prop()\n public mode?: VolumeIntersectionQueryMode;\n\n @State()\n private details?: VolumeIntersectionQueryDetails;\n\n @Element()\n private hostEl!: HTMLVertexViewerBoxQueryToolElement;\n\n private interactionHandler?: VolumeIntersectionQueryInteractionHandler;\n private interactionHandlerDisposable?: Disposable;\n\n private operationStartedDisposable?: Disposable;\n private operationCompleteDisposable?: Disposable;\n private screenBoundsChangedDisposable?: Disposable;\n\n public constructor() {\n this.handleScreenBoundsChanged = this.handleScreenBoundsChanged.bind(this);\n this.handleExecuteStarted = this.handleExecuteStarted.bind(this);\n this.handleExecuteComplete = this.handleExecuteComplete.bind(this);\n }\n\n public componentWillLoad(): void {\n this.model = this.model ?? new VolumeIntersectionQueryModel(this.mode);\n\n this.screenBoundsChangedDisposable = this.model.onScreenBoundsChanged(\n this.handleScreenBoundsChanged\n );\n\n this.handleViewerChanged(this.viewer);\n this.handleControllerChange(this.controller);\n this.handleDefaultOperationChange(this.operationType);\n }\n\n public disconnectedCallback(): void {\n this.model?.reset();\n this.screenBoundsChangedDisposable?.dispose();\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n this.deregisterInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(newViewer?: HTMLVertexViewerElement): void {\n this.deregisterInteractionHandler();\n\n if (this.model != null && newViewer != null) {\n this.controller = new VolumeIntersectionQueryController(\n this.model,\n newViewer\n );\n this.handleDefaultOperationChange(this.operationType);\n this.registerInteractionHandler(this.controller, newViewer);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('operationType')\n protected handleDefaultOperationChange(\n updatedOperationType: VolumeIntersectionQueryType\n ): void {\n switch (updatedOperationType) {\n case 'clearAndSelect':\n this.setDefaultClearAndSelectOperation();\n break;\n case 'select':\n this.setDefaultSelectOperation();\n break;\n case 'deselect':\n this.setDefaultDeselectOperation();\n break;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(updatedMode?: VolumeIntersectionQueryMode): void {\n this.model?.setMode(updatedMode);\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChange(\n controller?: VolumeIntersectionQueryController\n ): void {\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n\n this.operationStartedDisposable = controller?.onExecuteStarted(\n this.handleExecuteStarted\n );\n this.operationStartedDisposable = controller?.onExecuteComplete(\n this.handleExecuteComplete\n );\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-layer>\n {this.details != null && (\n <div\n class=\"bounds\"\n style={{\n left: `${this.details.screenBounds.x}px`,\n top: `${this.details.screenBounds.y}px`,\n width: `${this.details.screenBounds.width}px`,\n height: `${this.details.screenBounds.height}px`,\n }}\n >\n <slot name=\"bounds\">\n <div class=\"outline\"></div>\n <div class=\"fill\"></div>\n </slot>\n </div>\n )}\n </vertex-viewer-layer>\n </Host>\n );\n }\n\n private handleScreenBoundsChanged(\n details?: VolumeIntersectionQueryDetails\n ): void {\n this.details = details;\n\n this.updateTypeAttribute(details?.type);\n }\n\n private handleExecuteStarted(): void {\n this.interactionHandler?.disable();\n }\n\n private handleExecuteComplete(): void {\n this.interactionHandler?.enable();\n }\n\n private async registerInteractionHandler(\n controller: VolumeIntersectionQueryController,\n viewer: HTMLVertexViewerElement\n ): Promise<void> {\n this.interactionHandler = new VolumeIntersectionQueryInteractionHandler(\n controller\n );\n this.interactionHandlerDisposable = await viewer.registerInteractionHandler(\n this.interactionHandler\n );\n }\n\n private deregisterInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private updateTypeAttribute(type?: QueryType): void {\n this.hostEl.setAttribute('inclusive', `${type === 'inclusive'}`);\n this.hostEl.setAttribute('exclusive', `${type === 'exclusive'}`);\n }\n\n private setDefaultClearAndSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([\n (op) => op.where((q) => q.withSelected()).deselect(),\n ]);\n }\n\n private setDefaultSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([]);\n }\n\n private setDefaultDeselectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.deselect());\n this.controller?.setAdditionalTransforms([]);\n }\n}\n"],"version":3}
@@ -1,11 +0,0 @@
1
- import type { Components, JSX } from "../types/regl-shape";
2
-
3
- interface VertexViewerButton extends Components.VertexViewerButton, HTMLElement {}
4
- export const VertexViewerButton: {
5
- prototype: VertexViewerButton;
6
- new (): VertexViewerButton;
7
- };
8
- /**
9
- * Used to define this component and all nested components recursively.
10
- */
11
- export const defineCustomElement: () => void;
@@ -1,11 +0,0 @@
1
- /*!
2
- * Copyright (c) 2023 Vertex Software LLC. All rights reserved.
3
- */
4
- import { V as ViewerButton, d as defineCustomElement$1 } from './viewer-button.js';
5
-
6
- const VertexViewerButton = ViewerButton;
7
- const defineCustomElement = defineCustomElement$1;
8
-
9
- export { VertexViewerButton, defineCustomElement };
10
-
11
- //# sourceMappingURL=vertex-viewer-button.js.map
@@ -1 +0,0 @@
1
- {"file":"vertex-viewer-button.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1,11 +0,0 @@
1
- import type { Components, JSX } from "../types/regl-shape";
2
-
3
- interface VertexViewerDefaultToolbar extends Components.VertexViewerDefaultToolbar, HTMLElement {}
4
- export const VertexViewerDefaultToolbar: {
5
- prototype: VertexViewerDefaultToolbar;
6
- new (): VertexViewerDefaultToolbar;
7
- };
8
- /**
9
- * Used to define this component and all nested components recursively.
10
- */
11
- export const defineCustomElement: () => void;