@vertexvis/viewer 1.1.1-testing.4 → 1.1.1-testing.5

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 (181) hide show
  1. package/dist/cjs/{config-BY0v6BSK.js → config-OELTgslY.js} +3 -3
  2. package/dist/cjs/{config-BY0v6BSK.js.map → config-OELTgslY.js.map} +1 -1
  3. package/dist/cjs/{entities-CEaa12yP.js → entities-rj-TEPKc.js} +4 -4
  4. package/dist/cjs/{entities-CEaa12yP.js.map → entities-rj-TEPKc.js.map} +1 -1
  5. package/dist/cjs/{geometry_pb-EVfAEuPO.js → geometry_pb-asn2mNvW.js} +3 -3
  6. package/dist/cjs/{geometry_pb-EVfAEuPO.js.map → geometry_pb-asn2mNvW.js.map} +1 -1
  7. package/dist/cjs/index.cjs.js +5 -5
  8. package/dist/cjs/{queries-LthBzEHD.js → queries-e19TP_oF.js} +4 -4
  9. package/dist/cjs/{queries-LthBzEHD.js.map → queries-e19TP_oF.js.map} +1 -1
  10. package/dist/cjs/{regl-component-B_JaaVlv.js → regl-component-DjVaO3t3.js} +3 -3
  11. package/dist/cjs/{regl-component-B_JaaVlv.js.map → regl-component-DjVaO3t3.js.map} +1 -1
  12. package/dist/cjs/{representation_pb-B6XR10pQ.js → representation_pb-BVBPrHLf.js} +3 -3
  13. package/dist/cjs/{representation_pb-B6XR10pQ.js.map → representation_pb-BVBPrHLf.js.map} +1 -1
  14. package/dist/cjs/{streamAttributes-nCF7u7lv.js → streamAttributes-M3UUIO3l.js} +117 -94
  15. package/dist/cjs/streamAttributes-M3UUIO3l.js.map +1 -0
  16. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +1 -1
  17. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
  18. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +2 -2
  19. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
  20. package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
  21. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  22. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +2 -2
  23. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +2 -2
  24. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +2 -2
  25. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
  26. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +4 -4
  27. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +3 -3
  28. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js +2 -2
  29. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
  30. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +3 -3
  31. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
  32. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
  33. package/dist/cjs/vertex-viewer.cjs.entry.js +4 -4
  34. package/dist/collection/components/scene-tree-search/scene-tree-search.js +1 -1
  35. package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
  36. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
  37. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
  38. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js +2 -2
  39. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
  40. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js +1 -1
  41. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
  42. package/dist/collection/workers/png-decoder-pool.js +4 -3
  43. package/dist/collection/workers/png-decoder-pool.js.map +1 -1
  44. package/dist/components/index.js +1 -1
  45. package/dist/components/{p-COznr3CH.js → p-5bk1mHRt.js} +2 -2
  46. package/dist/components/{p-D3bzgaCV.js → p-B8530k7R.js} +2 -2
  47. package/dist/components/{p-CWcvgy8e.js → p-BCuMPvZO.js} +2 -2
  48. package/dist/components/{p-DTwJX9HL.js → p-BgzjmANj.js} +2 -2
  49. package/dist/components/{p-DTwJX9HL.js.map → p-BgzjmANj.js.map} +1 -1
  50. package/dist/components/p-BjvjKoy7.js +5 -0
  51. package/dist/components/p-BjvjKoy7.js.map +1 -0
  52. package/dist/components/{p-Cxz4L6FA.js → p-Bwtyddca.js} +2 -2
  53. package/dist/components/{p-Ca253f0h.js → p-Bx42CNGV.js} +2 -2
  54. package/dist/components/p-C86HMDzi.js +5 -0
  55. package/dist/components/{p-Y8W_BXUk.js.map → p-C86HMDzi.js.map} +1 -1
  56. package/dist/components/p-CSVgoQU8.js +5 -0
  57. package/dist/components/{p-Cku0WCYo.js.map → p-CSVgoQU8.js.map} +1 -1
  58. package/dist/components/{p-D3in41xo.js → p-CTi-0-dI.js} +2 -2
  59. package/dist/components/{p-D1Vdomj_.js → p-D_h07qsA.js} +2 -2
  60. package/dist/components/{p-BNRm88jS.js → p-KidjtXKE.js} +2 -2
  61. package/dist/components/vertex-scene-tree-search.js +1 -1
  62. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  63. package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
  64. package/dist/components/vertex-scene-tree.js +1 -1
  65. package/dist/components/vertex-viewer-dom-renderer.js +1 -1
  66. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  67. package/dist/components/vertex-viewer-measurement-details.js +1 -1
  68. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  69. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  70. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  71. package/dist/components/vertex-viewer-pin-group.js +1 -1
  72. package/dist/components/vertex-viewer-pin-label.js +1 -1
  73. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  74. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  75. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  76. package/dist/components/vertex-viewer-view-cube.js +1 -1
  77. package/dist/components/vertex-viewer.js +1 -1
  78. package/dist/esm/{config-ss9ha12b.js → config-Cqrcty7U.js} +3 -3
  79. package/dist/esm/{config-ss9ha12b.js.map → config-Cqrcty7U.js.map} +1 -1
  80. package/dist/esm/{entities-DEFAhYdV.js → entities-CawBZH7i.js} +4 -4
  81. package/dist/esm/{entities-DEFAhYdV.js.map → entities-CawBZH7i.js.map} +1 -1
  82. package/dist/esm/{geometry_pb-D7fM1PYG.js → geometry_pb-COdZQiRi.js} +3 -3
  83. package/dist/esm/{geometry_pb-D7fM1PYG.js.map → geometry_pb-COdZQiRi.js.map} +1 -1
  84. package/dist/esm/index.js +5 -5
  85. package/dist/esm/index.mjs +5 -5
  86. package/dist/esm/{queries-BcmE5Zbq.js → queries-B4XotYyr.js} +4 -4
  87. package/dist/esm/{queries-BcmE5Zbq.js.map → queries-B4XotYyr.js.map} +1 -1
  88. package/dist/esm/{regl-component-gIonUTBJ.js → regl-component-B1_h3_s8.js} +3 -3
  89. package/dist/esm/{regl-component-gIonUTBJ.js.map → regl-component-B1_h3_s8.js.map} +1 -1
  90. package/dist/esm/{representation_pb-Bf023NuN.js → representation_pb-C4MJfZMo.js} +3 -3
  91. package/dist/esm/{representation_pb-Bf023NuN.js.map → representation_pb-C4MJfZMo.js.map} +1 -1
  92. package/dist/esm/{streamAttributes-Bj2xDHfI.js → streamAttributes-BW9JzMeG.js} +116 -93
  93. package/dist/esm/streamAttributes-BW9JzMeG.js.map +1 -0
  94. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +1 -1
  95. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
  96. package/dist/esm/vertex-scene-tree-table-cell.entry.js +2 -2
  97. package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
  98. package/dist/esm/vertex-scene-tree.entry.js +2 -2
  99. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  100. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +2 -2
  101. package/dist/esm/vertex-viewer-measurement-details.entry.js +2 -2
  102. package/dist/esm/vertex-viewer-measurement-distance.entry.js +2 -2
  103. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
  104. package/dist/esm/vertex-viewer-measurement-precise.entry.js +4 -4
  105. package/dist/esm/vertex-viewer-pin-group.entry.js +3 -3
  106. package/dist/esm/vertex-viewer-pin-label_2.entry.js +2 -2
  107. package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
  108. package/dist/esm/vertex-viewer-transform-widget.entry.js +3 -3
  109. package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
  110. package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
  111. package/dist/esm/vertex-viewer.entry.js +4 -4
  112. package/dist/types/workers/png-decoder-pool.d.ts +0 -1
  113. package/dist/viewer/index.esm.js +1 -1
  114. package/dist/viewer/{p-00540193.entry.js → p-1506f9a2.entry.js} +2 -2
  115. package/dist/viewer/{p-5cfb3047.entry.js → p-293d8f3f.entry.js} +2 -2
  116. package/dist/viewer/{p-9a39315d.entry.js → p-2faddbf8.entry.js} +2 -2
  117. package/dist/viewer/{p-7cb9c9bb.entry.js → p-36349a80.entry.js} +2 -2
  118. package/dist/viewer/p-36349a80.entry.js.map +1 -0
  119. package/dist/viewer/p-44395076.entry.js +5 -0
  120. package/dist/viewer/{p-e4913b06.entry.js.map → p-44395076.entry.js.map} +1 -1
  121. package/dist/viewer/{p-30a5748d.entry.js → p-45cc095e.entry.js} +2 -2
  122. package/dist/viewer/{p-d5a57757.entry.js → p-93311f46.entry.js} +2 -2
  123. package/dist/viewer/{p-CyiY_hsD.js → p-BEOO-Ypv.js} +2 -2
  124. package/dist/viewer/{p-CyiY_hsD.js.map → p-BEOO-Ypv.js.map} +1 -1
  125. package/dist/viewer/{p-CS8PfgcI.js → p-BJGbLthH.js} +2 -2
  126. package/dist/viewer/{p-CS8PfgcI.js.map → p-BJGbLthH.js.map} +1 -1
  127. package/dist/viewer/{p-D2IEHEGM.js → p-Br21pGVj.js} +2 -2
  128. package/dist/viewer/{p-D2IEHEGM.js.map → p-Br21pGVj.js.map} +1 -1
  129. package/dist/viewer/{p-kMZA0v7I.js → p-Bw_ryWU0.js} +2 -2
  130. package/dist/viewer/{p-kMZA0v7I.js.map → p-Bw_ryWU0.js.map} +1 -1
  131. package/dist/viewer/{p-DHK23fw4.js → p-C4_1Jc7H.js} +2 -2
  132. package/dist/viewer/{p-DHK23fw4.js.map → p-C4_1Jc7H.js.map} +1 -1
  133. package/dist/viewer/p-Cc3XhAoA.js +5 -0
  134. package/dist/viewer/p-Cc3XhAoA.js.map +1 -0
  135. package/dist/viewer/p-DYDhLlLS.js +5 -0
  136. package/dist/viewer/{p-_LpaX1ga.js.map → p-DYDhLlLS.js.map} +1 -1
  137. package/dist/viewer/{p-48020de1.entry.js → p-a94b626c.entry.js} +2 -2
  138. package/dist/viewer/{p-b79c295a.entry.js → p-ced98004.entry.js} +2 -2
  139. package/dist/viewer/{p-32a51a21.entry.js → p-dcb6ddfe.entry.js} +2 -2
  140. package/dist/viewer/p-dcb6ddfe.entry.js.map +1 -0
  141. package/dist/viewer/{p-cc835213.entry.js → p-ea45c3e9.entry.js} +2 -2
  142. package/dist/viewer/p-ebd9dd99.entry.js +5 -0
  143. package/dist/viewer/p-ebd9dd99.entry.js.map +1 -0
  144. package/dist/viewer/{p-edc2f914.entry.js → p-ecd594f2.entry.js} +2 -2
  145. package/dist/viewer/p-fec5a15d.entry.js +5 -0
  146. package/dist/viewer/p-fec5a15d.entry.js.map +1 -0
  147. package/dist/viewer/viewer.esm.js +1 -1
  148. package/package.json +9 -9
  149. package/dist/cjs/streamAttributes-nCF7u7lv.js.map +0 -1
  150. package/dist/components/p-Cku0WCYo.js +0 -5
  151. package/dist/components/p-CvEK3ZK1.js +0 -5
  152. package/dist/components/p-CvEK3ZK1.js.map +0 -1
  153. package/dist/components/p-Y8W_BXUk.js +0 -5
  154. package/dist/esm/streamAttributes-Bj2xDHfI.js.map +0 -1
  155. package/dist/viewer/p-32a51a21.entry.js.map +0 -1
  156. package/dist/viewer/p-4dd67d16.entry.js +0 -5
  157. package/dist/viewer/p-4dd67d16.entry.js.map +0 -1
  158. package/dist/viewer/p-7cb9c9bb.entry.js.map +0 -1
  159. package/dist/viewer/p-BhKTTmpL.js +0 -5
  160. package/dist/viewer/p-BhKTTmpL.js.map +0 -1
  161. package/dist/viewer/p-_LpaX1ga.js +0 -5
  162. package/dist/viewer/p-e4913b06.entry.js +0 -5
  163. package/dist/viewer/p-fd3a5837.entry.js +0 -5
  164. package/dist/viewer/p-fd3a5837.entry.js.map +0 -1
  165. /package/dist/components/{p-COznr3CH.js.map → p-5bk1mHRt.js.map} +0 -0
  166. /package/dist/components/{p-D3bzgaCV.js.map → p-B8530k7R.js.map} +0 -0
  167. /package/dist/components/{p-CWcvgy8e.js.map → p-BCuMPvZO.js.map} +0 -0
  168. /package/dist/components/{p-Cxz4L6FA.js.map → p-Bwtyddca.js.map} +0 -0
  169. /package/dist/components/{p-Ca253f0h.js.map → p-Bx42CNGV.js.map} +0 -0
  170. /package/dist/components/{p-D3in41xo.js.map → p-CTi-0-dI.js.map} +0 -0
  171. /package/dist/components/{p-D1Vdomj_.js.map → p-D_h07qsA.js.map} +0 -0
  172. /package/dist/components/{p-BNRm88jS.js.map → p-KidjtXKE.js.map} +0 -0
  173. /package/dist/viewer/{p-00540193.entry.js.map → p-1506f9a2.entry.js.map} +0 -0
  174. /package/dist/viewer/{p-5cfb3047.entry.js.map → p-293d8f3f.entry.js.map} +0 -0
  175. /package/dist/viewer/{p-9a39315d.entry.js.map → p-2faddbf8.entry.js.map} +0 -0
  176. /package/dist/viewer/{p-30a5748d.entry.js.map → p-45cc095e.entry.js.map} +0 -0
  177. /package/dist/viewer/{p-d5a57757.entry.js.map → p-93311f46.entry.js.map} +0 -0
  178. /package/dist/viewer/{p-48020de1.entry.js.map → p-a94b626c.entry.js.map} +0 -0
  179. /package/dist/viewer/{p-b79c295a.entry.js.map → p-ced98004.entry.js.map} +0 -0
  180. /package/dist/viewer/{p-cc835213.entry.js.map → p-ea45c3e9.entry.js.map} +0 -0
  181. /package/dist/viewer/{p-edc2f914.entry.js.map → p-ecd594f2.entry.js.map} +0 -0
@@ -6,7 +6,7 @@
6
6
  var index = require('./index-1H7bCrlx.js');
7
7
  var bundle = require('./bundle-BCS0nA91.js');
8
8
  var stencil = require('./stencil-Hsr_8Chs.js');
9
- var streamAttributes = require('./streamAttributes-nCF7u7lv.js');
9
+ var streamAttributes = require('./streamAttributes-M3UUIO3l.js');
10
10
  require('./entities-BhIrCJqA.js');
11
11
  var index$1 = require('./index-CRUoPh1y.js');
12
12
  require('./bundle-Dtdz7qlD.js');
