@vertexvis/viewer 1.0.1-canary.9 → 1.0.1-testing.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/{multiElementInteractionHandler-CV_R_zWs.js → multiElementInteractionHandler-DFzC3VJQ.js} +14 -11
  3. package/dist/cjs/multiElementInteractionHandler-DFzC3VJQ.js.map +1 -0
  4. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +20 -11
  5. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
  6. package/dist/cjs/vertex-scene-tree.cjs.entry.js +18 -5
  7. package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
  8. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  9. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +7 -5
  10. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
  11. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js +6 -6
  12. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
  13. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +5 -5
  14. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
  15. package/dist/cjs/vertex-viewer.cjs.entry.js +18 -12
  16. package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
  17. package/dist/cjs/viewer.cjs.js +1 -1
  18. package/dist/collection/components/scene-tree/scene-tree.js +18 -5
  19. package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
  20. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +20 -11
  21. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js.map +1 -1
  22. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +8 -6
  23. package/dist/collection/components/viewer-pin-group/viewer-pin-group.js.map +1 -1
  24. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js +7 -7
  25. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
  26. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +6 -7
  27. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
  28. package/dist/collection/lib/interactions/baseInteractionHandler.js +12 -9
  29. package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
  30. package/dist/collection/lib/interactions/mouseInteractions.js +17 -11
  31. package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
  32. package/dist/components/index.js +1 -1
  33. package/dist/components/{p-COS1Inc5.js → p-BQV-PVa_.js} +2 -2
  34. package/dist/components/p-BQV-PVa_.js.map +1 -0
  35. package/dist/components/p-CAQf9dsL.js +5 -0
  36. package/dist/components/p-CAQf9dsL.js.map +1 -0
  37. package/dist/components/{p-CEXF82El.js → p-CKQId0I1.js} +2 -2
  38. package/dist/components/p-CKQId0I1.js.map +1 -0
  39. package/dist/components/{p-CEHeeaoZ.js → p-CUGGgEIf.js} +2 -2
  40. package/dist/components/{p-CWieLCfP.js → p-CoCastpC.js} +2 -2
  41. package/dist/components/{p-BNHniQXm.js → p-ae0Zapzr.js} +2 -2
  42. package/dist/components/p-ae0Zapzr.js.map +1 -0
  43. package/dist/components/vertex-scene-tree-table-layout.js +1 -1
  44. package/dist/components/vertex-scene-tree.js +1 -1
  45. package/dist/components/vertex-scene-tree.js.map +1 -1
  46. package/dist/components/vertex-viewer-dom-renderer.js +1 -1
  47. package/dist/components/vertex-viewer-pin-group.js +1 -1
  48. package/dist/components/vertex-viewer-pin-label.js +1 -1
  49. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  50. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  51. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  52. package/dist/components/vertex-viewer-view-cube.js +1 -1
  53. package/dist/components/vertex-viewer.js +1 -1
  54. package/dist/components/vertex-viewer.js.map +1 -1
  55. package/dist/esm/{controller-zACO6f4n.js → controller-DCFz4xj6.js} +3 -3
  56. package/dist/esm/{controller-zACO6f4n.js.map → controller-DCFz4xj6.js.map} +1 -1
  57. package/dist/esm/index.js +1 -1
  58. package/dist/esm/index.mjs +1 -1
  59. package/dist/esm/loader.js +1 -1
  60. package/dist/esm/loader.mjs +1 -1
  61. package/dist/esm/{multiElementInteractionHandler-CJhrgviV.js → multiElementInteractionHandler-DjlrKVbu.js} +14 -11
  62. package/dist/esm/multiElementInteractionHandler-DjlrKVbu.js.map +1 -0
  63. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +20 -11
  64. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
  65. package/dist/esm/vertex-scene-tree.entry.js +19 -6
  66. package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
  67. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  68. package/dist/esm/vertex-viewer-pin-group.entry.js +8 -6
  69. package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
  70. package/dist/esm/vertex-viewer-pin-label_2.entry.js +6 -6
  71. package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
  72. package/dist/esm/vertex-viewer-transform-widget.entry.js +5 -5
  73. package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
  74. package/dist/esm/vertex-viewer.entry.js +18 -12
  75. package/dist/esm/vertex-viewer.entry.js.map +1 -1
  76. package/dist/esm/viewer.js +1 -1
  77. package/dist/types/components/scene-tree/scene-tree.d.ts +2 -0
  78. package/dist/types/components/scene-tree-table-layout/scene-tree-table-layout.d.ts +2 -0
  79. package/dist/types/components/viewer-pin-group/viewer-pin-group.d.ts +1 -0
  80. package/dist/types/components/viewer-transform-widget/viewer-transform-widget.d.ts +1 -1
  81. package/dist/types/lib/interactions/baseInteractionHandler.d.ts +1 -1
  82. package/dist/types/lib/interactions/mouseInteractions.d.ts +8 -2
  83. package/dist/viewer/index.esm.js +1 -1
  84. package/dist/viewer/p-07214ba9.entry.js +5 -0
  85. package/dist/viewer/p-07214ba9.entry.js.map +1 -0
  86. package/dist/viewer/p-1a463ace.entry.js +5 -0
  87. package/dist/viewer/p-1a463ace.entry.js.map +1 -0
  88. package/dist/viewer/p-9c18d87a.entry.js +5 -0
  89. package/dist/viewer/p-9c18d87a.entry.js.map +1 -0
  90. package/dist/viewer/{p-D4lmv56q.js → p-Dg5Yw3qK.js} +2 -2
  91. package/dist/viewer/{p-D4lmv56q.js.map → p-Dg5Yw3qK.js.map} +1 -1
  92. package/dist/viewer/{p-DkLznn4v.js → p-DwjktKp5.js} +2 -2
  93. package/dist/viewer/p-DwjktKp5.js.map +1 -0
  94. package/dist/viewer/{p-dcaf1cb9.entry.js → p-b8d8d308.entry.js} +2 -2
  95. package/dist/viewer/p-d26d4b99.entry.js +5 -0
  96. package/dist/viewer/{p-76cf5c2a.entry.js.map → p-d26d4b99.entry.js.map} +1 -1
  97. package/dist/viewer/{p-d4d044fc.entry.js → p-daecf887.entry.js} +2 -2
  98. package/dist/viewer/p-daecf887.entry.js.map +1 -0
  99. package/dist/viewer/{p-0cbadaa8.entry.js → p-fe2fdc83.entry.js} +2 -2
  100. package/dist/viewer/p-fe2fdc83.entry.js.map +1 -0
  101. package/dist/viewer/viewer.esm.js +1 -1
  102. package/package.json +7 -7
  103. package/dist/cjs/multiElementInteractionHandler-CV_R_zWs.js.map +0 -1
  104. package/dist/components/p-BNHniQXm.js.map +0 -1
  105. package/dist/components/p-BzhmEGZ5.js +0 -5
  106. package/dist/components/p-BzhmEGZ5.js.map +0 -1
  107. package/dist/components/p-CEXF82El.js.map +0 -1
  108. package/dist/components/p-COS1Inc5.js.map +0 -1
  109. package/dist/esm/multiElementInteractionHandler-CJhrgviV.js.map +0 -1
  110. package/dist/viewer/p-0cbadaa8.entry.js.map +0 -1
  111. package/dist/viewer/p-19c5eeaf.entry.js +0 -5
  112. package/dist/viewer/p-19c5eeaf.entry.js.map +0 -1
  113. package/dist/viewer/p-1a82245e.entry.js +0 -5
  114. package/dist/viewer/p-1a82245e.entry.js.map +0 -1
  115. package/dist/viewer/p-5ccf054e.entry.js +0 -5
  116. package/dist/viewer/p-5ccf054e.entry.js.map +0 -1
  117. package/dist/viewer/p-76cf5c2a.entry.js +0 -5
  118. package/dist/viewer/p-DkLznn4v.js.map +0 -1
  119. package/dist/viewer/p-d4d044fc.entry.js.map +0 -1
  120. /package/dist/components/{p-CEHeeaoZ.js.map → p-CUGGgEIf.js.map} +0 -0
  121. /package/dist/components/{p-CWieLCfP.js.map → p-CoCastpC.js.map} +0 -0
  122. /package/dist/viewer/{p-dcaf1cb9.entry.js.map → p-b8d8d308.entry.js.map} +0 -0
