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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +14 -50
  3. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
  4. package/dist/cjs/vertex-viewer-markup.cjs.entry.js +14 -29
  5. package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
  6. package/dist/cjs/viewer.cjs.js +1 -1
  7. package/dist/collection/components/viewer-markup/viewer-markup.js +14 -29
  8. package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
  9. package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js +14 -50
  10. package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
  11. package/dist/components/vertex-viewer-markup-tool.js +1 -1
  12. package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
  13. package/dist/components/vertex-viewer-markup.js +1 -1
  14. package/dist/components/vertex-viewer-markup.js.map +1 -1
  15. package/dist/esm/loader.js +1 -1
  16. package/dist/esm/loader.mjs +1 -1
  17. package/dist/esm/vertex-viewer-markup-tool.entry.js +14 -50
  18. package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
  19. package/dist/esm/vertex-viewer-markup.entry.js +14 -29
  20. package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
  21. package/dist/esm/viewer.js +1 -1
  22. package/dist/types/components/viewer-markup/viewer-markup.d.ts +1 -13
  23. package/dist/types/components/viewer-markup-tool/viewer-markup-tool.d.ts +1 -25
  24. package/dist/viewer/p-0ac84ef2.entry.js +5 -0
  25. package/dist/viewer/p-0ac84ef2.entry.js.map +1 -0
  26. package/dist/viewer/p-f0f98be0.entry.js +5 -0
  27. package/dist/viewer/p-f0f98be0.entry.js.map +1 -0
  28. package/dist/viewer/viewer.esm.js +1 -1
  29. package/package.json +7 -7
  30. package/dist/viewer/p-1152e3db.entry.js +0 -5
  31. package/dist/viewer/p-1152e3db.entry.js.map +0 -1
  32. package/dist/viewer/p-b275cb83.entry.js +0 -5
  33. package/dist/viewer/p-b275cb83.entry.js.map +0 -1