@@ -10,12 +10,12 @@ var bundle$2 = require('./bundle-Dtdz7qlD.js');
10
10
  var bundle$1 = require('./bundle-CLGyVDEW.js');
11
11
  var index$1 = require('./index-CRUoPh1y.js');
12
12
  var errors = require('./errors-C-mfaQwO.js');
13
- var representation_pb = require('./representation_pb-B6XR10pQ.js');
13
+ var representation_pb = require('./representation_pb-BVBPrHLf.js');
14
14
  var wrappers_pb = require('./wrappers_pb-Dupo3Hcb.js');
15
15
  var grpc = require('./grpc-D5Apx_zz.js');
16
- var streamAttributes = require('./streamAttributes-nCF7u7lv.js');
17
- var queries = require('./queries-LthBzEHD.js');
18
- var config = require('./config-BY0v6BSK.js');
16
+ var streamAttributes = require('./streamAttributes-M3UUIO3l.js');
17
+ var queries = require('./queries-e19TP_oF.js');
18
+ var config = require('./config-OELTgslY.js');
19
19
  var cursors = require('./cursors-B-QSF9lQ.js');
20
20
  var dom = require('./dom-BuQSLPWr.js');
21
21
  var entities = require('./entities-BhIrCJqA.js');
@@ -106,7 +106,7 @@ export class SceneTreeSearch {
106
106
  background: this.focused || this.value.length > 0,
107
107
  }), type: "text", ref: (ref) => (this.inputEl = ref), placeholder: this.placeholder, disabled: this.disabled, value: this.value, onInput: this.handleTextInput, onFocus: this.handleTextFocus, onBlur: this.handleTextBlur, onKeyPress: this.handleKeyPress }), h("div", { key: 'f5b0de0431a9c8b051f61fcd76ce9eb430c0a0c9', class: classNames('overlay overlay-clear', {
108
108
  show: this.value.length > 0,
109
- }) }, h("button", { key: '92a36b952320fe724ba2f962a5a758a2e514fd18', class: "clear-btn icon", tabIndex: -1, onMouseDown: this.handleClear, disabled: this.disabled }, h("slot", { key: '97dcec892120a855dd6a4d633f4a2cd84e57e670', name: "clear-icon" }, h("vertex-viewer-icon", { key: '7df2c0ef411a569ccc0cd50cfbc43c6d8533d073', name: "close-circle", size: "sm" })))))));
109
+ }) }, h("button", { key: 'dffb9ffaba79c003552a53122a0feda46894fa2e', class: "clear-btn icon", tabIndex: -1, onMouseDown: this.handleClear, disabled: this.disabled, "aria-label": "Clear search" }, h("slot", { key: '9185057767cff4df0098ea056f19bd931f6ef4c7', name: "clear-icon" }, h("vertex-viewer-icon", { key: '5ec1fe210b9c82b98e609bce9da02d8f2055ec66', name: "close-circle", size: "sm" })))))));
110
110
  }
111
111
  handleDebounceChanged() {
112
112
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"scene-tree-search.js","sourceRoot":"","sources":["../../../../../src/components/scene-tree-search/scene-tree-search.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\nimport classNames from 'classnames';\n\nimport { debounceEvent } from '../../lib/stencil';\nimport { SceneTreeController } from '../scene-tree/lib/controller';\n\n/**\n * @slot search-icon - A slot that replaces the component's default search icon.\n * @slot clear-icon - A slot that replaces the component's default clear icon.\n */\n@Component({\n tag: 'vertex-scene-tree-search',\n styleUrl: 'scene-tree-search.css',\n shadow: true,\n})\nexport class SceneTreeSearch {\n /**\n * Specifies the delay, in milliseconds, to emit `search` events after user\n * input.\n *\n * If this value is specified, searches will automatically occur after a\n * keystroke has occurred and the debounce threshold has elapsed.\n *\n * Defaults to `undefined`, and searches only occur on an `Enter` press\n * or a `blur` event.\n */\n @Prop()\n public debounce?: number;\n\n /**\n * If `true`, disables user interaction of the component.\n */\n @Prop()\n public disabled = false;\n\n /**\n * Placeholder text if `value` is empty.\n */\n @Prop()\n public placeholder?: string = undefined;\n\n /**\n * The scene tree controller\n */\n @Prop()\n public controller?: SceneTreeController;\n\n /**\n * The current text value of the component. Value is updated on user\n * interaction.\n */\n @Prop({ mutable: true })\n public value = '';\n\n /**\n * An event that is emitted when a user has changed or cleared the search\n * term. The event may be delayed according to the current `debounce` value.\n */\n @Event({ bubbles: true })\n public search!: EventEmitter<string>;\n\n /**\n * An event that is emitted when a search has completed.\n */\n @Event({ bubbles: true })\n public searchCompleted!: EventEmitter<string>;\n\n @State()\n private focused = false;\n\n @State()\n private isSearching = false;\n\n private lastEmittedValue?: string;\n private inputEl?: HTMLInputElement;\n private onStateChangeDisposable?: Disposable;\n private searchDisposable?: Disposable;\n\n /**\n * Gives focus to the component's internal text input.\n */\n @Method()\n public async setFocus(): Promise<void> {\n // HTMLInputElement.focus() doesn't exist in tests.\n if (typeof this.inputEl?.focus === 'function') {\n this.inputEl?.focus();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n public controllerChanged(controller: SceneTreeController): void {\n this.setupController();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.handleDebounceChanged();\n\n this.setupController();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.onStateChangeDisposable?.dispose();\n }\n\n /**\n * Clears the current search term and clears any debounced filters.\n */\n @Method()\n public async clear(): Promise<void> {\n this.value = '';\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"root\">\n <div class=\"overlay icon icon-search\">\n <slot name=\"search-icon\">\n {this.isSearching ? (\n <vertex-viewer-spinner slot=\"search-icon\" size=\"xs\" />\n ) : (\n <vertex-viewer-icon name=\"search\" size=\"sm\" />\n )}\n </slot>\n </div>\n\n <input\n class={classNames('input', {\n background: this.focused || this.value.length > 0,\n })}\n type=\"text\"\n ref={(ref) => (this.inputEl = ref)}\n placeholder={this.placeholder}\n disabled={this.disabled}\n value={this.value}\n onInput={this.handleTextInput}\n onFocus={this.handleTextFocus}\n onBlur={this.handleTextBlur}\n onKeyPress={this.handleKeyPress}\n />\n\n <div\n class={classNames('overlay overlay-clear', {\n show: this.value.length > 0,\n })}\n >\n <button\n class=\"clear-btn icon\"\n tabIndex={-1}\n onMouseDown={this.handleClear}\n disabled={this.disabled}\n >\n <slot name=\"clear-icon\">\n <vertex-viewer-icon name=\"close-circle\" size=\"sm\" />\n </slot>\n </button>\n </div>\n </div>\n </Host>\n );\n }\n\n private handleTextInput = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n\n if (this.debounce != null || this.value === '') {\n this.emitCurrentValue();\n }\n };\n\n private handleTextFocus = (): void => {\n this.focused = true;\n };\n\n private handleTextBlur = (): void => {\n this.focused = false;\n\n this.searchDisposable?.dispose();\n\n if (this.value !== this.lastEmittedValue) {\n this.emitCurrentValue();\n }\n };\n\n private handleKeyPress = (event: KeyboardEvent): void => {\n if (event.key === 'Enter') {\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n }\n };\n\n private handleClear = (event: MouseEvent): void => {\n event.preventDefault();\n\n this.value = '';\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n this.setFocus();\n };\n\n private handleDebounceChanged(): void {\n this.searchDisposable?.dispose();\n\n const emitter = debounceEvent(this.search, this.debounce ?? 0);\n\n // Track this emitter in two separate variables to maintain the `EventEmitter` typing for\n // `this.search`. This allows for correct generation of `CustomEvent` types.\n this.search = emitter;\n this.searchDisposable = emitter;\n }\n\n private setupController(): void {\n this.onStateChangeDisposable?.dispose();\n\n this.onStateChangeDisposable = this.controller?.onStateChange.on(\n (state) => {\n // If a search was previously being performed, but has now finished,\n // emit the event that the search has completed.\n if (this.isSearching && !state.isSearching) {\n this.searchCompleted.emit(this.value);\n }\n\n this.isSearching = state.isSearching;\n },\n );\n }\n\n private emitCurrentValue(): void {\n this.lastEmittedValue = this.value;\n this.search.emit(this.value);\n }\n}\n"]}
1
+ {"version":3,"file":"scene-tree-search.js","sourceRoot":"","sources":["../../../../../src/components/scene-tree-search/scene-tree-search.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\nimport classNames from 'classnames';\n\nimport { debounceEvent } from '../../lib/stencil';\nimport { SceneTreeController } from '../scene-tree/lib/controller';\n\n/**\n * @slot search-icon - A slot that replaces the component's default search icon.\n * @slot clear-icon - A slot that replaces the component's default clear icon.\n */\n@Component({\n tag: 'vertex-scene-tree-search',\n styleUrl: 'scene-tree-search.css',\n shadow: true,\n})\nexport class SceneTreeSearch {\n /**\n * Specifies the delay, in milliseconds, to emit `search` events after user\n * input.\n *\n * If this value is specified, searches will automatically occur after a\n * keystroke has occurred and the debounce threshold has elapsed.\n *\n * Defaults to `undefined`, and searches only occur on an `Enter` press\n * or a `blur` event.\n */\n @Prop()\n public debounce?: number;\n\n /**\n * If `true`, disables user interaction of the component.\n */\n @Prop()\n public disabled = false;\n\n /**\n * Placeholder text if `value` is empty.\n */\n @Prop()\n public placeholder?: string = undefined;\n\n /**\n * The scene tree controller\n */\n @Prop()\n public controller?: SceneTreeController;\n\n /**\n * The current text value of the component. Value is updated on user\n * interaction.\n */\n @Prop({ mutable: true })\n public value = '';\n\n /**\n * An event that is emitted when a user has changed or cleared the search\n * term. The event may be delayed according to the current `debounce` value.\n */\n @Event({ bubbles: true })\n public search!: EventEmitter<string>;\n\n /**\n * An event that is emitted when a search has completed.\n */\n @Event({ bubbles: true })\n public searchCompleted!: EventEmitter<string>;\n\n @State()\n private focused = false;\n\n @State()\n private isSearching = false;\n\n private lastEmittedValue?: string;\n private inputEl?: HTMLInputElement;\n private onStateChangeDisposable?: Disposable;\n private searchDisposable?: Disposable;\n\n /**\n * Gives focus to the component's internal text input.\n */\n @Method()\n public async setFocus(): Promise<void> {\n // HTMLInputElement.focus() doesn't exist in tests.\n if (typeof this.inputEl?.focus === 'function') {\n this.inputEl?.focus();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n public controllerChanged(controller: SceneTreeController): void {\n this.setupController();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.handleDebounceChanged();\n\n this.setupController();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.onStateChangeDisposable?.dispose();\n }\n\n /**\n * Clears the current search term and clears any debounced filters.\n */\n @Method()\n public async clear(): Promise<void> {\n this.value = '';\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"root\">\n <div class=\"overlay icon icon-search\">\n <slot name=\"search-icon\">\n {this.isSearching ? (\n <vertex-viewer-spinner slot=\"search-icon\" size=\"xs\" />\n ) : (\n <vertex-viewer-icon name=\"search\" size=\"sm\" />\n )}\n </slot>\n </div>\n\n <input\n class={classNames('input', {\n background: this.focused || this.value.length > 0,\n })}\n type=\"text\"\n ref={(ref) => (this.inputEl = ref)}\n placeholder={this.placeholder}\n disabled={this.disabled}\n value={this.value}\n onInput={this.handleTextInput}\n onFocus={this.handleTextFocus}\n onBlur={this.handleTextBlur}\n onKeyPress={this.handleKeyPress}\n />\n\n <div\n class={classNames('overlay overlay-clear', {\n show: this.value.length > 0,\n })}\n >\n <button\n class=\"clear-btn icon\"\n tabIndex={-1}\n onMouseDown={this.handleClear}\n disabled={this.disabled}\n aria-label=\"Clear search\"\n >\n <slot name=\"clear-icon\">\n <vertex-viewer-icon name=\"close-circle\" size=\"sm\" />\n </slot>\n </button>\n </div>\n </div>\n </Host>\n );\n }\n\n private handleTextInput = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n\n if (this.debounce != null || this.value === '') {\n this.emitCurrentValue();\n }\n };\n\n private handleTextFocus = (): void => {\n this.focused = true;\n };\n\n private handleTextBlur = (): void => {\n this.focused = false;\n\n this.searchDisposable?.dispose();\n\n if (this.value !== this.lastEmittedValue) {\n this.emitCurrentValue();\n }\n };\n\n private handleKeyPress = (event: KeyboardEvent): void => {\n if (event.key === 'Enter') {\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n }\n };\n\n private handleClear = (event: MouseEvent): void => {\n event.preventDefault();\n\n this.value = '';\n this.searchDisposable?.dispose();\n this.emitCurrentValue();\n this.setFocus();\n };\n\n private handleDebounceChanged(): void {\n this.searchDisposable?.dispose();\n\n const emitter = debounceEvent(this.search, this.debounce ?? 0);\n\n // Track this emitter in two separate variables to maintain the `EventEmitter` typing for\n // `this.search`. This allows for correct generation of `CustomEvent` types.\n this.search = emitter;\n this.searchDisposable = emitter;\n }\n\n private setupController(): void {\n this.onStateChangeDisposable?.dispose();\n\n this.onStateChangeDisposable = this.controller?.onStateChange.on(\n (state) => {\n // If a search was previously being performed, but has now finished,\n // emit the event that the search has completed.\n if (this.isSearching && !state.isSearching) {\n this.searchCompleted.emit(this.value);\n }\n\n this.isSearching = state.isSearching;\n },\n );\n }\n\n private emitCurrentValue(): void {\n this.lastEmittedValue = this.value;\n this.search.emit(this.value);\n }\n}\n"]}
@@ -162,7 +162,7 @@ export class SceneTreeTableCell {
162
162
  return (h(Host, { key: '703090cacf3d026e220ead0a051d70b186fa056e', onPointerEnter: this.handleCellPointerEnter, onPointerLeave: this.handleCellPointerLeave, onPointerUp: this.handleCellPointerUp, onPointerDown: this.handleCellPointerDown, style: {
163
163
  ...hiddenStyle,
164
164
  'background-color': backgroundColorStyle,
165
- } }, h("div", { key: '25a45f3cebed75a1d0e469cce01e1cabec5450c4', class: "wrapper" }, h("div", { key: '7ba2f3c1b9a5551287f6683f87de841f0717e87b', class: "no-shrink" }, h("slot", { key: '04bd203d0e034aa4fce3a0b64d24718ab0ba50af', name: "left-gutter" })), showSpaceForExpansionIcon && (h("button", { key: '9dfa16123e24eeb90e208aa0d5936b9bacd9d8f4', class: "expand-btn no-shrink", "data-testid": 'expand-' + ((_a = this.node) === null || _a === void 0 ? void 0 : _a.name), onPointerUp: this.createActionPointerUpHandler(this.toggleExpansion) }, expansionIcon && (h("vertex-viewer-icon", { key: 'dd3c2a86b90d627b3234b76075dafef393418945', class: "icon", name: expansionIcon, size: "sm" })))), showSpaceForEndItemIcon && (h("button", { key: 'd486186bcae525c9b520cc0cd07848389f9ffd87', class: "end-item-btn no-shrink", "data-testid": 'end-item-' + ((_b = this.node) === null || _b === void 0 ? void 0 : _b.name) }, endItemIcon && (h("vertex-viewer-icon", { key: '70449bce2c41f6d07bd316a6f607b17c2484d4a0', class: "end-item-icon", name: endItemIcon, size: "sm" })))), h("div", { key: 'a693f0db50d607f4f8c427f86ce99a6813b2d691', class: "content" }, this.value != null && this.value.trim() !== '' ? (h("slot", null, this.displayValue())) : (h("slot", { name: "placeholder" }, this.placeholder))), this.isolateButton && (h("button", { key: '6d981678a7307f45e7f4636085676bd091187de4', class: "isolate-btn no-shrink", "data-testid": 'isolate-btn-' + ((_c = this.node) === null || _c === void 0 ? void 0 : _c.name), onPointerUp: this.createActionPointerUpHandler(this.isolate) }, isolateIcon && (h("vertex-viewer-icon", { key: '9fee42c3d4a82445781fc99c31c5980778d94440', class: "icon", name: "locate", size: "sm" })))), this.visibilityToggle && (h("button", { key: 'ae999f4eadf1214f9583a503ccc49cfceee60e44', class: "visibility-btn no-shrink", "data-testid": 'visibility-btn-' + ((_d = this.node) === null || _d === void 0 ? void 0 : _d.name), onPointerUp: this.createActionPointerUpHandler(this.toggleVisibility) }, visibilityIcon && (h("vertex-viewer-icon", { key: 'af24355ad0af2b8cb4fe66a5d25f9bf85796e460', class: "icon", name: visibilityIcon, size: "sm" })))), h("div", { key: '1000b80cc334bc103563af29aea0a0629d3229c3', class: "no-shrink" }, h("slot", { key: '788690a3c64964d744d8effc3898fefb19d1ae5a', name: "right-gutter" })), !this.visibilityToggle && !this.isolateButton && (h("div", { key: '6012bc2d3b2fef8533597d92233db11b6b5982a1', class: "column-spacer" })))));
165
+ } }, h("div", { key: '25a45f3cebed75a1d0e469cce01e1cabec5450c4', class: "wrapper" }, h("div", { key: '7ba2f3c1b9a5551287f6683f87de841f0717e87b', class: "no-shrink" }, h("slot", { key: '04bd203d0e034aa4fce3a0b64d24718ab0ba50af', name: "left-gutter" })), showSpaceForExpansionIcon && (h("button", { key: '2f06d2f206c5ddfac809ee19bc0f9ace1ab33fa7', class: "expand-btn no-shrink", "data-testid": 'expand-' + ((_a = this.node) === null || _a === void 0 ? void 0 : _a.name), onPointerUp: this.createActionPointerUpHandler(this.toggleExpansion), "aria-label": "Cell expansion toggle" }, expansionIcon && (h("vertex-viewer-icon", { key: '01b15b48b36e4c1293618cde9a6ef57c17415e2d', class: "icon", name: expansionIcon, size: "sm" })))), showSpaceForEndItemIcon && (h("button", { key: '54eaff375458ed0d07d54231795406fdc97b07eb', class: "end-item-btn no-shrink", "data-testid": 'end-item-' + ((_b = this.node) === null || _b === void 0 ? void 0 : _b.name), "aria-label": "End item" }, endItemIcon && (h("vertex-viewer-icon", { key: 'a14f6e447bde1e8e862be0cfacb08b09ce96823e', class: "end-item-icon", name: endItemIcon, size: "sm" })))), h("div", { key: '33848352d332ff4b8f66c2a79752b00b0468d020', class: "content" }, this.value != null && this.value.trim() !== '' ? (h("slot", null, this.displayValue())) : (h("slot", { name: "placeholder" }, this.placeholder))), this.isolateButton && (h("button", { key: 'c9798418510785e27a6a245cc9196d196d520da1', class: "isolate-btn no-shrink", "data-testid": 'isolate-btn-' + ((_c = this.node) === null || _c === void 0 ? void 0 : _c.name), onPointerUp: this.createActionPointerUpHandler(this.isolate), "aria-label": "Isolate" }, isolateIcon && (h("vertex-viewer-icon", { key: '4caa8e0c80da6af73afa35d8020d5037d5480f1d', class: "icon", name: "locate", size: "sm" })))), this.visibilityToggle && (h("button", { key: '1005844156a635a7c4875513394628c417c9fe1f', class: "visibility-btn no-shrink", "data-testid": 'visibility-btn-' + ((_d = this.node) === null || _d === void 0 ? void 0 : _d.name), onPointerUp: this.createActionPointerUpHandler(this.toggleVisibility), "aria-label": "Toggle visibility" }, visibilityIcon && (h("vertex-viewer-icon", { key: '904615e1a27753d51dc19aaedd0914f190d0dc51', class: "icon", name: visibilityIcon, size: "sm" })))), h("div", { key: '3d7f7703d059a44ad3dc8c94a5e505df547b94cb', class: "no-shrink" }, h("slot", { key: '283a87e5c53eda72ddbf5e6fd1d7965fb4c4bc16', name: "right-gutter" })), !this.visibilityToggle && !this.isolateButton && (h("div", { key: '170e79e98faa39d27eeb8a602627825cf99e9527', class: "column-spacer" })))));
166
166
  }