@@ -19,7 +19,7 @@ var patchBrowser = () => {
19
19
 
20
20
  patchBrowser().then(async (options) => {
21
21
  await globalScripts();
22
- return bootstrapLazy(JSON.parse("[[\"vertex-scene-tree\",[[257,\"vertex-scene-tree\",{\"overScanCount\":[2,\"over-scan-count\"],\"viewerSelector\":[1,\"viewer-selector\"],\"viewer\":[1040],\"rowData\":[16],\"config\":[1],\"configEnv\":[1,\"config-env\"],\"controller\":[1040],\"searchOptions\":[1040],\"metadataSearchExactMatch\":[1028,\"metadata-search-exact-match\"],\"metadataSearchKeys\":[1040],\"metadataKeys\":[16],\"operationAnimationDuration\":[2,\"operation-animation-duration\"],\"rows\":[32],\"totalRows\":[32],\"showLoader\":[32],\"showEmptyResults\":[32],\"stateMap\":[32],\"errorDetails\":[32],\"hasPartialFilterResults\":[32],\"refreshingResults\":[32],\"attemptingRetry\":[32],\"invalidateRows\":[64],\"scrollToIndex\":[64],\"scrollToItem\":[64],\"expandAll\":[64],\"collapseAll\":[64],\"expandItem\":[64],\"collapseItem\":[64],\"toggleExpandItem\":[64],\"toggleItemVisibility\":[64],\"hideItem\":[64],\"showItem\":[64],\"selectItem\":[64],\"deselectItem\":[64],\"isolateItem\":[64],\"getRowAtIndex\":[64],\"getRowForItemId\":[64],\"getRowForEvent\":[64],\"getRowAtClientY\":[64],\"filterItems\":[64],\"selectFilteredItems\":[64],\"fetchMetadataKeys\":[64]},[[0,\"search\",\"handleSearch\"],[0,\"cellLoaded\",\"handleCellLoaded\"]],{\"viewer\":[{\"handleViewerChanged\":0}],\"controller\":[{\"handleControllerChanged\":0}],\"metadataKeys\":[{\"handleMetadataKeysChanged\":0}]}]]],[\"vertex-viewer-pin-tool\",[[1,\"vertex-viewer-pin-tool\",{\"pinController\":[1040],\"pinModel\":[16],\"viewer\":[16],\"tool\":[1025],\"mode\":[1025],\"primaryColor\":[1025,\"primary-color\"],\"accentColor\":[1025,\"accent-color\"],\"pins\":[32],\"selectedPinId\":[32],\"elementBounds\":[32],\"projectionViewMatrix\":[32]},null,{\"mode\":[{\"watchModeChange\":0}],\"tool\":[{\"watchTypeChange\":0}],\"accentColor\":[{\"watchAccentColorChange\":0}],\"primaryColor\":[{\"watchPrimaryColorChange\":0}],\"pins\":[{\"watchPinsChange\":0}],\"viewer\":[{\"handleViewerChanged\":0}]}]]],[\"vertex-viewer-default-toolbar\",[[1,\"vertex-viewer-default-toolbar\",{\"viewer\":[16],\"placement\":[1],\"direction\":[1],\"animationsDisabled\":[4,\"animations-disabled\"],\"animationMs\":[2,\"animation-ms\"]}]]],[\"vertex-viewer-markup\",[[257,\"vertex-viewer-markup\",{\"arrowTemplateId\":[1,\"arrow-template-id\"],\"circleTemplateId\":[1,\"circle-template-id\"],\"freeformTemplateId\":[1,\"freeform-template-id\"],\"tool\":[1],\"disabled\":[4],\"viewer\":[16],\"selectedMarkupId\":[1025,\"selected-markup-id\"],\"selectNew\":[4,\"select-new\"],\"startLineAnchorStyle\":[1025,\"start-line-anchor-style\"],\"endLineAnchorStyle\":[1025,\"end-line-anchor-style\"],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"toSelectMarkupId\":[32],\"pointerDownPosition\":[32],\"addMarkup\":[64],\"removeMarkup\":[64],\"getMarkupElements\":[64],\"getMarkupElement\":[64]},[[0,\"markupEnd\",\"handleMarkupEnd\"],[0,\"interactionEnd\",\"handleMarkupUpdated\"],[1,\"pointerdown\",\"handleMarkupPointerDown\"]],{\"selectedMarkupId\":[{\"handleSelectedMarkupIdChanged\":0}],\"arrowTemplateId\":[{\"handlePropertyChanged\":0}],\"circleTemplateId\":[{\"handlePropertyChanged\":0}],\"freeformTemplateId\":[{\"handlePropertyChanged\":0}],\"tool\":[{\"handlePropertyChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}],\"originatingViewport\":[{\"handleViewerChanged\":0}],\"centeringBehavior\":[{\"handleViewerChanged\":0}],\"offset\":[{\"handleViewerChanged\":0}],\"scale\":[{\"handleViewerChanged\":0}],\"disabled\":[{\"handleDisabledChanged\":0}],\"startLineAnchorStyle\":[{\"handleStartLineAnchorStyleChanged\":0}],\"endLineAnchorStyle\":[{\"handleEndLineAnchorStyleChanged\":0}]}]]],[\"vertex-viewer-markup-tool\",[[257,\"vertex-viewer-markup-tool\",{\"arrowTemplateId\":[1,\"arrow-template-id\"],\"circleTemplateId\":[1,\"circle-template-id\"],\"freeformTemplateId\":[1,\"freeform-template-id\"],\"tool\":[1],\"disabled\":[4],\"viewer\":[16],\"startLineAnchorStyle\":[1025,\"start-line-anchor-style\"],\"endLineAnchorStyle\":[1025,\"end-line-anchor-style\"],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"stateMap\":[32],\"reset\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"arrowTemplateId\":[{\"handlePropertyChanged\":0}],\"circleTemplateId\":[{\"handlePropertyChanged\":0}],\"disabled\":[{\"handlePropertyChanged\":0}],\"endLineAnchorStyle\":[{\"handlePropertyChanged\":0}],\"freeformTemplateId\":[{\"handlePropertyChanged\":0}],\"startLineAnchorStyle\":[{\"handlePropertyChanged\":0}],\"tool\":[{\"handlePropertyChanged\":0}],\"scale\":[{\"handleScalingConfigurationChanged\":0}],\"offset\":[{\"handleScalingConfigurationChanged\":0}],\"originatingViewport\":[{\"handleScalingConfigurationChanged\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChanged\":0}]}]]],[\"vertex-viewer-view-cube\",[[1,\"vertex-viewer-view-cube\",{\"xPositiveLabel\":[1,\"x-positive-label\"],\"xNegativeLabel\":[1,\"x-negative-label\"],\"yPositiveLabel\":[1,\"y-positive-label\"],\"yNegativeLabel\":[1,\"y-negative-label\"],\"zPositiveLabel\":[1,\"z-positive-label\"],\"zNegativeLabel\":[1,\"z-negative-label\"],\"standardViewsOff\":[4,\"standard-views-off\"],\"viewAll\":[4,\"view-all\"],\"animationDuration\":[2,\"animation-duration\"],\"triadOff\":[4,\"triad-off\"],\"worldOrientation\":[1040],\"camera\":[1040],\"viewer\":[16],\"boxLength\":[32],\"triadPosition\":[32]},null,{\"viewer\":[{\"handleViewerChanged\":0}]}]]],[\"vertex-viewer-measurement-distance\",[[1,\"vertex-viewer-measurement-distance\",{\"start\":[1040],\"startJson\":[1,\"start-json\"],\"end\":[1040],\"endJson\":[1,\"end-json\"],\"distance\":[1026],\"showAxisReferenceLines\":[4,\"show-axis-reference-lines\"],\"snapDistance\":[2,\"snap-distance\"],\"units\":[1],\"fractionalDigits\":[2,\"fractional-digits\"],\"labelFormatter\":[16],\"anchorLabelOffset\":[2,\"anchor-label-offset\"],\"lineCapLength\":[2,\"line-cap-length\"],\"mode\":[513],\"interactingAnchor\":[1537,\"interacting-anchor\"],\"invalid\":[1540],\"camera\":[16],\"hitProvider\":[16],\"indicatorPt\":[1040],\"viewer\":[16],\"measurementModel\":[16],\"viewport\":[32],\"elementBounds\":[32],\"interactionCount\":[32],\"internalCamera\":[32],\"invalidateStateCounter\":[32],\"stateMap\":[32],\"measurementUnits\":[32],\"computeElementMetrics\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"units\":[{\"handleUnitsChanged\":0}],\"camera\":[{\"handleCameraChanged\":0}],\"mode\":[{\"handleModeChanged\":0}],\"start\":[{\"handleStartChanged\":0}],\"end\":[{\"handleEndChanged\":0}],\"invalid\":[{\"handleInvalidChanged\":0}]}]]],[\"vertex-viewer-measurement-precise\",[[1,\"vertex-viewer-measurement-precise\",{\"measurementModel\":[16],\"measurementOverlays\":[16],\"measurementController\":[1040],\"measurableEntityTypes\":[16],\"viewer\":[16],\"configEnv\":[1,\"config-env\"],\"config\":[1]},null,{\"measurableEntityTypes\":[{\"handleMeasurableEntityTypesChanged\":0}],\"measurementController\":[{\"handleMeasurementControllerChanged\":0}],\"measurementModel\":[{\"handleMeasurementModelChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}]}]]],[\"vertex-scene-tree-table-cell\",[[257,\"vertex-scene-tree-table-cell\",{\"node\":[16],\"tree\":[16],\"value\":[1],\"placeholder\":[1],\"alwaysShowIcons\":[4,\"always-show-icons\"],\"hovered\":[1028],\"isScrolling\":[4,\"is-scrolling\"],\"expandToggle\":[4,\"expand-toggle\"],\"endItemIndicator\":[4,\"end-item-indicator\"],\"visibilityToggle\":[4,\"visibility-toggle\"],\"isolateButton\":[4,\"isolate-button\"],\"selectionHandler\":[16],\"visibilityHandler\":[16],\"expansionHandler\":[16],\"isolateHandler\":[16],\"hoverController\":[16]}]]],[\"vertex-viewer-annotation-callout\",[[1,\"vertex-viewer-annotation-callout\",{\"data\":[16],\"iconSize\":[1,\"icon-size\"]}]]],[\"vertex-viewer-box-query-tool\",[[257,\"vertex-viewer-box-query-tool\",{\"viewer\":[16],\"controller\":[1040],\"model\":[1040],\"operationType\":[1,\"operation-type\"],\"mode\":[1],\"details\":[32]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"operationType\":[{\"handleDefaultOperationChange\":0}],\"mode\":[{\"handleModeChange\":0}],\"controller\":[{\"handleControllerChange\":0}]}]]],[\"vertex-viewer-walk-mode-tool\",[[257,\"vertex-viewer-walk-mode-tool\",{\"viewer\":[16],\"controller\":[1040],\"model\":[1040],\"teleportMode\":[1,\"teleport-mode\"],\"enabled\":[4]},null,{\"enabled\":[{\"handleEnabledChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}],\"teleportMode\":[{\"handleTeleportModeChanged\":0}],\"controller\":[{\"handleControllerChanged\":0}],\"model\":[{\"handleModelChanged\":0}]}]]],[\"vertex-scene-tree-table-column\",[[257,\"vertex-scene-tree-table-column\",{\"initialWidth\":[2,\"initial-width\"],\"minWidth\":[2,\"min-width\"],\"maxWidth\":[2,\"max-width\"]}]]],[\"vertex-scene-tree-table-header\",[[257,\"vertex-scene-tree-table-header\"]]],[\"vertex-scene-tree-table-resize-divider\",[[257,\"vertex-scene-tree-table-resize-divider\",{\"hovering\":[32],\"dragging\":[32]}]]],[\"vertex-scene-tree-toolbar-group\",[[257,\"vertex-scene-tree-toolbar-group\"]]],[\"vertex-viewer\",[[257,\"vertex-viewer\",{\"src\":[1],\"clientId\":[1,\"client-id\"],\"deviceId\":[1025,\"device-id\"],\"config\":[1],\"configEnv\":[1,\"config-env\"],\"resolvedConfig\":[1040],\"cameraControls\":[4,\"camera-controls\"],\"cameraType\":[1537,\"camera-type\"],\"keyboardControls\":[4,\"keyboard-controls\"],\"rotateAroundTapPoint\":[4,\"rotate-around-tap-point\"],\"token\":[1025],\"depthBuffers\":[1,\"depth-buffers\"],\"phantom\":[16],\"noDefaultLights\":[4,\"no-default-lights\"],\"enableTemporalRefinement\":[4,\"enable-temporal-refinement\"],\"experimentalRenderingOptions\":[1,\"experimental-rendering-options\"],\"featureLines\":[16],\"selectionHighlighting\":[16],\"featureHighlighting\":[16],\"sceneComparison\":[16],\"crossSectioning\":[16],\"featureMaps\":[1,\"feature-maps\"],\"resizeDebounce\":[2,\"resize-debounce\"],\"frame\":[1040],\"stream\":[1040],\"stencilBuffer\":[1040],\"viewport\":[1040],\"annotations\":[1040],\"modelViews\":[1040],\"pmi\":[1040],\"sceneItems\":[1040],\"canvases\":[1040],\"experimentalSkipVisibilityCheck\":[4,\"experimental-skip-visibility-check\"],\"dimensions\":[32],\"hostDimensions\":[32],\"errorMessage\":[32],\"cursor\":[32],\"stateMap\":[32],\"dispatchFrameDrawn\":[64],\"registerInteractionHandler\":[64],\"registerBasicInteractionHandler\":[64],\"registerTapKeyInteraction\":[64],\"getInteractionTarget_DEPRECATED\":[64],\"addCursor\":[64],\"getInteractionHandlers\":[64],\"getKeyInteractions\":[64],\"getBaseInteractionHandler\":[64],\"getJwt\":[64],\"load\":[64],\"unload\":[64],\"reload\":[64],\"scene\":[64],\"isSceneReady\":[64]},[[0,\"tap\",\"handleTapEvent\"]],{\"src\":[{\"handleSrcChanged\":0}],\"cameraControls\":[{\"handleCameraControlsChanged\":0}],\"keyboardControls\":[{\"handleKeyboardControlsChanged\":0}],\"rotateAroundTapPoint\":[{\"handleRotateAboutTapPointChanged\":0}],\"cameraType\":[{\"handleCameraTypeChanged\":0}],\"crossSectioning\":[{\"handleStreamAttributesChanged\":0}],\"depthBuffers\":[{\"handleStreamAttributesChanged\":0}],\"experimentalRenderingOptions\":[{\"handleStreamAttributesChanged\":0}],\"featureHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"featureLines\":[{\"handleStreamAttributesChanged\":0}],\"featureMaps\":[{\"handleStreamAttributesChanged\":0}],\"noDefaultLights\":[{\"handleStreamAttributesChanged\":0}],\"phantom\":[{\"handleStreamAttributesChanged\":0}],\"sceneComparison\":[{\"handleStreamAttributesChanged\":0}],\"selectionHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"enableTemporalRefinement\":[{\"handleEnableTemporalRefinementChanged\":0}],\"config\":[{\"handleConfigChanged\":0}],\"configEnv\":[{\"handleConfigEnvChanged\":0}]}]]],[\"vertex-viewer-hit-result-indicator\",[[1,\"vertex-viewer-hit-result-indicator\",{\"viewer\":[16],\"position\":[1040],\"normal\":[1040]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"position\":[{\"handlePositionChanged\":0}],\"normal\":[{\"handleNormalChanged\":0}]}]]],[\"vertex-viewer-measurement-details\",[[1,\"vertex-viewer-measurement-details\",{\"measurementModel\":[16],\"measurementOverlays\":[16],\"measurementOutcome\":[1040],\"distanceUnits\":[1,\"distance-units\"],\"angleUnits\":[1,\"angle-units\"],\"fractionalDigits\":[2,\"fractional-digits\"],\"distanceFormatter\":[16],\"angleFormatter\":[16],\"areaFormatter\":[16],\"resultTypes\":[16],\"overlay\":[32],\"distanceMeasurementUnits\":[32],\"angleMeasurementUnits\":[32],\"areaMeasurementUnits\":[32]},null,{\"distanceUnits\":[{\"handleDistanceUnitsChanged\":0}],\"angleUnits\":[{\"handleAngleUnitsChanged\":0}],\"measurementModel\":[{\"handleMeasurementModelChanged\":0}],\"resultTypes\":[{\"handleResultTypesChanged\":0}]}]]],[\"vertex-viewer-transform-widget\",[[1,\"vertex-viewer-transform-widget\",{\"viewer\":[16],\"position\":[1040],\"rotation\":[1040],\"controller\":[1040],\"xRotationDisabled\":[1028,\"x-rotation-disabled\"],\"yRotationDisabled\":[1028,\"y-rotation-disabled\"],\"zRotationDisabled\":[1028,\"z-rotation-disabled\"],\"xTranslationDisabled\":[1028,\"x-translation-disabled\"],\"yTranslationDisabled\":[1028,\"y-translation-disabled\"],\"zTranslationDisabled\":[1028,\"z-translation-disabled\"],\"xyTranslationDisabled\":[1028,\"xy-translation-disabled\"],\"xzTranslationDisabled\":[1028,\"xz-translation-disabled\"],\"yzTranslationDisabled\":[1028,\"yz-translation-disabled\"],\"showInputs\":[4,\"show-inputs\"],\"distanceUnit\":[1,\"distance-unit\"],\"angleUnit\":[1,\"angle-unit\"],\"decimalPlaces\":[2,\"decimal-places\"],\"rotationSnapDegrees\":[2,\"rotation-snap-degrees\"],\"rotationSnapKey\":[1,\"rotation-snap-key\"],\"translationHandleScalar\":[2,\"translation-handle-scalar\"],\"rotationHandleScalar\":[2,\"rotation-handle-scalar\"],\"interactionThrottle\":[2,\"interaction-throttle\"],\"EXPERIMENTAL_undoKeybindings\":[4,\"e-x-p-e-r-i-m-e-n-t-a-l_undo-keybindings\"],\"hovered\":[1040],\"inputPosition\":[32],\"inputValue\":[32],\"isEndingTransform\":[32],\"inputShouldFocus\":[32],\"EXPERIMENTAL_undo\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"xTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"yTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"zTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"xyTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"xzTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"yzTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"xRotationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"yRotationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"zRotationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"translationHandleScalar\":[{\"handleTransformHandleScalarChanged\":0}],\"rotationHandleScalar\":[{\"handleTransformHandleScalarChanged\":0}],\"rotation\":[{\"handleRotationChanged\":0}],\"position\":[{\"handlePositionChanged\":0}],\"distanceUnit\":[{\"handleInputFormattingChanged\":0}],\"angleUnit\":[{\"handleInputFormattingChanged\":0}],\"decimalPlaces\":[{\"handleInputFormattingChanged\":0}]}]]],[\"vertex-viewer-pin-group\",[[0,\"vertex-viewer-pin-group\",{\"pin\":[16],\"matrix\":[1040],\"projectionViewMatrix\":[16],\"elementBounds\":[1040],\"pinModel\":[16],\"pinController\":[16],\"selected\":[4],\"occluded\":[1540],\"detached\":[1540],\"invalidateStateCounter\":[32]},[[0,\"occlusionStateChanged\",\"handleOcclusionStateChanged\"],[0,\"detachedStateChanged\",\"handleDetachedStateChanged\"]]]]],[\"vertex-viewer-dom-group\",[[262,\"vertex-viewer-dom-group\",{\"position\":[1040],\"positionJson\":[1,\"position\"],\"rotation\":[1040],\"rotationJson\":[1,\"rotation\"],\"quaternion\":[1040],\"quaternionJson\":[1,\"quaternion\"],\"scale\":[1040],\"scaleJson\":[1,\"scale\"],\"matrix\":[1040]},null,{\"position\":[{\"handlePositionChange\":0}],\"positionJson\":[{\"handlePositionJsonChanged\":0}],\"rotation\":[{\"handleRotationChanged\":0}],\"rotationJson\":[{\"handleRotationJsonChanged\":0}],\"quaternion\":[{\"handleQuaternionChange\":0}],\"quaternionJson\":[{\"handleQuaternionJsonChanged\":0}],\"scale\":[{\"handleScaleChange\":0}],\"scaleJson\":[{\"handleScaleJsonChanged\":0}],\"matrix\":[{\"handleMatrixChanged\":0}]}]]],[\"vertex-viewer-teleport-tool\",[[1,\"vertex-viewer-teleport-tool\",{\"viewer\":[16],\"mode\":[1025],\"animationsDisabled\":[4,\"animations-disabled\"],\"animationMs\":[2,\"animation-ms\"],\"controller\":[1040],\"model\":[1040]},null,{\"mode\":[{\"handleModeChange\":0}],\"viewer\":[{\"handleViewerChanged\":0}],\"animationMs\":[{\"handleAnimationMsChanged\":0}],\"animationsDisabled\":[{\"handleAnimationsDisabledChanged\":0}],\"controller\":[{\"handleControllerChanged\":0}],\"model\":[{\"handleModelChanged\":0}]}]]],[\"vertex-viewer-spinner\",[[1,\"vertex-viewer-spinner\",{\"size\":[1]}]]],[\"vertex-viewer-layer\",[[257,\"vertex-viewer-layer\",{\"stretchOff\":[516,\"stretch-off\"]}]]],[\"vertex-viewer-button_3\",[[257,\"vertex-viewer-toolbar\",{\"placement\":[1],\"direction\":[1]}],[257,\"vertex-viewer-button\"],[257,\"vertex-viewer-toolbar-group\",{\"direction\":[1]}]]],[\"vertex-scene-tree-notification-banner_4\",[[257,\"vertex-scene-tree-search\",{\"debounce\":[2],\"disabled\":[4],\"placeholder\":[1],\"controller\":[16],\"value\":[1025],\"focused\":[32],\"isSearching\":[32],\"setFocus\":[64],\"clear\":[64]},null,{\"controller\":[{\"controllerChanged\":0}]}],[1,\"vertex-scene-tree-notification-banner\",{\"message\":[1],\"actionLabel\":[1,\"action-label\"]}],[257,\"vertex-scene-tree-table-layout\",{\"tree\":[16],\"controller\":[16],\"rows\":[16],\"totalRows\":[2,\"total-rows\"],\"rowHeight\":[1026,\"row-height\"],\"overScanCount\":[2,\"over-scan-count\"],\"rowData\":[16],\"layoutOffset\":[1026,\"layout-offset\"],\"scrollOffset\":[1026,\"scroll-offset\"],\"layoutHeight\":[1026,\"layout-height\"],\"layoutWidth\":[1026,\"layout-width\"],\"viewportStartIndex\":[1026,\"viewport-start-index\"],\"viewportEndIndex\":[1026,\"viewport-end-index\"],\"columnGridLayout\":[32],\"columnGridFixedLayout\":[32],\"isComputingCellHeight\":[32],\"lastDividerPointerPosition\":[32],\"resizingColumnIndex\":[32],\"isScrolling\":[32],\"scrollTimer\":[32],\"stateMap\":[32],\"scrollToPosition\":[64],\"attemptComputeCellHeight\":[64]},null,{\"rows\":[{\"handleViewportRowsPropsChanged\":0}],\"totalRows\":[{\"handleViewportRowsPropsChanged\":0}],\"rowHeight\":[{\"handleViewportRowsPropsChanged\":0}]}],[257,\"vertex-scene-tree-toolbar\"]]],[\"vertex-viewer-pin-label_2\",[[0,\"vertex-viewer-pin-label\",{\"pin\":[16],\"elementBounds\":[16],\"value\":[1025],\"pinController\":[16],\"focused\":[32],\"computedScreenPosition\":[32],\"textareaRows\":[32],\"contentElBounds\":[32],\"setFocus\":[64],\"submit\":[64]},null,{\"focused\":[{\"watchFocusChange\":0}],\"pin\":[{\"watchPinChange\":0}],\"elementBounds\":[{\"watchElementBoundsChange\":0}]}],[0,\"vertex-viewer-pin-label-line\",{\"pinPoint\":[16],\"labelPoint\":[16],\"pin\":[16]}]]],[\"vertex-viewer-measurement-line_2\",[[1,\"vertex-viewer-measurement-overlays\",{\"measurementOverlays\":[16],\"camera\":[1040],\"viewer\":[16],\"overlays\":[32]},null,{\"measurementOverlays\":[{\"handleMeasurementOverlaysChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}]}],[1,\"vertex-viewer-measurement-line\",{\"start\":[16],\"end\":[16],\"capLength\":[2,\"cap-length\"],\"pointerEvents\":[1,\"pointer-events\"]}]]],[\"vertex-viewer-dom-element_2\",[[262,\"vertex-viewer-dom-renderer\",{\"drawMode\":[1,\"draw-mode\"],\"propagateEventsToViewer\":[4,\"propagate-events-to-viewer\"],\"viewer\":[16],\"camera\":[1040],\"depthBuffer\":[1040],\"viewport\":[32],\"invalidateFrameCounter\":[32],\"interactionDisposables\":[32]},[[0,\"propertyChange\",\"handlePropertyChange\"]],{\"viewer\":[{\"handleViewerChange\":0}]}],[257,\"vertex-viewer-dom-element\",{\"position\":[1040],\"positionJson\":[1,\"position\"],\"rotation\":[1040],\"rotationJson\":[1,\"rotation\"],\"quaternion\":[1040],\"quaternionJson\":[1,\"quaternion\"],\"scale\":[1040],\"scaleJson\":[1,\"scale\"],\"matrix\":[1040],\"occlusionOff\":[4,\"occlusion-off\"],\"occluded\":[516],\"detachedOff\":[4,\"detached-off\"],\"detached\":[516],\"billboardOff\":[4,\"billboard-off\"],\"interactionsOff\":[516,\"interactions-off\"]},null,{\"position\":[{\"handlePositionChange\":1}],\"positionJson\":[{\"handlePositionJsonChanged\":1}],\"rotation\":[{\"handleRotationChanged\":1}],\"rotationJson\":[{\"handleRotationJsonChanged\":1}],\"quaternion\":[{\"handleQuaternionChange\":1}],\"quaternionJson\":[{\"handleQuaternionJsonChanged\":1}],\"scale\":[{\"handleScaleChange\":1}],\"scaleJson\":[{\"handleScaleJsonChanged\":1}],\"matrix\":[{\"handleMatrixChanged\":0}],\"occluded\":[{\"handleOcclusionStateChanged\":0}],\"detached\":[{\"handleDetachedStateChanged\":0}]}]]],[\"vertex-viewer-markup-arrow_3\",[[1,\"vertex-viewer-markup-arrow\",{\"start\":[1040],\"startJson\":[1,\"start\"],\"end\":[1040],\"endJson\":[1,\"end\"],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"startLineAnchorStyle\":[1025,\"start-line-anchor-style\"],\"endLineAnchorStyle\":[1025,\"end-line-anchor-style\"],\"mode\":[513],\"viewer\":[16],\"elementBounds\":[32],\"dispose\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"start\":[{\"handleStartJsonChange\":0}],\"end\":[{\"handleEndJsonChange\":0}],\"mode\":[{\"handleModeChange\":0}],\"offset\":[{\"handleScalingConfigurationChange\":0}],\"originatingViewport\":[{\"handleScalingConfigurationChange\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChange\":0}],\"scale\":[{\"handleScalingConfigurationChange\":0},{\"handleScaleChange\":0}]}],[1,\"vertex-viewer-markup-circle\",{\"bounds\":[1040],\"boundsJson\":[1,\"bounds\"],\"mode\":[513],\"viewer\":[16],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"elementBounds\":[32],\"dispose\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"bounds\":[{\"handleBoundsJsonChange\":0}],\"mode\":[{\"handleModeChange\":0}],\"offset\":[{\"handleScalingConfigurationChange\":0}],\"originatingViewport\":[{\"handleScalingConfigurationChange\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChange\":0}],\"scale\":[{\"handleScalingConfigurationChange\":0},{\"handleScaleChange\":0}]}],[1,\"vertex-viewer-markup-freeform\",{\"points\":[1040],\"pointsJson\":[1,\"points\"],\"bounds\":[1040],\"boundsJson\":[1,\"bounds\"],\"mode\":[513],\"viewer\":[16],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"elementBounds\":[32],\"screenPoints\":[32],\"dispose\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"originatingViewport\":[{\"recomputePointsFromProps\":0},{\"handleScalingConfigurationChange\":0}],\"offset\":[{\"recomputePointsFromProps\":0},{\"handleScalingConfigurationChange\":0}],\"scale\":[{\"recomputePointsFromProps\":0},{\"handleScalingConfigurationChange\":0},{\"handleScaleChange\":0}],\"bounds\":[{\"recomputePointsFromProps\":0}],\"points\":[{\"recomputePointsFromProps\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChange\":0}],\"mode\":[{\"handleModeChange\":0}]}]]],[\"vertex-viewer-icon\",[[1,\"vertex-viewer-icon\",{\"name\":[1],\"size\":[1]}]]]]"), options);
22
+ return bootstrapLazy(JSON.parse("[[\"vertex-scene-tree\",[[257,\"vertex-scene-tree\",{\"overScanCount\":[2,\"over-scan-count\"],\"viewerSelector\":[1,\"viewer-selector\"],\"viewer\":[1040],\"rowData\":[16],\"config\":[1],\"configEnv\":[1,\"config-env\"],\"controller\":[1040],\"searchOptions\":[1040],\"metadataSearchExactMatch\":[1028,\"metadata-search-exact-match\"],\"metadataSearchKeys\":[1040],\"metadataKeys\":[16],\"operationAnimationDuration\":[2,\"operation-animation-duration\"],\"rows\":[32],\"totalRows\":[32],\"showLoader\":[32],\"showEmptyResults\":[32],\"stateMap\":[32],\"errorDetails\":[32],\"hasPartialFilterResults\":[32],\"refreshingResults\":[32],\"attemptingRetry\":[32],\"invalidateRows\":[64],\"scrollToIndex\":[64],\"scrollToItem\":[64],\"expandAll\":[64],\"collapseAll\":[64],\"expandItem\":[64],\"collapseItem\":[64],\"toggleExpandItem\":[64],\"toggleItemVisibility\":[64],\"hideItem\":[64],\"showItem\":[64],\"selectItem\":[64],\"deselectItem\":[64],\"isolateItem\":[64],\"getRowAtIndex\":[64],\"getRowForItemId\":[64],\"getRowForEvent\":[64],\"getRowAtClientY\":[64],\"filterItems\":[64],\"selectFilteredItems\":[64],\"fetchMetadataKeys\":[64]},[[0,\"search\",\"handleSearch\"],[0,\"cellLoaded\",\"handleCellLoaded\"]],{\"viewer\":[{\"handleViewerChanged\":0}],\"controller\":[{\"handleControllerChanged\":0}],\"metadataKeys\":[{\"handleMetadataKeysChanged\":0}]}]]],[\"vertex-viewer-pin-tool\",[[1,\"vertex-viewer-pin-tool\",{\"pinController\":[1040],\"pinModel\":[16],\"viewer\":[16],\"tool\":[1025],\"mode\":[1025],\"primaryColor\":[1025,\"primary-color\"],\"accentColor\":[1025,\"accent-color\"],\"pins\":[32],\"selectedPinId\":[32],\"elementBounds\":[32],\"projectionViewMatrix\":[32]},null,{\"mode\":[{\"watchModeChange\":0}],\"tool\":[{\"watchTypeChange\":0}],\"accentColor\":[{\"watchAccentColorChange\":0}],\"primaryColor\":[{\"watchPrimaryColorChange\":0}],\"pins\":[{\"watchPinsChange\":0}],\"viewer\":[{\"handleViewerChanged\":0}]}]]],[\"vertex-viewer-default-toolbar\",[[1,\"vertex-viewer-default-toolbar\",{\"viewer\":[16],\"placement\":[1],\"direction\":[1],\"animationsDisabled\":[4,\"animations-disabled\"],\"animationMs\":[2,\"animation-ms\"]}]]],[\"vertex-viewer-markup\",[[257,\"vertex-viewer-markup\",{\"arrowTemplateId\":[1,\"arrow-template-id\"],\"circleTemplateId\":[1,\"circle-template-id\"],\"freeformTemplateId\":[1,\"freeform-template-id\"],\"tool\":[1],\"disabled\":[4],\"viewer\":[16],\"selectedMarkupId\":[1025,\"selected-markup-id\"],\"selectNew\":[4,\"select-new\"],\"startLineAnchorStyle\":[1025,\"start-line-anchor-style\"],\"endLineAnchorStyle\":[1025,\"end-line-anchor-style\"],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"toSelectMarkupId\":[32],\"pointerDownPosition\":[32],\"addMarkup\":[64],\"removeMarkup\":[64],\"getMarkupElements\":[64],\"getMarkupElement\":[64]},[[0,\"markupEnd\",\"handleMarkupEnd\"],[0,\"interactionEnd\",\"handleMarkupUpdated\"],[1,\"pointerdown\",\"handleMarkupPointerDown\"]],{\"selectedMarkupId\":[{\"handleSelectedMarkupIdChanged\":0}],\"arrowTemplateId\":[{\"handlePropertyChanged\":0}],\"circleTemplateId\":[{\"handlePropertyChanged\":0}],\"freeformTemplateId\":[{\"handlePropertyChanged\":0}],\"tool\":[{\"handlePropertyChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}],\"originatingViewport\":[{\"handleViewerChanged\":0}],\"centeringBehavior\":[{\"handleViewerChanged\":0}],\"offset\":[{\"handleViewerChanged\":0}],\"scale\":[{\"handleViewerChanged\":0}],\"disabled\":[{\"handleDisabledChanged\":0}],\"startLineAnchorStyle\":[{\"handleStartLineAnchorStyleChanged\":0}],\"endLineAnchorStyle\":[{\"handleEndLineAnchorStyleChanged\":0}]}]]],[\"vertex-viewer-markup-tool\",[[257,\"vertex-viewer-markup-tool\",{\"arrowTemplateId\":[1,\"arrow-template-id\"],\"circleTemplateId\":[1,\"circle-template-id\"],\"freeformTemplateId\":[1,\"freeform-template-id\"],\"tool\":[1],\"disabled\":[4],\"viewer\":[16],\"startLineAnchorStyle\":[1025,\"start-line-anchor-style\"],\"endLineAnchorStyle\":[1025,\"end-line-anchor-style\"],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"stateMap\":[32],\"reset\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"arrowTemplateId\":[{\"handlePropertyChanged\":0}],\"circleTemplateId\":[{\"handlePropertyChanged\":0}],\"disabled\":[{\"handlePropertyChanged\":0}],\"endLineAnchorStyle\":[{\"handlePropertyChanged\":0}],\"freeformTemplateId\":[{\"handlePropertyChanged\":0}],\"startLineAnchorStyle\":[{\"handlePropertyChanged\":0}],\"tool\":[{\"handlePropertyChanged\":0}],\"scale\":[{\"handleScalingConfigurationChanged\":0}],\"offset\":[{\"handleScalingConfigurationChanged\":0}],\"originatingViewport\":[{\"handleScalingConfigurationChanged\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChanged\":0}]}]]],[\"vertex-viewer-view-cube\",[[1,\"vertex-viewer-view-cube\",{\"xPositiveLabel\":[1,\"x-positive-label\"],\"xNegativeLabel\":[1,\"x-negative-label\"],\"yPositiveLabel\":[1,\"y-positive-label\"],\"yNegativeLabel\":[1,\"y-negative-label\"],\"zPositiveLabel\":[1,\"z-positive-label\"],\"zNegativeLabel\":[1,\"z-negative-label\"],\"standardViewsOff\":[4,\"standard-views-off\"],\"viewAll\":[4,\"view-all\"],\"animationDuration\":[2,\"animation-duration\"],\"triadOff\":[4,\"triad-off\"],\"worldOrientation\":[1040],\"camera\":[1040],\"viewer\":[16],\"boxLength\":[32],\"triadPosition\":[32]},null,{\"viewer\":[{\"handleViewerChanged\":0}]}]]],[\"vertex-viewer-measurement-distance\",[[1,\"vertex-viewer-measurement-distance\",{\"start\":[1040],\"startJson\":[1,\"start-json\"],\"end\":[1040],\"endJson\":[1,\"end-json\"],\"distance\":[1026],\"showAxisReferenceLines\":[4,\"show-axis-reference-lines\"],\"snapDistance\":[2,\"snap-distance\"],\"units\":[1],\"fractionalDigits\":[2,\"fractional-digits\"],\"labelFormatter\":[16],\"anchorLabelOffset\":[2,\"anchor-label-offset\"],\"lineCapLength\":[2,\"line-cap-length\"],\"mode\":[513],\"interactingAnchor\":[1537,\"interacting-anchor\"],\"invalid\":[1540],\"camera\":[16],\"hitProvider\":[16],\"indicatorPt\":[1040],\"viewer\":[16],\"measurementModel\":[16],\"viewport\":[32],\"elementBounds\":[32],\"interactionCount\":[32],\"internalCamera\":[32],\"invalidateStateCounter\":[32],\"stateMap\":[32],\"measurementUnits\":[32],\"computeElementMetrics\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"units\":[{\"handleUnitsChanged\":0}],\"camera\":[{\"handleCameraChanged\":0}],\"mode\":[{\"handleModeChanged\":0}],\"start\":[{\"handleStartChanged\":0}],\"end\":[{\"handleEndChanged\":0}],\"invalid\":[{\"handleInvalidChanged\":0}]}]]],[\"vertex-viewer-measurement-precise\",[[1,\"vertex-viewer-measurement-precise\",{\"measurementModel\":[16],\"measurementOverlays\":[16],\"measurementController\":[1040],\"measurableEntityTypes\":[16],\"viewer\":[16],\"configEnv\":[1,\"config-env\"],\"config\":[1]},null,{\"measurableEntityTypes\":[{\"handleMeasurableEntityTypesChanged\":0}],\"measurementController\":[{\"handleMeasurementControllerChanged\":0}],\"measurementModel\":[{\"handleMeasurementModelChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}]}]]],[\"vertex-scene-tree-table-cell\",[[257,\"vertex-scene-tree-table-cell\",{\"node\":[16],\"tree\":[16],\"value\":[1],\"placeholder\":[1],\"alwaysShowIcons\":[4,\"always-show-icons\"],\"hovered\":[1028],\"isScrolling\":[4,\"is-scrolling\"],\"expandToggle\":[4,\"expand-toggle\"],\"endItemIndicator\":[4,\"end-item-indicator\"],\"visibilityToggle\":[4,\"visibility-toggle\"],\"isolateButton\":[4,\"isolate-button\"],\"selectionHandler\":[16],\"visibilityHandler\":[16],\"expansionHandler\":[16],\"isolateHandler\":[16],\"hoverController\":[16]}]]],[\"vertex-viewer-annotation-callout\",[[1,\"vertex-viewer-annotation-callout\",{\"data\":[16],\"iconSize\":[1,\"icon-size\"]}]]],[\"vertex-viewer-box-query-tool\",[[257,\"vertex-viewer-box-query-tool\",{\"viewer\":[16],\"controller\":[1040],\"model\":[1040],\"operationType\":[1,\"operation-type\"],\"mode\":[1],\"details\":[32]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"operationType\":[{\"handleDefaultOperationChange\":0}],\"mode\":[{\"handleModeChange\":0}],\"controller\":[{\"handleControllerChange\":0}]}]]],[\"vertex-viewer-walk-mode-tool\",[[257,\"vertex-viewer-walk-mode-tool\",{\"viewer\":[16],\"controller\":[1040],\"model\":[1040],\"teleportMode\":[1,\"teleport-mode\"],\"enabled\":[4]},null,{\"enabled\":[{\"handleEnabledChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}],\"teleportMode\":[{\"handleTeleportModeChanged\":0}],\"controller\":[{\"handleControllerChanged\":0}],\"model\":[{\"handleModelChanged\":0}]}]]],[\"vertex-scene-tree-table-column\",[[257,\"vertex-scene-tree-table-column\",{\"initialWidth\":[2,\"initial-width\"],\"minWidth\":[2,\"min-width\"],\"maxWidth\":[2,\"max-width\"]}]]],[\"vertex-scene-tree-table-header\",[[257,\"vertex-scene-tree-table-header\"]]],[\"vertex-scene-tree-table-resize-divider\",[[257,\"vertex-scene-tree-table-resize-divider\",{\"hovering\":[32],\"dragging\":[32]}]]],[\"vertex-scene-tree-toolbar-group\",[[257,\"vertex-scene-tree-toolbar-group\"]]],[\"vertex-viewer\",[[257,\"vertex-viewer\",{\"src\":[1],\"clientId\":[1,\"client-id\"],\"deviceId\":[1025,\"device-id\"],\"config\":[1],\"configEnv\":[1,\"config-env\"],\"resolvedConfig\":[1040],\"cameraControls\":[4,\"camera-controls\"],\"cameraType\":[1537,\"camera-type\"],\"keyboardControls\":[4,\"keyboard-controls\"],\"rotateAroundTapPoint\":[4,\"rotate-around-tap-point\"],\"token\":[1025],\"depthBuffers\":[1,\"depth-buffers\"],\"phantom\":[16],\"noDefaultLights\":[4,\"no-default-lights\"],\"enableTemporalRefinement\":[4,\"enable-temporal-refinement\"],\"experimentalRenderingOptions\":[1,\"experimental-rendering-options\"],\"featureLines\":[16],\"selectionHighlighting\":[16],\"featureHighlighting\":[16],\"sceneComparison\":[16],\"crossSectioning\":[16],\"featureMaps\":[1,\"feature-maps\"],\"resizeDebounce\":[2,\"resize-debounce\"],\"frame\":[1040],\"stream\":[1040],\"stencilBuffer\":[1040],\"viewport\":[1040],\"annotations\":[1040],\"modelViews\":[1040],\"pmi\":[1040],\"sceneItems\":[1040],\"canvases\":[1040],\"experimentalSkipVisibilityCheck\":[4,\"experimental-skip-visibility-check\"],\"dimensions\":[32],\"hostDimensions\":[32],\"errorMessage\":[32],\"cursor\":[32],\"stateMap\":[32],\"dispatchFrameDrawn\":[64],\"registerInteractionHandler\":[64],\"registerBasicInteractionHandler\":[64],\"registerTapKeyInteraction\":[64],\"getInteractionTarget_DEPRECATED\":[64],\"addCursor\":[64],\"getInteractionHandlers\":[64],\"getKeyInteractions\":[64],\"getBaseInteractionHandler\":[64],\"getJwt\":[64],\"load\":[64],\"unload\":[64],\"reload\":[64],\"scene\":[64],\"isSceneReady\":[64]},[[0,\"tap\",\"handleTapEvent\"]],{\"src\":[{\"handleSrcChanged\":0}],\"cameraControls\":[{\"handleCameraControlsChanged\":0}],\"keyboardControls\":[{\"handleKeyboardControlsChanged\":0}],\"rotateAroundTapPoint\":[{\"handleRotateAboutTapPointChanged\":0}],\"cameraType\":[{\"handleCameraTypeChanged\":0}],\"crossSectioning\":[{\"handleStreamAttributesChanged\":0}],\"depthBuffers\":[{\"handleStreamAttributesChanged\":0}],\"experimentalRenderingOptions\":[{\"handleStreamAttributesChanged\":0}],\"featureHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"featureLines\":[{\"handleStreamAttributesChanged\":0}],\"featureMaps\":[{\"handleStreamAttributesChanged\":0}],\"noDefaultLights\":[{\"handleStreamAttributesChanged\":0}],\"phantom\":[{\"handleStreamAttributesChanged\":0}],\"sceneComparison\":[{\"handleStreamAttributesChanged\":0}],\"selectionHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"enableTemporalRefinement\":[{\"handleEnableTemporalRefinementChanged\":0}],\"config\":[{\"handleConfigChanged\":0}],\"configEnv\":[{\"handleConfigEnvChanged\":0}]}]]],[\"vertex-viewer-hit-result-indicator\",[[1,\"vertex-viewer-hit-result-indicator\",{\"viewer\":[16],\"position\":[1040],\"normal\":[1040]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"position\":[{\"handlePositionChanged\":0}],\"normal\":[{\"handleNormalChanged\":0}]}]]],[\"vertex-viewer-measurement-details\",[[1,\"vertex-viewer-measurement-details\",{\"measurementModel\":[16],\"measurementOverlays\":[16],\"measurementOutcome\":[1040],\"distanceUnits\":[1,\"distance-units\"],\"angleUnits\":[1,\"angle-units\"],\"fractionalDigits\":[2,\"fractional-digits\"],\"distanceFormatter\":[16],\"angleFormatter\":[16],\"areaFormatter\":[16],\"resultTypes\":[16],\"overlay\":[32],\"distanceMeasurementUnits\":[32],\"angleMeasurementUnits\":[32],\"areaMeasurementUnits\":[32]},null,{\"distanceUnits\":[{\"handleDistanceUnitsChanged\":0}],\"angleUnits\":[{\"handleAngleUnitsChanged\":0}],\"measurementModel\":[{\"handleMeasurementModelChanged\":0}],\"resultTypes\":[{\"handleResultTypesChanged\":0}]}]]],[\"vertex-viewer-transform-widget\",[[1,\"vertex-viewer-transform-widget\",{\"viewer\":[16],\"position\":[1040],\"rotation\":[1040],\"controller\":[1040],\"xRotationDisabled\":[1028,\"x-rotation-disabled\"],\"yRotationDisabled\":[1028,\"y-rotation-disabled\"],\"zRotationDisabled\":[1028,\"z-rotation-disabled\"],\"xTranslationDisabled\":[1028,\"x-translation-disabled\"],\"yTranslationDisabled\":[1028,\"y-translation-disabled\"],\"zTranslationDisabled\":[1028,\"z-translation-disabled\"],\"xyTranslationDisabled\":[1028,\"xy-translation-disabled\"],\"xzTranslationDisabled\":[1028,\"xz-translation-disabled\"],\"yzTranslationDisabled\":[1028,\"yz-translation-disabled\"],\"showInputs\":[4,\"show-inputs\"],\"distanceUnit\":[1,\"distance-unit\"],\"angleUnit\":[1,\"angle-unit\"],\"decimalPlaces\":[2,\"decimal-places\"],\"rotationSnapDegrees\":[2,\"rotation-snap-degrees\"],\"rotationSnapKey\":[1,\"rotation-snap-key\"],\"translationHandleScalar\":[2,\"translation-handle-scalar\"],\"rotationHandleScalar\":[2,\"rotation-handle-scalar\"],\"interactionThrottle\":[2,\"interaction-throttle\"],\"EXPERIMENTAL_undoKeybindings\":[4,\"e-x-p-e-r-i-m-e-n-t-a-l_undo-keybindings\"],\"hovered\":[1040],\"inputPosition\":[32],\"inputValue\":[32],\"isEndingTransform\":[32],\"EXPERIMENTAL_undo\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"xTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"yTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"zTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"xyTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"xzTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"yzTranslationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"xRotationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"yRotationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"zRotationDisabled\":[{\"handleDisabledPropertyChanged\":0}],\"translationHandleScalar\":[{\"handleTransformHandleScalarChanged\":0}],\"rotationHandleScalar\":[{\"handleTransformHandleScalarChanged\":0}],\"rotation\":[{\"handleRotationChanged\":0}],\"position\":[{\"handlePositionChanged\":0}],\"distanceUnit\":[{\"handleInputFormattingChanged\":0}],\"angleUnit\":[{\"handleInputFormattingChanged\":0}],\"decimalPlaces\":[{\"handleInputFormattingChanged\":0}]}]]],[\"vertex-viewer-pin-group\",[[0,\"vertex-viewer-pin-group\",{\"pin\":[16],\"matrix\":[1040],\"projectionViewMatrix\":[16],\"elementBounds\":[1040],\"pinModel\":[16],\"pinController\":[1040],\"selected\":[4],\"occluded\":[1540],\"detached\":[1540],\"invalidateStateCounter\":[32]},[[0,\"occlusionStateChanged\",\"handleOcclusionStateChanged\"],[0,\"detachedStateChanged\",\"handleDetachedStateChanged\"]]]]],[\"vertex-viewer-dom-group\",[[262,\"vertex-viewer-dom-group\",{\"position\":[1040],\"positionJson\":[1,\"position\"],\"rotation\":[1040],\"rotationJson\":[1,\"rotation\"],\"quaternion\":[1040],\"quaternionJson\":[1,\"quaternion\"],\"scale\":[1040],\"scaleJson\":[1,\"scale\"],\"matrix\":[1040]},null,{\"position\":[{\"handlePositionChange\":0}],\"positionJson\":[{\"handlePositionJsonChanged\":0}],\"rotation\":[{\"handleRotationChanged\":0}],\"rotationJson\":[{\"handleRotationJsonChanged\":0}],\"quaternion\":[{\"handleQuaternionChange\":0}],\"quaternionJson\":[{\"handleQuaternionJsonChanged\":0}],\"scale\":[{\"handleScaleChange\":0}],\"scaleJson\":[{\"handleScaleJsonChanged\":0}],\"matrix\":[{\"handleMatrixChanged\":0}]}]]],[\"vertex-viewer-teleport-tool\",[[1,\"vertex-viewer-teleport-tool\",{\"viewer\":[16],\"mode\":[1025],\"animationsDisabled\":[4,\"animations-disabled\"],\"animationMs\":[2,\"animation-ms\"],\"controller\":[1040],\"model\":[1040]},null,{\"mode\":[{\"handleModeChange\":0}],\"viewer\":[{\"handleViewerChanged\":0}],\"animationMs\":[{\"handleAnimationMsChanged\":0}],\"animationsDisabled\":[{\"handleAnimationsDisabledChanged\":0}],\"controller\":[{\"handleControllerChanged\":0}],\"model\":[{\"handleModelChanged\":0}]}]]],[\"vertex-viewer-spinner\",[[1,\"vertex-viewer-spinner\",{\"size\":[1]}]]],[\"vertex-viewer-layer\",[[257,\"vertex-viewer-layer\",{\"stretchOff\":[516,\"stretch-off\"]}]]],[\"vertex-viewer-button_3\",[[257,\"vertex-viewer-toolbar\",{\"placement\":[1],\"direction\":[1]}],[257,\"vertex-viewer-button\"],[257,\"vertex-viewer-toolbar-group\",{\"direction\":[1]}]]],[\"vertex-scene-tree-notification-banner_4\",[[257,\"vertex-scene-tree-search\",{\"debounce\":[2],\"disabled\":[4],\"placeholder\":[1],\"controller\":[16],\"value\":[1025],\"focused\":[32],\"isSearching\":[32],\"setFocus\":[64],\"clear\":[64]},null,{\"controller\":[{\"controllerChanged\":0}]}],[1,\"vertex-scene-tree-notification-banner\",{\"message\":[1],\"actionLabel\":[1,\"action-label\"]}],[257,\"vertex-scene-tree-table-layout\",{\"tree\":[16],\"controller\":[16],\"rows\":[16],\"totalRows\":[2,\"total-rows\"],\"rowHeight\":[1026,\"row-height\"],\"overScanCount\":[2,\"over-scan-count\"],\"rowData\":[16],\"layoutOffset\":[1026,\"layout-offset\"],\"scrollOffset\":[1026,\"scroll-offset\"],\"layoutHeight\":[1026,\"layout-height\"],\"layoutWidth\":[1026,\"layout-width\"],\"viewportStartIndex\":[1026,\"viewport-start-index\"],\"viewportEndIndex\":[1026,\"viewport-end-index\"],\"columnGridLayout\":[32],\"columnGridFixedLayout\":[32],\"isComputingCellHeight\":[32],\"lastDividerPointerPosition\":[32],\"resizingColumnIndex\":[32],\"isScrolling\":[32],\"scrollTimer\":[32],\"stateMap\":[32],\"scrollToPosition\":[64],\"attemptComputeCellHeight\":[64]},null,{\"rows\":[{\"handleViewportRowsPropsChanged\":0}],\"totalRows\":[{\"handleViewportRowsPropsChanged\":0}],\"rowHeight\":[{\"handleViewportRowsPropsChanged\":0}]}],[257,\"vertex-scene-tree-toolbar\"]]],[\"vertex-viewer-pin-label_2\",[[0,\"vertex-viewer-pin-label\",{\"pin\":[16],\"elementBounds\":[16],\"value\":[1025],\"pinController\":[1040],\"focused\":[32],\"computedScreenPosition\":[32],\"textareaRows\":[32],\"contentElBounds\":[32],\"setFocus\":[64],\"submit\":[64]},null,{\"focused\":[{\"watchFocusChange\":0}],\"pin\":[{\"watchPinChange\":0}],\"elementBounds\":[{\"watchElementBoundsChange\":0}]}],[0,\"vertex-viewer-pin-label-line\",{\"pinPoint\":[16],\"labelPoint\":[16],\"pin\":[16]}]]],[\"vertex-viewer-measurement-line_2\",[[1,\"vertex-viewer-measurement-overlays\",{\"measurementOverlays\":[16],\"camera\":[1040],\"viewer\":[16],\"overlays\":[32]},null,{\"measurementOverlays\":[{\"handleMeasurementOverlaysChanged\":0}],\"viewer\":[{\"handleViewerChanged\":0}]}],[1,\"vertex-viewer-measurement-line\",{\"start\":[16],\"end\":[16],\"capLength\":[2,\"cap-length\"],\"pointerEvents\":[1,\"pointer-events\"]}]]],[\"vertex-viewer-dom-element_2\",[[262,\"vertex-viewer-dom-renderer\",{\"drawMode\":[1,\"draw-mode\"],\"propagateEventsToViewer\":[4,\"propagate-events-to-viewer\"],\"viewer\":[16],\"camera\":[1040],\"depthBuffer\":[1040],\"viewport\":[32],\"invalidateFrameCounter\":[32],\"interactionDisposables\":[32]},[[0,\"propertyChange\",\"handlePropertyChange\"]],{\"viewer\":[{\"handleViewerChange\":0}]}],[257,\"vertex-viewer-dom-element\",{\"position\":[1040],\"positionJson\":[1,\"position\"],\"rotation\":[1040],\"rotationJson\":[1,\"rotation\"],\"quaternion\":[1040],\"quaternionJson\":[1,\"quaternion\"],\"scale\":[1040],\"scaleJson\":[1,\"scale\"],\"matrix\":[1040],\"occlusionOff\":[4,\"occlusion-off\"],\"occluded\":[516],\"detachedOff\":[4,\"detached-off\"],\"detached\":[516],\"billboardOff\":[4,\"billboard-off\"],\"interactionsOff\":[516,\"interactions-off\"]},null,{\"position\":[{\"handlePositionChange\":1}],\"positionJson\":[{\"handlePositionJsonChanged\":1}],\"rotation\":[{\"handleRotationChanged\":1}],\"rotationJson\":[{\"handleRotationJsonChanged\":1}],\"quaternion\":[{\"handleQuaternionChange\":1}],\"quaternionJson\":[{\"handleQuaternionJsonChanged\":1}],\"scale\":[{\"handleScaleChange\":1}],\"scaleJson\":[{\"handleScaleJsonChanged\":1}],\"matrix\":[{\"handleMatrixChanged\":0}],\"occluded\":[{\"handleOcclusionStateChanged\":0}],\"detached\":[{\"handleDetachedStateChanged\":0}]}]]],[\"vertex-viewer-markup-arrow_3\",[[1,\"vertex-viewer-markup-arrow\",{\"start\":[1040],\"startJson\":[1,\"start\"],\"end\":[1040],\"endJson\":[1,\"end\"],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"startLineAnchorStyle\":[1025,\"start-line-anchor-style\"],\"endLineAnchorStyle\":[1025,\"end-line-anchor-style\"],\"mode\":[513],\"viewer\":[16],\"elementBounds\":[32],\"dispose\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"start\":[{\"handleStartJsonChange\":0}],\"end\":[{\"handleEndJsonChange\":0}],\"mode\":[{\"handleModeChange\":0}],\"offset\":[{\"handleScalingConfigurationChange\":0}],\"originatingViewport\":[{\"handleScalingConfigurationChange\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChange\":0}],\"scale\":[{\"handleScalingConfigurationChange\":0},{\"handleScaleChange\":0}]}],[1,\"vertex-viewer-markup-circle\",{\"bounds\":[1040],\"boundsJson\":[1,\"bounds\"],\"mode\":[513],\"viewer\":[16],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"elementBounds\":[32],\"dispose\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"bounds\":[{\"handleBoundsJsonChange\":0}],\"mode\":[{\"handleModeChange\":0}],\"offset\":[{\"handleScalingConfigurationChange\":0}],\"originatingViewport\":[{\"handleScalingConfigurationChange\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChange\":0}],\"scale\":[{\"handleScalingConfigurationChange\":0},{\"handleScaleChange\":0}]}],[1,\"vertex-viewer-markup-freeform\",{\"points\":[1040],\"pointsJson\":[1,\"points\"],\"bounds\":[1040],\"boundsJson\":[1,\"bounds\"],\"mode\":[513],\"viewer\":[16],\"originatingViewport\":[16],\"centeringBehavior\":[1,\"centering-behavior\"],\"offset\":[16],\"scale\":[2],\"elementBounds\":[32],\"screenPoints\":[32],\"dispose\":[64]},null,{\"viewer\":[{\"handleViewerChanged\":0}],\"originatingViewport\":[{\"recomputePointsFromProps\":0},{\"handleScalingConfigurationChange\":0}],\"offset\":[{\"recomputePointsFromProps\":0},{\"handleScalingConfigurationChange\":0}],\"scale\":[{\"recomputePointsFromProps\":0},{\"handleScalingConfigurationChange\":0},{\"handleScaleChange\":0}],\"bounds\":[{\"recomputePointsFromProps\":0}],\"points\":[{\"recomputePointsFromProps\":0}],\"centeringBehavior\":[{\"handleScalingConfigurationChange\":0}],\"mode\":[{\"handleModeChange\":0}]}]]],[\"vertex-viewer-icon\",[[1,\"vertex-viewer-icon\",{\"name\":[1],\"size\":[1]}]]]]"), options);
23
23
  });
24
24
  //# sourceMappingURL=viewer.js.map
25
25
 
@@ -323,6 +323,8 @@ export declare class SceneTree {
323
323
  protected handleMetadataKeysChanged(): void;
324
324
  private retryConnectToViewer;
325
325
  private connectToViewer;
326
+ private updateMissingViewerError;
327
+ private clearMissingViewerError;
326
328
  private scheduleClearUnusedData;
327
329
  private handleControllerStateChange;
328
330
  private getNodeFromRowOrIndex;
@@ -142,6 +142,8 @@ export declare class SceneTreeTableLayout {
142
142
  attemptComputeCellHeight(): Promise<void>;
143
143
  render(): h.JSX.IntrinsicElements;
144
144
  private computeViewportRows;
145
+ private initializeColumnLayout;
146
+ private initializeMeasuredLayout;
145
147
  private computeAndUpdateViewportRows;
146
148
  private layoutColumns;
147
149
  private updateCell;
@@ -45,6 +45,7 @@ export declare class ViewerPinGroup {
45
45
  private invalidateStateCounter;
46
46
  private labelEl;
47
47
  private resizeObserver?;
48
+ protected componentWillLoad(): void;
48
49
  protected componentDidLoad(): void;
49
50
  /**
50
51
  * @ignore
@@ -152,7 +152,6 @@ export declare class ViewerTransformWidget {
152
152
  protected inputPosition?: PointAndPlacement;
153
153
  protected inputValue: number;
154
154
  protected isEndingTransform: boolean;
155
- protected inputShouldFocus: boolean;
156
155
  private hostEl;
157
156
  private startingTransform?;
158
157
  private currentTransform?;
@@ -176,6 +175,7 @@ export declare class ViewerTransformWidget {
176
175
  private canvasRef?;
177
176
  private inputWrapperRef?;
178
177
  private inputRef?;
178
+ private inputShouldFocus;
179
179
  private hoveredChangeDisposable?;
180
180
  private interactionTimer?;
181
181
  private lastMouseEvent?;
@@ -48,7 +48,7 @@ export declare abstract class BaseInteractionHandler implements InteractionHandl
48
48
  protected beginDrag(event: BaseEvent): void;
49
49
  protected drag(event: BaseEvent): void;
50
50
  protected endDrag(event: BaseEvent): void;
51
- protected handleMouseWheel(event: WheelEvent): Promise<void>;
51
+ protected handleMouseWheel(event: WheelEvent): void;
52
52
  protected wheelDeltaToPixels(deltaY: number, deltaMode: number): number;
53
53
  protected getCanvasPosition(event: BaseEvent): Point.Point | undefined;
54
54
  protected isTouch(event: BaseEvent): boolean;
@@ -35,13 +35,19 @@ export declare class ZoomInteraction extends MouseInteraction {
35
35
  beginDrag(event: MouseEvent, canvasPosition: Point.Point, api: InteractionApi, element: HTMLElement): Promise<void>;
36
36
  drag(event: MouseEvent, api: InteractionApi): Promise<void>;
37
37
  endDrag(event: MouseEvent, api: InteractionApi): void;
38
- zoom(delta: number, api: InteractionApi): Promise<void>;
39
- zoomToPoint(pt: Point.Point, delta: number, api: InteractionApi): Promise<void>;
38
+ zoom(delta: number, api: InteractionApi, extraDelayMs?: number): Promise<void>;
39
+ zoomToPoint(pt: Point.Point, delta: number, api: InteractionApi, extraDelayMs?: number): Promise<void>;
40
40
  private beginInteraction;
41
41
  private endInteraction;
42
42
  private resetInteractionTimer;
43
43
  private getDirectionalDelta;
44
+ /**
45
+ * if this value gets too low, can cause animation jitter in certain scenarios
46
+ */
44
47
  private getInteractionDelay;
48
+ /**
49
+ * uses a configured interaction delay, but certain interactions like wheel zoom benefit from extra delay
50
+ */
45
51
  private startInteractionTimer;
46
52
  private stopInteractionTimer;
47
53
  private operateWithTimer;
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- 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-ZM5wo68e.js";export{S as SceneTreeController}from"./p-D4lmv56q.js";export{f as fromNodeProto,i as isLoadedRow}from"./p-CiSHWNC4.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-C-9RlwtF.js";export{M as MeasurementController,a as MeasurementEntity}from"./p-DQB149YQ.js";export{M as MeasurementModel}from"./p-BpnIh2g8.js";export{M as MeasurementOverlayManager}from"./p-CpdzPMuC.js";export{m as makeMinimumDistanceResult}from"./p-CF-zzy_l.js";import{v as r,q as o,m as n}from"./p-DfdVaPrt.js";export{T as TransformController}from"./p-pCKv_O44.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-D8gGTVmc.js";export{A as AngleUnits,g as AreaUnits,c as CrossSectioning,D as DistanceUnits,F as FrameCameraBase,O as Orientation,a as ReceivedFrame,b as ReceivedFrameImage,d as ReceivedFrameScene,e as ReceivedOrthographicCamera,f as ReceivedPerspectiveCamera,S as StandardView}from"./p-Bl7Tdbc9.js";export{E as EntityType}from"./p-BAhfr1Nx.js";export{A as ArrowMarkup,C as CircleMarkup,F as FreeformMarkup}from"./p-yEqopnut.js";export{V as Viewport}from"./p-Dn7vK758.js";export{V as VolumeIntersectionQueryController,a as VolumeIntersectionQueryModel}from"./p-CaVhcre6.js";import"./p-BuOEMGyM.js";import"./p-CG9AChtV.js";import"./p--8q6LyIm.js";import"./p-ux1ckSDN.js";import"./p-ujnhJ1UM.js";import"./p-BNuMPeJ8.js";import"./p-CjG1fMh1.js";import"./p-BYfDquz2.js";import"./p-Cmw9UEdq.js";const u=.9999;function x(e){const o=r.create(0,e.z,-e.y);const a=r.create(-e.z,0,e.x);const s=r.magnitudeSquared(o)>r.magnitudeSquared(a)?o:a;return r.normalize(r.cross(e,s))}function y(e,a){const s=r.dot(e,a);if(s>u){const r=x(e);const a=o.fromAxisAngle(r,Math.PI);return n.makeRotation(a)}else if(s<=-u){return n.makeIdentity()}else{const s=r.angleTo(a,e);const t=r.normalize(r.cross(e,a));return n.makeRotation(o.fromAxisAngle(t,s+Math.PI))}}function v(e,o,a,s){const t=y(e,a);const m=n.makeTranslation(s);return n.multiply(n.multiply(m,t),n.makeTranslation(r.negate(o)))}var B=Object.freeze({__proto__:null,ALMOST_ONE:u,calculateOrthogonalCoordinate:x,computeRotationMatrix:y,computeTransformationDelta:v});export{B as TransformationDelta};
4
+ 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-ZM5wo68e.js";export{S as SceneTreeController}from"./p-Dg5Yw3qK.js";export{f as fromNodeProto,i as isLoadedRow}from"./p-CiSHWNC4.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-C-9RlwtF.js";export{M as MeasurementController,a as MeasurementEntity}from"./p-DQB149YQ.js";export{M as MeasurementModel}from"./p-BpnIh2g8.js";export{M as MeasurementOverlayManager}from"./p-CpdzPMuC.js";export{m as makeMinimumDistanceResult}from"./p-CF-zzy_l.js";import{v as r,q as o,m as n}from"./p-DfdVaPrt.js";export{T as TransformController}from"./p-pCKv_O44.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-D8gGTVmc.js";export{A as AngleUnits,g as AreaUnits,c as CrossSectioning,D as DistanceUnits,F as FrameCameraBase,O as Orientation,a as ReceivedFrame,b as ReceivedFrameImage,d as ReceivedFrameScene,e as ReceivedOrthographicCamera,f as ReceivedPerspectiveCamera,S as StandardView}from"./p-Bl7Tdbc9.js";export{E as EntityType}from"./p-BAhfr1Nx.js";export{A as ArrowMarkup,C as CircleMarkup,F as FreeformMarkup}from"./p-yEqopnut.js";export{V as Viewport}from"./p-Dn7vK758.js";export{V as VolumeIntersectionQueryController,a as VolumeIntersectionQueryModel}from"./p-CaVhcre6.js";import"./p-BuOEMGyM.js";import"./p-CG9AChtV.js";import"./p--8q6LyIm.js";import"./p-ux1ckSDN.js";import"./p-ujnhJ1UM.js";import"./p-BNuMPeJ8.js";import"./p-CjG1fMh1.js";import"./p-BYfDquz2.js";import"./p-Cmw9UEdq.js";const u=.9999;function x(e){const o=r.create(0,e.z,-e.y);const a=r.create(-e.z,0,e.x);const s=r.magnitudeSquared(o)>r.magnitudeSquared(a)?o:a;return r.normalize(r.cross(e,s))}function y(e,a){const s=r.dot(e,a);if(s>u){const r=x(e);const a=o.fromAxisAngle(r,Math.PI);return n.makeRotation(a)}else if(s<=-u){return n.makeIdentity()}else{const s=r.angleTo(a,e);const t=r.normalize(r.cross(e,a));return n.makeRotation(o.fromAxisAngle(t,s+Math.PI))}}function v(e,o,a,s){const t=y(e,a);const m=n.makeTranslation(s);return n.multiply(n.multiply(m,t),n.makeTranslation(r.negate(o)))}var w=Object.freeze({__proto__:null,ALMOST_ONE:u,calculateOrthogonalCoordinate:x,computeRotationMatrix:y,computeTransformationDelta:v});export{w as TransformationDelta};
5
5
  //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
+ */
4
+ import{r as i,c as t,h as n,H as e,a as o}from"./p-CCVkga9Q.js";import{p as a}from"./p-DfdVaPrt.js";import{c as s}from"./p-Dw4-tG-V.js";import{g as r}from"./p-p0obU98x.js";import{t as l,c as h,a as d,P as v,g as p,b}from"./p-ND6l6nAr.js";import{r as c}from"./p-BxtKMwBH.js";import"./p-CG9AChtV.js";import"./p-BuOEMGyM.js";function u(i){return window.getComputedStyle(i)}const w=()=>`:host{--viewer-annotations-pin-label-background-color:var(--viewer-annotations-pin-accent-color);--viewer-annotations-pin-label-border-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-label-focused-border-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-label-color:var(--white);--viewer-annotations-pin-label-padding-y:0.375em;--viewer-annotations-pin-label-padding-x:0.5em;--viewer-annotations-pin-label-border-width:2px;--viewer-annotations-pin-label-border-style:solid;--viewer-annotations-pin-label-border-radius:0.25em;--viewer-annotations-pin-label-min-width:2rem;--viewer-annotations-pin-label-max-width:25rem;--viewer-annotations-pin-label-max-height:50rem;overflow:hidden;pointer-events:none}:host([mode='']) .pin-label{color:var(--viewer-annotations-pin-label-color);background:var(--viewer-annotations-pin-label-background-color)}.pin-label-text{font-family:Arial, Helvetica, sans-serif;font-size:0.875rem;line-height:1rem;word-break:break-word;white-space:pre-wrap}.pin-label-input-wrapper{display:flex;position:absolute;pointer-events:auto;box-sizing:border-box;min-width:var(--viewer-annotations-pin-label-min-width);max-width:var(--viewer-annotations-pin-label-max-width);max-height:var(--viewer-annotations-pin-label-max-height);background:var(--viewer-annotations-pin-label-background-color);border-width:var(--viewer-annotations-pin-label-border-width);border-style:var(--viewer-annotations-pin-label-border-style);border-color:var(--viewer-annotations-pin-label-border-color);border-radius:var(--viewer-annotations-pin-label-border-radius)}.pin-label-input-wrapper.focused{min-width:var(--viewer-annotations-pin-label-max-width);border-color:var(--viewer-annotations-pin-label-focused-border-color)}.pin-input-drag-target{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}.pin-label-input{resize:none;position:relative;outline:none;border:none;word-break:break-word;padding:0 0 0 0;background-color:transparent;margin:var(--viewer-annotations-pin-label-padding-y) var(--viewer-annotations-pin-label-padding-x);width:var(--viewer-annotations-pin-label-min-width);flex-grow:1;overflow:hidden;max-width:calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)))}.pin-label-input.readonly{pointer-events:auto;color:black;cursor:pointer}.pin-label-hidden{position:absolute;visibility:hidden;pointer-events:none;width:auto;height:auto;box-sizing:border-box;border-width:var(--viewer-annotations-pin-label-border-width);border-style:var(--viewer-annotations-pin-label-border-style);border-color:var(--viewer-annotations-pin-label-border-color);margin:var(--viewer-annotations-pin-label-padding-y) 0;padding:0 var(--viewer-annotations-pin-label-padding-x);max-width:calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)))}`;const f=class{constructor(n){i(this,n);this.labelChanged=t(this,"labelChanged");this.labelFocused=t(this,"labelFocused");this.labelBlurred=t(this,"labelBlurred");this.value="";this.focused=false;this.textareaRows=1;this.computeContentSize=()=>{c((()=>{if(this.contentEl!=null){this.contentElBounds=this.contentEl.getBoundingClientRect();const i=u(this.contentEl);this.textareaRows=Math.max(1,Math.ceil((parseFloat(i.getPropertyValue("height"))-parseFloat(i.getPropertyValue("borderWidth"))*2)/parseFloat(i.getPropertyValue("lineHeight"))))}}))};this.handleInputKeyDown=i=>{i.stopPropagation();if(i.key==="Enter"&&(i.ctrlKey||i.metaKey||i.shiftKey)){this.textareaRows+=1;this.value+="\n"}else if(i.key==="Enter"){i.preventDefault();this.submit()}};this.handlePointerDown=i=>{var t;if(!this.focused){if(this.elementBounds!=null){if(i.buttons!==2){i.preventDefault();i.stopPropagation()}this.relativePointerDownPosition=l(r(i,this.elementBounds),this.elementBounds);this.pinPointerDownPosition=(t=this.pin)===null||t===void 0?void 0:t.label.point;window.addEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointerup",this.handlePointerUp)}}};this.handlePointerMove=i=>{var t;if(this.elementBounds!=null&&this.relativePointerDownPosition&&this.pinPointerDownPosition!=null){i.preventDefault();i.stopPropagation();const n=r(i,this.elementBounds);const e=l(n,this.elementBounds);const o=a.subtract(e,this.relativePointerDownPosition);const s=this.pin!=null?{...this.pin,label:{...this.pin.label,point:a.add(this.pinPointerDownPosition,o)}}:undefined;if(s){(t=this.pinController)===null||t===void 0?void 0:t.updatePin(s);this.computeScreenPosition()}}};this.handlePointerUp=i=>{var t,n;if(((t=this.pinController)===null||t===void 0?void 0:t.getToolMode())==="edit"&&this.relativePointerDownPosition!=null&&this.elementBounds!=null){const t=h(this.relativePointerDownPosition,this.elementBounds);const e=a.distance(t,r(i,this.elementBounds));if(e<=2){this.focused=true;this.labelFocused.emit((n=this.pin)===null||n===void 0?void 0:n.id)}}this.relativePointerDownPosition=undefined;this.pinPointerDownPosition=undefined;window.removeEventListener("pointermove",this.handlePointerMove);window.removeEventListener("pointerup",this.handlePointerUp)};this.handleTextBlur=()=>{this.submit()};this.handleTextInput=i=>{const t=i.target;this.value=t.value}}async setFocus(){var i,t,n;if(typeof((i=this.inputEl)===null||i===void 0?void 0:i.focus)==="function"){this.focused=true;this.labelFocused.emit((t=this.pin)===null||t===void 0?void 0:t.id);(n=this.inputEl)===null||n===void 0?void 0:n.focus()}}async submit(){var i,t;this.focused=false;this.labelBlurred.emit((i=this.pin)===null||i===void 0?void 0:i.id);if(this.pin!=null){(t=this.pinController)===null||t===void 0?void 0:t.updatePin({...this.pin,label:{point:this.pin.label.point,text:this.value}})}}watchFocusChange(){var i,t;this.labelChanged.emit();if(this.focused){(i=this.pinController)===null||i===void 0?void 0:i.setSelectedPinId((t=this.pin)===null||t===void 0?void 0:t.id)}}watchPinChange(){var i,t;this.value=(t=(i=this.pin)===null||i===void 0?void 0:i.label.text)!==null&&t!==void 0?t:"";this.computeScreenPosition()}watchElementBoundsChange(){this.computeScreenPosition()}componentWillLoad(){var i,t;this.value=(t=(i=this.pin)===null||i===void 0?void 0:i.label.text)!==null&&t!==void 0?t:"";this.computeScreenPosition();if(this.pinController==null){this.pinController=new d(new v)}}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>{this.labelChanged.emit()}));this.contentResizeObserver=new ResizeObserver(this.computeContentSize);if(this.hostEl!=null){this.resizeObserver.observe(this.hostEl)}if(this.contentEl!=null){this.contentResizeObserver.observe(this.contentEl)}}disconnectedCallback(){var i,t;(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect();(t=this.contentResizeObserver)===null||t===void 0?void 0:t.disconnect()}componentDidRender(){if(this.focused&&this.inputEl!=null){this.setFocus()}}render(){var i,t,o;const{primaryColor:a,accentColor:r}=p(this.pin);return n(e,{key:"fb923b1f9f554d8e1306b296b0e12b7f69707807"},n("div",{key:"db20606dd0bc454da5bcc681be23a34e1d91b265",class:s("pin-label-input-wrapper",{focused:this.focused}),onPointerDown:this.handlePointerDown,style:{top:`${((i=this.computedScreenPosition)===null||i===void 0?void 0:i.y.toString())||0}px`,left:`${((t=this.computedScreenPosition)===null||t===void 0?void 0:t.x.toString())||0}px`,minWidth:this.computeMinWidth(),maxWidth:this.computeMaxWidth(),maxHeight:this.computeMaxHeight(),borderColor:a,background:r}},n("textarea",{key:"b814215c24ee32336e3946e3ac8be6df935d98a3",id:`pin-label-input-${(o=this.pin)===null||o===void 0?void 0:o.id}`,class:s("pin-label-input","pin-label-text",{["readonly"]:!this.focused}),disabled:!this.focused,ref:i=>this.inputEl=i,value:this.value,rows:this.textareaRows,onKeyDown:this.handleInputKeyDown,onInput:this.handleTextInput,onBlur:this.handleTextBlur}),!this.focused&&n("div",{key:"5c33525705f63133fc334dadcf24fb8c5cb9ef60",class:"pin-input-drag-target",onPointerDown:this.handlePointerDown})),n("div",{key:"ab6ac659deec0c9f224e6daa9125acf4b58764ce",ref:i=>this.contentEl=i,class:s("pin-label-text","pin-label-hidden"),style:{maxWidth:this.computeMaxWidth(),maxHeight:this.computeMaxHeight()}},this.hiddenContent()))}hiddenContent(){return this.value.includes("\n")?this.value.split("\n").reduce(((i,t)=>[...i,t,n("br",null)]),[]):[this.value]}computeMinWidth(){if(this.contentElBounds!=null){const i=`${this.contentElBounds.width+8}px`;return`min(${i}, ${this.computeMaxWidth()})`}else{return`var(--viewer-annotations-pin-label-min-width)`}}computeMaxWidth(){const i=`var(--viewer-annotations-pin-label-max-width)`;return`min(${i}, ${this.computeRemainingWidth()})`}computeMaxHeight(){const i=`var(--viewer-annotations-pin-label-max-height)`;return`min(${i}, ${this.computeRemainingHeight()})`}computeRemainingWidth(){var i,t;return`calc(${((i=this.elementBounds)===null||i===void 0?void 0:i.width.toString())||0}px - ${((t=this.computedScreenPosition)===null||t===void 0?void 0:t.x.toString())||0}px)`}computeRemainingHeight(){var i,t;return`calc(${((i=this.elementBounds)===null||i===void 0?void 0:i.height.toString())||0}px - ${((t=this.computedScreenPosition)===null||t===void 0?void 0:t.y.toString())||0}px)`}computeScreenPosition(){this.computedScreenPosition=b(this.pin)&&this.elementBounds!=null&&this.pin.label.point!=null?h(this.pin.label.point,this.elementBounds):undefined}get hostEl(){return o(this)}static get watchers(){return{focused:[{watchFocusChange:0}],pin:[{watchPinChange:0}],elementBounds:[{watchElementBoundsChange:0}]}}};f.style=w();const m=()=>`:host{--viewer-annotations-pin-label-line-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-label-line-width:1;overflow:hidden;pointer-events:none}.label-line{pointer-events:auto;stroke:var(--viewer-annotations-pin-label-line-color);stroke-width:var( --viewer-annotations-pin-label-line-width);cursor:default}.svg{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;height:100%;width:100%}`;const g=class{constructor(t){i(this,t)}render(){var i,t,o,a;const{primaryColor:s}=p(this.pin);return n(e,{key:"f40021966738624fa4707420dd223a1d8d3f0e10"},n("svg",{key:"80261903100db77ba6191f561cdb67daf614605f",class:"svg"},n("line",{key:"0dc3e8abaf17f961d5bf5a005ebf4ac29bb8ba96",class:"label-line",style:{stroke:s},x1:(i=this.labelPoint)===null||i===void 0?void 0:i.x,y1:(t=this.labelPoint)===null||t===void 0?void 0:t.y,x2:(o=this.pinPoint)===null||o===void 0?void 0:o.x,y2:(a=this.pinPoint)===null||a===void 0?void 0:a.y})))}};g.style=m();export{f as vertex_viewer_pin_label,g as vertex_viewer_pin_label_line};
5
+ //# sourceMappingURL=p-07214ba9.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getComputedStyle","el","window","viewerPinLabelCss","VertexPinLabel","constructor","hostRef","this","value","focused","textareaRows","computeContentSize","readDOM","contentEl","contentElBounds","getBoundingClientRect","computedStyles","Math","max","ceil","parseFloat","getPropertyValue","handleInputKeyDown","event","stopPropagation","key","ctrlKey","metaKey","shiftKey","preventDefault","submit","handlePointerDown","elementBounds","buttons","relativePointerDownPosition","translatePointToRelative","getMouseClientPosition","pinPointerDownPosition","_a","pin","label","point","addEventListener","handlePointerMove","handlePointerUp","relative","relativeDelta","Point","subtract","myUpdatedPin","add","undefined","pinController","updatePin","computeScreenPosition","getToolMode","pointerDownScreen","translatePointToScreen","distanceBetweenStartAndEndPoint","distance","labelFocused","emit","_b","id","removeEventListener","handleTextBlur","handleTextInput","input","target","setFocus","inputEl","focus","_c","labelBlurred","text","watchFocusChange","labelChanged","setSelectedPinId","watchPinChange","watchElementBoundsChange","componentWillLoad","PinController","PinModel","componentDidLoad","resizeObserver","ResizeObserver","contentResizeObserver","hostEl","observe","disconnectedCallback","disconnect","componentDidRender","render","primaryColor","accentColor","getPinColors","h","Host","class","classNames","onPointerDown","style","top","computedScreenPosition","y","toString","left","x","minWidth","computeMinWidth","maxWidth","computeMaxWidth","maxHeight","computeMaxHeight","borderColor","background","disabled","ref","rows","onKeyDown","onInput","onBlur","hiddenContent","includes","split","reduce","res","str","expected","width","computeRemainingWidth","computeRemainingHeight","height","isTextPin","viewerPinLabelLineCss","VertexPinLabelLine","stroke","x1","labelPoint","y1","x2","pinPoint","y2","_d"],"sources":["src/components/viewer-pin-label/utils.ts","src/components/viewer-pin-label/viewer-pin-label.css?tag=vertex-viewer-pin-label","src/components/viewer-pin-label/viewer-pin-label.tsx","src/components/viewer-pin-label-line/viewer-pin-label-line.css?tag=vertex-viewer-pin-label-line","src/components/viewer-pin-label-line/viewer-pin-label-line.tsx"],"sourcesContent":["export function getComputedStyle(el: HTMLElement): CSSStyleDeclaration {\n return window.getComputedStyle(el);\n}\n",":host {\n /**\n * @prop --viewer-annotations-pin-label-background-color: A CSS color that\n * specifies the color of the label background\n */\n --viewer-annotations-pin-label-background-color: var(--viewer-annotations-pin-accent-color);\n\n /**\n * @prop --viewer-annotations-pin-label-border-color: A CSS color that\n * specifies the color of the label's border\n */\n --viewer-annotations-pin-label-border-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-label-focused-border-color: A CSS color that\n * specifies the color of the label's border when focused. \n */\n --viewer-annotations-pin-label-focused-border-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-label-color: A CSS color that\n * specifies the color of the label \n */\n --viewer-annotations-pin-label-color: var(--white);\n\n /**\n * @prop --viewer-annotations-pin-label-padding-y: A var that\n * specifies the vertical padding of the label\n */\n --viewer-annotations-pin-label-padding-y: 0.375em;\n\n /**\n * @prop --viewer-annotations-pin-label-padding-x: A var that\n * specifies the horizontal padding of the label\n */\n --viewer-annotations-pin-label-padding-x: 0.5em;\n\n /**\n * @prop --viewer-annotations-pin-label-border-width: A CSS length that\n * specifies the width of the border on this label. Defaults to `2px`.\n */\n --viewer-annotations-pin-label-border-width: 2px;\n\n /**\n * @prop --viewer-annotations-pin-label-border-style: A CSS variable that\n * specifies the style of border on this label. Defaults to `solid`.\n */\n --viewer-annotations-pin-label-border-style: solid;\n\n /**\n * @prop --viewer-annotations-pin-label-border-radius: A var that\n * specifies the border radius of the label\n */\n --viewer-annotations-pin-label-border-radius: 0.25em;\n\n /**\n * @prop --viewer-annotations-pin-label-min-width: A CSS length that\n * specifies the minimum width of the label. Defaults to `2rem`.\n */\n --viewer-annotations-pin-label-min-width: 2rem;\n\n /**\n * @prop --viewer-annotations-pin-label-max-width: A CSS length that\n * specifies the maximum width of the label. Defaults to `25rem`.\n */\n --viewer-annotations-pin-label-max-width: 25rem;\n\n /**\n * @prop --viewer-annotations-pin-label-max-height: A CSS length that\n * specifies the maximum height of the label. Defaults to `50rem`.\n */\n --viewer-annotations-pin-label-max-height: 50rem;\n\n overflow: hidden;\n pointer-events: none;\n}\n\n:host([mode='']) .pin-label {\n color: var(--viewer-annotations-pin-label-color);\n background: var(--viewer-annotations-pin-label-background-color);\n}\n\n.pin-label-text {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 0.875rem;\n line-height: 1rem;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.pin-label-input-wrapper {\n display: flex;\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n min-width: var(--viewer-annotations-pin-label-min-width);\n max-width: var(--viewer-annotations-pin-label-max-width);\n max-height: var(--viewer-annotations-pin-label-max-height);\n background: var(--viewer-annotations-pin-label-background-color);\n border-width: var(--viewer-annotations-pin-label-border-width);\n border-style: var(--viewer-annotations-pin-label-border-style);\n border-color: var(--viewer-annotations-pin-label-border-color);\n border-radius: var(--viewer-annotations-pin-label-border-radius);\n}\n\n.pin-label-input-wrapper.focused {\n min-width: var(--viewer-annotations-pin-label-max-width);\n border-color: var(--viewer-annotations-pin-label-focused-border-color);\n}\n\n.pin-input-drag-target {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n\n.pin-label-input {\n resize: none;\n position: relative;\n outline: none;\n border: none;\n word-break: break-word;\n padding: 0 0 0 0;\n background-color: transparent;\n margin: var(--viewer-annotations-pin-label-padding-y) var(--viewer-annotations-pin-label-padding-x);\n width: var(--viewer-annotations-pin-label-min-width);\n flex-grow: 1;\n overflow: hidden;\n max-width: calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)));\n}\n\n.pin-label-input.readonly {\n pointer-events: auto;\n color: black;\n cursor: pointer;\n}\n\n.pin-label-hidden {\n position: absolute;\n visibility: hidden;\n pointer-events: none;\n width: auto;\n height: auto;\n box-sizing: border-box;\n border-width: var(--viewer-annotations-pin-label-border-width);\n border-style: var(--viewer-annotations-pin-label-border-style);\n border-color: var(--viewer-annotations-pin-label-border-color);\n margin: var(--viewer-annotations-pin-label-padding-y) 0;\n padding: 0 var(--viewer-annotations-pin-label-padding-x);\n max-width: calc(var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)));\n}\n","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 (parseFloat(computedStyles.getPropertyValue('height')) -\n parseFloat(computedStyles.getPropertyValue('borderWidth')) * 2) /\n 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","\n:host {\n /**\n * @prop --viewer-annotations-pin-label-line-color: A CSS color that\n * specifies the color of the label line\n */\n --viewer-annotations-pin-label-line-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-label-line-width: A CSS color that\n * specifies the width of the label line\n */\n --viewer-annotations-pin-label-line-width: 1;\n\n overflow: hidden;\n pointer-events: none;\n}\n\n.label-line {\n pointer-events: auto;\n stroke: var(--viewer-annotations-pin-label-line-color);\n stroke-width: var( --viewer-annotations-pin-label-line-width);\n cursor: default;\n}\n\n.svg {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n pointer-events: none;\n height: 100%;\n width: 100%;\n}\n","import {\n Component,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\n\nimport { getPinColors, Pin } from '../../lib/pins/model';\n\n@Component({\n tag: 'vertex-viewer-pin-label-line',\n styleUrl: 'viewer-pin-label-line.css',\n shadow: false,\n})\nexport class VertexPinLabelLine {\n @Prop()\n public pinPoint: Point.Point | undefined;\n\n @Prop()\n public labelPoint: Point.Point | undefined;\n\n @Prop()\n public pin: Pin | undefined;\n\n protected render(): JSX.Element {\n const { primaryColor } = getPinColors(this.pin);\n return (\n <Host>\n <svg class=\"svg\">\n <line\n class=\"label-line\"\n style={{\n stroke: primaryColor,\n }}\n x1={this.labelPoint?.x}\n y1={this.labelPoint?.y}\n x2={this.pinPoint?.x}\n y2={this.pinPoint?.y}\n />\n </svg>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
+ */
4
+ import{h as i,F as t,r as e}from"./p-CCVkga9Q.js";import{p as n,m as o,v as s}from"./p-DfdVaPrt.js";import"./p-Dg5Yw3qK.js";import"./p-C-9RlwtF.js";import"./p-Cmw9UEdq.js";import"./p-BNuMPeJ8.js";import"./p-ux1ckSDN.js";import"./p-BYfDquz2.js";import"./p-Bl7Tdbc9.js";import"./p-ujnhJ1UM.js";import"./p-BAhfr1Nx.js";import{V as r}from"./p-Dn7vK758.js";import{g as a,i as l,b as d,P as p,a as h,c}from"./p-ND6l6nAr.js";import{c as v}from"./p-Dw4-tG-V.js";import"./p--8q6LyIm.js";import"./p-BuOEMGyM.js";import"./p-CG9AChtV.js";import"./p-CiSHWNC4.js";const u=({pin:e,selected:n,occluded:o,detached:s})=>{const{primaryColor:r}=a(e);return i(t,null,d(e)&&i("div",{id:"pin-anchor",class:v("pin-anchor",{selected:n,"pin-occluded":o,"pin-detached":s}),style:{background:r}}),l(e)&&i("vertex-viewer-icon",{name:"pin-fill",size:"lg",class:v("pin",{"pin-selected":n,"pin-occluded":o,"pin-detached":s}),style:{color:r}}))};function b(i,t,e){const o={x:i.x+e.width/2,y:i.y};const s={x:i.x+e.width/2,y:i.y+e.height};const r={x:i.x+e.width,y:i.y+e.height/2};const a={x:i.x,y:i.y+e.height/2};const l=[o,s,a,r];const d=l.map((i=>n.distance(i,t)));const p=d.indexOf(Math.min(...d));return l[p]}const f=()=>`:host{--viewer-annotations-pin-primary-color:var(--blue-700);--viewer-annotations-pin-accent-color:var(--blue-200);--viewer-annotations-pin-dot-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-font-size:0.75rem;--viewer-annotations-pin-selected-stroke:var(--white);--viewer-annotations-pin-selected-border:2px solid var(--white);--viewer-annotations-pin-label-border:2px solid var(--black);--viewer-annotations-pin-selected-stroke:var(--white);font-size:var(--viewer-annotations-pin-font-size);position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}.pin-anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;width:9px;height:9px;box-sizing:border-box;border:var(--viewer-annotations-pin-label-border);background:var(--viewer-annotations-pin-dot-color);pointer-events:auto;cursor:pointer}.selected{width:13px;height:13px;border:var(--viewer-annotations-pin-selected-border)}.pin{color:var(--viewer-annotations-pin-color);cursor:pointer;transition:opacity 0.3s ease-in;transform:translate(0px, -12px)}.pin-selected{stroke-width:1;stroke:var(--viewer-annotations-pin-selected-stroke)}.pin-occluded{opacity:.3;transition:opacity 0.3s ease-in}.pin-detached{visibility:hidden}`;const w=class{constructor(i){e(this,i);this.matrix=o.makeIdentity();this.projectionViewMatrix=o.makeIdentity();this.pinModel=new p;this.selected=false;this.occluded=false;this.detached=false;this.invalidateStateCounter=0;this.invalidateState=()=>{this.invalidateStateCounter=this.invalidateStateCounter+1}}componentWillLoad(){if(this.pinController==null){this.pinController=new h(this.pinModel)}}componentDidLoad(){var i;this.setLabelObserver();if(this.selected){(i=this.labelEl)===null||i===void 0?void 0:i.setFocus()}}async handleOcclusionStateChanged(i){this.occluded=i.detail}async handleDetachedStateChanged(i){this.detached=i.detail}disconnectedCallback(){var i,t;(i=this.labelEl)===null||i===void 0?void 0:i.removeEventListener("labelChanged",this.invalidateState);(t=this.resizeObserver)===null||t===void 0?void 0:t.disconnect()}render(){var e;if(this.pin==null){throw new Error("Unable to draw pin")}const{pinPoint:n,labelPoint:o}=this.computePinPoints(this.pin);return i(t,{key:"e3a02afe3d6a71677e15a9b4d31251970cb9a85e"},i("vertex-viewer-dom-element",{key:"182ec8f3fb4440045d8d9afef16dcb182087e4dd","data-testid":`drawn-pin-${this.pin.id}`,position:this.pin.worldPosition,onPointerDown:async()=>{var i;await((i=this.labelEl)===null||i===void 0?void 0:i.submit());this.selectPin();this.handleAnchorPointerDown()},detachedOff:false},i(u,{key:"53368cba2d76f71dbdb367760ede137d4b1c3a9e",pin:this.pin,selected:this.selected,occluded:this.occluded,detached:this.detached})),d(this.pin)&&!this.occluded&&!this.detached&&i(t,{key:"5318ed3e3afb2680ec4c4b2050dfb34b663ebd08"},i("vertex-viewer-pin-label-line",{key:"a84145a009f83969b47deef61649d65dd594d1ce",id:`pin-label-line-${(e=this.pin)===null||e===void 0?void 0:e.id}`,pinPoint:n,pin:this.pin,labelPoint:o,onPointerDown:()=>this.selectPin()}),i("vertex-viewer-pin-label",{key:"efce5f94d0e1e7e3803b089a94f0e23671a0f6f4",pin:this.pin,ref:i=>this.labelEl=i,elementBounds:this.elementBounds,pinController:this.pinController,onPointerDown:()=>this.selectPin()})))}setLabelObserver(){if(this.labelEl!=null){this.labelEl.addEventListener("labelChanged",this.invalidateState);this.resizeObserver=new ResizeObserver((()=>this.invalidateState()));this.resizeObserver.observe(this.labelEl)}}computePinPoints(i){if(this.elementBounds!=null&&this.pin!=null){return d(this.pin)&&this.pin.label.point!=null?this.computeTextPinPoints(this.pin,this.elementBounds):this.computeDefaultPinPoints(this.pin,this.elementBounds)}return{pinPoint:i.worldPosition}}computeDefaultPinPoints(i,t){return{pinPoint:this.getFromWorldPosition(i.worldPosition,this.projectionViewMatrix,t)}}computeTextPinPoints(i,t){var e,n,o,s;const{pinPoint:r}=this.computeDefaultPinPoints(i,t);const a=c(i.label.point,t);const l=((n=(e=this.labelEl)===null||e===void 0?void 0:e.firstElementChild)===null||n===void 0?void 0:n.clientWidth)||0;const d=((s=(o=this.labelEl)===null||o===void 0?void 0:o.firstElementChild)===null||s===void 0?void 0:s.clientHeight)||0;return{pinPoint:r,labelPoint:b(a,r,{width:l,height:d})}}handleAnchorPointerDown(){var i,t;if(this.elementBounds!=null&&((i=this.pinController)===null||i===void 0?void 0:i.getToolMode())==="edit"&&this.pin!=null){(t=this.pinController)===null||t===void 0?void 0:t.setDraggable({id:this.pin.id})}}selectPin(){var i,t;(i=this.pinController)===null||i===void 0?void 0:i.setSelectedPinId((t=this.pin)===null||t===void 0?void 0:t.id)}getFromWorldPosition(i,t,e){const n=s.transformMatrix(i,t);return r.fromDimensions(e).transformVectorToViewport(n)}};w.style=f();export{w as vertex_viewer_pin_group};
5
+ //# sourceMappingURL=p-1a463ace.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PinRenderer","pin","selected","occluded","detached","primaryColor","getPinColors","h","Fragment","isTextPin","id","class","classNames","style","background","isIconPin","name","size","color","getClosestCenterToPoint","boxPoint","pointToMeasure","dimensions","topPoint","x","width","y","bottomPoint","height","rightPoint","leftPoint","candidates","distances","map","candidate","Point","distance","candidateIndex","indexOf","Math","min","viewerPinGroupCss","ViewerPinGroup","constructor","hostRef","this","matrix","Matrix4","makeIdentity","projectionViewMatrix","pinModel","PinModel","invalidateStateCounter","invalidateState","componentWillLoad","pinController","PinController","componentDidLoad","setLabelObserver","_a","labelEl","setFocus","handleOcclusionStateChanged","event","detail","handleDetachedStateChanged","disconnectedCallback","removeEventListener","_b","resizeObserver","disconnect","render","Error","pinPoint","labelPoint","computePinPoints","key","position","worldPosition","onPointerDown","async","submit","selectPin","handleAnchorPointerDown","detachedOff","ref","el","elementBounds","addEventListener","ResizeObserver","observe","label","point","computeTextPinPoints","computeDefaultPinPoints","getFromWorldPosition","screenPosition","translatePointToScreen","labelWidth","firstElementChild","clientWidth","labelHeight","_d","_c","clientHeight","getToolMode","setDraggable","setSelectedPinId","pt","ndcPt","Vector3","transformMatrix","Viewport","fromDimensions","transformVectorToViewport"],"sources":["src/components/viewer-pin-group/pin-renderer.tsx","src/components/viewer-pin-group/utils.ts","src/components/viewer-pin-group/viewer-pin-group.css?tag=vertex-viewer-pin-group","src/components/viewer-pin-group/viewer-pin-group.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { getPinColors, isIconPin, isTextPin, Pin } from '../../lib/pins/model';\n\ninterface PinRendererProps {\n pin?: Pin;\n selected: boolean;\n occluded: boolean;\n detached: boolean;\n}\n\nexport const PinRenderer: FunctionalComponent<PinRendererProps> = ({\n pin,\n selected,\n occluded,\n detached,\n}) => {\n const { primaryColor } = getPinColors(pin);\n\n return (\n <Fragment>\n {isTextPin(pin) && (\n <div\n id=\"pin-anchor\"\n class={classNames('pin-anchor', {\n selected: selected,\n 'pin-occluded': occluded,\n 'pin-detached': detached,\n })}\n style={{\n background: primaryColor,\n }}\n ></div>\n )}\n\n {isIconPin(pin) && (\n <vertex-viewer-icon\n name=\"pin-fill\"\n size=\"lg\"\n class={classNames('pin', {\n 'pin-selected': selected,\n 'pin-occluded': occluded,\n 'pin-detached': detached,\n })}\n style={{\n color: primaryColor,\n }}\n />\n )}\n </Fragment>\n );\n};\n","import { Dimensions, Point } from '@vertexvis/geometry';\n\nexport function getClosestCenterToPoint(\n boxPoint: Point.Point,\n pointToMeasure: Point.Point,\n dimensions: Dimensions.Dimensions\n): Point.Point {\n const topPoint = {\n x: boxPoint.x + dimensions.width / 2,\n y: boxPoint.y,\n };\n\n const bottomPoint = {\n x: boxPoint.x + dimensions.width / 2,\n y: boxPoint.y + dimensions.height,\n };\n\n const rightPoint = {\n x: boxPoint.x + dimensions.width,\n y: boxPoint.y + dimensions.height / 2,\n };\n\n const leftPoint = {\n x: boxPoint.x,\n y: boxPoint.y + dimensions.height / 2,\n };\n\n const candidates = [topPoint, bottomPoint, leftPoint, rightPoint];\n\n const distances = candidates.map((candidate) =>\n Point.distance(candidate, pointToMeasure)\n );\n\n const candidateIndex = distances.indexOf(Math.min(...distances));\n return candidates[candidateIndex];\n}\n",":host {\n\n /**\n * @prop --viewer-annotations-pin-primary-color: A CSS color that\n * specifies the primary color for the pins. This value gets used for the dot color \n * and borders\n */\n --viewer-annotations-pin-primary-color: var(--blue-700);\n\n /**\n * @prop --viewer-annotations-pin-accent-color: A CSS color that\n * specifies the accent color for the pins. This value gets used for background colors\n * \n */\n\n --viewer-annotations-pin-accent-color: var(--blue-200);\n /**\n * @prop viewer-annotations-pin-dot-color: A CSS color that\n * specifies the color of the anchor dot\n */\n --viewer-annotations-pin-dot-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-color: A CSS color that\n * specifies the color of the pin\n */\n --viewer-annotations-pin-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-font-size: A CSS property to specify\n the font size of the pin\n */\n --viewer-annotations-pin-font-size: 0.75rem;\n\n /**\n * @prop --viewer-annotations-pin-selected-stroke: A CSS color that\n * specifies the stroke color of a selected pin\n */\n --viewer-annotations-pin-selected-stroke: var(--white);\n\n /**\n * @prop --viewer-annotations-pin-selected-border: A CSS color that\n * specifies the border of a selected pin\n */\n --viewer-annotations-pin-selected-border: 2px solid var(--white);\n\n /**\n * @prop --viewer-annotations-pin-label-border: A CSS color that\n * specifies the border of a text pin anchor\n */\n --viewer-annotations-pin-label-border: 2px solid var(--black);\n\n /**\n * @prop --viewer-annotations-pin-selected-border: A CSS color that\n * specifies the stroke of a selected default pin\n */\n --viewer-annotations-pin-selected-stroke: var(--white);\n\n font-size: var(--viewer-annotations-pin-font-size);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.pin-anchor {\n position: absolute;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 9px;\n height: 9px;\n box-sizing: border-box;\n border: var(--viewer-annotations-pin-label-border);\n background: var(--viewer-annotations-pin-dot-color);\n pointer-events: auto;\n cursor: pointer;\n}\n\n.selected {\n width: 13px;\n height: 13px;\n border: var(--viewer-annotations-pin-selected-border)\n}\n\n.pin {\n color: var(--viewer-annotations-pin-color);\n cursor: pointer;\n transition: opacity 0.3s ease-in;\n\n /**\n * Place bottom point of the pin at the location instead of the middle of the pin\n */\n transform: translate(0px, -12px);\n}\n\n.pin-selected {\n stroke-width: 1;\n stroke: var(--viewer-annotations-pin-selected-stroke);\n}\n\n.pin-occluded {\n opacity: .3;\n transition: opacity 0.3s ease-in;\n}\n\n.pin-detached {\n visibility: hidden;\n}","import {\n Component,\n Fragment,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n JSX,\n Listen,\n Prop,\n State,\n} from '@stencil/core';\nimport { Dimensions, Matrix4, Point, Vector3 } from '@vertexvis/geometry';\n\nimport { Viewport } from '../..';\nimport { PinController } from '../../lib/pins/controller';\nimport { isTextPin, Pin, TextPin } from '../../lib/pins/model';\nimport { PinModel } from '../../lib/pins/model';\nimport { translatePointToScreen } from '../viewer-pin-tool/utils';\nimport { PinRenderer } from './pin-renderer';\nimport { getClosestCenterToPoint } from './utils';\n\ninterface ComputedPoints {\n pinPoint: Point.Point;\n labelPoint?: Point.Point;\n}\n\n@Component({\n tag: 'vertex-viewer-pin-group',\n styleUrl: 'viewer-pin-group.css',\n shadow: false,\n})\nexport class ViewerPinGroup {\n /**\n * The pin to draw for the group\n */\n @Prop()\n public pin?: Pin;\n\n /**\n * The local matrix of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public matrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * Projection view matrix used for computing the position of the pin line\n */\n @Prop()\n public projectionViewMatrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * The dimensions of the canvas for the pins\n */\n @Prop({ mutable: true })\n public elementBounds?: DOMRect;\n\n /**\n * The model that contains the entities and outcomes from performing pin operations\n */\n @Prop()\n public pinModel: PinModel = new PinModel();\n\n /**\n * The controller that drives behavior for pin operations\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * Whether the pin is \"selected\"\n */\n @Prop()\n public selected = false;\n\n /**\n * @internal\n * Whether the pin is occluded\n */\n @Prop({ mutable: true, reflect: true })\n public occluded = false;\n\n /**\n * @internal\n * Whether the pin is detached\n */\n @Prop({ mutable: true, reflect: true })\n public detached = false;\n\n @State()\n private invalidateStateCounter = 0;\n\n private labelEl: HTMLVertexViewerPinLabelElement | undefined;\n\n private resizeObserver?: ResizeObserver;\n\n protected componentWillLoad(): void {\n if (this.pinController == null) {\n this.pinController = new PinController(this.pinModel);\n }\n }\n\n protected componentDidLoad(): void {\n this.setLabelObserver();\n\n if (this.selected) {\n this.labelEl?.setFocus();\n }\n }\n\n /**\n * @ignore\n */\n @Listen('occlusionStateChanged')\n protected async handleOcclusionStateChanged(\n event: CustomEvent<boolean>\n ): Promise<void> {\n this.occluded = event.detail;\n }\n\n /**\n * @ignore\n */\n @Listen('detachedStateChanged')\n protected async handleDetachedStateChanged(\n event: CustomEvent<boolean>\n ): Promise<void> {\n this.detached = event.detail;\n }\n\n protected disconnectedCallback(): void {\n this.labelEl?.removeEventListener('labelChanged', this.invalidateState);\n this.resizeObserver?.disconnect();\n }\n\n protected render(): JSX.Element {\n if (this.pin == null) {\n throw new Error('Unable to draw pin');\n }\n\n const { pinPoint, labelPoint } = this.computePinPoints(this.pin);\n\n return (\n <Fragment>\n <vertex-viewer-dom-element\n data-testid={`drawn-pin-${this.pin.id}`}\n position={this.pin.worldPosition}\n onPointerDown={async () => {\n await this.labelEl?.submit();\n this.selectPin();\n this.handleAnchorPointerDown();\n }}\n detachedOff={false}\n >\n <PinRenderer\n pin={this.pin}\n selected={this.selected}\n occluded={this.occluded}\n detached={this.detached}\n />\n </vertex-viewer-dom-element>\n\n {isTextPin(this.pin) && !this.occluded && !this.detached && (\n <Fragment>\n <vertex-viewer-pin-label-line\n id={`pin-label-line-${this.pin?.id}`}\n pinPoint={pinPoint}\n pin={this.pin}\n labelPoint={labelPoint}\n onPointerDown={() => this.selectPin()}\n ></vertex-viewer-pin-label-line>\n\n <vertex-viewer-pin-label\n pin={this.pin}\n ref={(el) => (this.labelEl = el)}\n elementBounds={this.elementBounds}\n pinController={this.pinController}\n onPointerDown={() => this.selectPin()}\n ></vertex-viewer-pin-label>\n </Fragment>\n )}\n </Fragment>\n );\n }\n\n private invalidateState = (): void => {\n this.invalidateStateCounter = this.invalidateStateCounter + 1;\n };\n\n private setLabelObserver(): void {\n if (this.labelEl != null) {\n this.labelEl.addEventListener('labelChanged', this.invalidateState);\n\n this.resizeObserver = new ResizeObserver(() => this.invalidateState());\n this.resizeObserver.observe(this.labelEl);\n }\n }\n\n private computePinPoints(pin: Pin): ComputedPoints {\n if (this.elementBounds != null && this.pin != null) {\n return isTextPin(this.pin) && this.pin.label.point != null\n ? this.computeTextPinPoints(this.pin, this.elementBounds)\n : this.computeDefaultPinPoints(this.pin, this.elementBounds);\n }\n\n return { pinPoint: pin.worldPosition };\n }\n\n private computeDefaultPinPoints(\n pin: Pin,\n elementBounds: DOMRect\n ): ComputedPoints {\n return {\n pinPoint: this.getFromWorldPosition(\n pin.worldPosition,\n this.projectionViewMatrix,\n elementBounds\n ),\n };\n }\n\n private computeTextPinPoints(\n pin: TextPin,\n elementBounds: DOMRect\n ): ComputedPoints {\n const { pinPoint } = this.computeDefaultPinPoints(pin, elementBounds);\n\n const screenPosition = translatePointToScreen(\n pin.label.point,\n elementBounds\n );\n\n const labelWidth = this.labelEl?.firstElementChild?.clientWidth || 0;\n const labelHeight = this.labelEl?.firstElementChild?.clientHeight || 0;\n\n return {\n pinPoint,\n labelPoint: getClosestCenterToPoint(screenPosition, pinPoint, {\n width: labelWidth,\n height: labelHeight,\n }),\n };\n }\n\n private handleAnchorPointerDown(): void {\n if (\n this.elementBounds != null &&\n this.pinController?.getToolMode() === 'edit' &&\n this.pin != null\n ) {\n this.pinController?.setDraggable({ id: this.pin.id });\n }\n }\n\n private selectPin(): void {\n this.pinController?.setSelectedPinId(this.pin?.id);\n }\n\n private getFromWorldPosition(\n pt: Vector3.Vector3,\n projectionViewMatrix: Matrix4.Matrix4,\n dimensions: Dimensions.Dimensions\n ): Point.Point {\n const ndcPt = Vector3.transformMatrix(pt, projectionViewMatrix);\n return Viewport.fromDimensions(dimensions).transformVectorToViewport(ndcPt);\n }\n}\n"],"mappings":"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","ignoreList":[]}