@@ -8,7 +8,7 @@ var index = require('./index-C_J7n4Dv.js');
8
8
  const defineCustomElements = async (win, options) => {
9
9
  if (typeof window === 'undefined') return undefined;
10
10
  await index.globalScripts();
11
- return index.bootstrapLazy(JSON.parse("[[\"vertex-scene-tree.cjs\",[[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.cjs\",[[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.cjs\",[[1,\"vertex-viewer-default-toolbar\",{\"viewer\":[16],\"placement\":[1],\"direction\":[1],\"animationsDisabled\":[4,\"animations-disabled\"],\"animationMs\":[2,\"animation-ms\"]}]]],[\"vertex-viewer-markup.cjs\",[[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}],\"tool\":[{\"handleToolChanged\":0}],\"arrowTemplateId\":[{\"handleArrowTemplateIdChanged\":0}],\"circleTemplateId\":[{\"handleCircleTemplateIdChanged\":0}],\"freeformTemplateId\":[{\"handleFreeformTemplateIdChanged\":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.cjs\",[[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}],\"tool\":[{\"handleToolChanged\":0}],\"arrowTemplateId\":[{\"handleArrowTemplateIdChanged\":0}],\"circleTemplateId\":[{\"handleCircleTemplateIdChanged\":0}],\"freeformTemplateId\":[{\"handleFreeformTemplateIdChanged\":0}],\"disabled\":[{\"handleDisabledChanged\":0}],\"startLineAnchorStyle\":[{\"handleStartLineAnchorStyleChanged\":0}],\"endLineAnchorStyle\":[{\"handleEndLineAnchorStyleChanged\":0}]}]]],[\"vertex-viewer-view-cube.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[1,\"vertex-viewer-annotation-callout\",{\"data\":[16],\"iconSize\":[1,\"icon-size\"]}]]],[\"vertex-viewer-box-query-tool.cjs\",[[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.cjs\",[[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.cjs\",[[257,\"vertex-scene-tree-table-column\",{\"initialWidth\":[2,\"initial-width\"],\"minWidth\":[2,\"min-width\"],\"maxWidth\":[2,\"max-width\"]}]]],[\"vertex-scene-tree-table-header.cjs\",[[257,\"vertex-scene-tree-table-header\"]]],[\"vertex-scene-tree-table-resize-divider.cjs\",[[257,\"vertex-scene-tree-table-resize-divider\",{\"hovering\":[32],\"dragging\":[32]}]]],[\"vertex-scene-tree-toolbar-group.cjs\",[[257,\"vertex-scene-tree-toolbar-group\"]]],[\"vertex-viewer.cjs\",[[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],\"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}],\"experimentalRenderingOptions\":[{\"handleStreamAttributesChanged\":0}],\"depthBuffers\":[{\"handleStreamAttributesChanged\":0}],\"featureHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"featureLines\":[{\"handleStreamAttributesChanged\":0}],\"featureMaps\":[{\"handleStreamAttributesChanged\":0}],\"noDefaultLights\":[{\"handleStreamAttributesChanged\":0}],\"phantom\":[{\"handleStreamAttributesChanged\":0}],\"sceneComparison\":[{\"handleStreamAttributesChanged\":0}],\"crossSectioning\":[{\"handleStreamAttributesChanged\":0}],\"selectionHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"enableTemporalRefinement\":[{\"handleEnableTemporalRefinementChanged\":0}],\"config\":[{\"handleConfigChanged\":0}],\"configEnv\":[{\"handleConfigEnvChanged\":0}]}]]],[\"vertex-viewer-hit-result-indicator.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[1,\"vertex-viewer-spinner\",{\"size\":[1]}]]],[\"vertex-viewer-layer.cjs\",[[257,\"vertex-viewer-layer\",{\"stretchOff\":[516,\"stretch-off\"]}]]],[\"vertex-viewer-button_3.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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\":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}],\"occluded\":[{\"handleOcclusionStateChanged\":0}],\"detached\":[{\"handleDetachedStateChanged\":0}]}]]],[\"vertex-viewer-markup-arrow_3.cjs\",[[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}],\"scale\":[{\"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}],\"scale\":[{\"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}],\"offset\":[{\"recomputePointsFromProps\":0}],\"scale\":[{\"recomputePointsFromProps\":0},{\"handleScaleChange\":0}],\"bounds\":[{\"recomputePointsFromProps\":0}],\"points\":[{\"recomputePointsFromProps\":0}],\"mode\":[{\"handleModeChange\":0}]}]]],[\"vertex-viewer-icon.cjs\",[[1,\"vertex-viewer-icon\",{\"name\":[1],\"size\":[1]}]]]]"), options);
11
+ return index.bootstrapLazy(JSON.parse("[[\"vertex-scene-tree.cjs\",[[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.cjs\",[[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.cjs\",[[1,\"vertex-viewer-default-toolbar\",{\"viewer\":[16],\"placement\":[1],\"direction\":[1],\"animationsDisabled\":[4,\"animations-disabled\"],\"animationMs\":[2,\"animation-ms\"]}]]],[\"vertex-viewer-markup.cjs\",[[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.cjs\",[[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}]}]]],[\"vertex-viewer-view-cube.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[1,\"vertex-viewer-annotation-callout\",{\"data\":[16],\"iconSize\":[1,\"icon-size\"]}]]],[\"vertex-viewer-box-query-tool.cjs\",[[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.cjs\",[[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.cjs\",[[257,\"vertex-scene-tree-table-column\",{\"initialWidth\":[2,\"initial-width\"],\"minWidth\":[2,\"min-width\"],\"maxWidth\":[2,\"max-width\"]}]]],[\"vertex-scene-tree-table-header.cjs\",[[257,\"vertex-scene-tree-table-header\"]]],[\"vertex-scene-tree-table-resize-divider.cjs\",[[257,\"vertex-scene-tree-table-resize-divider\",{\"hovering\":[32],\"dragging\":[32]}]]],[\"vertex-scene-tree-toolbar-group.cjs\",[[257,\"vertex-scene-tree-toolbar-group\"]]],[\"vertex-viewer.cjs\",[[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],\"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}],\"experimentalRenderingOptions\":[{\"handleStreamAttributesChanged\":0}],\"depthBuffers\":[{\"handleStreamAttributesChanged\":0}],\"featureHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"featureLines\":[{\"handleStreamAttributesChanged\":0}],\"featureMaps\":[{\"handleStreamAttributesChanged\":0}],\"noDefaultLights\":[{\"handleStreamAttributesChanged\":0}],\"phantom\":[{\"handleStreamAttributesChanged\":0}],\"sceneComparison\":[{\"handleStreamAttributesChanged\":0}],\"crossSectioning\":[{\"handleStreamAttributesChanged\":0}],\"selectionHighlighting\":[{\"handleStreamAttributesChanged\":0}],\"enableTemporalRefinement\":[{\"handleEnableTemporalRefinementChanged\":0}],\"config\":[{\"handleConfigChanged\":0}],\"configEnv\":[{\"handleConfigEnvChanged\":0}]}]]],[\"vertex-viewer-hit-result-indicator.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[1,\"vertex-viewer-spinner\",{\"size\":[1]}]]],[\"vertex-viewer-layer.cjs\",[[257,\"vertex-viewer-layer\",{\"stretchOff\":[516,\"stretch-off\"]}]]],[\"vertex-viewer-button_3.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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.cjs\",[[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\":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}],\"occluded\":[{\"handleOcclusionStateChanged\":0}],\"detached\":[{\"handleDetachedStateChanged\":0}]}]]],[\"vertex-viewer-markup-arrow_3.cjs\",[[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}],\"scale\":[{\"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}],\"scale\":[{\"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}],\"offset\":[{\"recomputePointsFromProps\":0}],\"scale\":[{\"recomputePointsFromProps\":0},{\"handleScaleChange\":0}],\"bounds\":[{\"recomputePointsFromProps\":0}],\"points\":[{\"recomputePointsFromProps\":0}],\"mode\":[{\"handleModeChange\":0}]}]]],[\"vertex-viewer-icon.cjs\",[[1,\"vertex-viewer-icon\",{\"name\":[1],\"size\":[1]}]]]]"), options);
12
12
  };
13
13
 
14
14
  exports.setNonce = index.setNonce;