167
167
  toggleAttribute(attr, value) {
168
168
  if (value) {
@@ -1 +1 @@
1
- {"version":3,"file":"scene-tree-table-cell.js","sourceRoot":"","sources":["../../../../../src/components/scene-tree-table-cell/scene-tree-table-cell.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n} from '@stencil/core';\nimport { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Events } from '../../lib/types';\nimport { SceneTreeOperationHandler } from '../scene-tree/lib/handlers';\nimport { SceneTreeCellHoverController } from '../scene-tree-table-layout/lib/hover-controller';\nimport { ViewerIconName } from '../viewer-icon/viewer-icon';\nimport { blurElement } from './utils';\n\nexport interface SceneTreeTableCellEventDetails {\n node?: Node.AsObject;\n originalEvent: PointerEvent;\n}\n\n@Component({\n tag: 'vertex-scene-tree-table-cell',\n styleUrl: 'scene-tree-table-cell.css',\n shadow: true,\n})\nexport class SceneTreeTableCell {\n /**\n * The node data that is associated to the row that this cell belongs to.\n * Contains information related to if the node is expanded, visible, etc.\n */\n @Prop()\n public node?: Node.AsObject;\n\n /**\n * A reference to the scene tree to perform operations for interactions. Such\n * as expansion, visibility and selection.\n */\n @Prop()\n public tree?: HTMLVertexSceneTreeElement;\n\n /**\n * The value to display in this cell.\n */\n @Prop()\n public value?: string;\n\n /**\n * The value to display in this cell if the `value` specified is\n * undefined. Defaults to \"--\".\n */\n @Prop()\n public placeholder = '--';\n\n /**\n * Whether to always show the requested icons in the cell. If false,\n * the icons will only appear when hovering over the cell.\n */\n @Prop()\n public alwaysShowIcons = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public hovered = false;\n\n /**\n * @internal\n */\n @Prop()\n public isScrolling?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the expanded state of\n * the node associated with this cell.\n */\n @Prop()\n public expandToggle?: boolean;\n\n /**\n * Indicates whether to display an indicator that the node associated with\n * this cell is an end item.\n */\n @Prop()\n public endItemIndicator?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the visibility state of\n * the node associated with this cell.\n */\n @Prop()\n public visibilityToggle?: boolean;\n\n /**\n * Indicates whether to display a button for isolating (show only + fly to)\n * the node associated with this cell.\n */\n @Prop()\n public isolateButton?: boolean;\n\n /**\n * An optional handler that will override this cell's default selection\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public selectionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default visibility\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public visibilityHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default expansion\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public expansionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default isolate\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public isolateHandler?: SceneTreeOperationHandler;\n\n /**\n * @internal\n */\n @Prop()\n public hoverController?: SceneTreeCellHoverController;\n\n /**\n * An event that is emitted when a user requests to expand the node. This is\n * emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public expandToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's\n * visibility. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public visibilityToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's selection\n * state. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public selectionToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to isolate the node.\n * This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public isolatePressed!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * Used for internals or testing.\n *\n * @private\n */\n @Event({ bubbles: true })\n public cellLoaded!: EventEmitter<void>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n private hoverListener?: Disposable;\n\n private longPressTimer?: number;\n\n public componentDidLoad(): void {\n this.hoverListener = this.hoverController?.stateChanged((id?: string) => {\n this.hovered = id === this.node?.id?.hex;\n });\n\n this.cellLoaded.emit();\n this.clearLongPressTimer();\n }\n\n public disconnectedCallback(): void {\n this.hoverListener?.dispose();\n this.clearLongPressTimer();\n }\n\n public componentWillRender(): void {\n this.toggleAttribute('is-hovered', this.hovered);\n this.toggleAttribute('is-hidden', !this.node?.visible);\n this.toggleAttribute('is-selected', !!this.node?.selected);\n this.toggleAttribute('is-partial', !!this.node?.partiallyVisible);\n this.toggleAttribute('is-leaf', !!this.node?.isLeaf);\n this.toggleAttribute('is-end-item', !!this.node?.endItem);\n this.toggleAttribute('is-filter-hit', !!this.node?.filterHit);\n }\n\n public render(): h.JSX.IntrinsicElements {\n // Overrides the `.hydrated` visibility when we have nothing to display\n const hiddenStyle =\n this.node == null ? { visibility: 'hidden' } : undefined;\n const backgroundColorStyle = this.getBackgroundColorStyle();\n\n const endItemIcon = this.getEndItemIcon();\n const expansionIcon = this.getExpansionIcon();\n const isolateIcon = this.getIsolateIcon();\n const visibilityIcon = this.getVisibilityIcon();\n\n const showSpaceForExpansionIcon = this.expandToggle && !endItemIcon;\n const showSpaceForEndItemIcon = endItemIcon && !showSpaceForExpansionIcon;\n\n return (\n <Host\n onPointerEnter={this.handleCellPointerEnter}\n onPointerLeave={this.handleCellPointerLeave}\n onPointerUp={this.handleCellPointerUp}\n onPointerDown={this.handleCellPointerDown}\n style={{\n ...hiddenStyle,\n 'background-color': backgroundColorStyle,\n }}\n >\n <div class=\"wrapper\">\n <div class=\"no-shrink\">\n <slot name=\"left-gutter\" />\n </div>\n {showSpaceForExpansionIcon && (\n <button\n class=\"expand-btn no-shrink\"\n data-testid={'expand-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleExpansion,\n )}\n >\n {expansionIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={expansionIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n {showSpaceForEndItemIcon && (\n <button\n class=\"end-item-btn no-shrink\"\n data-testid={'end-item-' + this.node?.name}\n >\n {endItemIcon && (\n <vertex-viewer-icon\n class=\"end-item-icon\"\n name={endItemIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n <div class=\"content\">\n {this.value != null && this.value.trim() !== '' ? (\n <slot>{this.displayValue()}</slot>\n ) : (\n <slot name=\"placeholder\">{this.placeholder}</slot>\n )}\n </div>\n {this.isolateButton && (\n <button\n class=\"isolate-btn no-shrink\"\n data-testid={'isolate-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(this.isolate)}\n >\n {isolateIcon && (\n <vertex-viewer-icon class=\"icon\" name=\"locate\" size=\"sm\" />\n )}\n </button>\n )}\n {this.visibilityToggle && (\n <button\n class=\"visibility-btn no-shrink\"\n data-testid={'visibility-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleVisibility,\n )}\n >\n {visibilityIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={visibilityIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n <div class=\"no-shrink\">\n <slot name=\"right-gutter\" />\n </div>\n {!this.visibilityToggle && !this.isolateButton && (\n <div class=\"column-spacer\" />\n )}\n </div>\n </Host>\n );\n }\n\n private displayValue = (): string => {\n const resp =\n this.value == null || this.value.trim() === ''\n ? this.placeholder\n : this.value;\n\n return resp;\n };\n\n private handleCellPointerEnter = (): void => {\n this.hoverController?.setHovered(this.node?.id?.hex);\n };\n\n private handleCellPointerLeave = (): void => {\n this.hoverController?.setHovered(undefined);\n };\n\n private handleCellPointerUp = (event: PointerEvent): void => {\n if (\n !this.isScrolling &&\n this.node != null &&\n this.tree != null &&\n this.longPressTimer != null\n ) {\n if (this.selectionHandler != null) {\n this.selectionHandler(event, this.node, this.tree);\n } else {\n this.performDefaultSelectionOperation(event);\n }\n this.selectionToggled.emit({ node: this.node, originalEvent: event });\n }\n this.clearLongPressTimer();\n };\n\n private handleCellPointerDown = (event: PointerEvent): void => {\n this.restartLongPressTimer();\n };\n\n private createActionPointerUpHandler = (\n action: (event: PointerEvent) => void,\n ): ((event: PointerEvent) => void) => {\n return (event) => {\n // Blur the `hostEl` after a `preventDefault` to clear focus that\n // is left on the element after `pointerdown` event.\n event.preventDefault();\n event.stopPropagation();\n blurElement(this.hostEl);\n\n action(event);\n };\n };\n\n private toggleExpansion = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.expansionHandler != null) {\n this.expansionHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultExpansionOperation(this.node, this.tree);\n }\n this.expandToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleVisibility = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.visibilityHandler != null) {\n this.visibilityHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultVisibilityOperation(this.node, this.tree);\n }\n this.visibilityToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleAttribute(attr: string, value: boolean): void {\n if (value) {\n this.hostEl.setAttribute(attr, '');\n } else {\n this.hostEl.removeAttribute(attr);\n }\n }\n\n private isolate = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.isolateHandler != null) {\n this.isolateHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultIsolateOperation(this.node, this.tree);\n }\n this.isolatePressed.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private performDefaultSelectionOperation = (event: PointerEvent): void => {\n if (!event.defaultPrevented && event.button === 0) {\n if ((event.ctrlKey || event.metaKey) && this.node?.selected) {\n this.tree?.deselectItem(this.node);\n } else if (this.node?.selected) {\n this.tree?.selectItem(this.node, {\n recurseParent: true,\n });\n } else if (!this.node?.selected) {\n this.tree?.selectItem(this.node, {\n append: event.ctrlKey || event.metaKey,\n range: event.shiftKey,\n });\n }\n }\n };\n\n private performDefaultVisibilityOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.toggleItemVisibility(node);\n };\n\n private performDefaultIsolateOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.isolateItem(node);\n };\n\n private performDefaultExpansionOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.toggleExpandItem(node);\n };\n\n private clearLongPressTimer(): void {\n if (this.longPressTimer != null) {\n window.clearTimeout(this.longPressTimer);\n }\n this.longPressTimer = undefined;\n }\n\n private restartLongPressTimer(): void {\n this.clearLongPressTimer();\n this.longPressTimer = window.setTimeout(() => {\n this.clearLongPressTimer();\n }, Events.defaultEventConfig.longPressThreshold);\n }\n\n private getBackgroundColorStyle(): string {\n const backgroundColorStyle = this.getCssVariableWithFallbacks(\n `--scene-tree-row-background-color-depth-${this.node?.depth}`,\n '--scene-tree-row-background-color',\n );\n const selectedBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-selected-row-background-color',\n '--scene-tree-cell-background-selected',\n );\n const hoveredBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-hovered-row-background-color',\n '--scene-tree-cell-background-hover',\n );\n\n if (!!this.node?.selected) {\n return selectedBackgroundColorStyle;\n } else if (this.hovered) {\n return hoveredBackgroundColorStyle;\n }\n return backgroundColorStyle;\n }\n\n private getCssVariableWithFallbacks(\n variable: string,\n ...fallbacks: string[]\n ): string {\n const sequencedFallbacks = [...fallbacks].reverse();\n\n return [...sequencedFallbacks, variable].reduce(\n (res, s) => `var(${s}, ${res})`,\n 'unset',\n );\n }\n\n private getIsolateIcon(): ViewerIconName | undefined {\n if (this.hovered || this.alwaysShowIcons) {\n return 'locate';\n }\n return undefined;\n }\n\n private getExpansionIcon(): ViewerIconName | undefined {\n if (!this.node?.isLeaf && !this.node?.endItem) {\n return this.node?.expanded ? 'chevron-down' : 'chevron-right';\n }\n return undefined;\n }\n\n private getEndItemIcon(): ViewerIconName | undefined {\n // Return the end item icon for an item if it is set as an end item and either is not a leaf item\n // or matches the filter. Note that in the filtered view, an end item matching the filter will always be\n // marked as a leaf node because its children will be excluded from the search results and therefore\n // not present in the filtered tree.\n if (\n this.endItemIndicator &&\n this.node?.endItem &&\n (!this.node?.isLeaf || this.node?.filterHit)\n ) {\n return 'lock';\n }\n return undefined;\n }\n\n private getVisibilityIcon(): ViewerIconName | undefined {\n if (\n (this.hovered || this.alwaysShowIcons) &&\n !this.node?.partiallyVisible &&\n this.node?.visible\n ) {\n return 'eye-open';\n } else if (!this.node?.partiallyVisible && !this.node?.visible) {\n return 'eye-half';\n } else if (this.node?.partiallyVisible) {\n return 'eye-half-dotted';\n }\n return undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"scene-tree-table-cell.js","sourceRoot":"","sources":["../../../../../src/components/scene-tree-table-cell/scene-tree-table-cell.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n} from '@stencil/core';\nimport { Node } from '@vertexvis/scene-tree-protos/scenetree/protos/domain_pb';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Events } from '../../lib/types';\nimport { SceneTreeOperationHandler } from '../scene-tree/lib/handlers';\nimport { SceneTreeCellHoverController } from '../scene-tree-table-layout/lib/hover-controller';\nimport { ViewerIconName } from '../viewer-icon/viewer-icon';\nimport { blurElement } from './utils';\n\nexport interface SceneTreeTableCellEventDetails {\n node?: Node.AsObject;\n originalEvent: PointerEvent;\n}\n\n@Component({\n tag: 'vertex-scene-tree-table-cell',\n styleUrl: 'scene-tree-table-cell.css',\n shadow: true,\n})\nexport class SceneTreeTableCell {\n /**\n * The node data that is associated to the row that this cell belongs to.\n * Contains information related to if the node is expanded, visible, etc.\n */\n @Prop()\n public node?: Node.AsObject;\n\n /**\n * A reference to the scene tree to perform operations for interactions. Such\n * as expansion, visibility and selection.\n */\n @Prop()\n public tree?: HTMLVertexSceneTreeElement;\n\n /**\n * The value to display in this cell.\n */\n @Prop()\n public value?: string;\n\n /**\n * The value to display in this cell if the `value` specified is\n * undefined. Defaults to \"--\".\n */\n @Prop()\n public placeholder = '--';\n\n /**\n * Whether to always show the requested icons in the cell. If false,\n * the icons will only appear when hovering over the cell.\n */\n @Prop()\n public alwaysShowIcons = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public hovered = false;\n\n /**\n * @internal\n */\n @Prop()\n public isScrolling?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the expanded state of\n * the node associated with this cell.\n */\n @Prop()\n public expandToggle?: boolean;\n\n /**\n * Indicates whether to display an indicator that the node associated with\n * this cell is an end item.\n */\n @Prop()\n public endItemIndicator?: boolean;\n\n /**\n * Indicates whether to display a button for toggling the visibility state of\n * the node associated with this cell.\n */\n @Prop()\n public visibilityToggle?: boolean;\n\n /**\n * Indicates whether to display a button for isolating (show only + fly to)\n * the node associated with this cell.\n */\n @Prop()\n public isolateButton?: boolean;\n\n /**\n * An optional handler that will override this cell's default selection\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public selectionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default visibility\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public visibilityHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default expansion\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public expansionHandler?: SceneTreeOperationHandler;\n\n /**\n * An optional handler that will override this cell's default isolate\n * behavior. The registered handler will receive the `pointerup` event,\n * the node data for the row this cell is associated with, and a reference\n * to the parent `<vertex-scene-tree>` element for performing operations.\n */\n @Prop()\n public isolateHandler?: SceneTreeOperationHandler;\n\n /**\n * @internal\n */\n @Prop()\n public hoverController?: SceneTreeCellHoverController;\n\n /**\n * An event that is emitted when a user requests to expand the node. This is\n * emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public expandToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's\n * visibility. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public visibilityToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to change the node's selection\n * state. This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public selectionToggled!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * An event that is emitted when a user requests to isolate the node.\n * This event is emitted even if interactions are disabled.\n */\n @Event({ bubbles: true })\n public isolatePressed!: EventEmitter<SceneTreeTableCellEventDetails>;\n\n /**\n * Used for internals or testing.\n *\n * @private\n */\n @Event({ bubbles: true })\n public cellLoaded!: EventEmitter<void>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n private hoverListener?: Disposable;\n\n private longPressTimer?: number;\n\n public componentDidLoad(): void {\n this.hoverListener = this.hoverController?.stateChanged((id?: string) => {\n this.hovered = id === this.node?.id?.hex;\n });\n\n this.cellLoaded.emit();\n this.clearLongPressTimer();\n }\n\n public disconnectedCallback(): void {\n this.hoverListener?.dispose();\n this.clearLongPressTimer();\n }\n\n public componentWillRender(): void {\n this.toggleAttribute('is-hovered', this.hovered);\n this.toggleAttribute('is-hidden', !this.node?.visible);\n this.toggleAttribute('is-selected', !!this.node?.selected);\n this.toggleAttribute('is-partial', !!this.node?.partiallyVisible);\n this.toggleAttribute('is-leaf', !!this.node?.isLeaf);\n this.toggleAttribute('is-end-item', !!this.node?.endItem);\n this.toggleAttribute('is-filter-hit', !!this.node?.filterHit);\n }\n\n public render(): h.JSX.IntrinsicElements {\n // Overrides the `.hydrated` visibility when we have nothing to display\n const hiddenStyle =\n this.node == null ? { visibility: 'hidden' } : undefined;\n const backgroundColorStyle = this.getBackgroundColorStyle();\n\n const endItemIcon = this.getEndItemIcon();\n const expansionIcon = this.getExpansionIcon();\n const isolateIcon = this.getIsolateIcon();\n const visibilityIcon = this.getVisibilityIcon();\n\n const showSpaceForExpansionIcon = this.expandToggle && !endItemIcon;\n const showSpaceForEndItemIcon = endItemIcon && !showSpaceForExpansionIcon;\n\n return (\n <Host\n onPointerEnter={this.handleCellPointerEnter}\n onPointerLeave={this.handleCellPointerLeave}\n onPointerUp={this.handleCellPointerUp}\n onPointerDown={this.handleCellPointerDown}\n style={{\n ...hiddenStyle,\n 'background-color': backgroundColorStyle,\n }}\n >\n <div class=\"wrapper\">\n <div class=\"no-shrink\">\n <slot name=\"left-gutter\" />\n </div>\n {showSpaceForExpansionIcon && (\n <button\n class=\"expand-btn no-shrink\"\n data-testid={'expand-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleExpansion,\n )}\n aria-label=\"Cell expansion toggle\"\n >\n {expansionIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={expansionIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n {showSpaceForEndItemIcon && (\n <button\n class=\"end-item-btn no-shrink\"\n data-testid={'end-item-' + this.node?.name}\n aria-label=\"End item\"\n >\n {endItemIcon && (\n <vertex-viewer-icon\n class=\"end-item-icon\"\n name={endItemIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n\n <div class=\"content\">\n {this.value != null && this.value.trim() !== '' ? (\n <slot>{this.displayValue()}</slot>\n ) : (\n <slot name=\"placeholder\">{this.placeholder}</slot>\n )}\n </div>\n {this.isolateButton && (\n <button\n class=\"isolate-btn no-shrink\"\n data-testid={'isolate-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(this.isolate)}\n aria-label=\"Isolate\"\n >\n {isolateIcon && (\n <vertex-viewer-icon class=\"icon\" name=\"locate\" size=\"sm\" />\n )}\n </button>\n )}\n {this.visibilityToggle && (\n <button\n class=\"visibility-btn no-shrink\"\n data-testid={'visibility-btn-' + this.node?.name}\n onPointerUp={this.createActionPointerUpHandler(\n this.toggleVisibility,\n )}\n aria-label=\"Toggle visibility\"\n >\n {visibilityIcon && (\n <vertex-viewer-icon\n class=\"icon\"\n name={visibilityIcon}\n size=\"sm\"\n />\n )}\n </button>\n )}\n <div class=\"no-shrink\">\n <slot name=\"right-gutter\" />\n </div>\n {!this.visibilityToggle && !this.isolateButton && (\n <div class=\"column-spacer\" />\n )}\n </div>\n </Host>\n );\n }\n\n private displayValue = (): string => {\n const resp =\n this.value == null || this.value.trim() === ''\n ? this.placeholder\n : this.value;\n\n return resp;\n };\n\n private handleCellPointerEnter = (): void => {\n this.hoverController?.setHovered(this.node?.id?.hex);\n };\n\n private handleCellPointerLeave = (): void => {\n this.hoverController?.setHovered(undefined);\n };\n\n private handleCellPointerUp = (event: PointerEvent): void => {\n if (\n !this.isScrolling &&\n this.node != null &&\n this.tree != null &&\n this.longPressTimer != null\n ) {\n if (this.selectionHandler != null) {\n this.selectionHandler(event, this.node, this.tree);\n } else {\n this.performDefaultSelectionOperation(event);\n }\n this.selectionToggled.emit({ node: this.node, originalEvent: event });\n }\n this.clearLongPressTimer();\n };\n\n private handleCellPointerDown = (event: PointerEvent): void => {\n this.restartLongPressTimer();\n };\n\n private createActionPointerUpHandler = (\n action: (event: PointerEvent) => void,\n ): ((event: PointerEvent) => void) => {\n return (event) => {\n // Blur the `hostEl` after a `preventDefault` to clear focus that\n // is left on the element after `pointerdown` event.\n event.preventDefault();\n event.stopPropagation();\n blurElement(this.hostEl);\n\n action(event);\n };\n };\n\n private toggleExpansion = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.expansionHandler != null) {\n this.expansionHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultExpansionOperation(this.node, this.tree);\n }\n this.expandToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleVisibility = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.visibilityHandler != null) {\n this.visibilityHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultVisibilityOperation(this.node, this.tree);\n }\n this.visibilityToggled.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private toggleAttribute(attr: string, value: boolean): void {\n if (value) {\n this.hostEl.setAttribute(attr, '');\n } else {\n this.hostEl.removeAttribute(attr);\n }\n }\n\n private isolate = async (event: PointerEvent): Promise<void> => {\n if (this.tree != null && this.node != null) {\n if (this.isolateHandler != null) {\n this.isolateHandler(event, this.node, this.tree);\n } else {\n await this.performDefaultIsolateOperation(this.node, this.tree);\n }\n this.isolatePressed.emit({ node: this.node, originalEvent: event });\n }\n };\n\n private performDefaultSelectionOperation = (event: PointerEvent): void => {\n if (!event.defaultPrevented && event.button === 0) {\n if ((event.ctrlKey || event.metaKey) && this.node?.selected) {\n this.tree?.deselectItem(this.node);\n } else if (this.node?.selected) {\n this.tree?.selectItem(this.node, {\n recurseParent: true,\n });\n } else if (!this.node?.selected) {\n this.tree?.selectItem(this.node, {\n append: event.ctrlKey || event.metaKey,\n range: event.shiftKey,\n });\n }\n }\n };\n\n private performDefaultVisibilityOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.toggleItemVisibility(node);\n };\n\n private performDefaultIsolateOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.isolateItem(node);\n };\n\n private performDefaultExpansionOperation = async (\n node: Node.AsObject,\n tree: HTMLVertexSceneTreeElement,\n ): Promise<void> => {\n await tree.toggleExpandItem(node);\n };\n\n private clearLongPressTimer(): void {\n if (this.longPressTimer != null) {\n window.clearTimeout(this.longPressTimer);\n }\n this.longPressTimer = undefined;\n }\n\n private restartLongPressTimer(): void {\n this.clearLongPressTimer();\n this.longPressTimer = window.setTimeout(() => {\n this.clearLongPressTimer();\n }, Events.defaultEventConfig.longPressThreshold);\n }\n\n private getBackgroundColorStyle(): string {\n const backgroundColorStyle = this.getCssVariableWithFallbacks(\n `--scene-tree-row-background-color-depth-${this.node?.depth}`,\n '--scene-tree-row-background-color',\n );\n const selectedBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-selected-row-background-color',\n '--scene-tree-cell-background-selected',\n );\n const hoveredBackgroundColorStyle = this.getCssVariableWithFallbacks(\n '--scene-tree-hovered-row-background-color',\n '--scene-tree-cell-background-hover',\n );\n\n if (!!this.node?.selected) {\n return selectedBackgroundColorStyle;\n } else if (this.hovered) {\n return hoveredBackgroundColorStyle;\n }\n return backgroundColorStyle;\n }\n\n private getCssVariableWithFallbacks(\n variable: string,\n ...fallbacks: string[]\n ): string {\n const sequencedFallbacks = [...fallbacks].reverse();\n\n return [...sequencedFallbacks, variable].reduce(\n (res, s) => `var(${s}, ${res})`,\n 'unset',\n );\n }\n\n private getIsolateIcon(): ViewerIconName | undefined {\n if (this.hovered || this.alwaysShowIcons) {\n return 'locate';\n }\n return undefined;\n }\n\n private getExpansionIcon(): ViewerIconName | undefined {\n if (!this.node?.isLeaf && !this.node?.endItem) {\n return this.node?.expanded ? 'chevron-down' : 'chevron-right';\n }\n return undefined;\n }\n\n private getEndItemIcon(): ViewerIconName | undefined {\n // Return the end item icon for an item if it is set as an end item and either is not a leaf item\n // or matches the filter. Note that in the filtered view, an end item matching the filter will always be\n // marked as a leaf node because its children will be excluded from the search results and therefore\n // not present in the filtered tree.\n if (\n this.endItemIndicator &&\n this.node?.endItem &&\n (!this.node?.isLeaf || this.node?.filterHit)\n ) {\n return 'lock';\n }\n return undefined;\n }\n\n private getVisibilityIcon(): ViewerIconName | undefined {\n if (\n (this.hovered || this.alwaysShowIcons) &&\n !this.node?.partiallyVisible &&\n this.node?.visible\n ) {\n return 'eye-open';\n } else if (!this.node?.partiallyVisible && !this.node?.visible) {\n return 'eye-half';\n } else if (this.node?.partiallyVisible) {\n return 'eye-half-dotted';\n }\n return undefined;\n }\n}\n"]}
@@ -199,9 +199,9 @@ export class VertexPinLabel {
199
199
  maxHeight: this.computeMaxHeight(),
200
200
  borderColor: primaryColor,
201
201
  background: accentColor,
202
- } }, h("textarea", { key: 'faee5e02d2f9bd18dd2e367e4e52b4325ac3c782', id: `pin-label-input-${(_c = this.pin) === null || _c === void 0 ? void 0 : _c.id}`, class: classNames('pin-label-input', 'pin-label-text', {
202
+ } }, h("textarea", { key: 'beaf273457ceeadd30f709fff580f2af5b1c366a', id: `pin-label-input-${(_c = this.pin) === null || _c === void 0 ? void 0 : _c.id}`, class: classNames('pin-label-input', 'pin-label-text', {
203
203
  ['readonly']: !this.focused,
204
- }), disabled: !this.focused, ref: (ref) => (this.inputEl = ref), value: this.value, rows: this.textareaRows, onKeyDown: this.handleInputKeyDown, onInput: this.handleTextInput, onBlur: this.handleTextBlur }), !this.focused && (h("div", { key: '2851d39b6cf87c64ef585a9f1967c689f01d030e', class: "pin-input-drag-target", onPointerDown: this.handlePointerDown }))), h("div", { key: 'a7c2e114227e9fe744b0ef4e42c3fd5abd5c626e', ref: (el) => (this.contentEl = el), class: classNames('pin-label-text', 'pin-label-hidden'), style: {
204
+ }), disabled: !this.focused, ref: (ref) => (this.inputEl = ref), value: this.value, rows: this.textareaRows, onKeyDown: this.handleInputKeyDown, onInput: this.handleTextInput, onBlur: this.handleTextBlur, "aria-label": "Pin label input" }), !this.focused && (h("div", { key: '6ba9750253ae2e9de2a48a9b2ce31f6971b7b0a1', class: "pin-input-drag-target", onPointerDown: this.handlePointerDown }))), h("div", { key: '7a474943d854cda9fe7859a30441bcc06a758010', ref: (el) => (this.contentEl = el), class: classNames('pin-label-text', 'pin-label-hidden'), style: {
205
205
  maxWidth: this.computeMaxWidth(),
206
206
  maxHeight: this.computeMaxHeight(),
207
207
  } }, this.hiddenContent())));
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-pin-label.js","sourceRoot":"","sources":["../../../../../src/components/viewer-pin-label/viewer-pin-label.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\nimport classNames from 'classnames';\n\nimport { getMouseClientPosition } from '../../lib/dom';\nimport { PinController } from '../../lib/pins/controller';\nimport {\n getPinColors,\n isTextPin,\n PinModel,\n TextPin,\n} from '../../lib/pins/model';\nimport { readDOM } from '../../lib/stencil';\nimport {\n translatePointToRelative,\n translatePointToScreen,\n} from '../viewer-pin-tool/utils';\nimport { getComputedStyle } from './utils';\n\n@Component({\n tag: 'vertex-viewer-pin-label',\n styleUrl: 'viewer-pin-label.css',\n shadow: false,\n})\nexport class VertexPinLabel {\n /**\n * The pin to draw for the group\n */\n @Prop()\n public pin?: TextPin;\n\n /**\n * The dimensions of the canvas for the pins\n */\n @Prop()\n public elementBounds?: DOMRect;\n\n /**\n * The current text value of the component. Value is updated on user\n * interaction.\n */\n @Prop({ mutable: true })\n public value = '';\n\n /**\n * The controller that drives behavior for pin operations\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * @internal\n */\n @Event({ bubbles: true })\n public labelChanged!: EventEmitter<void>;\n\n /**\n * Emitted whenever the label is focused, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelFocused!: EventEmitter<string | undefined>;\n\n /**\n * Emitted whenever the label is blurred, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelBlurred!: EventEmitter<string | undefined>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private focused = false;\n\n @State()\n private computedScreenPosition?: Point.Point;\n\n @State()\n private textareaRows = 1;\n\n @State()\n private contentElBounds?: DOMRect;\n\n private relativePointerDownPosition?: Point.Point;\n private pinPointerDownPosition?: Point.Point;\n\n private inputEl?: HTMLTextAreaElement;\n private contentEl?: HTMLDivElement;\n\n private resizeObserver?: ResizeObserver;\n private contentResizeObserver?: ResizeObserver;\n\n /**\n * Gives focus to the component's internal text input.\n */\n @Method()\n public async setFocus(): Promise<void> {\n // HTMLInputElement.focus() doesn't exist in tests.\n if (typeof this.inputEl?.focus === 'function') {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n this.inputEl?.focus();\n }\n }\n\n /**\n * @internal\n * submits the current text, unfocuses the input and emits the blur event to consumers\n */\n @Method()\n public async submit(): Promise<void> {\n this.focused = false;\n this.labelBlurred.emit(this.pin?.id);\n if (this.pin != null) {\n this.pinController?.updatePin({\n ...this.pin,\n label: {\n point: this.pin.label.point,\n text: this.value,\n },\n });\n }\n }\n\n @Watch('focused')\n protected watchFocusChange(): void {\n this.labelChanged.emit();\n\n if (this.focused) {\n this.pinController?.setSelectedPinId(this.pin?.id);\n }\n }\n\n @Watch('pin')\n protected watchPinChange(): void {\n this.value = this.pin?.label.text ?? '';\n this.computeScreenPosition();\n }\n\n @Watch('elementBounds')\n protected watchElementBoundsChange(): void {\n this.computeScreenPosition();\n }\n\n protected componentWillLoad(): void {\n this.value = this.pin?.label.text ?? '';\n this.computeScreenPosition();\n\n if (this.pinController == null) {\n this.pinController = new PinController(new PinModel());\n }\n }\n\n protected componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => {\n this.labelChanged.emit();\n });\n\n this.contentResizeObserver = new ResizeObserver(this.computeContentSize);\n\n if (this.hostEl != null) {\n this.resizeObserver.observe(this.hostEl);\n }\n\n if (this.contentEl != null) {\n this.contentResizeObserver.observe(this.contentEl);\n }\n }\n\n protected disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.contentResizeObserver?.disconnect();\n }\n\n protected componentDidRender(): void {\n if (this.focused && this.inputEl != null) {\n this.setFocus();\n }\n }\n\n protected render(): JSX.Element {\n const { primaryColor, accentColor } = getPinColors(this.pin);\n return (\n <Host>\n <div\n class={classNames('pin-label-input-wrapper', {\n focused: this.focused,\n })}\n onPointerDown={this.handlePointerDown}\n style={{\n top: `${this.computedScreenPosition?.y.toString() || 0}px`,\n left: `${this.computedScreenPosition?.x.toString() || 0}px`,\n minWidth: this.computeMinWidth(),\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n borderColor: primaryColor,\n background: accentColor,\n }}\n >\n <textarea\n id={`pin-label-input-${this.pin?.id}`}\n class={classNames('pin-label-input', 'pin-label-text', {\n ['readonly']: !this.focused,\n })}\n disabled={!this.focused}\n ref={(ref) => (this.inputEl = ref)}\n value={this.value}\n rows={this.textareaRows}\n onKeyDown={this.handleInputKeyDown}\n onInput={this.handleTextInput}\n onBlur={this.handleTextBlur}\n />\n {/* This corrects for a behavior in Firefox where setting the `disabled` attribute to true */}\n {/* prevents any events from propagating. */}\n {!this.focused && (\n <div\n class=\"pin-input-drag-target\"\n onPointerDown={this.handlePointerDown}\n />\n )}\n </div>\n <div\n ref={(el) => (this.contentEl = el)}\n class={classNames('pin-label-text', 'pin-label-hidden')}\n style={{\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n }}\n >\n {this.hiddenContent()}\n </div>\n </Host>\n );\n }\n\n private hiddenContent(): Array<string | HTMLBRElement> {\n // This corrects some inconsistencies in how a newline character\n // is represented in a div. Leveraging `<br>`s results in a more\n // consistent representation of the newlines in a textarea.\n return this.value.includes('\\n')\n ? this.value\n .split('\\n')\n .reduce(\n (res, str) => [...res, str, <br />],\n [] as Array<string | HTMLBRElement>,\n )\n : [this.value];\n }\n\n private computeMinWidth(): string {\n if (this.contentElBounds != null) {\n const expected = `${this.contentElBounds.width + 8}px`;\n\n return `min(${expected}, ${this.computeMaxWidth()})`;\n } else {\n return `var(--viewer-annotations-pin-label-min-width)`;\n }\n }\n\n private computeMaxWidth(): string {\n const expected = `var(--viewer-annotations-pin-label-max-width)`;\n\n return `min(${expected}, ${this.computeRemainingWidth()})`;\n }\n\n private computeMaxHeight(): string {\n const expected = `var(--viewer-annotations-pin-label-max-height)`;\n\n return `min(${expected}, ${this.computeRemainingHeight()})`;\n }\n\n private computeRemainingWidth(): string {\n return `calc(${this.elementBounds?.width.toString() || 0}px - ${\n this.computedScreenPosition?.x.toString() || 0\n }px)`;\n }\n\n private computeRemainingHeight(): string {\n return `calc(${this.elementBounds?.height.toString() || 0}px - ${\n this.computedScreenPosition?.y.toString() || 0\n }px)`;\n }\n\n private computeScreenPosition(): void {\n this.computedScreenPosition =\n isTextPin(this.pin) &&\n this.elementBounds != null &&\n this.pin.label.point != null\n ? translatePointToScreen(this.pin.label.point, this.elementBounds)\n : undefined;\n }\n\n private computeContentSize = (): void => {\n readDOM(() => {\n if (this.contentEl != null) {\n this.contentElBounds = this.contentEl.getBoundingClientRect();\n const computedStyles = getComputedStyle(this.contentEl);\n this.textareaRows = Math.max(\n 1,\n Math.ceil(\n (Number.parseFloat(computedStyles.getPropertyValue('height')) -\n Number.parseFloat(\n computedStyles.getPropertyValue('borderWidth'),\n ) *\n 2) /\n Number.parseFloat(computedStyles.getPropertyValue('lineHeight')),\n ),\n );\n }\n });\n };\n\n private handleInputKeyDown = (event: KeyboardEvent): void => {\n event.stopPropagation();\n if (\n event.key === 'Enter' &&\n (event.ctrlKey || event.metaKey || event.shiftKey)\n ) {\n this.textareaRows += 1;\n this.value += '\\n';\n } else if (event.key === 'Enter') {\n event.preventDefault();\n this.submit();\n }\n };\n\n private handlePointerDown = (event: PointerEvent): void => {\n if (!this.focused) {\n if (this.elementBounds != null) {\n if (event.buttons !== 2) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.relativePointerDownPosition = translatePointToRelative(\n getMouseClientPosition(event, this.elementBounds),\n this.elementBounds,\n );\n this.pinPointerDownPosition = this.pin?.label.point;\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.elementBounds != null &&\n this.relativePointerDownPosition &&\n this.pinPointerDownPosition != null\n ) {\n // Prevent selection of any text while interacting with the label\n event.preventDefault();\n event.stopPropagation();\n\n const point = getMouseClientPosition(event, this.elementBounds);\n const relative = translatePointToRelative(point, this.elementBounds);\n\n const relativeDelta = Point.subtract(\n relative,\n this.relativePointerDownPosition,\n );\n\n const myUpdatedPin =\n this.pin != null\n ? {\n ...this.pin,\n label: {\n ...this.pin.label,\n point: Point.add(this.pinPointerDownPosition, relativeDelta),\n },\n }\n : undefined;\n\n if (myUpdatedPin) {\n this.pinController?.updatePin(myUpdatedPin);\n this.computeScreenPosition();\n }\n }\n };\n\n private handlePointerUp = (event: PointerEvent): void => {\n if (\n this.pinController?.getToolMode() === 'edit' &&\n this.relativePointerDownPosition != null &&\n this.elementBounds != null\n ) {\n const pointerDownScreen = translatePointToScreen(\n this.relativePointerDownPosition,\n this.elementBounds,\n );\n const distanceBetweenStartAndEndPoint = Point.distance(\n pointerDownScreen,\n getMouseClientPosition(event, this.elementBounds),\n );\n\n if (distanceBetweenStartAndEndPoint <= 2) {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n }\n }\n\n this.relativePointerDownPosition = undefined;\n this.pinPointerDownPosition = undefined;\n\n window.removeEventListener('pointermove', this.handlePointerMove);\n window.removeEventListener('pointerup', this.handlePointerUp);\n };\n\n private handleTextBlur = (): void => {\n this.submit();\n };\n\n private handleTextInput = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n };\n}\n"]}
1
+ {"version":3,"file":"viewer-pin-label.js","sourceRoot":"","sources":["../../../../../src/components/viewer-pin-label/viewer-pin-label.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\nimport classNames from 'classnames';\n\nimport { getMouseClientPosition } from '../../lib/dom';\nimport { PinController } from '../../lib/pins/controller';\nimport {\n getPinColors,\n isTextPin,\n PinModel,\n TextPin,\n} from '../../lib/pins/model';\nimport { readDOM } from '../../lib/stencil';\nimport {\n translatePointToRelative,\n translatePointToScreen,\n} from '../viewer-pin-tool/utils';\nimport { getComputedStyle } from './utils';\n\n@Component({\n tag: 'vertex-viewer-pin-label',\n styleUrl: 'viewer-pin-label.css',\n shadow: false,\n})\nexport class VertexPinLabel {\n /**\n * The pin to draw for the group\n */\n @Prop()\n public pin?: TextPin;\n\n /**\n * The dimensions of the canvas for the pins\n */\n @Prop()\n public elementBounds?: DOMRect;\n\n /**\n * The current text value of the component. Value is updated on user\n * interaction.\n */\n @Prop({ mutable: true })\n public value = '';\n\n /**\n * The controller that drives behavior for pin operations\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * @internal\n */\n @Event({ bubbles: true })\n public labelChanged!: EventEmitter<void>;\n\n /**\n * Emitted whenever the label is focused, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelFocused!: EventEmitter<string | undefined>;\n\n /**\n * Emitted whenever the label is blurred, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelBlurred!: EventEmitter<string | undefined>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private focused = false;\n\n @State()\n private computedScreenPosition?: Point.Point;\n\n @State()\n private textareaRows = 1;\n\n @State()\n private contentElBounds?: DOMRect;\n\n private relativePointerDownPosition?: Point.Point;\n private pinPointerDownPosition?: Point.Point;\n\n private inputEl?: HTMLTextAreaElement;\n private contentEl?: HTMLDivElement;\n\n private resizeObserver?: ResizeObserver;\n private contentResizeObserver?: ResizeObserver;\n\n /**\n * Gives focus to the component's internal text input.\n */\n @Method()\n public async setFocus(): Promise<void> {\n // HTMLInputElement.focus() doesn't exist in tests.\n if (typeof this.inputEl?.focus === 'function') {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n this.inputEl?.focus();\n }\n }\n\n /**\n * @internal\n * submits the current text, unfocuses the input and emits the blur event to consumers\n */\n @Method()\n public async submit(): Promise<void> {\n this.focused = false;\n this.labelBlurred.emit(this.pin?.id);\n if (this.pin != null) {\n this.pinController?.updatePin({\n ...this.pin,\n label: {\n point: this.pin.label.point,\n text: this.value,\n },\n });\n }\n }\n\n @Watch('focused')\n protected watchFocusChange(): void {\n this.labelChanged.emit();\n\n if (this.focused) {\n this.pinController?.setSelectedPinId(this.pin?.id);\n }\n }\n\n @Watch('pin')\n protected watchPinChange(): void {\n this.value = this.pin?.label.text ?? '';\n this.computeScreenPosition();\n }\n\n @Watch('elementBounds')\n protected watchElementBoundsChange(): void {\n this.computeScreenPosition();\n }\n\n protected componentWillLoad(): void {\n this.value = this.pin?.label.text ?? '';\n this.computeScreenPosition();\n\n if (this.pinController == null) {\n this.pinController = new PinController(new PinModel());\n }\n }\n\n protected componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => {\n this.labelChanged.emit();\n });\n\n this.contentResizeObserver = new ResizeObserver(this.computeContentSize);\n\n if (this.hostEl != null) {\n this.resizeObserver.observe(this.hostEl);\n }\n\n if (this.contentEl != null) {\n this.contentResizeObserver.observe(this.contentEl);\n }\n }\n\n protected disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.contentResizeObserver?.disconnect();\n }\n\n protected componentDidRender(): void {\n if (this.focused && this.inputEl != null) {\n this.setFocus();\n }\n }\n\n protected render(): JSX.Element {\n const { primaryColor, accentColor } = getPinColors(this.pin);\n return (\n <Host>\n <div\n class={classNames('pin-label-input-wrapper', {\n focused: this.focused,\n })}\n onPointerDown={this.handlePointerDown}\n style={{\n top: `${this.computedScreenPosition?.y.toString() || 0}px`,\n left: `${this.computedScreenPosition?.x.toString() || 0}px`,\n minWidth: this.computeMinWidth(),\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n borderColor: primaryColor,\n background: accentColor,\n }}\n >\n <textarea\n id={`pin-label-input-${this.pin?.id}`}\n class={classNames('pin-label-input', 'pin-label-text', {\n ['readonly']: !this.focused,\n })}\n disabled={!this.focused}\n ref={(ref) => (this.inputEl = ref)}\n value={this.value}\n rows={this.textareaRows}\n onKeyDown={this.handleInputKeyDown}\n onInput={this.handleTextInput}\n onBlur={this.handleTextBlur}\n aria-label=\"Pin label input\"\n />\n {/* This corrects for a behavior in Firefox where setting the `disabled` attribute to true */}\n {/* prevents any events from propagating. */}\n {!this.focused && (\n <div\n class=\"pin-input-drag-target\"\n onPointerDown={this.handlePointerDown}\n />\n )}\n </div>\n <div\n ref={(el) => (this.contentEl = el)}\n class={classNames('pin-label-text', 'pin-label-hidden')}\n style={{\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n }}\n >\n {this.hiddenContent()}\n </div>\n </Host>\n );\n }\n\n private hiddenContent(): Array<string | HTMLBRElement> {\n // This corrects some inconsistencies in how a newline character\n // is represented in a div. Leveraging `<br>`s results in a more\n // consistent representation of the newlines in a textarea.\n return this.value.includes('\\n')\n ? this.value\n .split('\\n')\n .reduce(\n (res, str) => [...res, str, <br />],\n [] as Array<string | HTMLBRElement>,\n )\n : [this.value];\n }\n\n private computeMinWidth(): string {\n if (this.contentElBounds != null) {\n const expected = `${this.contentElBounds.width + 8}px`;\n\n return `min(${expected}, ${this.computeMaxWidth()})`;\n } else {\n return `var(--viewer-annotations-pin-label-min-width)`;\n }\n }\n\n private computeMaxWidth(): string {\n const expected = `var(--viewer-annotations-pin-label-max-width)`;\n\n return `min(${expected}, ${this.computeRemainingWidth()})`;\n }\n\n private computeMaxHeight(): string {\n const expected = `var(--viewer-annotations-pin-label-max-height)`;\n\n return `min(${expected}, ${this.computeRemainingHeight()})`;\n }\n\n private computeRemainingWidth(): string {\n return `calc(${this.elementBounds?.width.toString() || 0}px - ${\n this.computedScreenPosition?.x.toString() || 0\n }px)`;\n }\n\n private computeRemainingHeight(): string {\n return `calc(${this.elementBounds?.height.toString() || 0}px - ${\n this.computedScreenPosition?.y.toString() || 0\n }px)`;\n }\n\n private computeScreenPosition(): void {\n this.computedScreenPosition =\n isTextPin(this.pin) &&\n this.elementBounds != null &&\n this.pin.label.point != null\n ? translatePointToScreen(this.pin.label.point, this.elementBounds)\n : undefined;\n }\n\n private computeContentSize = (): void => {\n readDOM(() => {\n if (this.contentEl != null) {\n this.contentElBounds = this.contentEl.getBoundingClientRect();\n const computedStyles = getComputedStyle(this.contentEl);\n this.textareaRows = Math.max(\n 1,\n Math.ceil(\n (Number.parseFloat(computedStyles.getPropertyValue('height')) -\n Number.parseFloat(\n computedStyles.getPropertyValue('borderWidth'),\n ) *\n 2) /\n Number.parseFloat(computedStyles.getPropertyValue('lineHeight')),\n ),\n );\n }\n });\n };\n\n private handleInputKeyDown = (event: KeyboardEvent): void => {\n event.stopPropagation();\n if (\n event.key === 'Enter' &&\n (event.ctrlKey || event.metaKey || event.shiftKey)\n ) {\n this.textareaRows += 1;\n this.value += '\\n';\n } else if (event.key === 'Enter') {\n event.preventDefault();\n this.submit();\n }\n };\n\n private handlePointerDown = (event: PointerEvent): void => {\n if (!this.focused) {\n if (this.elementBounds != null) {\n if (event.buttons !== 2) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.relativePointerDownPosition = translatePointToRelative(\n getMouseClientPosition(event, this.elementBounds),\n this.elementBounds,\n );\n this.pinPointerDownPosition = this.pin?.label.point;\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.elementBounds != null &&\n this.relativePointerDownPosition &&\n this.pinPointerDownPosition != null\n ) {\n // Prevent selection of any text while interacting with the label\n event.preventDefault();\n event.stopPropagation();\n\n const point = getMouseClientPosition(event, this.elementBounds);\n const relative = translatePointToRelative(point, this.elementBounds);\n\n const relativeDelta = Point.subtract(\n relative,\n this.relativePointerDownPosition,\n );\n\n const myUpdatedPin =\n this.pin != null\n ? {\n ...this.pin,\n label: {\n ...this.pin.label,\n point: Point.add(this.pinPointerDownPosition, relativeDelta),\n },\n }\n : undefined;\n\n if (myUpdatedPin) {\n this.pinController?.updatePin(myUpdatedPin);\n this.computeScreenPosition();\n }\n }\n };\n\n private handlePointerUp = (event: PointerEvent): void => {\n if (\n this.pinController?.getToolMode() === 'edit' &&\n this.relativePointerDownPosition != null &&\n this.elementBounds != null\n ) {\n const pointerDownScreen = translatePointToScreen(\n this.relativePointerDownPosition,\n this.elementBounds,\n );\n const distanceBetweenStartAndEndPoint = Point.distance(\n pointerDownScreen,\n getMouseClientPosition(event, this.elementBounds),\n );\n\n if (distanceBetweenStartAndEndPoint <= 2) {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n }\n }\n\n this.relativePointerDownPosition = undefined;\n this.pinPointerDownPosition = undefined;\n\n window.removeEventListener('pointermove', this.handlePointerMove);\n window.removeEventListener('pointerup', this.handlePointerUp);\n };\n\n private handleTextBlur = (): void => {\n this.submit();\n };\n\n private handleTextInput = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n };\n}\n"]}
@@ -33,7 +33,7 @@ export const TransformWidgetInput = ({ ref, identifier, disabled, onChange, onIn
33
33
  onUndo();
34
34
  }
35
35
  };
36
- return (h("input", { ref: ref, disabled: disabled, class: `widget-input ${identifier}`, type: "text", onChange: handleChange, onKeyDown: handleKeyDown, onBlur: onBlur }));
36
+ return (h("input", { ref: ref, disabled: disabled, class: `widget-input ${identifier}`, type: "text", onChange: handleChange, onKeyDown: handleKeyDown, onBlur: onBlur, "aria-label": "Transform widget input" }));
37
37
  };
38
38
  function constrainTo(dimension, length) {
39
39
  return Math.min(dimension, Math.max(0, length));
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-transform-widget-components.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/viewer-transform-widget-components.tsx"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,UAAU,EAAS,MAAM,qBAAqB,CAAC;AAkBxD,MAAM,CAAC,MAAM,2BAA2B,GAEpC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE;IACzE,MAAM,cAAc,GAAG,wBAAwB,CAC7C,QAAQ,EACR,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACjC,KAAK,EACL,SAAS,CACV,CAAC;IAEF,OAAO,CACL,WACE,GAAG,EAAE,GAAG,EACR,KAAK,EAAC,sBAAsB,EAC5B,KAAK,EAAE;YACL,GAAG,cAAc;YACjB,MAAM,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS;SAClE;QAEA,QAAQ;QACT,WAAK,KAAK,EAAC,oBAAoB,IAAE,WAAW,CAAC,IAAI,CAAC,eAAe,CAAO,CACpE,CACP,CAAC;AACJ,CAAC,CAAC;AAeF,MAAM,CAAC,MAAM,oBAAoB,GAE7B,CAAC,EACH,GAAG,EACH,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,GACP,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,CAAC,KAAY,EAAQ,EAAE;QAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAC7B,KAAK,CAAC,MAA2B,CAAC,KAAK,CACzC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,MAAM,CAAC,UAAU,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAQ,EAAE;QACnD,MAAM,wBAAwB,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAEhE,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YACrC,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,wBAAwB,IAAI,MAAM,EAAE,CAAC;YACnE,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,aACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,gBAAgB,UAAU,EAAE,EACnC,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,MAAM,GACP,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,SAAiB,EAAE,MAAc;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AASD,SAAS,wBAAwB,CAC/B,QAAkB,EAClB,eAAsC,EACtC,KAAkB,EAClB,SAAwC,EACxC,OAAO,GAAG,CAAC;IAEX,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC9C,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC;IACpD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,GAAG,OAAO,CAAC;IAEtD,SAAS,WAAW,CAAC,MAAc;QACjC,OAAO,GAAG,MAAM,IAAI,CAAC;IACvB,CAAC;IAED,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO;gBACL,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,EAAE,WAAW,CACjB,WAAW,CAAC,MAAM,GAAG,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CACrD;aACF,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,EAAE,WAAW,CACjB,WAAW,CAAC,MAAM,GAAG,YAAY,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CACrD;aACF,CAAC;QACJ,KAAK,aAAa;YAChB,OAAO;gBACL,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aAC9D,CAAC;QACJ,KAAK,cAAc,CAAC;QACpB;YACE,OAAO;gBACL,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aAC9D,CAAC;IACN,CAAC;AACH,CAAC","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { FunctionalComponent, h } from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { AngleUnits, DistanceUnits, Viewport } from '../../lib/types';\n\nexport type TransformWidgetInputPlacement =\n 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nexport interface TransformWidgetInputWrapperProps {\n ref: (el?: HTMLDivElement) => void;\n bounds?: DOMRect;\n\n viewport: Viewport;\n point: Point.Point;\n placement: TransformWidgetInputPlacement;\n\n displayUnit: DistanceUnits | AngleUnits;\n}\n\nexport const TransformWidgetInputWrapper: FunctionalComponent<\n TransformWidgetInputWrapperProps\n> = ({ ref, bounds, viewport, point, placement, displayUnit }, children) => {\n const inputPlacement = constrainInputToViewport(\n viewport,\n bounds ?? Dimensions.create(0, 0),\n point,\n placement,\n );\n\n return (\n <div\n ref={ref}\n class=\"widget-input wrapper\"\n style={{\n ...inputPlacement,\n height: bounds?.height != null ? `${bounds.height}px` : undefined,\n }}\n >\n {children}\n <div class=\"widget-input units\">{displayUnit.unit.abbreviatedName}</div>\n </div>\n );\n};\n\nexport interface TransformWidgetInputProps {\n ref: (el?: HTMLInputElement) => void;\n\n identifier?: string;\n disabled?: boolean;\n\n onChange?: (value: number) => void | Promise<void>;\n onIncrement?: VoidFunction;\n onDecrement?: VoidFunction;\n onBlur?: VoidFunction;\n onUndo?: VoidFunction;\n}\n\nexport const TransformWidgetInput: FunctionalComponent<\n TransformWidgetInputProps\n> = ({\n ref,\n identifier,\n disabled,\n onChange,\n onIncrement,\n onDecrement,\n onBlur,\n onUndo,\n}) => {\n const handleChange = (event: Event): void => {\n if (event.target != null) {\n const parsed = Number.parseFloat(\n (event.target as HTMLInputElement).value,\n );\n\n if (!Number.isNaN(parsed)) {\n onChange?.(Number.parseFloat((event.target as HTMLInputElement).value));\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n const commandOrControlModifier = event.ctrlKey || event.metaKey;\n\n if (event.key === 'ArrowUp') {\n onIncrement?.();\n } else if (event.key === 'ArrowDown') {\n onDecrement?.();\n } else if (event.key === 'z' && commandOrControlModifier && onUndo) {\n event.preventDefault();\n\n onUndo();\n }\n };\n\n return (\n <input\n ref={ref}\n disabled={disabled}\n class={`widget-input ${identifier}`}\n type=\"text\"\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={onBlur}\n ></input>\n );\n};\n\nfunction constrainTo(dimension: number, length: number): number {\n return Math.min(dimension, Math.max(0, length));\n}\n\ninterface InputPlacement {\n left?: string;\n right?: string;\n top?: string;\n bottom?: string;\n}\n\nfunction constrainInputToViewport(\n viewport: Viewport,\n inputDimensions: Dimensions.Dimensions,\n point: Point.Point,\n placement: TransformWidgetInputPlacement,\n padding = 5,\n): InputPlacement {\n const { width, height } = viewport.dimensions;\n const paddedWidth = inputDimensions.width + padding;\n const paddedHeight = inputDimensions.height + padding;\n\n function toCssLength(length: number): string {\n return `${length}px`;\n }\n\n switch (placement) {\n case 'top-left':\n return {\n right: toCssLength(constrainTo(width - paddedWidth, width - point.x)),\n bottom: toCssLength(\n constrainTo(height - paddedHeight, height - point.y),\n ),\n };\n case 'top-right':\n return {\n left: toCssLength(constrainTo(width - paddedWidth, point.x)),\n bottom: toCssLength(\n constrainTo(height - paddedHeight, height - point.y),\n ),\n };\n case 'bottom-left':\n return {\n right: toCssLength(constrainTo(width - paddedWidth, width - point.x)),\n top: toCssLength(constrainTo(height - paddedHeight, point.y)),\n };\n case 'bottom-right':\n default:\n return {\n left: toCssLength(constrainTo(width - paddedWidth, point.x)),\n top: toCssLength(constrainTo(height - paddedHeight, point.y)),\n };\n }\n}\n"]}
1
+ {"version":3,"file":"viewer-transform-widget-components.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/viewer-transform-widget-components.tsx"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { FunctionalComponent, h } from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { AngleUnits, DistanceUnits, Viewport } from '../../lib/types';\n\nexport type TransformWidgetInputPlacement =\n 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nexport interface TransformWidgetInputWrapperProps {\n ref: (el?: HTMLDivElement) => void;\n bounds?: DOMRect;\n\n viewport: Viewport;\n point: Point.Point;\n placement: TransformWidgetInputPlacement;\n\n displayUnit: DistanceUnits | AngleUnits;\n}\n\nexport const TransformWidgetInputWrapper: FunctionalComponent<\n TransformWidgetInputWrapperProps\n> = ({ ref, bounds, viewport, point, placement, displayUnit }, children) => {\n const inputPlacement = constrainInputToViewport(\n viewport,\n bounds ?? Dimensions.create(0, 0),\n point,\n placement,\n );\n\n return (\n <div\n ref={ref}\n class=\"widget-input wrapper\"\n style={{\n ...inputPlacement,\n height: bounds?.height != null ? `${bounds.height}px` : undefined,\n }}\n >\n {children}\n <div class=\"widget-input units\">{displayUnit.unit.abbreviatedName}</div>\n </div>\n );\n};\n\nexport interface TransformWidgetInputProps {\n ref: (el?: HTMLInputElement) => void;\n\n identifier?: string;\n disabled?: boolean;\n\n onChange?: (value: number) => void | Promise<void>;\n onIncrement?: VoidFunction;\n onDecrement?: VoidFunction;\n onBlur?: VoidFunction;\n onUndo?: VoidFunction;\n}\n\nexport const TransformWidgetInput: FunctionalComponent<\n TransformWidgetInputProps\n> = ({\n ref,\n identifier,\n disabled,\n onChange,\n onIncrement,\n onDecrement,\n onBlur,\n onUndo,\n}) => {\n const handleChange = (event: Event): void => {\n if (event.target != null) {\n const parsed = Number.parseFloat(\n (event.target as HTMLInputElement).value,\n );\n\n if (!Number.isNaN(parsed)) {\n onChange?.(Number.parseFloat((event.target as HTMLInputElement).value));\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n const commandOrControlModifier = event.ctrlKey || event.metaKey;\n\n if (event.key === 'ArrowUp') {\n onIncrement?.();\n } else if (event.key === 'ArrowDown') {\n onDecrement?.();\n } else if (event.key === 'z' && commandOrControlModifier && onUndo) {\n event.preventDefault();\n\n onUndo();\n }\n };\n\n return (\n <input\n ref={ref}\n disabled={disabled}\n class={`widget-input ${identifier}`}\n type=\"text\"\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={onBlur}\n aria-label=\"Transform widget input\"\n />\n );\n};\n\nfunction constrainTo(dimension: number, length: number): number {\n return Math.min(dimension, Math.max(0, length));\n}\n\ninterface InputPlacement {\n left?: string;\n right?: string;\n top?: string;\n bottom?: string;\n}\n\nfunction constrainInputToViewport(\n viewport: Viewport,\n inputDimensions: Dimensions.Dimensions,\n point: Point.Point,\n placement: TransformWidgetInputPlacement,\n padding = 5,\n): InputPlacement {\n const { width, height } = viewport.dimensions;\n const paddedWidth = inputDimensions.width + padding;\n const paddedHeight = inputDimensions.height + padding;\n\n function toCssLength(length: number): string {\n return `${length}px`;\n }\n\n switch (placement) {\n case 'top-left':\n return {\n right: toCssLength(constrainTo(width - paddedWidth, width - point.x)),\n bottom: toCssLength(\n constrainTo(height - paddedHeight, height - point.y),\n ),\n };\n case 'top-right':\n return {\n left: toCssLength(constrainTo(width - paddedWidth, point.x)),\n bottom: toCssLength(\n constrainTo(height - paddedHeight, height - point.y),\n ),\n };\n case 'bottom-left':\n return {\n right: toCssLength(constrainTo(width - paddedWidth, width - point.x)),\n top: toCssLength(constrainTo(height - paddedHeight, point.y)),\n };\n case 'bottom-right':\n default:\n return {\n left: toCssLength(constrainTo(width - paddedWidth, point.x)),\n top: toCssLength(constrainTo(height - paddedHeight, point.y)),\n };\n }\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import "threadsx/register";
5
- import { Pool, spawn } from "threadsx";
4
+ import { Pool, spawn, Worker } from "threadsx";
6
5
  import { pngDecoderWorkerUrl } from "./worker-url";
7
6
  let poolLoader;
8
7
  const DEFAULT_POOL_SIZE = 1;
@@ -20,7 +19,9 @@ function getPool() {
20
19
  if (poolLoader == null) {
21
20
  const size = getPoolSize();
22
21
  console.debug(`Spawning PNG worker pool [size=${size}]`);
23
- poolLoader = Pool(() => spawn(new Worker(pngDecoderWorkerUrl)), { size });
22
+ poolLoader = Pool(
23
+ // threadsx applies its cross-origin workaround only to string URLs.
24
+ () => spawn(new Worker(pngDecoderWorkerUrl.href)), { size });
24
25
  }
25
26
  return poolLoader;
26
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"png-decoder-pool.js","sourceRoot":"","sources":["../../../../src/workers/png-decoder-pool.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAa,IAAI,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,IAAI,UAAqC,CAAC;AAE1C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,SAAS,WAAW;;IAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,mBAAmB,mCAAI,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,OAAO;IACd,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,GAAG,CAAC,CAAC;QACzD,UAAU,GAAG,IAAI,CACf,GAAG,EAAE,CAAC,KAAK,CAAc,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,EACzD,EAAE,IAAI,EAAE,CACT,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAgB,KAAK,EAAE,KAAK,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAmB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC","sourcesContent":["import 'threadsx/register';\n\nimport { ExposedAs, Pool, spawn } from 'threadsx';\n\nimport type { DecodePngFn } from './png-decoder.worker';\nimport { pngDecoderWorkerUrl } from './worker-url';\n\ntype DecodePngPool = Pool<ExposedAs<DecodePngFn>>;\n\nlet poolLoader: DecodePngPool | undefined;\n\nconst DEFAULT_POOL_SIZE = 1;\n\nfunction getPoolSize(): number {\n if (typeof window !== 'undefined') {\n const concurrency = window.navigator.hardwareConcurrency ?? 8;\n return Math.ceil(concurrency / 4);\n } else {\n return DEFAULT_POOL_SIZE;\n }\n}\n\nfunction getPool(): DecodePngPool {\n if (poolLoader == null) {\n const size = getPoolSize();\n console.debug(`Spawning PNG worker pool [size=${size}]`);\n poolLoader = Pool(\n () => spawn<DecodePngFn>(new Worker(pngDecoderWorkerUrl)),\n { size },\n );\n }\n return poolLoader;\n}\n\nexport const decodePng: DecodePngFn = async (bytes) => {\n const pool = getPool();\n return pool.queue((decode: DecodePngFn) => decode(bytes));\n};\n"]}
1
+ {"version":3,"file":"png-decoder-pool.js","sourceRoot":"","sources":["../../../../src/workers/png-decoder-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,IAAI,UAAqC,CAAC;AAE1C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,SAAS,WAAW;;IAClB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,mBAAmB,mCAAI,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,OAAO;IACd,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,GAAG,CAAC,CAAC;QACzD,UAAU,GAAG,IAAI;QACf,oEAAoE;QACpE,GAAG,EAAE,CAAC,KAAK,CAAc,IAAI,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAC9D,EAAE,IAAI,EAAE,CACT,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAgB,KAAK,EAAE,KAAK,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAmB,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC","sourcesContent":["import { ExposedAs, Pool, spawn, Worker } from 'threadsx';\n\nimport type { DecodePngFn } from './png-decoder.worker';\nimport { pngDecoderWorkerUrl } from './worker-url';\n\ntype DecodePngPool = Pool<ExposedAs<DecodePngFn>>;\n\nlet poolLoader: DecodePngPool | undefined;\n\nconst DEFAULT_POOL_SIZE = 1;\n\nfunction getPoolSize(): number {\n if (typeof window !== 'undefined') {\n const concurrency = window.navigator.hardwareConcurrency ?? 8;\n return Math.ceil(concurrency / 4);\n } else {\n return DEFAULT_POOL_SIZE;\n }\n}\n\nfunction getPool(): DecodePngPool {\n if (poolLoader == null) {\n const size = getPoolSize();\n console.debug(`Spawning PNG worker pool [size=${size}]`);\n poolLoader = Pool(\n // threadsx applies its cross-origin workaround only to string URLs.\n () => spawn<DecodePngFn>(new Worker(pngDecoderWorkerUrl.href)),\n { size },\n );\n }\n return poolLoader;\n}\n\nexport const decodePng: DecodePngFn = async (bytes) => {\n const pool = getPool();\n return pool.queue((decode: DecodePngFn) => decode(bytes));\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{g as o}from"./p-Bb32XUUS.js";export{a as getAssetPath,r as render,s as setAssetPath,b as setNonce,c as setPlatformOptions}from"./p-Bb32XUUS.js";export{C as Camera,c as ColorMaterial,a as CrossSectioner,I as ItemOperationBuilder,l as LoadableResource,M as ModelViewController,P as PmiAnnotationOperationsBuilder,b as PmiAnnotationsQueryExecutor,k as PmiController,R as Raycaster,d as RootQuery,S as Scene,e as SceneElementQueryExecutor,f as SceneElementsOperationExecutor,g as SceneItemOperationsBuilder,h as SceneItemQueryExecutor,i as SceneItemsOperationExecutor,s as SceneViewStateIdentifier,j as SynchronizedClock}from"./p-Cku0WCYo.js";export{S as SceneTreeController}from"./p-DMG1CW3A.js";export{f as fromNodeProto,i as isLoadedRow}from"./p-DeUGB_Ik.js";export{S as SCENE_ITEM_NAME_METADATA_KEY}from"./p-BZwvQkyb.js";export{C as CursorManager,b as boxQueryCursor,l as labelPinCursor,m as measurementCursor,a as measurementWithArrowCursor,p as pinCursor}from"./p-DxMDDbmh.js";export{M as MeasurementController,a as MeasurementEntity}from"./p-D1Vdomj_.js";export{M as MeasurementModel}from"./p-BY3lpCm6.js";export{M as MeasurementOverlayManager}from"./p-DyL2wWm6.js";export{m as makeMinimumDistanceResult}from"./p-_qi2VkC2.js";import{v as n,q as u,m as x}from"./p-2UsvOTHJ.js";export{T as TransformController}from"./p-C12jtCFb.js";export{f as flattenPointArray,a as toDegreesTransform,e as toLocalTransform,b as toMatrix,t as toRadiansTransform,c as toTransform,d as toWorldTransform}from"./p-BT9d9jRt.js";export{A as AngleUnits,h as AreaUnits,c as CrossSectioning,D as DistanceUnits,E as EntityType,f as FrameCamera,F as FrameCameraBase,O as Orientation,a as ReceivedFrame,b as ReceivedFrameImage,d as ReceivedFrameScene,e as ReceivedOrthographicCamera,g as ReceivedPerspectiveCamera,S as StandardView}from"./p-CvEK3ZK1.js";export{A as ArrowMarkup,C as CircleMarkup,F as FreeformMarkup}from"./p-JvS9LLoO.js";export{V as Viewport}from"./p-CeZe0Qql.js";export{V as VolumeIntersectionQueryController,a as VolumeIntersectionQueryModel}from"./p-Bdf4AcJ2.js";const y=.9999;function v(e){const r=n.create(0,e.z,-e.y);const a=n.create(-e.z,0,e.x);const s=n.magnitudeSquared(r)>n.magnitudeSquared(a)?r:a;return n.normalize(n.cross(e,s))}function _(e,r){const a=n.dot(e,r);if(a>y){const r=v(e);const a=u.fromAxisAngle(r,Math.PI);return x.transpose(x.makeRotation(a))}else if(a<=-y){return x.makeIdentity()}else{const a=n.angleTo(r,e);const s=n.normalize(n.cross(e,r));return x.transpose(x.makeRotation(u.fromAxisAngle(s,a+Math.PI)))}}function B(e,r,a,s){const o=_(e,a);const t=x.makeTranslation(s);return x.multiply(x.makeTranslation(n.negate(r)),x.multiply(o,t))}var w=Object.freeze({__proto__:null,ALMOST_ONE:y,calculateOrthogonalCoordinate:v,computeRotationMatrix:_,computeTransformationDelta:B});o();export{w as TransformationDelta};
4
+ import{g as o}from"./p-Bb32XUUS.js";export{a as getAssetPath,r as render,s as setAssetPath,b as setNonce,c as setPlatformOptions}from"./p-Bb32XUUS.js";export{C as Camera,c as ColorMaterial,a as CrossSectioner,I as ItemOperationBuilder,l as LoadableResource,M as ModelViewController,P as PmiAnnotationOperationsBuilder,b as PmiAnnotationsQueryExecutor,k as PmiController,R as Raycaster,d as RootQuery,S as Scene,e as SceneElementQueryExecutor,f as SceneElementsOperationExecutor,g as SceneItemOperationsBuilder,h as SceneItemQueryExecutor,i as SceneItemsOperationExecutor,s as SceneViewStateIdentifier,j as SynchronizedClock}from"./p-CSVgoQU8.js";export{S as SceneTreeController}from"./p-DMG1CW3A.js";export{f as fromNodeProto,i as isLoadedRow}from"./p-DeUGB_Ik.js";export{S as SCENE_ITEM_NAME_METADATA_KEY}from"./p-BZwvQkyb.js";export{C as CursorManager,b as boxQueryCursor,l as labelPinCursor,m as measurementCursor,a as measurementWithArrowCursor,p as pinCursor}from"./p-DxMDDbmh.js";export{M as MeasurementController,a as MeasurementEntity}from"./p-D_h07qsA.js";export{M as MeasurementModel}from"./p-BY3lpCm6.js";export{M as MeasurementOverlayManager}from"./p-DyL2wWm6.js";export{m as makeMinimumDistanceResult}from"./p-_qi2VkC2.js";import{v as n,q as u,m as x}from"./p-2UsvOTHJ.js";export{T as TransformController}from"./p-C12jtCFb.js";export{f as flattenPointArray,a as toDegreesTransform,e as toLocalTransform,b as toMatrix,t as toRadiansTransform,c as toTransform,d as toWorldTransform}from"./p-BT9d9jRt.js";export{A as AngleUnits,h as AreaUnits,c as CrossSectioning,D as DistanceUnits,E as EntityType,f as FrameCamera,F as FrameCameraBase,O as Orientation,a as ReceivedFrame,b as ReceivedFrameImage,d as ReceivedFrameScene,e as ReceivedOrthographicCamera,g as ReceivedPerspectiveCamera,S as StandardView}from"./p-BjvjKoy7.js";export{A as ArrowMarkup,C as CircleMarkup,F as FreeformMarkup}from"./p-JvS9LLoO.js";export{V as Viewport}from"./p-CeZe0Qql.js";export{V as VolumeIntersectionQueryController,a as VolumeIntersectionQueryModel}from"./p-Bdf4AcJ2.js";const y=.9999;function v(e){const r=n.create(0,e.z,-e.y);const a=n.create(-e.z,0,e.x);const s=n.magnitudeSquared(r)>n.magnitudeSquared(a)?r:a;return n.normalize(n.cross(e,s))}function B(e,r){const a=n.dot(e,r);if(a>y){const r=v(e);const a=u.fromAxisAngle(r,Math.PI);return x.transpose(x.makeRotation(a))}else if(a<=-y){return x.makeIdentity()}else{const a=n.angleTo(r,e);const s=n.normalize(n.cross(e,r));return x.transpose(x.makeRotation(u.fromAxisAngle(s,a+Math.PI)))}}function _(e,r,a,s){const o=B(e,a);const t=x.makeTranslation(s);return x.multiply(x.makeTranslation(n.negate(r)),x.multiply(o,t))}var Q=Object.freeze({__proto__:null,ALMOST_ONE:y,calculateOrthogonalCoordinate:v,computeRotationMatrix:B,computeTransformationDelta:_});o();export{Q as TransformationDelta};
5
5
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{o as e}from"./p-CDM7zNn0.js";import{d as t}from"./p-CPk-nchx.js";import"./p-CvEK3ZK1.js";const s=500;const r={durationMs:s};const n={throttleFrameDelivery:true,adaptiveRendering:true,logWsMessages:false,logFrameRate:false,letterboxFrames:false,grpcUseStreamingWebSocketTransport:true};const o={finePointerThreshold:1,coarsePointerThreshold:3,interactionDelay:75,useMinimumPerspectiveZoomDistance:true,mouseWheelInteractionEndDebounce:400,reverseMouseWheelDirection:false};const i={network:{apiHost:"https://platform.platprod.vertexvis.io",renderingHost:"wss://stream.platprod.vertexvis.io",sceneTreeHost:"https://scene-trees.platprod.vertexvis.io",sceneViewHost:"https://scenes.platprod.vertexvis.io"},flags:n,events:t,animation:r,interactions:o,EXPERIMENTAL_frameDelivery:{},EXPERIMENTAL_adaptiveRendering:{},EXPERIMENTAL_qualityOfService:{},EXPERIMENTAL_annotationPollingIntervalInMs:undefined};const a={...i,network:{apiHost:"https://platform.platdev.vertexvis.io",renderingHost:"wss://stream.platdev.vertexvis.io",sceneTreeHost:"https://scene-trees.platdev.vertexvis.io",sceneViewHost:"https://scenes.platdev.vertexvis.io"}};const p={...i,network:{apiHost:"https://platform.platstaging.vertexvis.io",renderingHost:"wss://stream.platstaging.vertexvis.io",sceneTreeHost:"https://scene-trees.platstaging.vertexvis.io",sceneViewHost:"https://scenes.platstaging.vertexvis.io"}};function c(e){switch(e){case"platdev":return a;case"platstaging":return p;default:return i}}function l(e="platprod",t){const s=v(e,t);return u(d(s))}function v(t="platprod",s){if(typeof s==="string"){s=JSON.parse(s)}const r=c(t);if(s==null){return r}else{return e.defaults({...s},r)}}function d(e){const t=e.network.apiHost.trim();const s=e.network.renderingHost.trim();const r=e.network.sceneTreeHost.trim();const n=e.network.sceneViewHost.trim();return{...e,network:{...e.network,apiHost:t,renderingHost:s,sceneTreeHost:r,sceneViewHost:n}}}function u(e){f(e.network,"apiHost","https://");f(e.network,"renderingHost","wss://");f(e.network,"sceneTreeHost","https://");f(e.network,"sceneViewHost","https://");return e}function f(e,t,s){if(!e[t].startsWith(s)){throw new Error(`Invalid ${t} "${e[t]}" specified. The URL must start with the ${s} scheme.`)}}export{l as p};
5
- //# sourceMappingURL=p-COznr3CH.js.map
4
+ import{o as e}from"./p-CDM7zNn0.js";import{d as t}from"./p-CPk-nchx.js";import"./p-BjvjKoy7.js";const s=500;const r={durationMs:s};const n={throttleFrameDelivery:true,adaptiveRendering:true,logWsMessages:false,logFrameRate:false,letterboxFrames:false,grpcUseStreamingWebSocketTransport:true};const o={finePointerThreshold:1,coarsePointerThreshold:3,interactionDelay:75,useMinimumPerspectiveZoomDistance:true,mouseWheelInteractionEndDebounce:400,reverseMouseWheelDirection:false};const i={network:{apiHost:"https://platform.platprod.vertexvis.io",renderingHost:"wss://stream.platprod.vertexvis.io",sceneTreeHost:"https://scene-trees.platprod.vertexvis.io",sceneViewHost:"https://scenes.platprod.vertexvis.io"},flags:n,events:t,animation:r,interactions:o,EXPERIMENTAL_frameDelivery:{},EXPERIMENTAL_adaptiveRendering:{},EXPERIMENTAL_qualityOfService:{},EXPERIMENTAL_annotationPollingIntervalInMs:undefined};const a={...i,network:{apiHost:"https://platform.platdev.vertexvis.io",renderingHost:"wss://stream.platdev.vertexvis.io",sceneTreeHost:"https://scene-trees.platdev.vertexvis.io",sceneViewHost:"https://scenes.platdev.vertexvis.io"}};const p={...i,network:{apiHost:"https://platform.platstaging.vertexvis.io",renderingHost:"wss://stream.platstaging.vertexvis.io",sceneTreeHost:"https://scene-trees.platstaging.vertexvis.io",sceneViewHost:"https://scenes.platstaging.vertexvis.io"}};function c(e){switch(e){case"platdev":return a;case"platstaging":return p;default:return i}}function l(e="platprod",t){const s=v(e,t);return u(d(s))}function v(t="platprod",s){if(typeof s==="string"){s=JSON.parse(s)}const r=c(t);if(s==null){return r}else{return e.defaults({...s},r)}}function d(e){const t=e.network.apiHost.trim();const s=e.network.renderingHost.trim();const r=e.network.sceneTreeHost.trim();const n=e.network.sceneViewHost.trim();return{...e,network:{...e.network,apiHost:t,renderingHost:s,sceneTreeHost:r,sceneViewHost:n}}}function u(e){f(e.network,"apiHost","https://");f(e.network,"renderingHost","wss://");f(e.network,"sceneTreeHost","https://");f(e.network,"sceneViewHost","https://");return e}function f(e,t,s){if(!e[t].startsWith(s)){throw new Error(`Invalid ${t} "${e[t]}" specified. The URL must start with the ${s} scheme.`)}}export{l as p};
5
+ //# sourceMappingURL=p-5bk1mHRt.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{d as s,e as a,f as e}from"./p-FRKLa468.js";import{m as o}from"./p-CDM7zNn0.js";import{l as t,X as i,s as n,Y as m}from"./p-CvEK3ZK1.js";var d=s();var r=a();const p=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName"),o.mapRequiredProp("partRevisionId",t),o.mapRequiredProp("camera",i)),(([s,a,e,o])=>({id:s,displayName:a,partRevisionId:e,camera:o})));const c=o.defineMapper(o.read(o.mapProp("modelViewsList",o.mapArray(p)),o.mapProp("nextPageCursor",n)),(([s,a])=>({modelViews:s,paging:{next:a}})));const l=o.ifInvalidThrow(c);const I=o.defineMapper(o.read(o.mapProp("modelViewId",m),o.mapProp("sceneItemId",m)),(([s,a])=>({modelViewId:s,sceneItemId:a})));const g=o.ifInvalidThrow(I);const v=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName")),(([s,a])=>({id:s,displayName:a})));const x=o.defineMapper(o.read(o.mapProp("annotationsList",o.mapArray(v)),o.mapProp("nextPageCursor",n)),(([s,a])=>({annotations:s,paging:{next:a}})));const N=o.ifInvalidThrow(x);var f=e();export{g as a,N as b,l as m,d as p,f as r,r as u};
5
- //# sourceMappingURL=p-D3bzgaCV.js.map
4
+ import{d as s,e as a,f as e}from"./p-FRKLa468.js";import{m as o}from"./p-CDM7zNn0.js";import{l as t,X as i,s as n,Y as m}from"./p-BjvjKoy7.js";var d=s();var r=a();const p=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName"),o.mapRequiredProp("partRevisionId",t),o.mapRequiredProp("camera",i)),(([s,a,e,o])=>({id:s,displayName:a,partRevisionId:e,camera:o})));const c=o.defineMapper(o.read(o.mapProp("modelViewsList",o.mapArray(p)),o.mapProp("nextPageCursor",n)),(([s,a])=>({modelViews:s,paging:{next:a}})));const l=o.ifInvalidThrow(c);const I=o.defineMapper(o.read(o.mapProp("modelViewId",m),o.mapProp("sceneItemId",m)),(([s,a])=>({modelViewId:s,sceneItemId:a})));const g=o.ifInvalidThrow(I);const v=o.defineMapper(o.read(o.mapRequiredProp("id",t),o.getProp("displayName")),(([s,a])=>({id:s,displayName:a})));const j=o.defineMapper(o.read(o.mapProp("annotationsList",o.mapArray(v)),o.mapProp("nextPageCursor",n)),(([s,a])=>({annotations:s,paging:{next:a}})));const x=o.ifInvalidThrow(j);var y=e();export{g as a,x as b,l as m,d as p,y as r,r as u};
5
+ //# sourceMappingURL=p-B8530k7R.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{b as a,c as s}from"./p-FRKLa468.js";import{m as t}from"./p-CDM7zNn0.js";import{W as n,o as e}from"./p-CvEK3ZK1.js";var o=a();const p=t.defineMapper(t.read(t.mapRequiredProp("start",n),t.mapRequiredProp("end",n)),(([a,s])=>({start:a,end:s})));const c=t.defineMapper(t.read(t.getProp("distance"),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("start"))),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("end")))),(([a,s,t])=>({type:"planar-distance",distance:a,plane1:s,plane2:t})));const r=t.defineMapper(t.read(t.getProp("angleInRadians"),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("start"))),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("end")))),(([a,s,t])=>({type:"planar-angle",angle:a,plane1:s,plane2:t})));const i=t.defineMapper(t.read(t.getProp("distance"),t.mapRequiredProp("closestPoint1",e),t.mapRequiredProp("closestPoint2",e)),(([a,s,t])=>({type:"minimum-distance",distance:a,point1:s,point2:t})));const l=t.defineMapper(t.read(t.getProp("area")),(([a])=>({type:"surface-area",area:a})));const m=t.mapProp("planarDistance",t.ifDefined(c));const d=t.mapProp("planarAngle",t.ifDefined(r));const u=t.mapProp("minimumDistance",t.ifDefined(i));const f=t.mapProp("totalSurfaceArea",t.ifDefined(l));const g=t.compose(t.pickFirst(m,d,u,f),t.required("Result field"));const y=t.defineMapper(t.read(t.mapRequiredProp("outcome",t.mapRequiredProp("resultsList",t.mapArray(g))),t.mapRequiredProp("outcome",t.getProp("isApproximate"))),(([a,s])=>({results:a,isApproximate:s})));const A=t.ifInvalidThrow(y);var j=s();export{A as a,j as g,o as m};
5
- //# sourceMappingURL=p-CWcvgy8e.js.map
4
+ import{b as a,c as s}from"./p-FRKLa468.js";import{m as t}from"./p-CDM7zNn0.js";import{W as n,o as e}from"./p-BjvjKoy7.js";var o=a();const p=t.defineMapper(t.read(t.mapRequiredProp("start",n),t.mapRequiredProp("end",n)),(([a,s])=>({start:a,end:s})));const c=t.defineMapper(t.read(t.getProp("distance"),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("start"))),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("end")))),(([a,s,t])=>({type:"planar-distance",distance:a,plane1:s,plane2:t})));const r=t.defineMapper(t.read(t.getProp("angleInRadians"),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("start"))),t.mapRequiredProp("planes",t.compose(p,t.requiredProp("end")))),(([a,s,t])=>({type:"planar-angle",angle:a,plane1:s,plane2:t})));const i=t.defineMapper(t.read(t.getProp("distance"),t.mapRequiredProp("closestPoint1",e),t.mapRequiredProp("closestPoint2",e)),(([a,s,t])=>({type:"minimum-distance",distance:a,point1:s,point2:t})));const l=t.defineMapper(t.read(t.getProp("area")),(([a])=>({type:"surface-area",area:a})));const m=t.mapProp("planarDistance",t.ifDefined(c));const d=t.mapProp("planarAngle",t.ifDefined(r));const u=t.mapProp("minimumDistance",t.ifDefined(i));const f=t.mapProp("totalSurfaceArea",t.ifDefined(l));const g=t.compose(t.pickFirst(m,d,u,f),t.required("Result field"));const j=t.defineMapper(t.read(t.mapRequiredProp("outcome",t.mapRequiredProp("resultsList",t.mapArray(g))),t.mapRequiredProp("outcome",t.getProp("isApproximate"))),(([a,s])=>({results:a,isApproximate:s})));const y=t.ifInvalidThrow(j);var A=s();export{y as a,A as g,o as m};
5
+ //# sourceMappingURL=p-BCuMPvZO.js.map