@@ -97,43 +97,7 @@ const ViewerMarkupTool = class {
97
97
  /**
98
98
  * @ignore
99
99
  */
100
- handleToolChanged() {
101
- this.updateMarkupElement();
102
- }
103
- /**
104
- * @ignore
105
- */
106
- handleArrowTemplateIdChanged() {
107
- this.updateMarkupElement();
108
- }
109
- /**
110
- * @ignore
111
- */
112
- handleCircleTemplateIdChanged() {
113
- this.updateMarkupElement();
114
- }
115
- /**
116
- * @ignore
117
- */
118
- handleFreeformTemplateIdChanged() {
119
- this.updateMarkupElement();
120
- }
121
- /**
122
- * @ignore
123
- */
124
- handleDisabledChanged() {
125
- this.updateMarkupElement();
126
- }
127
- /**
128
- * @ignore
129
- */
130
- handleStartLineAnchorStyleChanged() {
131
- this.updateMarkupElement();
132
- }
133
- /**
134
- * @ignore
135
- */
136
- handleEndLineAnchorStyleChanged() {
100
+ handlePropertyChanged() {
137
101
  this.updateMarkupElement();
138
102
  }
139
103
  /**
@@ -231,6 +195,7 @@ const ViewerMarkupTool = class {
231
195
  }
232
196
  if (!this.disabled) {
233
197
  const newMarkupElement = this.createNewMarkupElement();
198
+ this.hostEl.append(newMarkupElement);
234
199
  if (this.tool === 'arrow') {
235
200
  newMarkupElement.startLineAnchorStyle = this.startLineAnchorStyle;
236
201
  newMarkupElement.endLineAnchorStyle = this.endLineAnchorStyle;
@@ -244,7 +209,6 @@ const ViewerMarkupTool = class {
244
209
  newMarkupElement.addEventListener('interactionBegin', this.handleMarkupInteractionBegin);
245
210
  newMarkupElement.addEventListener('interactionEnd', this.handleMarkupInteractionEnd);
246
211
  this.stateMap.markupElement = newMarkupElement;
247
- this.hostEl.append(newMarkupElement);
248
212
  }
249
213
  }
250
214
  get hostEl() { return index.getElement(this); }
@@ -252,26 +216,26 @@ const ViewerMarkupTool = class {
252
216
  "viewer": [{
253
217
  "handleViewerChanged": 0
254
218
  }],
255
- "tool": [{
256
- "handleToolChanged": 0
257
- }],
258
219
  "arrowTemplateId": [{
259
- "handleArrowTemplateIdChanged": 0
220
+ "handlePropertyChanged": 0
260
221
  }],
261
222
  "circleTemplateId": [{
262
- "handleCircleTemplateIdChanged": 0
263
- }],
264
- "freeformTemplateId": [{
265
- "handleFreeformTemplateIdChanged": 0
223
+ "handlePropertyChanged": 0
266
224
  }],
267
225
  "disabled": [{
268
- "handleDisabledChanged": 0
226
+ "handlePropertyChanged": 0
227
+ }],
228
+ "endLineAnchorStyle": [{
229
+ "handlePropertyChanged": 0
230
+ }],
231
+ "freeformTemplateId": [{
232
+ "handlePropertyChanged": 0
269
233
  }],
270
234
  "startLineAnchorStyle": [{
271
- "handleStartLineAnchorStyleChanged": 0
235
+ "handlePropertyChanged": 0
272
236
  }],
273
- "endLineAnchorStyle": [{
274
- "handleEndLineAnchorStyleChanged": 0
237
+ "tool": [{
238
+ "handlePropertyChanged": 0
275
239
  }]
276
240
  }; }
277
241
  };
@@ -1 +1 @@
1
- {"file":"vertex-viewer-markup-tool.cjs.entry.js","mappings":"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","names":["isVertexViewerFreeformMarkup","FreeformMarkup","isVertexViewerCircleMarkup","CircleMarkup","isVertexViewerArrowMarkup","ArrowMarkup","h","Host","stampTemplateWithId"],"sources":["src/components/viewer-markup-tool/viewer-markup-tool.css?tag=vertex-viewer-markup-tool&encapsulation=shadow","src/components/viewer-markup-tool/viewer-markup-tool.tsx"],"sourcesContent":[":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n\n:host([elevated=\"\"]) {\n z-index: 100;\n}","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\n\n/**\n * The types of markup that can be performed by this tool.\n */\nexport type ViewerMarkupToolType = 'arrow' | 'circle' | 'freeform';\n\ninterface StateMap {\n markupElement?:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement;\n}\n\n@Component({\n tag: 'vertex-viewer-markup-tool',\n styleUrl: 'viewer-markup-tool.css',\n shadow: true,\n})\nexport class ViewerMarkupTool {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * Disables markups.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` or `<vertex-viewer>` element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * An event that is dispatched when a user begins a new markup.\n */\n @Event({ bubbles: true })\n public markupBegin!: EventEmitter<void>;\n\n /**\n * An event that is dispatched when a user has finished their markup.\n */\n @Event({ bubbles: true })\n public markupEnd!: EventEmitter<Markup>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n /**\n * Captures internal state that you want to preserve across dev refreshes, but\n * don't want to trigger a render when the state changes.\n */\n @State()\n private stateMap: StateMap = {};\n\n @Watch('viewer')\n protected async handleViewerChanged(): Promise<void> {\n if (this.stateMap.markupElement != null) {\n this.stateMap.markupElement.viewer = this.viewer;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('tool')\n protected handleToolChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n protected handleArrowTemplateIdChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n @Watch('circleTemplateId')\n protected handleCircleTemplateIdChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n @Watch('freeformTemplateId')\n protected handleFreeformTemplateIdChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n @Watch('disabled')\n protected handleDisabledChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n @Watch('startLineAnchorStyle')\n protected handleStartLineAnchorStyleChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n @Watch('endLineAnchorStyle')\n protected handleEndLineAnchorStyleChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updateMarkupElement();\n }\n\n /**\n * Resets the state of the internally managed markup element\n * to allow for creating a new markup. This state is automatically\n * managed when this element is placed as a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Method()\n public async reset(): Promise<void> {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n markupElement.points = undefined;\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n markupElement.start = undefined;\n markupElement.end = undefined;\n markupElement.mode = 'create';\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n if (!this.disabled) {\n if (\n this.tool === 'arrow' ||\n this.tool === 'circle' ||\n this.tool === 'freeform'\n ) {\n return (\n <Host>\n <slot />\n </Host>\n );\n } else {\n return <Host>{`Unsupported tool type '${this.tool}'.`}</Host>;\n }\n } else {\n return <Host></Host>;\n }\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private createNewMarkupElement():\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement {\n switch (this.tool) {\n case 'arrow':\n return this.createArrowMarkupElement();\n case 'circle':\n return this.createCircleMarkupElement();\n case 'freeform':\n return this.createFreeformMarkupElement();\n }\n }\n\n private updateMarkupElement(): void {\n const { markupElement } = this.stateMap;\n if (markupElement != null) {\n markupElement.remove();\n markupElement.dispose();\n markupElement.viewer = undefined;\n markupElement.removeEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin\n );\n markupElement.removeEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd\n );\n }\n\n if (!this.disabled) {\n const newMarkupElement = this.createNewMarkupElement();\n\n if (this.tool === 'arrow') {\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).startLineAnchorStyle = this.startLineAnchorStyle;\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).endLineAnchorStyle = this.endLineAnchorStyle;\n }\n\n newMarkupElement.mode = 'create';\n newMarkupElement.viewer = this.viewer;\n newMarkupElement.originatingViewport = this.originatingViewport;\n newMarkupElement.centeringBehavior = this.centeringBehavior;\n newMarkupElement.offset = this.offset;\n newMarkupElement.scale = this.scale;\n newMarkupElement.addEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin\n );\n newMarkupElement.addEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd\n );\n this.stateMap.markupElement = newMarkupElement;\n this.hostEl.append(newMarkupElement);\n }\n }\n\n private handleMarkupInteractionBegin = (): void => {\n this.markupBegin.emit();\n };\n\n private handleMarkupInteractionEnd = (): void => {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n const { points, bounds } = markupElement;\n\n if (points != null && points.length > 0 && bounds != null) {\n this.markupEnd.emit(new FreeformMarkup({ points, bounds }));\n }\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n const { bounds } = markupElement;\n\n if (bounds != null) {\n this.markupEnd.emit(new CircleMarkup({ bounds }));\n }\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n const { start, end } = markupElement;\n\n if (start != null && end != null) {\n this.markupEnd.emit(new ArrowMarkup({ start, end }));\n }\n }\n };\n}\n"],"version":3}
1
+ {"file":"vertex-viewer-markup-tool.cjs.entry.js","mappings":"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","names":["isVertexViewerFreeformMarkup","FreeformMarkup","isVertexViewerCircleMarkup","CircleMarkup","isVertexViewerArrowMarkup","ArrowMarkup","h","Host","stampTemplateWithId"],"sources":["src/components/viewer-markup-tool/viewer-markup-tool.css?tag=vertex-viewer-markup-tool&encapsulation=shadow","src/components/viewer-markup-tool/viewer-markup-tool.tsx"],"sourcesContent":[":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n\n:host([elevated=\"\"]) {\n z-index: 100;\n}","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\n\n/**\n * The types of markup that can be performed by this tool.\n */\nexport type ViewerMarkupToolType = 'arrow' | 'circle' | 'freeform';\n\ninterface StateMap {\n markupElement?:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement;\n}\n\n@Component({\n tag: 'vertex-viewer-markup-tool',\n styleUrl: 'viewer-markup-tool.css',\n shadow: true,\n})\nexport class ViewerMarkupTool {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * Disables markups.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` or `<vertex-viewer>` element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * An event that is dispatched when a user begins a new markup.\n */\n @Event({ bubbles: true })\n public markupBegin!: EventEmitter<void>;\n\n /**\n * An event that is dispatched when a user has finished their markup.\n */\n @Event({ bubbles: true })\n public markupEnd!: EventEmitter<Markup>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n /**\n * Captures internal state that you want to preserve across dev refreshes, but\n * don't want to trigger a render when the state changes.\n */\n @State()\n private stateMap: StateMap = {};\n\n @Watch('viewer')\n protected async handleViewerChanged(): Promise<void> {\n if (this.stateMap.markupElement != null) {\n this.stateMap.markupElement.viewer = this.viewer;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('disabled')\n @Watch('endLineAnchorStyle')\n @Watch('freeformTemplateId')\n @Watch('startLineAnchorStyle')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updateMarkupElement();\n }\n\n /**\n * Resets the state of the internally managed markup element\n * to allow for creating a new markup. This state is automatically\n * managed when this element is placed as a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Method()\n public async reset(): Promise<void> {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n markupElement.points = undefined;\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n markupElement.start = undefined;\n markupElement.end = undefined;\n markupElement.mode = 'create';\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n if (!this.disabled) {\n if (\n this.tool === 'arrow' ||\n this.tool === 'circle' ||\n this.tool === 'freeform'\n ) {\n return (\n <Host>\n <slot />\n </Host>\n );\n } else {\n return <Host>{`Unsupported tool type '${this.tool}'.`}</Host>;\n }\n } else {\n return <Host></Host>;\n }\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private createNewMarkupElement():\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement {\n switch (this.tool) {\n case 'arrow':\n return this.createArrowMarkupElement();\n case 'circle':\n return this.createCircleMarkupElement();\n case 'freeform':\n return this.createFreeformMarkupElement();\n }\n }\n\n private updateMarkupElement(): void {\n const { markupElement } = this.stateMap;\n if (markupElement != null) {\n markupElement.remove();\n markupElement.dispose();\n markupElement.viewer = undefined;\n markupElement.removeEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin\n );\n markupElement.removeEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd\n );\n }\n\n if (!this.disabled) {\n const newMarkupElement = this.createNewMarkupElement();\n this.hostEl.append(newMarkupElement);\n\n if (this.tool === 'arrow') {\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).startLineAnchorStyle = this.startLineAnchorStyle;\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).endLineAnchorStyle = this.endLineAnchorStyle;\n }\n\n newMarkupElement.mode = 'create';\n newMarkupElement.viewer = this.viewer;\n newMarkupElement.originatingViewport = this.originatingViewport;\n newMarkupElement.centeringBehavior = this.centeringBehavior;\n newMarkupElement.offset = this.offset;\n newMarkupElement.scale = this.scale;\n newMarkupElement.addEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin\n );\n newMarkupElement.addEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd\n );\n this.stateMap.markupElement = newMarkupElement;\n }\n }\n\n private handleMarkupInteractionBegin = (): void => {\n this.markupBegin.emit();\n };\n\n private handleMarkupInteractionEnd = (): void => {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n const { points, bounds } = markupElement;\n\n if (points != null && points.length > 0 && bounds != null) {\n this.markupEnd.emit(new FreeformMarkup({ points, bounds }));\n }\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n const { bounds } = markupElement;\n\n if (bounds != null) {\n this.markupEnd.emit(new CircleMarkup({ bounds }));\n }\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n const { start, end } = markupElement;\n\n if (start != null && end != null) {\n this.markupEnd.emit(new ArrowMarkup({ start, end }));\n }\n }\n };\n}\n"],"version":3}
@@ -106,27 +106,30 @@ const ViewerMarkup = class {
106
106
  if (markup$1 instanceof markup.ArrowMarkup) {
107
107
  const { start, end, id } = markup$1;
108
108
  const el = this.createArrowMarkupElement();
109
+ this.appendMarkupElement(el);
109
110
  el.id = id;
110
111
  el.start = start;
111
112
  el.end = end;
112
113
  el.startLineAnchorStyle = this.startLineAnchorStyle;
113
114
  el.endLineAnchorStyle = this.endLineAnchorStyle;
114
- return this.appendMarkupElement(el);
115
+ return el;
115
116
  }
116
117
  else if (markup$1 instanceof markup.CircleMarkup) {
117
118
  const { bounds, id } = markup$1;
118
119
  const el = this.createCircleMarkupElement();
120
+ this.appendMarkupElement(el);
119
121
  el.id = id;
120
122
  el.bounds = bounds;
121
- return this.appendMarkupElement(el);
123
+ return el;
122
124
  }
123
125
  else if (markup$1 instanceof markup.FreeformMarkup) {
124
126
  const { bounds, points, id } = markup$1;
125
127
  const el = this.createFreeformMarkupElement();
128
+ this.appendMarkupElement(el);
126
129
  el.id = id;
127
130
  el.points = points;
128
131
  el.bounds = bounds;
129
- return this.appendMarkupElement(el);
132
+ return el;
130
133
  }
131
134
  else {
132
135
  throw new Error(`Cannot add markup. Unknown type '${markup$1}'.`);
@@ -191,25 +194,7 @@ const ViewerMarkup = class {
191
194
  /**
192
195
  * @ignore
193
196
  */
194
- handleToolChanged() {
195
- this.updatePropsOnMarkupTool();
196
- }
197
- /**
198
- * @ignore
199
- */
200
- handleArrowTemplateIdChanged() {
201
- this.updatePropsOnMarkupTool();
202
- }
203
- /**
204
- * @ignore
205
- */
206
- handleCircleTemplateIdChanged() {
207
- this.updatePropsOnMarkupTool();
208
- }
209
- /**
210
- * @ignore
211
- */
212
- handleFreeformTemplateIdChanged() {
197
+ handlePropertyChanged() {
213
198
  this.updatePropsOnMarkupTool();
214
199
  }
215
200
  /**
@@ -304,7 +289,7 @@ const ViewerMarkup = class {
304
289
  * @ignore
305
290
  */
306
291
  render() {
307
- return (index.h(index.Host, { key: 'e19690f0d572ece07fc88ad7aab4547cccbf98ba' }, index.h("slot", { key: '8872cfb52c9a9ab9731d88820c41eeae691a5fc5' })));
292
+ return (index.h(index.Host, { key: 'a5620363230dcc56e335b0864eacf94ba8d8232c' }, index.h("slot", { key: '36643c2fc4dce53608e6a55cd3520297dbbf7f4a' })));
308
293
  }
309
294
  appendMarkupElement(el) {
310
295
  this.updatePropsOnMarkup(el);
@@ -382,17 +367,17 @@ const ViewerMarkup = class {
382
367
  "selectedMarkupId": [{
383
368
  "handleSelectedMarkupIdChanged": 0
384
369
  }],
385
- "tool": [{
386
- "handleToolChanged": 0
387
- }],
388
370
  "arrowTemplateId": [{
389
- "handleArrowTemplateIdChanged": 0
371
+ "handlePropertyChanged": 0
390
372
  }],
391
373
  "circleTemplateId": [{
392
- "handleCircleTemplateIdChanged": 0
374
+ "handlePropertyChanged": 0
393
375
  }],
394
376
  "freeformTemplateId": [{
395
- "handleFreeformTemplateIdChanged": 0
377
+ "handlePropertyChanged": 0
378
+ }],
379
+ "tool": [{
380
+ "handlePropertyChanged": 0
396
381
  }],
397
382
  "viewer": [{
398
383
  "handleViewerChanged": 0
@@ -1 +1 @@
1
- {"file":"vertex-viewer-markup.cjs.entry.js","mappings":"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","names":["Point","markup","ArrowMarkup","CircleMarkup","FreeformMarkup","isVertexViewerArrowMarkup","isVertexViewerCircleMarkup","isVertexViewerFreeformMarkup","h","Host","stampTemplateWithId"],"sources":["src/components/viewer-markup/viewer-markup.css?tag=vertex-viewer-markup&encapsulation=shadow","src/components/viewer-markup/viewer-markup.tsx"],"sourcesContent":[":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n MarkupInteraction,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\nimport { ViewerMarkupToolType } from '../viewer-markup-tool/viewer-markup-tool';\n\n@Component({\n tag: 'vertex-viewer-markup',\n styleUrl: 'viewer-markup.css',\n shadow: true,\n})\nexport class ViewerMarkup {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup to perform.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * If `true`, disables adding or editing of markup through user\n * interaction.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The ID of the markup that is selected.\n */\n @Prop({ mutable: true })\n public selectedMarkupId?: string;\n\n /**\n * Indicates if new markup should be automatically selected.\n */\n @Prop()\n public selectNew = false;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * Dispatched when a new markup is added, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupAdded!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when an existing piece of markup is changed, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when a markup is removed, either through user\n * interaction or programmatically.\n */\n @Event()\n public markupRemoved!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when markup selection changes. Will either be the\n * selected element or `undefined` indicating that selection\n * was cleared.\n */\n @Event()\n public markupSelectionChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n >;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private toSelectMarkupId?: string;\n\n @State()\n private pointerDownPosition?: Point.Point;\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n }\n\n /**\n * Adds a new markup as a child to this component. A new markup\n * component will be created from the template specified by\n * `arrow-template-id`, `circle-template-id`, or if undefined\n * a default element will be created.\n *\n * @param markup The markup to add.\n * @returns The markup element that was created.\n * @see {@link arrowTemplateId}\n * @see {@link circleTemplateId}\n */\n @Method()\n public async addMarkup(\n markup: Markup\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n > {\n if (markup instanceof ArrowMarkup) {\n const { start, end, id } = markup;\n\n const el = this.createArrowMarkupElement();\n el.id = id;\n el.start = start;\n el.end = end;\n el.startLineAnchorStyle = this.startLineAnchorStyle;\n el.endLineAnchorStyle = this.endLineAnchorStyle;\n\n return this.appendMarkupElement(el);\n } else if (markup instanceof CircleMarkup) {\n const { bounds, id } = markup;\n\n const el = this.createCircleMarkupElement();\n el.id = id;\n el.bounds = bounds;\n\n return this.appendMarkupElement(el);\n } else if (markup instanceof FreeformMarkup) {\n const { bounds, points, id } = markup;\n\n const el = this.createFreeformMarkupElement();\n el.id = id;\n el.points = points;\n el.bounds = bounds;\n\n return this.appendMarkupElement(el);\n } else {\n throw new Error(`Cannot add markup. Unknown type '${markup}'.`);\n }\n }\n\n /**\n * Removes a markup with the given ID, and returns the HTML element\n * associated to the markup. Returns `undefined` if no markup is\n * found.\n *\n * @param id The ID of the markup to remove.\n * @returns The markup element, or undefined.\n */\n @Method()\n public async removeMarkup(\n id: string\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElement(id);\n\n if (markup != null) {\n markup.remove();\n this.markupRemoved.emit(markup);\n }\n\n return markup;\n }\n\n /**\n * Returns a list of markup elements that are children of this component.\n *\n * @returns A list of all markups.\n * @see {@link getMarkupElement}\n */\n @Method()\n public async getMarkupElements(): Promise<\n Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >\n > {\n return Array.from(this.hostEl.children).filter(\n (e) =>\n isVertexViewerArrowMarkup(e) ||\n isVertexViewerCircleMarkup(e) ||\n isVertexViewerFreeformMarkup(e)\n ) as Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n }\n\n /**\n * Returns the markup element associated to the given ID.\n *\n * @param id The ID of the markup element to return.\n * @returns A markup element, or `undefined`.\n * @see {@link getMarkupElements}\n */\n @Method()\n public async getMarkupElement(\n id: string\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElements();\n return markup.find((el) => el.id === id);\n }\n\n /**\n * @ignore\n */\n @Watch('selectedMarkupId')\n protected async handleSelectedMarkupIdChanged(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => {\n if (m.id === this.selectedMarkupId) {\n m.mode = 'edit';\n this.markupSelectionChanged.emit(m);\n } else {\n m.mode = '';\n }\n });\n\n if (this.selectedMarkupId == null) {\n this.markupSelectionChanged.emit(undefined);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('tool')\n protected handleToolChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n protected handleArrowTemplateIdChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('circleTemplateId')\n protected handleCircleTemplateIdChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('freeformTemplateId')\n protected handleFreeformTemplateIdChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n @Watch('offset')\n @Watch('scale')\n protected async handleViewerChanged(\n newViewer: HTMLVertexViewerElement | undefined\n ): Promise<void> {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n }\n\n /**\n * @ignore\n */\n @Watch('disabled')\n protected handleDisabledChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('startLineAnchorStyle')\n protected async handleStartLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n if (selectedArrow != null) {\n selectedArrow.startLineAnchorStyle = this.startLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('endLineAnchorStyle')\n protected async handleEndLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n\n if (selectedArrow != null) {\n selectedArrow.endLineAnchorStyle = this.endLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('markupEnd')\n protected async handleMarkupEnd(event: CustomEvent<Markup>): Promise<void> {\n const e = event as CustomEvent<Markup>;\n const el = await this.addMarkup(e.detail);\n\n await new Promise<void>((resolve) => {\n const handleRender = (): void => {\n el.removeEventListener('viewRendered', handleRender);\n resolve();\n };\n\n el.addEventListener('viewRendered', handleRender);\n });\n\n if (this.selectNew) {\n this.selectedMarkupId = e.detail.id;\n }\n\n this.getMarkupTool()?.reset();\n }\n\n /**\n * @ignore\n */\n @Listen('interactionEnd')\n protected async handleMarkupUpdated(\n event: CustomEvent<MarkupInteraction>\n ): Promise<void> {\n const e = event as CustomEvent<MarkupInteraction>;\n\n // Do not emit the markupChanged event if the markup was just created\n if (!e.detail.newlyCreatedMarkup) {\n this.markupChanged.emit(e.detail.markup);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('pointerdown')\n protected async handleMarkupPointerDown(event: PointerEvent): Promise<void> {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (markup?.id != null && markup?.id !== '') {\n this.toSelectMarkupId = el.id;\n }\n this.pointerDownPosition = Point.create(event.clientX, event.clientY);\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot />\n </Host>\n );\n }\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY)\n ) > 2\n ) {\n this.toSelectMarkupId = undefined;\n }\n };\n\n private handlePointerUp = async (event: PointerEvent): Promise<void> => {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (\n markup?.id != null &&\n markup.id !== '' &&\n markup.id === this.toSelectMarkupId\n ) {\n this.selectedMarkupId = el.id;\n } else if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY)\n ) <= 2\n ) {\n this.selectedMarkupId = undefined;\n }\n this.toSelectMarkupId = undefined;\n this.pointerDownPosition = undefined;\n }\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n };\n\n private appendMarkupElement(\n el:\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement\n ):\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement {\n this.updatePropsOnMarkup(el);\n this.hostEl.appendChild(el);\n this.markupAdded.emit(el);\n\n return el;\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private async updatePropsOnMarkups(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => this.updatePropsOnMarkup(m));\n }\n\n private updatePropsOnMarkup(\n element:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n ): void {\n element.viewer = this.viewer;\n element.originatingViewport = this.originatingViewport;\n element.centeringBehavior = this.centeringBehavior;\n element.offset = this.offset;\n element.scale = this.scale;\n element.classList.add('viewer-markup__markup');\n }\n\n private updatePropsOnMarkupTool(): void {\n const tool = this.getMarkupTool();\n if (tool != null) {\n tool.disabled = this.disabled;\n tool.arrowTemplateId = this.arrowTemplateId;\n tool.circleTemplateId = this.circleTemplateId;\n tool.freeformTemplateId = this.freeformTemplateId;\n tool.tool = this.tool;\n tool.viewer = this.viewer;\n tool.startLineAnchorStyle = this.startLineAnchorStyle;\n tool.endLineAnchorStyle = this.endLineAnchorStyle;\n tool.originatingViewport = this.originatingViewport;\n tool.centeringBehavior = this.centeringBehavior;\n tool.offset = this.offset;\n tool.scale = this.scale;\n }\n }\n\n private getMarkupTool(): HTMLVertexViewerMarkupToolElement | undefined {\n return this.hostEl.querySelector('vertex-viewer-markup-tool') as\n | HTMLVertexViewerMarkupToolElement\n | undefined;\n }\n\n private async getSelectedArrowMarkup(): Promise<\n HTMLVertexViewerMarkupArrowElement | undefined\n > {\n if (this.selectedMarkupId != null) {\n const selected = await this.getMarkupElement(this.selectedMarkupId);\n\n return isVertexViewerArrowMarkup(selected) ? selected : undefined;\n }\n }\n}\n"],"version":3}
1
+ {"file":"vertex-viewer-markup.cjs.entry.js","mappings":"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","names":["Point","markup","ArrowMarkup","CircleMarkup","FreeformMarkup","isVertexViewerArrowMarkup","isVertexViewerCircleMarkup","isVertexViewerFreeformMarkup","h","Host","stampTemplateWithId"],"sources":["src/components/viewer-markup/viewer-markup.css?tag=vertex-viewer-markup&encapsulation=shadow","src/components/viewer-markup/viewer-markup.tsx"],"sourcesContent":[":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n MarkupInteraction,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\nimport { ViewerMarkupToolType } from '../viewer-markup-tool/viewer-markup-tool';\n\n@Component({\n tag: 'vertex-viewer-markup',\n styleUrl: 'viewer-markup.css',\n shadow: true,\n})\nexport class ViewerMarkup {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup to perform.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * If `true`, disables adding or editing of markup through user\n * interaction.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The ID of the markup that is selected.\n */\n @Prop({ mutable: true })\n public selectedMarkupId?: string;\n\n /**\n * Indicates if new markup should be automatically selected.\n */\n @Prop()\n public selectNew = false;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * Dispatched when a new markup is added, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupAdded!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when an existing piece of markup is changed, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when a markup is removed, either through user\n * interaction or programmatically.\n */\n @Event()\n public markupRemoved!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when markup selection changes. Will either be the\n * selected element or `undefined` indicating that selection\n * was cleared.\n */\n @Event()\n public markupSelectionChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n >;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private toSelectMarkupId?: string;\n\n @State()\n private pointerDownPosition?: Point.Point;\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n }\n\n /**\n * Adds a new markup as a child to this component. A new markup\n * component will be created from the template specified by\n * `arrow-template-id`, `circle-template-id`, or if undefined\n * a default element will be created.\n *\n * @param markup The markup to add.\n * @returns The markup element that was created.\n * @see {@link arrowTemplateId}\n * @see {@link circleTemplateId}\n */\n @Method()\n public async addMarkup(\n markup: Markup\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n > {\n if (markup instanceof ArrowMarkup) {\n const { start, end, id } = markup;\n\n const el = this.createArrowMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.start = start;\n el.end = end;\n el.startLineAnchorStyle = this.startLineAnchorStyle;\n el.endLineAnchorStyle = this.endLineAnchorStyle;\n\n return el;\n } else if (markup instanceof CircleMarkup) {\n const { bounds, id } = markup;\n\n const el = this.createCircleMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.bounds = bounds;\n\n return el;\n } else if (markup instanceof FreeformMarkup) {\n const { bounds, points, id } = markup;\n\n const el = this.createFreeformMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.points = points;\n el.bounds = bounds;\n\n return el;\n } else {\n throw new Error(`Cannot add markup. Unknown type '${markup}'.`);\n }\n }\n\n /**\n * Removes a markup with the given ID, and returns the HTML element\n * associated to the markup. Returns `undefined` if no markup is\n * found.\n *\n * @param id The ID of the markup to remove.\n * @returns The markup element, or undefined.\n */\n @Method()\n public async removeMarkup(\n id: string\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElement(id);\n\n if (markup != null) {\n markup.remove();\n this.markupRemoved.emit(markup);\n }\n\n return markup;\n }\n\n /**\n * Returns a list of markup elements that are children of this component.\n *\n * @returns A list of all markups.\n * @see {@link getMarkupElement}\n */\n @Method()\n public async getMarkupElements(): Promise<\n Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >\n > {\n return Array.from(this.hostEl.children).filter(\n (e) =>\n isVertexViewerArrowMarkup(e) ||\n isVertexViewerCircleMarkup(e) ||\n isVertexViewerFreeformMarkup(e)\n ) as Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n }\n\n /**\n * Returns the markup element associated to the given ID.\n *\n * @param id The ID of the markup element to return.\n * @returns A markup element, or `undefined`.\n * @see {@link getMarkupElements}\n */\n @Method()\n public async getMarkupElement(\n id: string\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElements();\n return markup.find((el) => el.id === id);\n }\n\n /**\n * @ignore\n */\n @Watch('selectedMarkupId')\n protected async handleSelectedMarkupIdChanged(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => {\n if (m.id === this.selectedMarkupId) {\n m.mode = 'edit';\n this.markupSelectionChanged.emit(m);\n } else {\n m.mode = '';\n }\n });\n\n if (this.selectedMarkupId == null) {\n this.markupSelectionChanged.emit(undefined);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('freeformTemplateId')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n @Watch('offset')\n @Watch('scale')\n protected async handleViewerChanged(\n newViewer: HTMLVertexViewerElement | undefined\n ): Promise<void> {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n }\n\n /**\n * @ignore\n */\n @Watch('disabled')\n protected handleDisabledChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('startLineAnchorStyle')\n protected async handleStartLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n if (selectedArrow != null) {\n selectedArrow.startLineAnchorStyle = this.startLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('endLineAnchorStyle')\n protected async handleEndLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n\n if (selectedArrow != null) {\n selectedArrow.endLineAnchorStyle = this.endLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('markupEnd')\n protected async handleMarkupEnd(event: CustomEvent<Markup>): Promise<void> {\n const e = event as CustomEvent<Markup>;\n const el = await this.addMarkup(e.detail);\n\n await new Promise<void>((resolve) => {\n const handleRender = (): void => {\n el.removeEventListener('viewRendered', handleRender);\n resolve();\n };\n\n el.addEventListener('viewRendered', handleRender);\n });\n\n if (this.selectNew) {\n this.selectedMarkupId = e.detail.id;\n }\n\n this.getMarkupTool()?.reset();\n }\n\n /**\n * @ignore\n */\n @Listen('interactionEnd')\n protected async handleMarkupUpdated(\n event: CustomEvent<MarkupInteraction>\n ): Promise<void> {\n const e = event as CustomEvent<MarkupInteraction>;\n\n // Do not emit the markupChanged event if the markup was just created\n if (!e.detail.newlyCreatedMarkup) {\n this.markupChanged.emit(e.detail.markup);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('pointerdown')\n protected async handleMarkupPointerDown(event: PointerEvent): Promise<void> {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (markup?.id != null && markup?.id !== '') {\n this.toSelectMarkupId = el.id;\n }\n this.pointerDownPosition = Point.create(event.clientX, event.clientY);\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot />\n </Host>\n );\n }\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY)\n ) > 2\n ) {\n this.toSelectMarkupId = undefined;\n }\n };\n\n private handlePointerUp = async (event: PointerEvent): Promise<void> => {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (\n markup?.id != null &&\n markup.id !== '' &&\n markup.id === this.toSelectMarkupId\n ) {\n this.selectedMarkupId = el.id;\n } else if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY)\n ) <= 2\n ) {\n this.selectedMarkupId = undefined;\n }\n this.toSelectMarkupId = undefined;\n this.pointerDownPosition = undefined;\n }\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n };\n\n private appendMarkupElement(\n el:\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement\n ):\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement {\n this.updatePropsOnMarkup(el);\n this.hostEl.appendChild(el);\n this.markupAdded.emit(el);\n\n return el;\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`\n )\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private async updatePropsOnMarkups(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => this.updatePropsOnMarkup(m));\n }\n\n private updatePropsOnMarkup(\n element:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n ): void {\n element.viewer = this.viewer;\n element.originatingViewport = this.originatingViewport;\n element.centeringBehavior = this.centeringBehavior;\n element.offset = this.offset;\n element.scale = this.scale;\n element.classList.add('viewer-markup__markup');\n }\n\n private updatePropsOnMarkupTool(): void {\n const tool = this.getMarkupTool();\n if (tool != null) {\n tool.disabled = this.disabled;\n tool.arrowTemplateId = this.arrowTemplateId;\n tool.circleTemplateId = this.circleTemplateId;\n tool.freeformTemplateId = this.freeformTemplateId;\n tool.tool = this.tool;\n tool.viewer = this.viewer;\n tool.startLineAnchorStyle = this.startLineAnchorStyle;\n tool.endLineAnchorStyle = this.endLineAnchorStyle;\n tool.originatingViewport = this.originatingViewport;\n tool.centeringBehavior = this.centeringBehavior;\n tool.offset = this.offset;\n tool.scale = this.scale;\n }\n }\n\n private getMarkupTool(): HTMLVertexViewerMarkupToolElement | undefined {\n return this.hostEl.querySelector('vertex-viewer-markup-tool') as\n | HTMLVertexViewerMarkupToolElement\n | undefined;\n }\n\n private async getSelectedArrowMarkup(): Promise<\n HTMLVertexViewerMarkupArrowElement | undefined\n > {\n if (this.selectedMarkupId != null) {\n const selected = await this.getMarkupElement(this.selectedMarkupId);\n\n return isVertexViewerArrowMarkup(selected) ? selected : undefined;\n }\n }\n}\n"],"version":3}