@arcgis/core 5.2.0-next.162 → 5.2.0-next.164

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 (170) hide show
  1. package/PopupTemplate.js +1 -1
  2. package/analysis/LineOfSightAnalysis.d.ts +1 -1
  3. package/analysis/LineOfSightAnalysisObserver.d.ts +5 -4
  4. package/analysis/LineOfSightAnalysisTarget.d.ts +4 -4
  5. package/analysis/Viewshed.d.ts +4 -4
  6. package/assets/esri/core/workers/RemoteClient.js +1 -1
  7. package/assets/esri/core/workers/chunks/092e311cb7aea92a6a26.js +1 -0
  8. package/assets/esri/core/workers/chunks/{8e19629899a5becf8e19.js → 150e7a7bd5df25693da7.js} +1 -1
  9. package/assets/esri/core/workers/chunks/1e1c45f75020d5e05dc3.js +1 -0
  10. package/assets/esri/core/workers/chunks/{8e4a7027d171fb60e51e.js → 1f7f4f821d422b46cae7.js} +1 -1
  11. package/assets/esri/core/workers/chunks/1fe24ffcd88280d84fbe.js +1 -0
  12. package/assets/esri/core/workers/chunks/226f862bbeb33fc7c597.js +1 -0
  13. package/assets/esri/core/workers/chunks/25a3bd8bede2d07d3a54.js +1 -0
  14. package/assets/esri/core/workers/chunks/2ad69cc496235702bbf2.js +1 -0
  15. package/assets/esri/core/workers/chunks/3f46acfda693c70abbdd.js +1 -0
  16. package/assets/esri/core/workers/chunks/434a8ba841a59e0deab9.js +1 -0
  17. package/assets/esri/core/workers/chunks/45fd2b456a6997584ca1.js +1 -0
  18. package/assets/esri/core/workers/chunks/{2e096537a3a5555a4a93.js → 4cb751dc8d00bdaeb04c.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{85bba551057366cd00ae.js → 4db829a0238024736fe6.js} +1 -1
  20. package/assets/esri/core/workers/chunks/53ff68d4f9e365fc15cd.js +1 -0
  21. package/assets/esri/core/workers/chunks/542e5640ea1b80ef801a.js +1 -0
  22. package/assets/esri/core/workers/chunks/5a9b7eb26f936f03d02e.js +1 -0
  23. package/assets/esri/core/workers/chunks/5d76f4d97beee494bbbf.js +1 -0
  24. package/assets/esri/core/workers/chunks/5dc604e3691f36f03959.js +1 -0
  25. package/assets/esri/core/workers/chunks/5f07f52bb8b7721f08d3.js +1 -0
  26. package/assets/esri/core/workers/chunks/{5f4feca26102088ea565.js → 60737732ce495bbdd0fc.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{9ce8b9b80da146a5bbf5.js → 60c79934799927114074.js} +1 -1
  28. package/assets/esri/core/workers/chunks/67f54efc817b241f8746.js +1 -0
  29. package/assets/esri/core/workers/chunks/{8aa80b892fde552577e8.js → 700b1d5bc67b7e1b3ff3.js} +1 -1
  30. package/assets/esri/core/workers/chunks/{f528ac5c648ca6a98582.js → 711cfb84659cb4437679.js} +1 -1
  31. package/assets/esri/core/workers/chunks/7159d9c36869cd82599e.js +29 -0
  32. package/assets/esri/core/workers/chunks/771dd92cb3e6a3427f66.js +1 -0
  33. package/assets/esri/core/workers/chunks/792d2b62356a1d953c88.js +1 -0
  34. package/assets/esri/core/workers/chunks/89c8b0f684c1f27d149e.js +1 -0
  35. package/assets/esri/core/workers/chunks/8ab57cb1bfd3dc8d3c2a.js +1 -0
  36. package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +1 -0
  37. package/assets/esri/core/workers/chunks/97b5f4302fb867c829f4.js +1 -0
  38. package/assets/esri/core/workers/chunks/9de5ad77bc37ec142218.js +1 -0
  39. package/assets/esri/core/workers/chunks/a65951f1d5702cfd996e.js +1 -0
  40. package/assets/esri/core/workers/chunks/aa4f3751f0d830113bed.js +1 -0
  41. package/assets/esri/core/workers/chunks/ad96132bc89671e595f3.js +1 -0
  42. package/assets/esri/core/workers/chunks/b1d989b72203113a06fe.js +1 -0
  43. package/assets/esri/core/workers/chunks/{fc73737b41e086f0ce0b.js → b59aaf30c7fe2c8d1aaa.js} +1 -1
  44. package/assets/esri/core/workers/chunks/b6d71a4ab788a09714f3.js +1 -0
  45. package/assets/esri/core/workers/chunks/b704f489d0f072a0bfcd.js +1 -0
  46. package/assets/esri/core/workers/chunks/b736046c6b4ede73ea46.js +1 -0
  47. package/assets/esri/core/workers/chunks/c070d2ddf290b4f92916.js +1 -0
  48. package/assets/esri/core/workers/chunks/{d6cd0039d6e9c40961e3.js → d1f98c5249c487eb96f1.js} +1 -1
  49. package/assets/esri/core/workers/chunks/d77c68e0fc3b259bf4f9.js +1 -0
  50. package/assets/esri/core/workers/chunks/e251921bc5367258c4d2.js +1 -0
  51. package/assets/esri/core/workers/chunks/ee08ae5b73439a1ff666.js +1 -0
  52. package/assets/esri/core/workers/chunks/{e0351753f6b4d1adf11e.js → fc0dbb588a4062615cb6.js} +1 -1
  53. package/assets/esri/core/workers/chunks/fcaf9450642fcef83286.js +1 -0
  54. package/assets/esri/core/workers/chunks/feb41abc03d677df6f73.js +1 -0
  55. package/chunks/GlobalIllumination.glsl.js +2 -17
  56. package/config.d.ts +11 -30
  57. package/config.js +1 -1
  58. package/core/workers/workerFactory.js +1 -1
  59. package/core/workers.d.ts +17 -0
  60. package/geometry/support/clipRay.js +1 -1
  61. package/geometry/support/plane.js +1 -1
  62. package/kernel.js +1 -1
  63. package/layers/FeatureLayer.d.ts +32 -14
  64. package/layers/GeoJSONLayer.d.ts +2 -107
  65. package/layers/MapImageLayer.d.ts +2 -1
  66. package/layers/SceneLayer.d.ts +40 -16
  67. package/layers/SubtypeGroupLayer.d.ts +63 -0
  68. package/layers/ViewshedLayer.d.ts +10 -4
  69. package/layers/WMSLayer.d.ts +2 -69
  70. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +1 -1
  71. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  72. package/layers/graphics/sources/support/QueryTask.js +1 -1
  73. package/layers/mixins/TemporalLayer.d.ts +70 -48
  74. package/layers/mixins/TiledImagery.d.ts +0 -11
  75. package/layers/support/LabelClass.d.ts +20 -2
  76. package/layers/support/Sublayer.d.ts +32 -2
  77. package/layers/support/TimeInformation.js +2 -0
  78. package/package.json +2 -2
  79. package/popup/content.d.ts +38 -1
  80. package/popup/content.js +1 -1
  81. package/rest/layerSources/DynamicWorkspaceLayer.d.ts +10 -6
  82. package/rest/query/operations/queryUtils.js +1 -1
  83. package/rest/support/timeUtils.js +2 -0
  84. package/smartMapping/popup/support/clusterUtils.js +1 -1
  85. package/smartMapping/popup/support/utils.js +2 -2
  86. package/smartMapping/renderers/size.js +1 -1
  87. package/smartMapping/renderers/support/regenerateUtils.js +1 -1
  88. package/support/timeUtils.d.ts +11 -0
  89. package/symbols/TextSymbol.d.ts +27 -2
  90. package/symbols/cim/CIMCursor.js +1 -1
  91. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  92. package/views/2d/analysis/AreaMeasurementAnalysisView2D.js +1 -1
  93. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  94. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.js +1 -1
  95. package/views/2d/engine/webgl/GlyphWorker.js +1 -1
  96. package/views/2d/engine/webgl/animations/instructions.js +1 -1
  97. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
  98. package/views/3d/GroundView3D.js +1 -1
  99. package/views/3d/environment/SunLighting.d.ts +16 -1
  100. package/views/3d/environment/SunLighting.js +1 -1
  101. package/views/3d/environment/VirtualLighting.d.ts +16 -1
  102. package/views/3d/environment/VirtualLighting.js +1 -1
  103. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  104. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  105. package/views/3d/webgl-engine/effects/glow/applyEmissiveGlow.glsl.js +9 -4
  106. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  107. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  108. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  109. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  110. package/views/3d/webgl-engine/materials/internal/worldSizedRibbonLineIntersectionUtils.js +2 -0
  111. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  112. package/views/BasemapView.js +1 -1
  113. package/views/GroundView.d.ts +1 -1
  114. package/views/GroundView.js +1 -1
  115. package/views/SceneView.js +1 -1
  116. package/views/layers/LineOfSightLayerView.d.ts +2 -2
  117. package/views/layers/ViewshedLayerView.d.ts +2 -1
  118. package/views/support/ScheduledQueueProcessor.js +1 -1
  119. package/views/support/screenshotUtils.js +1 -1
  120. package/webscene/Slide.d.ts +1 -2
  121. package/widgets/Daylight/DaylightViewModel.js +1 -1
  122. package/widgets/DirectionalPad/VisibleElements.d.ts +5 -1
  123. package/widgets/Feature/FeatureExpression/FeatureExpressionViewModel.js +1 -1
  124. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  125. package/widgets/OrientedImageryViewer.js +1 -1
  126. package/widgets/Search/SearchViewModel.js +1 -1
  127. package/widgets/Search/support/layerSearchUtils.js +1 -1
  128. package/widgets/Sketch/SketchViewModel.d.ts +61 -2
  129. package/widgets/Sketch/SketchViewModel.js +1 -1
  130. package/widgets/Sketch/support/PluginManager.js +1 -1
  131. package/widgets/TimeSlider/TimeSliderViewModel.d.ts +3 -2
  132. package/widgets/TimeSlider.d.ts +5 -4
  133. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeature.js +1 -1
  134. package/widgets/UtilityNetworkValidateTopology/UtilityNetworkValidateTopologyViewModel.d.ts +3 -3
  135. package/widgets/UtilityNetworkValidateTopology.d.ts +1 -1
  136. package/assets/esri/core/workers/chunks/0bd5012da287469b17d5.js +0 -1
  137. package/assets/esri/core/workers/chunks/0cb50bc2b2125c5fedf2.js +0 -1
  138. package/assets/esri/core/workers/chunks/112befb3b5b406f29298.js +0 -1
  139. package/assets/esri/core/workers/chunks/167b057ad50e6aef54de.js +0 -1
  140. package/assets/esri/core/workers/chunks/2d13a22f7b2427927fdc.js +0 -1
  141. package/assets/esri/core/workers/chunks/2f04b8679c9f15390517.js +0 -1
  142. package/assets/esri/core/workers/chunks/42045cf46497828cd3c0.js +0 -1
  143. package/assets/esri/core/workers/chunks/42fd2a7b22b03dacc6a7.js +0 -1
  144. package/assets/esri/core/workers/chunks/43cf862577bf37344ff4.js +0 -1
  145. package/assets/esri/core/workers/chunks/4be559c53fe5ac0d0d2e.js +0 -1
  146. package/assets/esri/core/workers/chunks/4e350d6c76957f5beb70.js +0 -1
  147. package/assets/esri/core/workers/chunks/4fe34da1c5d63e66ce98.js +0 -1
  148. package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +0 -1
  149. package/assets/esri/core/workers/chunks/6c9acd9e4e201dc380e9.js +0 -1
  150. package/assets/esri/core/workers/chunks/6da7229433105a69eb3f.js +0 -1
  151. package/assets/esri/core/workers/chunks/74c866e0b66e61751861.js +0 -1
  152. package/assets/esri/core/workers/chunks/830ab9b8d000169da675.js +0 -1
  153. package/assets/esri/core/workers/chunks/849879c8aed16315194c.js +0 -1
  154. package/assets/esri/core/workers/chunks/8ff23ac0abeea0073b47.js +0 -1
  155. package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +0 -1
  156. package/assets/esri/core/workers/chunks/95dbbddac6581b9d671f.js +0 -1
  157. package/assets/esri/core/workers/chunks/a40b6d8b5c73e06e14d4.js +0 -1
  158. package/assets/esri/core/workers/chunks/aa1ac7954e4f0fefe15b.js +0 -1
  159. package/assets/esri/core/workers/chunks/b5df193c93e9c19f9700.js +0 -1
  160. package/assets/esri/core/workers/chunks/befa32b9e7b3fbdd431e.js +0 -1
  161. package/assets/esri/core/workers/chunks/c2c1f51a4668055c2838.js +0 -1
  162. package/assets/esri/core/workers/chunks/d0f5bee9db1ad51ae687.js +0 -1
  163. package/assets/esri/core/workers/chunks/d7429b58c90e015263ad.js +0 -1
  164. package/assets/esri/core/workers/chunks/d95d63e8d51244d71afb.js +0 -1
  165. package/assets/esri/core/workers/chunks/dfc81e66196c402f39b4.js +0 -29
  166. package/assets/esri/core/workers/chunks/dfd2dc5cdc97ffba8926.js +0 -1
  167. package/assets/esri/core/workers/chunks/e01fc1c31bc023dd0e33.js +0 -1
  168. package/assets/esri/core/workers/chunks/e1b7806ab3e1967b15f0.js +0 -1
  169. package/assets/esri/core/workers/chunks/e1f5d00878f27e1d413e.js +0 -1
  170. package/assets/esri/core/workers/chunks/ffbcb816b611049a6276.js +0 -1
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{isSome as n}from"../../core/arrayUtils.js";import r from"../../core/Collection.js";import i from"../../core/Error.js";import{EventedAccessor as a}from"../../core/Evented.js";import{handlesGroup as o,makeHandle as s,drainHandles as c,destroyHandle as l}from"../../core/handleUtils.js";import has from"../../core/has.js";import u from"../../core/Logger.js";import{destroyMaybe as d,abortMaybe as f,removeMaybe as p}from"../../core/maybe.js";import{createAbortError as m,ignoreAbortErrors as h,whenOrAbort as g}from"../../core/promiseUtils.js";import{watch as _,syncAndInitial as v,on as ee,when as te,sync as ne,whenOnce as y}from"../../core/reactiveUtils.js";import{property as b,subclass as re}from"../../core/accessorSupport/decorators.js";import{trackAccess as x}from"../../core/accessorSupport/tracking.js";import{SimpleObservable as ie}from"../../core/accessorSupport/tracking/SimpleObservable.js";import{UpdatingHandles as S}from"../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as ae}from"../../geometry/ellipsoidUtils.js";import{canProjectWithoutEngine as oe,isLoaded as se,load as ce,project as le}from"../../geometry/projectionUtils.js";import{geometryToCoordinates as C}from"../../geometry/support/coordsUtils.js";import{equals as ue}from"../../geometry/support/spatialReferenceUtils.js";import de from"../../layers/GraphicsLayer.js";import{isIntegratedMeshLayer as fe}from"../../layers/support/layerUtils.js";import{getEffectiveElevationInfo as pe}from"../../support/elevationInfoUtils.js";import me from"../../symbols/FillSymbol3DLayer.js";import he from"../../symbols/MeshSymbol3D.js";import ge from"../../symbols/SimpleFillSymbol.js";import _e from"../../symbols/SimpleLineSymbol.js";import w from"../../symbols/SimpleMarkerSymbol.js";import T from"../../symbols/TextSymbol.js";import{symbolTypes as E}from"../../symbols/support/typeUtils.js";import{isSupportedObjectResultMessage as D}from"../../views/3d/interactive/editingTools/isSupportedObjectUtils.js";import{isSupportedObject as ve}from"../../views/3d/interactive/editingTools/move/isSupportedObject.js";import{isSupportedObject as ye}from"../../views/3d/interactive/editingTools/reshape/isSupportedObject.js";import{isSupportedGraphic as be}from"../../views/3d/interactive/editingTools/transform/isSupportedGraphic.js";import{addUniqueLayer as O}from"../../views/draw/support/layerUtils.js";import{ViewEventPriorities as k}from"../../views/input/InputManager.js";import{sketchKeys as A}from"../../views/interactive/keybindings.js";import{bindViewToolOptions as xe}from"../../views/interactive/options/bindViewToolOptions.js";import j from"../../views/interactive/options/InteractiveToolOptions.js";import M from"../../views/interactive/sketch/SketchLabelOptions.js";import N from"../../views/interactive/sketch/SketchOptions.js";import Se from"../../views/interactive/sketch/SketchTooltipOptions.js";import Ce from"../../views/interactive/sketch/SketchValueOptions.js";import{SnappingManager as P}from"../../views/interactive/snapping/SnappingManager.js";import{acquireForViewOptions as we}from"../../views/interactive/snapping/SnappingManagerPool.js";import F from"../../views/interactive/snapping/SnappingOptions.js";import{setupSnappingToggleHandles as I}from"../../views/interactive/snapping/snappingUtils.js";import{GeometryWorkerHandle as Te}from"../../views/support/GeometryWorkerHandle.js";import{defaultHighlightName as Ee}from"../../views/support/HighlightDefaults.js";import{findFirstGraphicHit as De}from"../../views/support/hitTestSelectUtils.js";import{createScreenPointFromEvent as L}from"../../views/support/screenUtils.js";import Oe from"./adapters/layer/GraphicsLayerAdapter.js";import ke from"./adapters/layer/MapNotesLayerAdapter.js";import Ae from"./adapters/layer/SketchLayerAdapter.js";import{CreateOperationHandle as je,DrawToolOperationHandle as Me,UpdateOperationHandle as R}from"./support/OperationHandle.js";import{PluginManager as Ne}from"./support/PluginManager.js";import{SettingsManager as Pe}from"./support/SettingsManager.js";import{getLegacyTool as z,isCompletelyDegenerate as Fe,graphicsHaveTooFewVerticesForBox as B,getModeFromCreateOptions as Ie,getDrawToolGeometryTypeFromCreateTool as Le}from"./support/sketchUtils.js";const V={defaultZ:0},H={reshapeOptions:{edgeOperation:`split`,shapeOperation:`move`,vertexOperation:`move`,enableCreateCurveFromStraightEdge:!0},enableMoveAllGraphics:!0,enableRotation:!0,enableScaling:!0,multipleSelectionEnabled:!0,preserveAspectRatio:!1,toggleToolOnClick:!0,enableZ:!0,highlightOptions:{enabled:!0,name:Ee},tool:`transform`},U=Symbol(),W=Symbol();let G=class extends a{constructor(e){super(e),this._defaultSnappingManager=null,this._operationContext=null,this._internalGraphicsLayer=new de({listMode:`hide`,internal:!0,title:`SVM Internal`}),this._pluginManager=new Ne({sketchViewModel:this}),this.settingsManager=new Pe({availablePlugins:()=>this.pluginManager.visiblePluginsFlat}),this._operationHandle=null,this._updatingHandles=new S,this._toolTransitionHandles=new S,this._drawToolSimplifyAbortController=null,this._geometryWorkerHandle=new Te,this._viewHandlesKey=`viewHandles`,this.activeFillSymbol=null,this.activeLineSymbol=null,this.activeVertexSymbol=null,this.allowDeleteKey=!0,this.activeUpdateOptions=null,this.layer=null,this.pointSymbol=new w({style:`circle`,size:6,color:[255,255,255],outline:{color:[50,50,50],width:1}}),this.polygonSymbol=new ge({color:[150,150,150,.2],outline:{color:[50,50,50],width:2}}),this.polylineSymbol=new _e({color:[130,130,130,1],width:2}),this.meshSymbol=new he({symbolLayers:new r([new me])}),this.updateGraphics=new r,this.updateOnGraphicClick=!0,this.useViewOptions=!1,this.cancelUpdateOnClickAway=!0,this.creationMode=`single`,this.vertexSymbol=new w({style:`circle`,size:6,color:[255,255,255],outline:{color:[50,50,50],width:1}}),this.sketchOptions=new N,this.useLegacyCreateTools=!0,this._moduleLoaderAbortController=null,this._viewReadyAbortController=null,this._sketchContinuationFlag=!1,this._onLayerAdapterChange=async()=>{let{_layerAdapter:e}=this;if(this.removeHandles(W),!e)return;let t=[e.onGraphicsChange(e=>this._onLayerGraphicsChangeCallback(e)),_(()=>e.elevationInfo,e=>{e!==this._internalGraphicsLayer.elevationInfo&&(this.cancel(),this._internalGraphicsLayer&&(this._internalGraphicsLayer.elevationInfo=e))},v)].filter(n);this.addHandles(t,W)},this._originalPopupEnabled=null,this.defaultCreateOptions=V,this.defaultUpdateOptions=H,this.snappingOptions=e?.snappingManager?.options??e?.snappingOptions??new F,this.textSymbol=new T({text:`text`})}initialize(){this._updatingHandles.consumePromise(this._setupAdvancedDrawToolIntegrationMaybe()),this.addHandles([ee(()=>this.view?.map?.layers,`change`,e=>{this.layer&&e.removed.includes(this.layer)&&this.cancel()}),_(()=>this._layerAdapter,()=>this._onLayerAdapterChange(),v),_(()=>this.view,e=>{this._defaultSnappingManager=d(this._defaultSnappingManager),e&&(this.snappingManager||(this._defaultSnappingManager=new P({view:e,options:this.snappingOptions})),e.type===`2d`?(import(`../../views/2d/interactive/editingTools.js`),this._updatingHandles.consumePromise(this._setupAdvancedDrawToolIntegrationMaybe())):e.type===`3d`&&(import(`../../views/3d/interactive/editingTools.js`),import(`../../views/3d/layers/GraphicsLayerView3D.js`)))},v),_(()=>this.view?.spatialReference,(e,t)=>{e&&t&&!e.equals(t)&&this.cancel()})]),I(this,void 0,()=>this._operationSnappingManager?.options??this.snappingOptions)}destroy(){this.cancel(),this._removeDefaultLayer(),this._defaultSnappingManager=d(this._defaultSnappingManager),this._destroyOperationContext(),this._set(`snappingManager`,null),this._set(`view`,null),this._updatingHandles.destroy(),this._toolTransitionHandles.destroy(),this._drawToolSimplifyAbortController=f(this._drawToolSimplifyAbortController),this._geometryWorkerHandle.destroy(),this._pluginManager?.destroy(),this.emit(`destroy`)}get _operationSnappingManager(){return this._operationContext?.snappingManager??this.snappingManager}get _operationToolOptions(){return this._operationContext?.toolOptions??this.sketchOptions}get _layerAdapter(){let{layer:e}=this;switch(e?.type){case`graphics`:return new Oe(e);case`map-notes`:return new ke(e);case`sketch`:return new Ae(e);case void 0:default:return null}}get activeTool(){return this._operationHandle?.tool??null}get geometrySimplificationInProgress(){return!!this._drawToolSimplifyAbortController}get activeCreateToolDrawMode(){let e=this._operationHandle;if(e?.type===`create`&&e.activeComponent&&`mode`in e.activeComponent)return e.activeComponent.mode;if(e?.activeComponent?.type===`draw-2.0`){let t=e.activeComponent.pluginStack.map(e=>e.configuration).filter(n).toArray();if(t.length>0)return this._pluginManager?.getDrawingModeEquivalentToPluginStack(t)}return null}get activeTooltip(){let{activeComponent:e,destroyed:t}=this,n=!t&&e&&`tooltip`in e?e.tooltip:null;return n?.visible?n:null}get activeComponent(){return this._operationHandle?.activeComponent??null}get createGraphic(){return this.activeComponent!=null&&(this.activeComponent.type===`draw-3d`||this.activeComponent.type===`draw-2d`)?this.activeComponent.graphic:this._get(`createGraphic`)}get defaultCreateOptions(){return this._get(`defaultCreateOptions`)}set defaultCreateOptions(e){this._set(`defaultCreateOptions`,{...V,...e})}get defaultUpdateOptions(){return this._get(`defaultUpdateOptions`)}set defaultUpdateOptions(e){this._set(`defaultUpdateOptions`,{...H,...e,reshapeOptions:{...H.reshapeOptions,...e?.reshapeOptions},highlightOptions:{...H.highlightOptions,...e?.highlightOptions}})}get labelOptions(){return this.sketchOptions.labels}set labelOptions(e){this.sketchOptions.labels=e}get textSymbol(){return this._get(`textSymbol`)}set textSymbol(e){this._set(`textSymbol`,e)}get snappingOptions(){return this.snappingManager?.options??this._get(`snappingOptions`)}set snappingOptions(e){this._defaultSnappingManager!=null&&(this._defaultSnappingManager.options=e),this._set(`snappingOptions`,e)}get snappingManager(){return this._isOverridden(`snappingManager`)?this._get(`snappingManager`):this._defaultSnappingManager}set snappingManager(e){if(e)this._isOverridden(`snappingManager`)||(this._defaultSnappingManager=d(this._defaultSnappingManager)),this._override(`snappingManager`,e);else{let{view:e}=this;!this._defaultSnappingManager&&e&&(this._defaultSnappingManager=new P({options:this.snappingOptions,view:e})),this._clearOverride(`snappingManager`)}}get state(){let e=!!(this.view?.ready&&this.layer),t=this._operationHandle;return e&&t?`active`:e?`ready`:`disabled`}get toolTransitionInProgress(){return this._toolTransitionHandles.updating||!!this.drawTool?.lifecycleManager.updating}get tooltipOptions(){return this.sketchOptions.tooltips}set tooltipOptions(e){this.sketchOptions.tooltips=e}get updating(){return this.toolTransitionInProgress||this.activeComponent&&`updating`in this.activeComponent&&this.activeComponent.updating||!!(this._updatingHandles.updating||this._drawToolSimplifyAbortController||this.snappingManager?.updating||this.drawTool?.updating)}get valueOptions(){return this.sketchOptions.values}set valueOptions(e){this.sketchOptions.values=e}get view(){return this._get(`view`)}set view(e){let t=this._get(`view`);if(t){let{container:e,map:n}=t;e&&this._clearCursor(),n?.remove(this._internalGraphicsLayer),this.removeHandles(this._viewHandlesKey),this.cancel()}let n=`view-ready`;this.removeHandles(n),e&&this.addHandles(te(()=>e.ready,t=>{this.removeHandles(this._viewHandlesKey),t&&this.addHandles(this._generateViewHandles(e),this._viewHandlesKey)},v),n),this._set(`view`,e),this._updatingHandles.consumePromise(this._setupAdvancedDrawToolIntegrationMaybe())}get isUsingLegacyCreateTools(){return this.useLegacyCreateTools||this.view?.type!==`2d`}get pluginManager(){return this._pluginManager}get drawTool(){return this.activeComponent?.type===`draw-2.0`?this.activeComponent:null}get activePluginConfigurations(){return this.drawTool?.pluginStack.toArray().map(e=>e.configuration).filter(n)??[]}get rootPlugins(){return this._pluginManager?.availablePlugins}set rootPlugins(e){this._overrideIfSome(`rootPlugins`,e)}get effectiveAvailablePlugins(){if(this.isUsingLegacyCreateTools)return null;let e=this.view?.type??`2d`,{firstPluginWithSwappableLeaf:t}=this;return t?t.availableDownstreamPlugins.filter(t=>!t.excludedViews?.includes(e)):this.rootPlugins?.filter(t=>!t.excludedViews?.includes(e)).filter(n)??[]}get firstPluginWithSwappableLeaf(){let e=this.view?.type??`2d`;return this.drawTool?.pluginStack.toArray().map(e=>e.configuration).findLast(t=>t!=null&&!t.hidden&&t.availableDownstreamPlugins&&t.availableDownstreamPlugins.filter(t=>!t.excludedViews?.includes(e))?.length>1)}get multiplePluginsActive(){return this.drawTool?this.drawTool.pluginStack.length>1:!1}replaceLeaf(e){this.drawTool?.replaceLeaf(e)}addGraphic(e){this._layerAdapter?.add(e)}addGraphics(e){this._layerAdapter?.addMany(e)}hasGraphic(e){return!!this._layerAdapter?.has(e)}removeGraphic(e){this._layerAdapter?.remove(e)}removeGraphics(e){this._layerAdapter?.removeMany(e)}removeAllGraphics(){this._layerAdapter?.removeAll()}cancel(){this._moduleLoaderAbortController=f(this._moduleLoaderAbortController),this._viewReadyAbortController=f(this._viewReadyAbortController),this._drawToolSimplifyAbortController=f(this._drawToolSimplifyAbortController),this._sketchContinuationFlag=!0,this._operationHandle?.cancel()}complete(){this._operationHandle?.complete()}delete(){let{state:e,updateGraphics:t}=this;if(e===`active`&&t.length){let{activeTool:e}=this,n=t.toArray();this.removeGraphics(n),this.cancel(),this._emitDeleteEvent({graphics:n,tool:e})}}duplicate(){if(this.state===`active`&&this.updateGraphics.length){let e=this.updateGraphics.map(e=>e.clone()).toArray();return this.addGraphics(e),this.emit(`duplicate`,{graphics:e,type:`duplicate`}),e}return[]}async create(e,t){return this._toolTransitionHandles.addPromise(this._create(e,t))}async _create(e,t){this.cancel(),await this._updatingHandles.addPromise(this._waitViewReady());let{view:n,layer:r}=this;if(!n||this.state===`disabled`)throw r||this._logMissingLayer(),m();if(n.activeTool!=null&&(n.activeTool=null),!e){this._logError(`sketch:missing-parameter`,`Missing parameter 'tool'.`);return}O(n,this._internalGraphicsLayer);let i=this._createOperationContext(n),a;try{a=await this._updatingHandles.addPromise(this._setupCreateOperation(e,t))}catch(e){throw this._destroyOperationContext(i),e}if(a==null||this.destroyed||i!==this._operationContext){let e=i===this._operationContext;a?.onEnd(),d(a),this._destroyOperationContext(i),e&&n.map?.remove(this._internalGraphicsLayer);return}let o=z(e);a.on(`complete`,()=>{if(a===this._operationHandle){let n=this.createGraphic,r=this._operationHandle.cancelled;if(this._operationHandle.destroy(),this._operationHandle=null,this._destroyOperationContext(),this._set(`createGraphic`,null),this.view?.map?.remove(this._internalGraphicsLayer),!a.cancelled&&n!=null&&this.addGraphic(n),this._sketchContinuationFlag=!1,this.emit(`create`,{graphic:n,state:r?`cancel`:`complete`,tool:o??`point`,toolEventInfo:null,type:`create`}),r||this._sketchContinuationFlag)return;let{creationMode:i}=this;if(i===`continuous`){if(t?.geometryToPlace)return;this._updatingHandles.consumePromise(h(this.create(e,t)))}else i===`update`&&n&&this._updatingHandles.consumePromise(h(this.update([n])))}}),this._operationHandle=a,n.ready&&n.focus()}async place(e,t){return await e.load(),this.create(`mesh`,{mode:`click`,hasZ:e.hasZ,geometryToPlace:e,...t})}async update(e,t){return this._toolTransitionHandles.addPromise(this._update(e,t))}async _update(e,t){this.cancel(),await this._updatingHandles.addPromise(this._waitViewReady());let{layer:n,view:r,state:i}=this;if(!r||i===`disabled`)throw n||this._logMissingLayer(),m();r.activeTool!=null&&(r.activeTool=null);let a=Array.isArray(e)?e:[e];if(e==null||!a?.length){this._logError(`sketch:missing-parameter`,`Missing parameter 'graphics'.`);return}if(a.some(e=>this.hasGraphic(e)?e.geometry==null&&(this._logError(`sketch:invalid-parameter`,`Parameter 'graphics' contains one or more graphics with an unsupported geometry.`),!0):(this._logError(`sketch:invalid-parameter`,`Parameter 'graphics' contains one or more graphics missing from the supplied GraphicsLayer.`),!0)))return;let o=this._createOperationContext(r),s;try{s=await this._updatingHandles.addPromise(this._setupUpdateOperation(a,t))}catch(e){throw this._destroyOperationContext(o),e}if(this.destroyed||s==null||$(s)||o!==this._operationContext){s&&!$(s)&&(s.onEnd(),s.destroy()),this._destroyOperationContext(o);return}O(r,this._internalGraphicsLayer),this._setUpdateOperationHandle(s,t),this.emit(`update`,{graphics:a,state:`start`,aborted:!1,tool:s.tool,toolEventInfo:null,type:`update`})}async _updateSpatialReference(e){let t=this.view;if(!t){this._logMissingView();return}e=Array.isArray(e)?e:[e];for(let n of e)n.geometry!=null&&n.geometry.type!==`mesh`&&!ue(n.geometry.spatialReference,t.spatialReference)&&(!oe(n.geometry.spatialReference,t.spatialReference)&&!se()&&await ce(),n.geometry=le(n.geometry,t.spatialReference))}undo(){this.canUndo()&&this._operationHandle?.undo()}redo(){this.canRedo()&&this._operationHandle?.redo()}canUndo(){return!!this._operationHandle?.canUndo()}canRedo(){return!!this._operationHandle?.canRedo()}toggleUpdateTool(){this._updatingHandles.consumePromise(this._operationHandle?.toggleTool())}_createOperationContext(e){this._destroyOperationContext();let t=this.useViewOptions?e.options:null,n=t?we(e):null,r=t?new j:this.sketchOptions,i;if(t){let{values:t}=r;i=o([xe(r,()=>e.options,()=>this.sketchOptions),_(()=>t.directionMode,e=>{this.sketchOptions.values.directionMode=e},ne)])}return this._operationContext={snappingManager:n?.snappingManager??this.snappingManager,toolOptions:r,...o([n,i])}}_destroyOperationContext(e=this._operationContext){if(e!==this._operationContext){p(e);return}this._operationContext=p(this._operationContext)}async _getFirstHit(e){let t=this.view;if(!t)return this._logMissingView(),null;if(t.type===`2d`){let n=[];t.map.allLayers.forEach(e=>{(e.type===`vector-tile`||e.type===`imagery`)&&n.push(e)});let r=await t.hitTest(e,{exclude:n});return De(r.results)}let n=[t.map.ground];t.map.allLayers.forEach(e=>{fe(e)&&(!has(`enable-feature:im-as-ground`)||e.isUsedAsGroundLayer)&&n.push(e)});let r=await t.hitTest(e,{exclude:n});if(r.results.length>0){let e=r.results[0];if(e!=null&&e.type===`graphic`&&e.graphic&&(!r.ground.mapPoint||t.map.ground.opacity<1||r.ground.distance-(e.distance??0)>-Math.min(3*r.ground.distance,t.viewingMode===`global`?ae(t.renderCoordsHelper.spatialReference).radius/t.renderCoordsHelper.unitInMeters:1/0)))return e}return null}_generateViewHandles(e){return[e.on(`immediate-click`,async e=>{let t=this.state===`active`&&this._operationHandle?.type===`create`;this.state!==`disabled`&&!t&&this.updateOnGraphicClick&&await this._toolTransitionHandles.addPromise(this._handleImmediateClick(e))},k.WIDGET)]}async _handleImmediateClick(e){let t=await e.defer(()=>this._getFirstHit(L(e))),n=null;if(t!=null){let r=t.graphic;this.updateGraphics.includes(r)||this.hasGraphic(r)?(e.stopPropagation(),n=r):this.view?.type===`2d`&&!this._isComponentGraphic(r)&&this.state===`active`&&this.cancel()}else this.state===`active`&&this.cancelUpdateOnClickAway&&this.cancel();n!=null&&!this.updateGraphics.includes(n)&&await this.update([n],{...this.defaultUpdateOptions,reshapeOptions:{...this.defaultUpdateOptions.reshapeOptions}})}async _setupCreateOperation(e,t){let n=this.view;if(!n)return this._logMissingView(),null;let r={hasZ:n.type===`3d`,...this.defaultCreateOptions,...t},i=typeof e==`string`?this.pluginManager?.getPluginsEquivalentToCreateTool(e,r.mode):e,a=z(e);if(i&&!this.isUsingLegacyCreateTools){let e=await this._setupDrawTool(i,r,a??`polyline`);if(e)return this._setupDrawToolOperationHandle(e,a??`point`)}if(!a)return null;let o=await this._setupDrawGraphicTool(a,n,r);return o==null?null:(n.tools.add(o),n.activeTool=o,this._setupCreateOperationHandle(o,a))}async _setupDrawGraphicTool(e,t,n){if(e===`multipoint`&&t.type===`3d`)return this._logError(`sketch:create`,`Multipoint geometries are not supported in SceneView.`),null;if(!t)return this._logMissingView(),null;let{cursor:r,defaultZ:i,hasZ:a,geometryToPlace:o,graphicProperties:s,mode:c,preserveAspectRatio:l}=n,u=Ie(c,e),d=Le(e),f=n?.optionsPerTool?.has(e)?n.optionsPerTool.get(e):{},p=f?.preserveAspectRatio??l??e!==`rectangle`,m={centered:e!==`rectangle`&&!(e===`circle`&&!p),cursor:r,defaultZ:i,forceUniformSize:p,graphicProperties:{...s,attributes:{...s?.attributes}},geometryToPlace:o,geometryType:d,mode:u,graphicSymbol:n.graphicSymbol??this._getGraphicSymbolFromTool(e),hasZ:a,snappingManager:this._operationSnappingManager,snapToScene:!1,view:t,...f};return t.type===`2d`?this._makeDrawGraphicTool2D(m):this._makeDrawGraphicTool3D(m)}async _makeDrawGraphicTool2D(e){let t=await this._requireModule(import(`../../views/2d/interactive/editingTools.js`));return $(t)||this.destroyed?null:new t.module.DrawGraphicTool2D({...e,activeVertexSymbol:this.activeVertexSymbol,regularVerticesSymbol:this.vertexSymbol,activeLineSymbol:this.activeLineSymbol,activeFillSymbol:ze(e.geometryType)?this.activeFillSymbol:null,toolOptions:this._operationToolOptions})}async _makeDrawGraphicTool3D(e){let t=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));return $(t)||this.destroyed?null:new t.module.DrawGraphicTool3D({...e,elevationInfo:this._layerAdapter?.elevationInfo,snapToScene:!0,toolOptions:this._operationToolOptions})}_setupCreateOperationHandle(e,t){let n=this.view;if(!n)return this._logMissingView(),null;let r=null,i=e.forceUniformSize,a=e.centered,o=new ie,l=[s(()=>o.destroy()),n.on(`key-down`,t=>{if(t.key===A.pan)t.stopPropagation(),t.repeat||(e.enabled=!1);else if(t.key===A.complete)t.stopPropagation(),e.completeCreateOperation();else if(t.key===A.vertexAdd&&!t.repeat){let n=e.drawOperation.geometryType;(n===`polyline`||n===`polygon`||n===`multipoint`)&&(t.stopPropagation(),e.drawOperation.commitStagedVertex())}else t.key===A.undo?(t.stopPropagation(),u.undo()):t.key===A.redo?(t.stopPropagation(),u.redo()):t.key===A.constraint&&(e.geometryType===`rectangle`||e.geometryType===`circle`)&&!t.repeat?(e.forceUniformSize=!i,t.stopPropagation()):t.key===A.center&&(t.repeat||(e.centered=!a,t.stopPropagation()))},k.WIDGET),n.on(`key-up`,t=>{t.key===A.pan?e.enabled=!0:t.key===A.constraint&&(e.geometryType===`rectangle`||e.geometryType===`circle`)?(e.forceUniformSize=i,t.stopPropagation()):t.key===A.center&&(e.centered=a,t.stopPropagation())},k.WIDGET),e.on(`vertex-update`,()=>{o.notify()}),e.on(`vertex-add`,t=>{switch(o.notify(),r=r==null?`start`:`active`,t.operation){case`apply`:this.emit(`create`,{graphic:e.graphic,state:r,tool:this.activeTool,toolEventInfo:t,type:`create`});break;case`undo`:this._emitUndoEvent({graphics:[e.graphic],tool:e.geometryType});break;case`redo`:this._emitRedoEvent({graphics:[e.graphic],tool:e.geometryType})}}),e.on(`cursor-update`,t=>{e.drawOperation.numCommittedVertices>0&&this.emit(`create`,{graphic:e.graphic,state:`active`,tool:this.activeTool,toolEventInfo:{coordinates:t.vertices[0].coordinates,type:`cursor-update`},type:`create`})}),e.on(`vertex-remove`,t=>{switch(o.notify(),t.operation){case`apply`:this.emit(`create`,{graphic:e.graphic,state:`active`,tool:this.activeTool,toolEventInfo:t,type:`create`});break;case`undo`:this._emitUndoEvent({graphics:[e.graphic],tool:e.geometryType});break;case`redo`:this._emitRedoEvent({graphics:[e.graphic],tool:e.geometryType})}}),e.on(`complete`,e=>{this._set(`createGraphic`,e.graphic),r=`complete`,e.aborted?u&&u.cancel():u&&u.complete()}),_(()=>this._getGraphicSymbolFromTool(t),t=>{e.graphicSymbol=t})],u=new je({activeComponent:e,type:`create`,onEnd:()=>{c(l),n.tools?.remove(e)},undo:()=>{e.canUndo&&e.undo()},redo:()=>{e.canRedo&&e.redo()},canUndo:()=>(x(o),e.canUndo),canRedo:()=>(x(o),e.canRedo)});return u}_setupDrawToolOperationHandle(e,t){let r=this.view;if(!r)return this._logMissingView(),null;let i=null,a=[r.on(`key-down`,t=>{t.key===A.pan&&(t.stopPropagation(),t.repeat||(e.editable=!1))},k.WIDGET),r.on(`key-up`,t=>{t.key===A.pan&&(e.editable=!0)},k.WIDGET),e.on(`before-vertex-add`,t=>{let n=e.mostUpstreamPlugin?.configuration;if(n&&`legacyCreateTool`in n&&(n?.legacyCreateTool===`point`||n.legacyCreateTool===`text`)){let e=t.detail.originalEvent;e&&`key`in e&&e.key===A.vertexAdd&&t.preventDefault();return}}),e.on(`before-complete`,t=>{let n=e.getGeometryIfCompleted();if(!n||Fe(n)){t.preventDefault();return}}),e.on([`vertex-add`,`vertex-remove`],r=>{switch(this.createGraphic&&(this.createGraphic.geometry=e.getGeometryIfCompleted()),i=i==null&&r.type!==`vertex-remove`?`start`:`active`,r.operation){case`apply`:this.emit(`create`,{graphic:this.createGraphic,state:i,tool:this.activeTool,toolEventInfo:r,type:`create`});break;case`undo`:this._emitUndoEvent({graphics:[this.createGraphic].filter(n),tool:t});break;case`redo`:this._emitRedoEvent({graphics:[this.createGraphic].filter(n),tool:t})}}),e.on(`cursor-update`,t=>{this.createGraphic&&(this.createGraphic.geometry=e.unprocessedGeometry),(t.vertices[0]?.vertexIndex>0||t.vertices[0]?.componentIndex>0)&&this.emit(`create`,{graphic:this.createGraphic,state:`active`,tool:this.activeTool,toolEventInfo:{coordinates:t.vertices[0].coordinates,type:`cursor-update`},type:`create`})}),e.on(`complete`,async({geometry:t,isSimple:n})=>{let r=this.createGraphic,i=!!t&&t.type!==`mesh`&&t.type!==`extent`&&!n;if(r&&(r.geometry=n?t:e.unprocessedGeometry??t),!i||!r)o.complete();else{this._internalGraphicsLayer.add(this.createGraphic);let e=new AbortController;this._drawToolSimplifyAbortController?.abort(),this._drawToolSimplifyAbortController=e,await this._updatingHandles.addPromise(h(this._finalizeDrawToolCompletion({abortController:e,geometry:t,graphic:r,handle:o})))}})],o=new Me({activeComponent:e,type:`create`,onEnd:()=>{c(a),r.tools.remove(e)},undo:()=>e.undo(),redo:()=>e.redo(),canUndo:()=>e.canUndo,canRedo:()=>e.canRedo});return a.push(e.on(`cancel`,()=>{this._drawToolSimplifyAbortController=f(this._drawToolSimplifyAbortController),o.cancel()})),o}async _finalizeDrawToolCompletion({abortController:e,geometry:t,graphic:n,handle:r}){let i=this.view?.acquireCursor(`progress`,`high`);i&&this.addHandles(i);let a=()=>e.signal.aborted?(n&&(this._layerAdapter?.remove(n),this._internalGraphicsLayer?.remove(n)),this._set(`createGraphic`,null),!0):!1;try{let i=await this._geometryWorkerHandle.simplify(t,e.signal);if(a())return;n.geometry=i??t,this._internalGraphicsLayer?.remove(n),r.complete()}finally{i?.remove(),this._drawToolSimplifyAbortController===e&&(this._drawToolSimplifyAbortController=null)}}_getGraphicSymbolFromTool(e){switch(e){case`point`:case`multipoint`:return this.pointSymbol;case`polyline`:case`freehandPolyline`:return this.polylineSymbol;case`circle`:case`rectangle`:case`polygon`:case`freehandPolygon`:return this.polygonSymbol;case`mesh`:return this.meshSymbol;case`text`:return this.textSymbol}}async _setupUpdateOperation(e,t){let{view:n}=this;if(!n)return this._logMissingView(),null;let r={...this.defaultUpdateOptions,...t,reshapeOptions:{...this.defaultUpdateOptions.reshapeOptions,...t?.reshapeOptions},highlightOptions:{...this.defaultUpdateOptions.highlightOptions,...t?.highlightOptions}};this.activeUpdateOptions=r;let i=r.tool??H.tool;if(this.removeGraphics(e),this.addGraphics(e),n.type===`3d`){if(e.length===0)return null;switch(i){case`move`:return this._setupMove3DOperation(e,r,n,i);case`reshape`:return e.length>1?(this._logError(`sketch:reshape-multiple`,`Reshape operation does not support multiple graphics.`),null):this._setupReshape3DOperation(e[0],r,n);case`transform`:return this._setupGraphicTransform3DOperation(e,r,n)}}switch(i){case`move`:return this._setupMove2DOperation(e,r,n);case`reshape`:return e.length>1?(this._logError(`sketch:reshape-multiple`,`Reshape operation does not support multiple graphics.`),null):this._setupTransformOrReshape2DOperation(e,i,r,n);case`transform`:return B(e)&&(i=`reshape`),this._setupTransformOrReshape2DOperation(e,i,r,n)}}async _setupMove3DOperation(e,t,n,r,i=!1){let a=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(a))return a;let{ManipulatedObject3DGraphic:o,MoveTool3D:s}=a.module,l=new Map,u=()=>{l.forEach(e=>e.destroy()),l.clear()};for(let t of e){let e=new o({view:n,graphic:t}),r=ve(e);if(r!==0)return u(),this._logError(`sketch:move`,`Move operation not supported for provided graphic(s) (${D(r)}).`),null;l.set(t,e)}let d=new s({view:n,enableZ:t.enableZ,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions});n.tools.add(d),d.objects.addMany(Array.from(l.values())),i||this.updateGraphics.addMany(e);let f=[],p=new R({activeComponent:d,tool:r,type:`update`,onEnd:()=>{c(f),Q(n,d),u()},undo:()=>{X(this.view,d),q(p,this.updateGraphics.toArray()),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:r})},redo:()=>{J(p,this.updateGraphics.toArray()),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:r})},addToSelection:async e=>{this.updateGraphics.push(e);let t=new o({view:n,graphic:e});l.set(e,t),d.objects.push(t),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`})},removeFromSelection:async e=>{let t=this.updateGraphics.indexOf(e);if(p.history.undo.forEach(e=>e.updates.splice(t,1)),p.history.redo.forEach(e=>e.updates.splice(t,1)),this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),this.updateGraphics.length===0){p.complete();return}let n=l.get(e);n&&(d.objects.remove(n),n.destroy(),l.delete(e))},toggleTool:async()=>{if(this.updateGraphics.length!==1||t.toggleToolOnClick===!1||r!==`transform`)return;let e=this.updateGraphics.at(0),i=await this._updatingHandles.addPromise(this._setupReshape3DOperation(e,t,n,!0));i&&!$(i)&&(p.onEnd(),p.destroy(),this._setUpdateOperationHandle(i,t))}});return f.push(...this._getHandlesForComponent(p,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(p,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(p,e)},k.WIDGET)),p}_setupGraphicTransform3DOperation(e,t,n,r=!1){if(e.length===1&&be(e[0])===0){let i=e[0],a=i.geometry;if(a!=null&&(a.type===`point`||a.type===`mesh`))return this._setupPointTransform3DOperation(i,t,n);if(a!=null&&(a.type===`polygon`||a.type===`polyline`))return this._setupPolyTransform3DOperation(i,t,n,r)}return this._setupMove3DOperation(e,t,n,`transform`,r)}async _setupPointTransform3DOperation(e,t,n){let r=`transform`,{enableRotation:i,enableScaling:a,enableZ:o}=t,s=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(s))return s;let{TransformTool3D:l,ManipulatedObject3DGraphic:u}=s.module,d=new u({graphic:e,view:n}),f=new l({object:d,view:n,enableRotation:i,enableScaling:a,enableZ:o,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions});n.tools.add(f),this.updateGraphics.add(e);let p=[],m=new R({activeComponent:f,tool:r,type:`update`,onEnd:()=>{c(p),Q(n,f),d.destroy()},undo:()=>{X(this.view,f),q(m,this.updateGraphics.toArray()),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:r})},redo:()=>{J(m,this.updateGraphics.toArray()),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:r})},addToSelection:async e=>{this.updateGraphics.add(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`}),await this._replaceUpdateOperationHandle(m,t,()=>this._setupMove3DOperation(this.updateGraphics.toArray(),t,n,`transform`,!0))},removeFromSelection:async e=>{this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),m.complete()},toggleTool:async()=>{}});return p.push(...this._getHandlesForComponent(m,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(m,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(m,e)},k.WIDGET)),m}async _setupPolyTransform3DOperation(e,t,n,r=!1){let i=`transform`,{enableRotation:a,enableScaling:o,enableZ:s,preserveAspectRatio:l}=t,u=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(u))return u;let{ManipulatedObject3DGraphic:d,ExtentTransformTool:f}=u.module,p=this.view?.inputManager?.isModifierKeyDown(A.constraint),m=new d({view:n,graphic:e}),h=new f({object:m,view:n,enableRotation:a,enableScaling:o,enableZ:s,preserveAspectRatio:!!l!=!!p,toolOptions:this._operationToolOptions});n.tools.add(h),r||this.updateGraphics.add(e);let g=[],_=new R({activeComponent:h,tool:i,type:`update`,onEnd:()=>{c(g),Q(n,h),m.destroy()},canUndo:()=>!h.destroyed&&h.canUndo,undo:()=>{h.destroyed||(h.undo(),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},canRedo:()=>!h.destroyed&&h.canRedo,redo:()=>{h.destroyed||(h.redo(),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},addToSelection:async e=>{this.updateGraphics.add(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`}),await this._replaceUpdateOperationHandle(_,t,()=>this._setupMove3DOperation(this.updateGraphics.toArray(),t,n,`transform`,!0))},removeFromSelection:async e=>{this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),_.complete()},toggleTool:async()=>{if(this.updateGraphics.length!==1||t.toggleToolOnClick===!1)return;let r=await this._updatingHandles.addPromise(this._setupReshape3DOperation(e,t,n,!0));r&&!$(r)&&(_.onEnd(),_.destroy(),this._setUpdateOperationHandle(r,t))}});return g.push(...this._getHandlesForComponent(_,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(_,e,t),k.WIDGET),n.on(`key-down`,e=>this._getCommonUpdateOperationKeyDownHandlers(_,e),k.WIDGET),n.on(`key-down`,e=>{e.key===A.constraint&&!e.repeat&&(h.preserveAspectRatio=!h.preserveAspectRatio,e.stopPropagation())},k.WIDGET),n.on(`key-up`,e=>{e.key===A.constraint&&(h.preserveAspectRatio=!h.preserveAspectRatio,e.stopPropagation())},k.WIDGET)),_}async _setupMove2DOperation(e,t,n){let r=`move`;this.updateGraphics.addMany(e),await this._updatingHandles.addPromise(this._updateSpatialReference(e));let i=await this._updatingHandles.addPromise(this._getGraphicMover(e,t,n));if($(i))return i;let a=new R({activeComponent:i,tool:r,type:`update`,onEnd:()=>{this._clearCursor(),c(l),c(s),i.destroy(),this._internalGraphicsLayer?.removeMany([...this.updateGraphics.toArray()])},undo:()=>{let e=this.updateGraphics.toArray();q(a,e),a.refreshComponent(),this._emitUndoEvent({graphics:e,tool:r})},redo:()=>{let e=this.updateGraphics.toArray();J(a,e),a.refreshComponent(),this._emitRedoEvent({graphics:e,tool:r})},addToSelection:async e=>{await this._updatingHandles.addPromise(this._updateSpatialReference(e)),this.updateGraphics.push(e),i.graphics=this.updateGraphics.toArray(),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`})},removeFromSelection:async e=>{let t=this.updateGraphics.indexOf(e);a.history.undo.forEach(e=>e.updates.splice(t,1)),a.history.redo.forEach(e=>e.updates.splice(t,1)),this.updateGraphics.remove(e);let n=this.updateGraphics.toArray();if(this.emit(`update`,{graphics:n,state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),this.updateGraphics.length===0){a.complete();return}i.graphics=n}}),o=!1,s=[n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(a,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(a,e),e.key===A.constraint&&!e.repeat&&(o=!0,i.enableMoveAllGraphics=!i.enableMoveAllGraphics)},k.WIDGET),n.on(`key-up`,e=>{e.key===A.constraint&&o&&(o=!1,i.enableMoveAllGraphics=!i.enableMoveAllGraphics)},k.WIDGET)],l=this._getHandlesForComponent(a,t);return a}async _setupReshape3DOperation(e,t,n,r=!1){let i=`reshape`,a=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(a))return a;let{ManipulatedObject3DGraphic:o,ReshapeTool3D:s}=a.module,l=new o({view:n,graphic:e}),u=ye(l);if(u!==0)return l.destroy(),this._logError(`sketch:reshape`,`Reshape operation not supported for provided graphic(s) (${D(u)}).`),null;let d=t.reshapeOptions,f=new s({view:n,object:l,enableZVertex:t.enableZ&&d?.vertexOperation===`move`,enableZShape:t.enableZ&&d?.shapeOperation===`move`,enableMoveObject:d?.shapeOperation===`move`||d?.shapeOperation===`move-xy`,enableMidpoints:d?.edgeOperation===`split`,enableEdgeOffset:d?.edgeOperation===`offset`,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions});n.tools.add(f),r||this.updateGraphics.add(l.graphic);let p=[],m=new R({activeComponent:f,tool:i,type:`update`,onEnd:()=>{c(p),Q(n,f),l.destroy()},canUndo:()=>!f.destroyed&&f.canUndo,undo:()=>{f.destroyed||(f.undo(),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},canRedo:()=>!f.destroyed&&f.canRedo,redo:()=>{f.destroyed||(f.redo(),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},addToSelection:async e=>{this.updateGraphics.add(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`}),await this._replaceUpdateOperationHandle(m,t,()=>this._setupMove3DOperation(this.updateGraphics.toArray(),t,n,`transform`,!0))},removeFromSelection:async e=>{this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),m.complete()},toggleTool:async()=>{t.toggleToolOnClick!==!1&&await this._replaceUpdateOperationHandle(m,t,()=>this._setupGraphicTransform3DOperation(this.updateGraphics.toArray(),t,n,!0))}});return p.push(...this._getHandlesForComponent(m,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(m,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(m,e)},k.WIDGET)),m}async _setupTransformOrReshape2DOperation(e,t,n,r){this.updateGraphics.addMany(e),await this._updatingHandles.addPromise(this._updateSpatialReference(e));let i=await this._updatingHandles.addPromise(t===`transform`?this._getBox(e,n,r):this._getReshape(e,n,r));if($(i))return i;let a=new R({activeComponent:i,type:`update`,onEnd:()=>{c(s),c(o),a.activeComponent&&!a.activeComponent.destroyed&&a.activeComponent.destroy(),this._internalGraphicsLayer.removeMany(this.updateGraphics.toArray())},undo:()=>{q(a,this.updateGraphics.toArray()),a.refreshComponent(),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:a.tool})},redo:()=>{J(a,this.updateGraphics.toArray()),a.refreshComponent(),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:a.tool})},addToSelection:async e=>{let t=a.activeComponent;if(t?.type===`reshape`){let t=[...this.updateGraphics,e];if(this.updateGraphics.removeAll(),!await this._replaceUpdateOperationHandle(a,n,()=>this._setupTransformOrReshape2DOperation(t,`transform`,n,r)))return}else this.updateGraphics.add(e),t=t,t.graphics=this.updateGraphics.toArray(),t.refresh(),a.resetHistory();this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`})},removeFromSelection:async e=>{let t=this.updateGraphics.indexOf(e);a.history.undo.forEach(e=>e.updates.splice(t,1)),a.history.redo.forEach(e=>e.updates.splice(t,1)),this.updateGraphics.remove(e);let n=this.updateGraphics.toArray();n.length===0?a.complete():B(n)?await a.toggleTool():a.activeComponent.graphics=n,this.emit(`update`,{graphics:n,state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`})},toggleTool:async()=>{if(this.updateGraphics.length>1)return;let e=this.updateGraphics.at(0),t=e.geometry;if(t!=null&&(a.tool===`reshape`&&t.type===`point`||a.tool===`transform`&&t.type===`extent`))return;let i=null,o={...this.defaultUpdateOptions,...n,...this.activeUpdateOptions,reshapeOptions:{...this.defaultUpdateOptions.reshapeOptions,...n?.reshapeOptions,...this.activeUpdateOptions?.reshapeOptions},highlightOptions:{...this.defaultUpdateOptions.highlightOptions,...n?.highlightOptions,...this.activeUpdateOptions?.highlightOptions}};a.tool===`transform`?i=await this._updatingHandles.addPromise(this._getReshape([e],o,r)):a.tool===`reshape`&&(i=await this._updatingHandles.addPromise(this._getBox([e],o,r))),!$(i)&&(a.activeComponent?.destroy(),a.activeComponent=i,a.activeComponent&&(c(s),s=this._getHandlesForComponent(a,o)))}}),o=[r.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(a,e,n),k.WIDGET),r.on(`key-down`,e=>{if(this._getCommonUpdateOperationKeyDownHandlers(a,e),e.key===A.constraint&&!e.repeat&&a){let e=a.activeComponent;e?.type===`box`&&(e.preserveAspectRatio=!e.preserveAspectRatio)}},k.WIDGET),r.on(`key-up`,e=>{if(e.key===A.constraint&&a){let e=a.activeComponent;e?.type===`box`&&(e.preserveAspectRatio=!e.preserveAspectRatio)}},k.WIDGET)],s=this._getHandlesForComponent(a,n);return a}async _getGraphicMover(e,t,n){let{enableMoveAllGraphics:r,highlightOptions:i}=t,a=await this._requireModule(import(`../../views/draw/support/GraphicMover.js`));return $(a)?a:new a.module.default({enableMoveAllGraphics:r,highlightName:i?.name,highlightsEnabled:!!i?.enabled,indicatorsEnabled:!1,graphics:e,view:n,callbacks:{onGraphicMoveStart:({dx:e,dy:t,graphic:n})=>{this._displayCursor(`grabbing`),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:`move-start`},type:`update`})},onGraphicMove:({dx:e,dy:t,graphic:n})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:`move`},type:`update`}),onGraphicMoveStop:({dx:e,dy:t,graphic:n})=>{this._displayCursor(`pointer`),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:`move-stop`},type:`update`})},onGraphicPointerOver:()=>this._displayCursor(`move`),onGraphicPointerOut:()=>this._clearCursor()}})}async _getBox(e,t,n){let{enableRotation:r,enableScaling:i,highlightOptions:a,preserveAspectRatio:o}=t,s=await this._requireModule(import(`../../views/draw/support/Box.js`));if($(s))return s;let c=this.view?.inputManager?.isModifierKeyDown(A.constraint),l=new s.module.default({graphics:e,enableRotation:r,enableScaling:i,highlightName:a?.name,highlightsEnabled:!!a?.enabled,preserveAspectRatio:!!o!=!!c,layer:this._internalGraphicsLayer,view:n,toolOptions:this._operationToolOptions,callbacks:{onMoveStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onMove:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onMoveStop:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onScaleStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onScale:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onScaleStop:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onRotateStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onRotate:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onRotateStop:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`})}});return l.addHandles(_(()=>[this.activeUpdateOptions?.enableRotation,this.activeUpdateOptions?.enableScaling],([e,n])=>{l.enableRotation=e??t.enableRotation??!0,l.enableScaling=n??t.enableScaling??!0,l.refresh()},v)),l}async _getReshape(e,t,n){let{highlightOptions:r,reshapeOptions:i}=t,a=i?.edgeOperation===`split`,o=i?.shapeOperation===`move`,s=!!i?.enableCreateCurveFromStraightEdge,c=await this._requireModule(import(`../../views/draw/support/Reshape.js`));return $(c)?c:new c.module.default({enableMidpoints:a,enableMovement:o,enableCurveOnMidpoint:s,graphic:e[0],highlightName:r?.name,highlightsEnabled:!!r?.enabled,layer:this._internalGraphicsLayer,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions,view:n,callbacks:{onReshapeStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onReshape:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onReshapeStop:({mover:e,type:t})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e,type:t},type:`update`}),onMoveStart:({dx:e,dy:t,mover:n,type:r})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:r},type:`update`}),onMove:({dx:e,dy:t,mover:n,type:r})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:r},type:`update`}),onMoveStop:({dx:e,dy:t,mover:n,type:r})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:r},type:`update`}),onVertexAdd:({added:e,type:t,vertices:n})=>{let r=e.map(e=>C(e.geometry));this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:r,vertices:n,type:t},type:`update`})},onVertexRemove:({removed:e,type:t,vertices:n})=>{let r=e.map(e=>C(e.geometry));this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{removed:r,vertices:n,type:t},type:`update`})}}})}_getHandlesForComponent(e,t){let n=e.activeComponent;if(!n)return[];switch(n.type){case`graphic-mover`:return[n.on(`graphic-click`,({graphic:n,viewEvent:r})=>{r.native?.shiftKey&&t.multipleSelectionEnabled&&(r.stopPropagation(),this._updatingHandles.consumePromise(e.removeFromSelection(n)))}),n.on(`graphic-move-start`,t=>e.addToHistory(Z(t.allGraphics)))];case`box`:return[n.on(`graphic-click`,n=>this._onTransformOrReshape2DGraphicClick(e,t,n)),n.on(`move-start`,t=>e.addToHistory(Z(t.graphics))),n.on(`rotate-start`,t=>e.addToHistory(Z(t.graphics))),n.on(`scale-start`,t=>e.addToHistory(Z(t.graphics)))];case`reshape`:return[n.on(`graphic-click`,n=>this._onTransformOrReshape2DGraphicClick(e,t,n)),n.on(`move-start`,t=>e.addToHistory(Z([t.mover]))),n.on(`reshape-start`,t=>e.addToHistory(Z([t.graphic]))),n.on(`vertex-add`,t=>e.addToHistory(Z([t.oldGraphic]))),n.on(`vertex-remove`,t=>e.addToHistory(Z([t.oldGraphic])))];case`move-3d`:return[n.events.on(`record-undo`,({updates:t})=>{e.addToHistory({updates:t})}),n.events.on(`move-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:0,dy:0,mover:e.objects.length>0?e.objects[0].graphic:null,type:`move-start`},type:`update`})}),n.events.on(`move`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e.dx,dy:e.dy,mover:e.objects.length>0?e.objects[0].graphic:null,type:`move`},type:`update`})}),n.events.on(`move-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:0,dy:0,mover:e.objects.length>0?e.objects[0].graphic:null,type:`move-stop`},type:`update`})}),n.events.on(`immediate-click`,n=>{this._updatingHandles.consumePromise(n.shiftKey?this._toggleSelection([n.object.graphic],e,t):e.toggleTool())})];case`transform-3d`:return[n.events.on(`record-undo`,({updates:t})=>{e.addToHistory({updates:t})}),n.events.on(`translate-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,dx:e.dxScreen,dy:e.dyScreen,type:`move-start`},type:`update`})}),n.events.on(`translate-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,dx:e.dxScreen,dy:e.dyScreen,type:`move-stop`},type:`update`})}),n.events.on(`rotate-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,angle:e.angle,type:`rotate-start`},type:`update`})}),n.events.on(`rotate-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,angle:e.angle,type:`rotate-stop`},type:`update`})}),n.events.on(`scale-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,xScale:e.xScale,yScale:e.yScale,type:`scale-start`},type:`update`})}),n.events.on(`scale-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,xScale:e.xScale,yScale:e.yScale,type:`scale-stop`},type:`update`})}),n.events.on(`translate`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,dx:e.dxScreen,dy:e.dyScreen,type:`move`},type:`update`})}),n.events.on(`rotate`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,angle:e.angle,type:`rotate`},type:`update`})}),n.events.on(`scale`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,xScale:e.xScale,yScale:e.yScale,type:`scale`},type:`update`})}),n.events.on(`immediate-click`,n=>{this._updatingHandles.consumePromise(n.shiftKey?this._toggleSelection([n.object.graphic],e,t):e.toggleTool())})];case`reshape-3d`:return[n.events.on(`reshape`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e,mover:e.object.graphic},type:`update`})}),n.events.on(`move`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e,mover:e.object.graphic},type:`update`})}),n.events.on(`vertex-add`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:e,type:`update`})}),n.events.on(`vertex-remove`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:e,type:`update`})}),n.events.on(`immediate-click`,n=>{this._updatingHandles.consumePromise(n.shiftKey?this._toggleSelection([n.object.graphic],e,t):e.toggleTool())})]}}_onTransformOrReshape2DGraphicClick(e,t,n){let{graphic:r,viewEvent:i}=n;if(i.native?.shiftKey&&this.hasGraphic(r)){i.stopPropagation(),this._updatingHandles.consumePromise(e.removeFromSelection(r));return}t.toggleToolOnClick&&(i.stopPropagation(),this._updatingHandles.consumePromise(e.toggleTool()))}async _replaceUpdateOperationHandle(e,t,n){let r=this._operationContext;e.onEnd(),e.destroy();let i=await this._updatingHandles.addPromise(n());return!i||$(i)||r!==this._operationContext?(i&&!$(i)&&(i.onEnd(),i.destroy()),this._destroyOperationContext(r),!1):(this._setUpdateOperationHandle(i,t),!0)}_setUpdateOperationHandle(e,t){this._operationHandle=e;let n=this.view?.map;this._disablePopup(t),e.on(`complete`,()=>{if(e===this._operationHandle){let r=this.updateGraphics.toArray(),i=this._operationHandle.tool;this._operationHandle.destroy(),this._operationHandle=null,this._destroyOperationContext(),this._internalGraphicsLayer.removeMany(this.updateGraphics.toArray()),this.updateGraphics.removeAll(),n&&n.remove(this._internalGraphicsLayer),this._restorePopup(t),this.emit(`update`,{graphics:r,state:`complete`,aborted:e.cancelled,tool:i,toolEventInfo:null,type:`update`})}})}_getCommonUpdateOperationClickHandlers(e,t,n){return this._updatingHandles.addPromise(this._handleCommonUpdateOperationClick(e,t,n))}async _handleCommonUpdateOperationClick(e,t,n){let r=L(t),i=await t.defer(()=>this._getFirstHit(r));if(i==null){this.cancelUpdateOnClickAway&&e.complete();return}let a=t.native.shiftKey?this._toggleSelection([i.graphic],e,n):null;if(a){t.stopPropagation(),await a;return}this.updateGraphics.includes(i.graphic)?this._shouldTemporarilyDisablePopup(n)&&t.stopPropagation():e.complete()}async _toggleSelection(e,t,n){let r=!!n.multipleSelectionEnabled;for(let n of e)if(n!=null&&r&&this.hasGraphic(n))return this.updateGraphics.includes(n)?await t.removeFromSelection(n):await t.addToSelection(n)}_getCommonUpdateOperationKeyDownHandlers(e,t){if(!e)return;let n=t.key;n===A.undo&&e.canUndo()?(t.stopPropagation(),e.undo()):n===A.redo&&e.canRedo()?(t.stopPropagation(),e.redo()):n===A.cancel?(t.stopPropagation(),e.cancel()):this.allowDeleteKey&&A.delete.includes(n)&&this._onDeleteKey(t)}_onDeleteKey(e){this._operationHandle&&this._operationHandle.type===`update`&&this.activeComponent!=null&&(e.stopPropagation(),this.delete())}_removeDefaultLayer(){this._internalGraphicsLayer&&=(this.view?.map?.remove(this._internalGraphicsLayer),d(this._internalGraphicsLayer))}_isComponentGraphic(e){let{activeComponent:t}=this;return!e||t==null?!1:e.attributes?.esriSketchTool||t.type===`draw-2d`&&t.graphic===e||(t.type===`box`||t.type===`reshape`)&&t.isUIGraphic(e)}_clearCursor(){this.removeHandles(U)}_displayCursor(e){this.removeHandles(U),this.view?.container&&e!=null&&this.addHandles(this.view.acquireCursor(e,`high`),U)}_logError(e,t,n){u.getLogger(this).error(new i(e,t,n))}async _requireModule(e){let t=new AbortController;this._moduleLoaderAbortController=t;let n=await e;return this._moduleLoaderAbortController!==t||t.signal.aborted?{requireError:`aborted`}:{module:n}}_emitUndoEvent(e){this.emit(`undo`,{...e,type:`undo`})}_emitRedoEvent(e){this.emit(`redo`,{...e,type:`redo`})}_emitDeleteEvent(e){this.emit(`delete`,{...e,type:`delete`})}_onLayerGraphicsChangeCallback(e){if(this._operationHandle!=null){let{updateGraphics:t}=this;for(let n of e.removed)if(t.includes(n)){if(t.length>1)this._updatingHandles.consumePromise(this._operationHandle.removeFromSelection(n));else{this._operationHandle.cancel();break}}}}async _setupAdvancedDrawToolIntegrationMaybe(){this.isUsingLegacyCreateTools||this.pluginManager.loaded||await this.pluginManager.loadPlugins()}async _setupDrawTool(e,n,r){if(this.isUsingLegacyCreateTools||!this._pluginManager)return null;let i=this.view,a=await import(`../../views/draw/DrawTool.js`);await this.pluginManager.loadPlugins();let o=await this.pluginManager.makeRenderer({customSymbol:n.graphicSymbol,useTextSymbol:r===`text`}),s=new a.DrawTool({view:i,elevationInfo:this._layerAdapter?.elevationInfo??pe(i.type===`3d`),hasZ:!!n.hasZ,toolOptions:this._operationToolOptions,renderer:o,defaultZ:n.defaultZ??0,directionOptions:n.directionOptions,snappingManager:this._operationSnappingManager,enableVertexVisuals:r!==`rectangle`&&r!==`circle`,readPluginSetting:(e,t)=>this.settingsManager.getValue(t)});s.addHandles(l(o));let c=new t({...n.graphicProperties,attributes:{...n.graphicProperties?.attributes},symbol:n.graphicSymbol??this._getGraphicSymbolFromTool(r)});return n.graphicSymbol||s.addHandles(_(()=>this._getGraphicSymbolFromTool(r),e=>c.symbol=e)),this._set(`createGraphic`,c),i.addAndActivateTool(s),s.begin(e),s}get test(){}wait(){return y(()=>!this.updating)}_shouldTemporarilyDisablePopup(e){return this.updateOnGraphicClick||(e?.toggleToolOnClick??!1)}_disablePopup(e){this._shouldTemporarilyDisablePopup(e)&&this.view&&this._originalPopupEnabled==null&&(this._originalPopupEnabled=this.view.popupEnabled,this.view.popupEnabled=!1)}_restorePopup(e){this._shouldTemporarilyDisablePopup(e)&&this.view&&this._originalPopupEnabled!=null&&(this.view.popupEnabled=this._originalPopupEnabled,this._originalPopupEnabled=null)}async _waitViewReady(){let e=this.view;if(!e){this._logMissingView();return}f(this._viewReadyAbortController),this._viewReadyAbortController=new AbortController,await g(y(()=>e?.ready),this._viewReadyAbortController.signal)}_logMissingView(){this._logError(`sketch:missing-property`,K(`view`))}_logMissingLayer(){this._logError(Re,K(`layer`))}};e([b()],G.prototype,`_defaultSnappingManager`,void 0),e([b()],G.prototype,`_operationContext`,void 0),e([b()],G.prototype,`_layerAdapter`,null),e([b()],G.prototype,`_pluginManager`,void 0),e([b({readOnly:!0})],G.prototype,`settingsManager`,void 0),e([b()],G.prototype,`_operationHandle`,void 0),e([b({readOnly:!0})],G.prototype,`_updatingHandles`,void 0),e([b({readOnly:!0})],G.prototype,`_toolTransitionHandles`,void 0),e([b()],G.prototype,`_drawToolSimplifyAbortController`,void 0),e([b({readOnly:!0})],G.prototype,`activeTool`,null),e([b()],G.prototype,`geometrySimplificationInProgress`,null),e([b({readOnly:!0})],G.prototype,`activeCreateToolDrawMode`,null),e([b()],G.prototype,`activeTooltip`,null),e([b({types:E})],G.prototype,`activeFillSymbol`,void 0),e([b()],G.prototype,`activeLineSymbol`,void 0),e([b()],G.prototype,`activeVertexSymbol`,void 0),e([b()],G.prototype,`allowDeleteKey`,void 0),e([b({readOnly:!0})],G.prototype,`createGraphic`,null),e([b()],G.prototype,`defaultCreateOptions`,null),e([b()],G.prototype,`defaultUpdateOptions`,null),e([b()],G.prototype,`activeUpdateOptions`,void 0),e([b({type:M,nonNullable:!0})],G.prototype,`labelOptions`,null),e([b()],G.prototype,`layer`,void 0),e([b({types:E})],G.prototype,`pointSymbol`,void 0),e([b({types:E})],G.prototype,`polygonSymbol`,void 0),e([b({types:E})],G.prototype,`polylineSymbol`,void 0),e([b()],G.prototype,`meshSymbol`,void 0),e([b({type:T})],G.prototype,`textSymbol`,null),e([b({type:F,nonNullable:!0})],G.prototype,`snappingOptions`,null),e([b()],G.prototype,`snappingManager`,null),e([b({readOnly:!0})],G.prototype,`state`,null),e([b()],G.prototype,`toolTransitionInProgress`,null),e([b({type:Se,nonNullable:!0})],G.prototype,`tooltipOptions`,null),e([b({readOnly:!0})],G.prototype,`updateGraphics`,void 0),e([b()],G.prototype,`updateOnGraphicClick`,void 0),e([b()],G.prototype,`useViewOptions`,void 0),e([b()],G.prototype,`cancelUpdateOnClickAway`,void 0),e([b()],G.prototype,`updating`,null),e([b()],G.prototype,`creationMode`,void 0),e([b({type:Ce,nonNullable:!0})],G.prototype,`valueOptions`,null),e([b({types:E})],G.prototype,`vertexSymbol`,void 0),e([b({value:null})],G.prototype,`view`,null),e([b({constructOnly:!0,type:N})],G.prototype,`sketchOptions`,void 0),e([b()],G.prototype,`useLegacyCreateTools`,void 0),e([b()],G.prototype,`isUsingLegacyCreateTools`,null),e([b()],G.prototype,`pluginManager`,null),e([b()],G.prototype,`drawTool`,null),e([b()],G.prototype,`activePluginConfigurations`,null),e([b()],G.prototype,`rootPlugins`,null),e([b()],G.prototype,`effectiveAvailablePlugins`,null),e([b()],G.prototype,`firstPluginWithSwappableLeaf`,null),e([b()],G.prototype,`multiplePluginsActive`,null),G=e([re(`esri.widgets.Sketch.SketchViewModel`)],G);const Re=`sketch:missing-property`,K=e=>`Property '${e}' is missing on SketchViewModel.`;function ze(e){return e===`polygon`||e===`rectangle`||e===`circle`}function q(e,t){Y(`undo`,e.history.undo,e.history.redo,t)}function J(e,t){Y(`redo`,e.history.redo,e.history.undo,t)}function Y(e,t,n,r){let i=t.pop();if(!i)return;let a=i.updates,o=[];r.forEach((t,n)=>{let r=a[n];r!=null&&(`geometry`in r&&r.geometry!=null&&(o.push({geometry:t.geometry}),t.geometry=r.geometry),`symbol`in r&&r.symbol!=null&&(o.push({symbol:t.symbol}),t.symbol=r.symbol),`undo`in r&&(o.push(r),r[e](t)))}),n.push({updates:o})}function X(e,t){e!=null&&t.hasGrabbedManipulators&&(e.activeTool=null)}function Z(e){return{updates:e.map(({geometry:e})=>e?.type===`mesh`?{geometry:e.cloneShallow()}:{geometry:e})}}function Q(e,t){e.tools?.remove(t),t.destroyed||t.destroy()}function $(e){return`requireError`in e&&e.requireError===`aborted`}export{G as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{isSome as n}from"../../core/arrayUtils.js";import r from"../../core/Collection.js";import i from"../../core/Error.js";import{EventedAccessor as a}from"../../core/Evented.js";import{handlesGroup as o,makeHandle as s,drainHandles as c,destroyHandle as l}from"../../core/handleUtils.js";import has from"../../core/has.js";import u from"../../core/Logger.js";import{destroyMaybe as d,abortMaybe as f,removeMaybe as p}from"../../core/maybe.js";import{createAbortError as m,ignoreAbortErrors as h,whenOrAbort as g}from"../../core/promiseUtils.js";import{watch as _,syncAndInitial as v,on as ee,when as te,sync as ne,whenOnce as y}from"../../core/reactiveUtils.js";import{property as b,subclass as re}from"../../core/accessorSupport/decorators.js";import{trackAccess as x}from"../../core/accessorSupport/tracking.js";import{SimpleObservable as ie}from"../../core/accessorSupport/tracking/SimpleObservable.js";import{UpdatingHandles as S}from"../../core/support/UpdatingHandles.js";import{getReferenceEllipsoid as ae}from"../../geometry/ellipsoidUtils.js";import{canProjectWithoutEngine as oe,isLoaded as se,load as ce,project as le}from"../../geometry/projectionUtils.js";import{geometryToCoordinates as C}from"../../geometry/support/coordsUtils.js";import{equals as ue}from"../../geometry/support/spatialReferenceUtils.js";import de from"../../layers/GraphicsLayer.js";import{isIntegratedMeshLayer as fe}from"../../layers/support/layerUtils.js";import{getEffectiveElevationInfo as pe}from"../../support/elevationInfoUtils.js";import me from"../../symbols/FillSymbol3DLayer.js";import he from"../../symbols/MeshSymbol3D.js";import ge from"../../symbols/SimpleFillSymbol.js";import _e from"../../symbols/SimpleLineSymbol.js";import w from"../../symbols/SimpleMarkerSymbol.js";import T from"../../symbols/TextSymbol.js";import{symbolTypes as E}from"../../symbols/support/typeUtils.js";import{isSupportedObjectResultMessage as D}from"../../views/3d/interactive/editingTools/isSupportedObjectUtils.js";import{isSupportedObject as ve}from"../../views/3d/interactive/editingTools/move/isSupportedObject.js";import{isSupportedObject as ye}from"../../views/3d/interactive/editingTools/reshape/isSupportedObject.js";import{isSupportedGraphic as be}from"../../views/3d/interactive/editingTools/transform/isSupportedGraphic.js";import{addUniqueLayer as O}from"../../views/draw/support/layerUtils.js";import{ViewEventPriorities as k}from"../../views/input/InputManager.js";import{sketchKeys as A}from"../../views/interactive/keybindings.js";import{bindViewToolOptions as xe}from"../../views/interactive/options/bindViewToolOptions.js";import j from"../../views/interactive/options/InteractiveToolOptions.js";import M from"../../views/interactive/sketch/SketchLabelOptions.js";import N from"../../views/interactive/sketch/SketchOptions.js";import Se from"../../views/interactive/sketch/SketchTooltipOptions.js";import Ce from"../../views/interactive/sketch/SketchValueOptions.js";import{SnappingManager as P}from"../../views/interactive/snapping/SnappingManager.js";import{acquireForViewOptions as we}from"../../views/interactive/snapping/SnappingManagerPool.js";import F from"../../views/interactive/snapping/SnappingOptions.js";import{setupSnappingToggleHandles as I}from"../../views/interactive/snapping/snappingUtils.js";import{GeometryWorkerHandle as Te}from"../../views/support/GeometryWorkerHandle.js";import{defaultHighlightName as Ee}from"../../views/support/HighlightDefaults.js";import{findFirstGraphicHit as De}from"../../views/support/hitTestSelectUtils.js";import{createScreenPointFromEvent as L}from"../../views/support/screenUtils.js";import Oe from"./adapters/layer/GraphicsLayerAdapter.js";import ke from"./adapters/layer/MapNotesLayerAdapter.js";import Ae from"./adapters/layer/SketchLayerAdapter.js";import{CreateOperationHandle as je,DrawToolOperationHandle as Me,UpdateOperationHandle as R}from"./support/OperationHandle.js";import{PluginManager as Ne}from"./support/PluginManager.js";import{SettingsManager as Pe}from"./support/SettingsManager.js";import{getLegacyTool as z,isCompletelyDegenerate as Fe,graphicsHaveTooFewVerticesForBox as B,getModeFromCreateOptions as Ie,getDrawToolGeometryTypeFromCreateTool as Le}from"./support/sketchUtils.js";const V={defaultZ:0},H={reshapeOptions:{edgeOperation:`split`,shapeOperation:`move`,vertexOperation:`move`,enableCreateCurveFromStraightEdge:!0},enableMoveAllGraphics:!0,enableRotation:!0,enableScaling:!0,multipleSelectionEnabled:!0,preserveAspectRatio:!1,toggleToolOnClick:!0,enableZ:!0,highlightOptions:{enabled:!0,name:Ee},tool:`transform`},U=Symbol(),W=Symbol();let G=class extends a{constructor(e){super(e),this._defaultSnappingManager=null,this._operationContext=null,this._internalGraphicsLayer=new de({listMode:`hide`,internal:!0,title:`SVM Internal`}),this._pluginManager=new Ne({sketchViewModel:this}),this.settingsManager=new Pe({availablePlugins:()=>this.pluginManager.visiblePluginsFlat}),this._operationHandle=null,this._updatingHandles=new S,this._toolTransitionHandles=new S,this._drawToolSimplifyAbortController=null,this._geometryWorkerHandle=new Te,this._viewHandlesKey=`viewHandles`,this.activeFillSymbol=null,this.activeLineSymbol=null,this.activeVertexSymbol=null,this.allowDeleteKey=!0,this.activeUpdateOptions=null,this.layer=null,this.pointSymbol=new w({style:`circle`,size:6,color:[255,255,255],outline:{color:[50,50,50],width:1}}),this.polygonSymbol=new ge({color:[150,150,150,.2],outline:{color:[50,50,50],width:2}}),this.polylineSymbol=new _e({color:[130,130,130,1],width:2}),this.meshSymbol=new he({symbolLayers:new r([new me])}),this.updateGraphics=new r,this.updateOnGraphicClick=!0,this.useViewOptions=!1,this.cancelUpdateOnClickAway=!0,this.creationMode=`single`,this.vertexSymbol=new w({style:`circle`,size:6,color:[255,255,255],outline:{color:[50,50,50],width:1}}),this.sketchOptions=new N,this.useLegacyCreateTools=!0,this._moduleLoaderAbortController=null,this._viewReadyAbortController=null,this._sketchContinuationFlag=!1,this._onLayerAdapterChange=async()=>{let{_layerAdapter:e}=this;if(this.removeHandles(W),!e)return;let t=[e.onGraphicsChange(e=>this._onLayerGraphicsChangeCallback(e)),_(()=>e.elevationInfo,e=>{e!==this._internalGraphicsLayer.elevationInfo&&(this.cancel(),this._internalGraphicsLayer&&(this._internalGraphicsLayer.elevationInfo=e))},v)].filter(n);this.addHandles(t,W)},this._originalPopupEnabled=null,this.defaultCreateOptions=V,this.defaultUpdateOptions=H,this.snappingOptions=e?.snappingManager?.options??e?.snappingOptions??new F,this.textSymbol=new T({text:`text`})}initialize(){this._updatingHandles.consumePromise(this._setupAdvancedDrawToolIntegrationMaybe()),this.addHandles([ee(()=>this.view?.map?.layers,`change`,e=>{this.layer&&e.removed.includes(this.layer)&&this.cancel()}),_(()=>this._layerAdapter,()=>this._onLayerAdapterChange(),v),_(()=>this.view,e=>{this._defaultSnappingManager=d(this._defaultSnappingManager),e&&(this.snappingManager||(this._defaultSnappingManager=new P({view:e,options:this.snappingOptions})),e.type===`2d`?(import(`../../views/2d/interactive/editingTools.js`),this._updatingHandles.consumePromise(this._setupAdvancedDrawToolIntegrationMaybe())):e.type===`3d`&&(import(`../../views/3d/interactive/editingTools.js`),import(`../../views/3d/layers/GraphicsLayerView3D.js`)))},v),_(()=>this.view?.spatialReference,(e,t)=>{e&&t&&!e.equals(t)&&this.cancel()})]),I(this,void 0,()=>this._operationSnappingManager?.options??this.snappingOptions)}destroy(){this.cancel(),this._removeDefaultLayer(),this._defaultSnappingManager=d(this._defaultSnappingManager),this._destroyOperationContext(),this._set(`snappingManager`,null),this._set(`view`,null),this._updatingHandles.destroy(),this._toolTransitionHandles.destroy(),this._drawToolSimplifyAbortController=f(this._drawToolSimplifyAbortController),this._geometryWorkerHandle.destroy(),this._pluginManager?.destroy(),this.emit(`destroy`)}get _operationSnappingManager(){return this._operationContext?.snappingManager??this.snappingManager}get _operationToolOptions(){return this._operationContext?.toolOptions??this.sketchOptions}get _layerAdapter(){let{layer:e}=this;switch(e?.type){case`graphics`:return new Oe(e);case`map-notes`:return new ke(e);case`sketch`:return new Ae(e);case void 0:default:return null}}get activeTool(){return this._operationHandle?.tool??null}get geometrySimplificationInProgress(){return!!this._drawToolSimplifyAbortController}get activeCreateToolDrawMode(){let e=this._operationHandle;if(e?.type===`create`&&e.activeComponent&&`mode`in e.activeComponent)return e.activeComponent.mode;if(e?.activeComponent?.type===`draw-2.0`){let t=e.activeComponent.pluginStack.map(e=>e.configuration).filter(n).toArray();if(t.length>0)return this._pluginManager?.getDrawingModeEquivalentToPluginStack(t)}return null}get activeTooltip(){let{activeComponent:e,destroyed:t}=this,n=!t&&e&&`tooltip`in e?e.tooltip:null;return n?.visible?n:null}get activeComponent(){return this._operationHandle?.activeComponent??null}get createGraphic(){return this.activeComponent!=null&&(this.activeComponent.type===`draw-3d`||this.activeComponent.type===`draw-2d`)?this.activeComponent.graphic:this._get(`createGraphic`)}get defaultCreateOptions(){return this._get(`defaultCreateOptions`)}set defaultCreateOptions(e){this._set(`defaultCreateOptions`,{...V,...e})}get defaultUpdateOptions(){return this._get(`defaultUpdateOptions`)}set defaultUpdateOptions(e){this._set(`defaultUpdateOptions`,{...H,...e,reshapeOptions:{...H.reshapeOptions,...e?.reshapeOptions},highlightOptions:{...H.highlightOptions,...e?.highlightOptions}})}get labelOptions(){return this.sketchOptions.labels}set labelOptions(e){this.sketchOptions.labels=e}get textSymbol(){return this._get(`textSymbol`)}set textSymbol(e){this._set(`textSymbol`,e)}get snappingOptions(){return this.snappingManager?.options??this._get(`snappingOptions`)}set snappingOptions(e){this._defaultSnappingManager!=null&&(this._defaultSnappingManager.options=e),this._set(`snappingOptions`,e)}get snappingManager(){return this._isOverridden(`snappingManager`)?this._get(`snappingManager`):this._defaultSnappingManager}set snappingManager(e){if(e)this._isOverridden(`snappingManager`)||(this._defaultSnappingManager=d(this._defaultSnappingManager)),this._override(`snappingManager`,e);else{let{view:e}=this;!this._defaultSnappingManager&&e&&(this._defaultSnappingManager=new P({options:this.snappingOptions,view:e})),this._clearOverride(`snappingManager`)}}get state(){let e=!!(this.view?.ready&&this.layer),t=this._operationHandle;return e&&t?`active`:e?`ready`:`disabled`}get toolTransitionInProgress(){return this._toolTransitionHandles.updating||!!this.drawTool?.lifecycleManager.updating}get tooltipOptions(){return this.sketchOptions.tooltips}set tooltipOptions(e){this.sketchOptions.tooltips=e}get updating(){return this.toolTransitionInProgress||this.activeComponent&&`updating`in this.activeComponent&&this.activeComponent.updating||!!(this._updatingHandles.updating||this._drawToolSimplifyAbortController||this.snappingManager?.updating||this.drawTool?.updating)}get valueOptions(){return this.sketchOptions.values}set valueOptions(e){this.sketchOptions.values=e}get view(){return this._get(`view`)}set view(e){let t=this._get(`view`);if(t===e)return;if(t){let{container:e,map:n}=t;e&&this._clearCursor(),n?.remove(this._internalGraphicsLayer),this.removeHandles(this._viewHandlesKey),this.cancel()}let n=`view-ready`;this.removeHandles(n),e&&this.addHandles(te(()=>e.ready,t=>{this.removeHandles(this._viewHandlesKey),t&&this.addHandles(this._generateViewHandles(e),this._viewHandlesKey)},v),n),this._set(`view`,e),this._updatingHandles.consumePromise(this._setupAdvancedDrawToolIntegrationMaybe())}get isUsingLegacyCreateTools(){return this.useLegacyCreateTools||this.view?.type!==`2d`}get pluginManager(){return this._pluginManager}get drawTool(){return this.activeComponent?.type===`draw-2.0`?this.activeComponent:null}get activePluginConfigurations(){return this.drawTool?.pluginStack.toArray().map(e=>e.configuration).filter(n)??[]}get rootPlugins(){return this._pluginManager?.availablePlugins}set rootPlugins(e){this._overrideIfSome(`rootPlugins`,e)}get effectiveAvailablePlugins(){if(this.isUsingLegacyCreateTools)return null;let e=this.view?.type??`2d`,{firstPluginWithSwappableLeaf:t}=this;return t?t.availableDownstreamPlugins.filter(t=>!t.excludedViews?.includes(e)):this.rootPlugins?.filter(t=>!t.excludedViews?.includes(e)).filter(n)??[]}get firstPluginWithSwappableLeaf(){let e=this.view?.type??`2d`;return this.drawTool?.pluginStack.toArray().map(e=>e.configuration).findLast(t=>t!=null&&!t.hidden&&t.availableDownstreamPlugins&&t.availableDownstreamPlugins.filter(t=>!t.excludedViews?.includes(e))?.length>1)}get multiplePluginsActive(){return this.drawTool?this.drawTool.pluginStack.length>1:!1}replaceLeaf(e){this.drawTool?.replaceLeaf(e)}addGraphic(e){this._layerAdapter?.add(e)}addGraphics(e){this._layerAdapter?.addMany(e)}hasGraphic(e){return!!this._layerAdapter?.has(e)}removeGraphic(e){this._layerAdapter?.remove(e)}removeGraphics(e){this._layerAdapter?.removeMany(e)}removeAllGraphics(){this._layerAdapter?.removeAll()}cancel(){this._moduleLoaderAbortController=f(this._moduleLoaderAbortController),this._viewReadyAbortController=f(this._viewReadyAbortController),this._drawToolSimplifyAbortController=f(this._drawToolSimplifyAbortController),this._sketchContinuationFlag=!0,this._operationHandle?.cancel()}complete(){this._operationHandle?.complete()}delete(){let{state:e,updateGraphics:t}=this;if(e===`active`&&t.length){let{activeTool:e}=this,n=t.toArray();this.removeGraphics(n),this.cancel(),this._emitDeleteEvent({graphics:n,tool:e})}}duplicate(){if(this.state===`active`&&this.updateGraphics.length){let e=this.updateGraphics.map(e=>e.clone()).toArray();return this.addGraphics(e),this.emit(`duplicate`,{graphics:e,type:`duplicate`}),e}return[]}async create(e,t){return this._toolTransitionHandles.addPromise(this._create(e,t))}async _create(e,t){this.cancel(),await this._updatingHandles.addPromise(this._waitViewReady());let{view:n,layer:r}=this;if(!n||this.state===`disabled`)throw r||this._logMissingLayer(),m();if(n.activeTool!=null&&(n.activeTool=null),!e){this._logError(`sketch:missing-parameter`,`Missing parameter 'tool'.`);return}O(n,this._internalGraphicsLayer);let i=this._createOperationContext(n),a;try{a=await this._updatingHandles.addPromise(this._setupCreateOperation(e,t))}catch(e){throw this._destroyOperationContext(i),e}if(a==null||this.destroyed||i!==this._operationContext){let e=i===this._operationContext;a?.onEnd(),d(a),this._destroyOperationContext(i),e&&n.map?.remove(this._internalGraphicsLayer);return}let o=z(e);a.on(`complete`,()=>{if(a===this._operationHandle){let n=this.createGraphic,r=this._operationHandle.cancelled;if(this._operationHandle.destroy(),this._operationHandle=null,this._destroyOperationContext(),this._set(`createGraphic`,null),this.view?.map?.remove(this._internalGraphicsLayer),!a.cancelled&&n!=null&&this.addGraphic(n),this._sketchContinuationFlag=!1,this.emit(`create`,{graphic:n,state:r?`cancel`:`complete`,tool:o??`point`,toolEventInfo:null,type:`create`}),r||this._sketchContinuationFlag)return;let{creationMode:i}=this;if(i===`continuous`){if(t?.geometryToPlace)return;this._updatingHandles.consumePromise(h(this.create(e,t)))}else i===`update`&&n&&this._updatingHandles.consumePromise(h(this.update([n])))}}),this._operationHandle=a,n.ready&&n.focus()}async place(e,t){return await e.load(),this.create(`mesh`,{mode:`click`,hasZ:e.hasZ,geometryToPlace:e,...t})}async update(e,t){return this._toolTransitionHandles.addPromise(this._update(e,t))}async _update(e,t){this.cancel(),await this._updatingHandles.addPromise(this._waitViewReady());let{layer:n,view:r,state:i}=this;if(!r||i===`disabled`)throw n||this._logMissingLayer(),m();r.activeTool!=null&&(r.activeTool=null);let a=Array.isArray(e)?e:[e];if(e==null||!a?.length){this._logError(`sketch:missing-parameter`,`Missing parameter 'graphics'.`);return}if(a.some(e=>this.hasGraphic(e)?e.geometry==null&&(this._logError(`sketch:invalid-parameter`,`Parameter 'graphics' contains one or more graphics with an unsupported geometry.`),!0):(this._logError(`sketch:invalid-parameter`,`Parameter 'graphics' contains one or more graphics missing from the supplied GraphicsLayer.`),!0)))return;let o=this._createOperationContext(r),s;try{s=await this._updatingHandles.addPromise(this._setupUpdateOperation(a,t))}catch(e){throw this._destroyOperationContext(o),e}if(this.destroyed||s==null||$(s)||o!==this._operationContext){s&&!$(s)&&(s.onEnd(),s.destroy()),this._destroyOperationContext(o);return}O(r,this._internalGraphicsLayer),this._setUpdateOperationHandle(s,t),this.emit(`update`,{graphics:a,state:`start`,aborted:!1,tool:s.tool,toolEventInfo:null,type:`update`})}async _updateSpatialReference(e){let t=this.view;if(!t){this._logMissingView();return}e=Array.isArray(e)?e:[e];for(let n of e)n.geometry!=null&&n.geometry.type!==`mesh`&&!ue(n.geometry.spatialReference,t.spatialReference)&&(!oe(n.geometry.spatialReference,t.spatialReference)&&!se()&&await ce(),n.geometry=le(n.geometry,t.spatialReference))}undo(){this.canUndo()&&this._operationHandle?.undo()}redo(){this.canRedo()&&this._operationHandle?.redo()}canUndo(){return!!this._operationHandle?.canUndo()}canRedo(){return!!this._operationHandle?.canRedo()}toggleUpdateTool(){this._updatingHandles.consumePromise(this._operationHandle?.toggleTool())}_createOperationContext(e){this._destroyOperationContext();let t=this.useViewOptions?e.options:null,n=t?we(e):null,r=t?new j:this.sketchOptions,i;if(t){let{values:t}=r;i=o([xe(r,()=>e.options,()=>this.sketchOptions),_(()=>t.directionMode,e=>{this.sketchOptions.values.directionMode=e},ne)])}return this._operationContext={snappingManager:n?.snappingManager??this.snappingManager,toolOptions:r,...o([n,i])}}_destroyOperationContext(e=this._operationContext){if(e!==this._operationContext){p(e);return}this._operationContext=p(this._operationContext)}async _getFirstHit(e){let t=this.view;if(!t)return this._logMissingView(),null;if(t.type===`2d`){let n=[];t.map.allLayers.forEach(e=>{(e.type===`vector-tile`||e.type===`imagery`)&&n.push(e)});let r=await t.hitTest(e,{exclude:n});return De(r.results)}let n=[t.map.ground];t.map.allLayers.forEach(e=>{fe(e)&&(!has(`enable-feature:im-as-ground`)||e.isUsedAsGroundLayer)&&n.push(e)});let r=await t.hitTest(e,{exclude:n});if(r.results.length>0){let e=r.results[0];if(e!=null&&e.type===`graphic`&&e.graphic&&(!r.ground.mapPoint||t.map.ground.opacity<1||r.ground.distance-(e.distance??0)>-Math.min(3*r.ground.distance,t.viewingMode===`global`?ae(t.renderCoordsHelper.spatialReference).radius/t.renderCoordsHelper.unitInMeters:1/0)))return e}return null}_generateViewHandles(e){return[e.on(`immediate-click`,async e=>{let t=this.state===`active`&&this._operationHandle?.type===`create`;this.state!==`disabled`&&!t&&this.updateOnGraphicClick&&await this._toolTransitionHandles.addPromise(this._handleImmediateClick(e))},k.WIDGET)]}async _handleImmediateClick(e){let t=await e.defer(()=>this._getFirstHit(L(e))),n=null;if(t!=null){let r=t.graphic;this.updateGraphics.includes(r)||this.hasGraphic(r)?(e.stopPropagation(),n=r):this.view?.type===`2d`&&!this._isComponentGraphic(r)&&this.state===`active`&&this.cancel()}else this.state===`active`&&this.cancelUpdateOnClickAway&&this.cancel();n!=null&&!this.updateGraphics.includes(n)&&await this.update([n],{...this.defaultUpdateOptions,reshapeOptions:{...this.defaultUpdateOptions.reshapeOptions}})}async _setupCreateOperation(e,t){let n=this.view;if(!n)return this._logMissingView(),null;let r={hasZ:n.type===`3d`,...this.defaultCreateOptions,...t},i=typeof e==`string`?this.pluginManager?.getPluginsEquivalentToCreateTool(e,r):e,a=z(e);if(i&&!this.isUsingLegacyCreateTools){let e=await this._setupDrawTool(i,r,a??`polyline`);if(e)return this._setupDrawToolOperationHandle(e,a??`point`)}if(!a)return null;let o=await this._setupDrawGraphicTool(a,n,r);return o==null?null:(n.tools.add(o),n.activeTool=o,this._setupCreateOperationHandle(o,a))}async _setupDrawGraphicTool(e,t,n){if(e===`multipoint`&&t.type===`3d`)return this._logError(`sketch:create`,`Multipoint geometries are not supported in SceneView.`),null;if(!t)return this._logMissingView(),null;let{cursor:r,defaultZ:i,hasZ:a,geometryToPlace:o,graphicProperties:s,mode:c,preserveAspectRatio:l}=n,u=Ie(c,e),d=Le(e),f=n?.optionsPerTool?.has(e)?n.optionsPerTool.get(e):{},p=f?.preserveAspectRatio??l??e!==`rectangle`,m={centered:e!==`rectangle`&&!(e===`circle`&&!p),cursor:r,defaultZ:i,forceUniformSize:p,graphicProperties:{...s,attributes:{...s?.attributes}},geometryToPlace:o,geometryType:d,mode:u,graphicSymbol:n.graphicSymbol??this._getGraphicSymbolFromTool(e),hasZ:a,snappingManager:this._operationSnappingManager,snapToScene:!1,view:t,...f};return t.type===`2d`?this._makeDrawGraphicTool2D(m):this._makeDrawGraphicTool3D(m)}async _makeDrawGraphicTool2D(e){let t=await this._requireModule(import(`../../views/2d/interactive/editingTools.js`));return $(t)||this.destroyed?null:new t.module.DrawGraphicTool2D({...e,activeVertexSymbol:this.activeVertexSymbol,regularVerticesSymbol:this.vertexSymbol,activeLineSymbol:this.activeLineSymbol,activeFillSymbol:ze(e.geometryType)?this.activeFillSymbol:null,toolOptions:this._operationToolOptions})}async _makeDrawGraphicTool3D(e){let t=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));return $(t)||this.destroyed?null:new t.module.DrawGraphicTool3D({...e,elevationInfo:this._layerAdapter?.elevationInfo,snapToScene:!0,toolOptions:this._operationToolOptions})}_setupCreateOperationHandle(e,t){let n=this.view;if(!n)return this._logMissingView(),null;let r=null,i=e.forceUniformSize,a=e.centered,o=new ie,l=[s(()=>o.destroy()),n.on(`key-down`,t=>{if(t.key===A.pan)t.stopPropagation(),t.repeat||(e.enabled=!1);else if(t.key===A.complete)t.stopPropagation(),e.completeCreateOperation();else if(t.key===A.vertexAdd&&!t.repeat){let n=e.drawOperation.geometryType;(n===`polyline`||n===`polygon`||n===`multipoint`)&&(t.stopPropagation(),e.drawOperation.commitStagedVertex())}else t.key===A.undo?(t.stopPropagation(),u.undo()):t.key===A.redo?(t.stopPropagation(),u.redo()):t.key===A.constraint&&(e.geometryType===`rectangle`||e.geometryType===`circle`)&&!t.repeat?(e.forceUniformSize=!i,t.stopPropagation()):t.key===A.center&&(t.repeat||(e.centered=!a,t.stopPropagation()))},k.WIDGET),n.on(`key-up`,t=>{t.key===A.pan?e.enabled=!0:t.key===A.constraint&&(e.geometryType===`rectangle`||e.geometryType===`circle`)?(e.forceUniformSize=i,t.stopPropagation()):t.key===A.center&&(e.centered=a,t.stopPropagation())},k.WIDGET),e.on(`vertex-update`,()=>{o.notify()}),e.on(`vertex-add`,t=>{switch(o.notify(),r=r==null?`start`:`active`,t.operation){case`apply`:this.emit(`create`,{graphic:e.graphic,state:r,tool:this.activeTool,toolEventInfo:t,type:`create`});break;case`undo`:this._emitUndoEvent({graphics:[e.graphic],tool:e.geometryType});break;case`redo`:this._emitRedoEvent({graphics:[e.graphic],tool:e.geometryType})}}),e.on(`cursor-update`,t=>{e.drawOperation.numCommittedVertices>0&&this.emit(`create`,{graphic:e.graphic,state:`active`,tool:this.activeTool,toolEventInfo:{coordinates:t.vertices[0].coordinates,type:`cursor-update`},type:`create`})}),e.on(`vertex-remove`,t=>{switch(o.notify(),t.operation){case`apply`:this.emit(`create`,{graphic:e.graphic,state:`active`,tool:this.activeTool,toolEventInfo:t,type:`create`});break;case`undo`:this._emitUndoEvent({graphics:[e.graphic],tool:e.geometryType});break;case`redo`:this._emitRedoEvent({graphics:[e.graphic],tool:e.geometryType})}}),e.on(`complete`,e=>{this._set(`createGraphic`,e.graphic),r=`complete`,e.aborted?u&&u.cancel():u&&u.complete()}),_(()=>this._getGraphicSymbolFromTool(t),t=>{e.graphicSymbol=t})],u=new je({activeComponent:e,type:`create`,onEnd:()=>{c(l),n.tools?.remove(e)},undo:()=>{e.canUndo&&e.undo()},redo:()=>{e.canRedo&&e.redo()},canUndo:()=>(x(o),e.canUndo),canRedo:()=>(x(o),e.canRedo)});return u}_setupDrawToolOperationHandle(e,t){let r=this.view;if(!r)return this._logMissingView(),null;let i=null,a=[r.on(`key-down`,t=>{t.key===A.pan&&(t.stopPropagation(),t.repeat||(e.editable=!1))},k.WIDGET),r.on(`key-up`,t=>{t.key===A.pan&&(e.editable=!0)},k.WIDGET),e.on(`before-vertex-add`,t=>{let n=e.mostUpstreamPlugin?.configuration;if(n&&`legacyCreateTool`in n&&(n?.legacyCreateTool===`point`||n.legacyCreateTool===`text`)){let e=t.detail.originalEvent;e&&`key`in e&&e.key===A.vertexAdd&&t.preventDefault();return}}),e.on(`before-complete`,t=>{let n=e.getGeometryIfCompleted();if(!n||Fe(n)){t.preventDefault();return}}),e.on([`vertex-add`,`vertex-remove`],r=>{switch(this.createGraphic&&(this.createGraphic.geometry=e.getGeometryIfCompleted()),i=i==null&&r.type!==`vertex-remove`?`start`:`active`,r.operation){case`apply`:this.emit(`create`,{graphic:this.createGraphic,state:i,tool:this.activeTool,toolEventInfo:r,type:`create`});break;case`undo`:this._emitUndoEvent({graphics:[this.createGraphic].filter(n),tool:t});break;case`redo`:this._emitRedoEvent({graphics:[this.createGraphic].filter(n),tool:t})}}),e.on(`cursor-update`,t=>{this.createGraphic&&(this.createGraphic.geometry=e.unprocessedGeometry),(t.vertices[0]?.vertexIndex>0||t.vertices[0]?.componentIndex>0)&&this.emit(`create`,{graphic:this.createGraphic,state:`active`,tool:this.activeTool,toolEventInfo:{coordinates:t.vertices[0].coordinates,type:`cursor-update`},type:`create`})}),e.on(`complete`,async({geometry:t,isSimple:n})=>{let r=this.createGraphic,i=!!t&&t.type!==`mesh`&&t.type!==`extent`&&!n;if(r&&(r.geometry=n?t:e.unprocessedGeometry??t),!i||!r)o.complete();else{this._internalGraphicsLayer.add(this.createGraphic);let e=new AbortController;this._drawToolSimplifyAbortController?.abort(),this._drawToolSimplifyAbortController=e,await this._updatingHandles.addPromise(h(this._finalizeDrawToolCompletion({abortController:e,geometry:t,graphic:r,handle:o})))}})],o=new Me({activeComponent:e,type:`create`,onEnd:()=>{c(a),r.tools.remove(e)},undo:()=>e.undo(),redo:()=>e.redo(),canUndo:()=>e.canUndo,canRedo:()=>e.canRedo});return a.push(e.on(`cancel`,()=>{this._drawToolSimplifyAbortController=f(this._drawToolSimplifyAbortController),o.cancel()})),o}async _finalizeDrawToolCompletion({abortController:e,geometry:t,graphic:n,handle:r}){let i=this.view?.acquireCursor(`progress`,`high`);i&&this.addHandles(i);let a=()=>e.signal.aborted?(n&&(this._layerAdapter?.remove(n),this._internalGraphicsLayer?.remove(n)),this._set(`createGraphic`,null),!0):!1;try{let i=await this._geometryWorkerHandle.simplify(t,e.signal);if(a())return;n.geometry=i??t,this._internalGraphicsLayer?.remove(n),r.complete()}finally{i?.remove(),this._drawToolSimplifyAbortController===e&&(this._drawToolSimplifyAbortController=null)}}_getGraphicSymbolFromTool(e){switch(e){case`point`:case`multipoint`:return this.pointSymbol;case`polyline`:case`freehandPolyline`:return this.polylineSymbol;case`circle`:case`rectangle`:case`polygon`:case`freehandPolygon`:return this.polygonSymbol;case`mesh`:return this.meshSymbol;case`text`:return this.textSymbol}}async _setupUpdateOperation(e,t){let{view:n}=this;if(!n)return this._logMissingView(),null;let r={...this.defaultUpdateOptions,...t,reshapeOptions:{...this.defaultUpdateOptions.reshapeOptions,...t?.reshapeOptions},highlightOptions:{...this.defaultUpdateOptions.highlightOptions,...t?.highlightOptions}};this.activeUpdateOptions=r;let i=r.tool??H.tool;if(this.removeGraphics(e),this.addGraphics(e),n.type===`3d`){if(e.length===0)return null;switch(i){case`move`:return this._setupMove3DOperation(e,r,n,i);case`reshape`:return e.length>1?(this._logError(`sketch:reshape-multiple`,`Reshape operation does not support multiple graphics.`),null):this._setupReshape3DOperation(e[0],r,n);case`transform`:return this._setupGraphicTransform3DOperation(e,r,n)}}switch(i){case`move`:return this._setupMove2DOperation(e,r,n);case`reshape`:return e.length>1?(this._logError(`sketch:reshape-multiple`,`Reshape operation does not support multiple graphics.`),null):this._setupTransformOrReshape2DOperation(e,i,r,n);case`transform`:return B(e)&&(i=`reshape`),this._setupTransformOrReshape2DOperation(e,i,r,n)}}async _setupMove3DOperation(e,t,n,r,i=!1){let a=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(a))return a;let{ManipulatedObject3DGraphic:o,MoveTool3D:s}=a.module,l=new Map,u=()=>{l.forEach(e=>e.destroy()),l.clear()};for(let t of e){let e=new o({view:n,graphic:t}),r=ve(e);if(r!==0)return u(),this._logError(`sketch:move`,`Move operation not supported for provided graphic(s) (${D(r)}).`),null;l.set(t,e)}let d=new s({view:n,enableZ:t.enableZ,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions});n.tools.add(d),d.objects.addMany(Array.from(l.values())),i||this.updateGraphics.addMany(e);let f=[],p=new R({activeComponent:d,tool:r,type:`update`,onEnd:()=>{c(f),Q(n,d),u()},undo:()=>{X(this.view,d),q(p,this.updateGraphics.toArray()),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:r})},redo:()=>{J(p,this.updateGraphics.toArray()),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:r})},addToSelection:async e=>{this.updateGraphics.push(e);let t=new o({view:n,graphic:e});l.set(e,t),d.objects.push(t),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`})},removeFromSelection:async e=>{let t=this.updateGraphics.indexOf(e);if(p.history.undo.forEach(e=>e.updates.splice(t,1)),p.history.redo.forEach(e=>e.updates.splice(t,1)),this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),this.updateGraphics.length===0){p.complete();return}let n=l.get(e);n&&(d.objects.remove(n),n.destroy(),l.delete(e))},toggleTool:async()=>{if(this.updateGraphics.length!==1||t.toggleToolOnClick===!1||r!==`transform`)return;let e=this.updateGraphics.at(0),i=await this._updatingHandles.addPromise(this._setupReshape3DOperation(e,t,n,!0));i&&!$(i)&&(p.onEnd(),p.destroy(),this._setUpdateOperationHandle(i,t))}});return f.push(...this._getHandlesForComponent(p,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(p,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(p,e)},k.WIDGET)),p}_setupGraphicTransform3DOperation(e,t,n,r=!1){if(e.length===1&&be(e[0])===0){let i=e[0],a=i.geometry;if(a!=null&&(a.type===`point`||a.type===`mesh`))return this._setupPointTransform3DOperation(i,t,n);if(a!=null&&(a.type===`polygon`||a.type===`polyline`))return this._setupPolyTransform3DOperation(i,t,n,r)}return this._setupMove3DOperation(e,t,n,`transform`,r)}async _setupPointTransform3DOperation(e,t,n){let r=`transform`,{enableRotation:i,enableScaling:a,enableZ:o}=t,s=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(s))return s;let{TransformTool3D:l,ManipulatedObject3DGraphic:u}=s.module,d=new u({graphic:e,view:n}),f=new l({object:d,view:n,enableRotation:i,enableScaling:a,enableZ:o,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions});n.tools.add(f),this.updateGraphics.add(e);let p=[],m=new R({activeComponent:f,tool:r,type:`update`,onEnd:()=>{c(p),Q(n,f),d.destroy()},undo:()=>{X(this.view,f),q(m,this.updateGraphics.toArray()),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:r})},redo:()=>{J(m,this.updateGraphics.toArray()),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:r})},addToSelection:async e=>{this.updateGraphics.add(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`}),await this._replaceUpdateOperationHandle(m,t,()=>this._setupMove3DOperation(this.updateGraphics.toArray(),t,n,`transform`,!0))},removeFromSelection:async e=>{this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),m.complete()},toggleTool:async()=>{}});return p.push(...this._getHandlesForComponent(m,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(m,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(m,e)},k.WIDGET)),m}async _setupPolyTransform3DOperation(e,t,n,r=!1){let i=`transform`,{enableRotation:a,enableScaling:o,enableZ:s,preserveAspectRatio:l}=t,u=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(u))return u;let{ManipulatedObject3DGraphic:d,ExtentTransformTool:f}=u.module,p=this.view?.inputManager?.isModifierKeyDown(A.constraint),m=new d({view:n,graphic:e}),h=new f({object:m,view:n,enableRotation:a,enableScaling:o,enableZ:s,preserveAspectRatio:!!l!=!!p,toolOptions:this._operationToolOptions});n.tools.add(h),r||this.updateGraphics.add(e);let g=[],_=new R({activeComponent:h,tool:i,type:`update`,onEnd:()=>{c(g),Q(n,h),m.destroy()},canUndo:()=>!h.destroyed&&h.canUndo,undo:()=>{h.destroyed||(h.undo(),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},canRedo:()=>!h.destroyed&&h.canRedo,redo:()=>{h.destroyed||(h.redo(),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},addToSelection:async e=>{this.updateGraphics.add(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`}),await this._replaceUpdateOperationHandle(_,t,()=>this._setupMove3DOperation(this.updateGraphics.toArray(),t,n,`transform`,!0))},removeFromSelection:async e=>{this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),_.complete()},toggleTool:async()=>{if(this.updateGraphics.length!==1||t.toggleToolOnClick===!1)return;let r=await this._updatingHandles.addPromise(this._setupReshape3DOperation(e,t,n,!0));r&&!$(r)&&(_.onEnd(),_.destroy(),this._setUpdateOperationHandle(r,t))}});return g.push(...this._getHandlesForComponent(_,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(_,e,t),k.WIDGET),n.on(`key-down`,e=>this._getCommonUpdateOperationKeyDownHandlers(_,e),k.WIDGET),n.on(`key-down`,e=>{e.key===A.constraint&&!e.repeat&&(h.preserveAspectRatio=!h.preserveAspectRatio,e.stopPropagation())},k.WIDGET),n.on(`key-up`,e=>{e.key===A.constraint&&(h.preserveAspectRatio=!h.preserveAspectRatio,e.stopPropagation())},k.WIDGET)),_}async _setupMove2DOperation(e,t,n){let r=`move`;this.updateGraphics.addMany(e),await this._updatingHandles.addPromise(this._updateSpatialReference(e));let i=await this._updatingHandles.addPromise(this._getGraphicMover(e,t,n));if($(i))return i;let a=new R({activeComponent:i,tool:r,type:`update`,onEnd:()=>{this._clearCursor(),c(l),c(s),i.destroy(),this._internalGraphicsLayer?.removeMany([...this.updateGraphics.toArray()])},undo:()=>{let e=this.updateGraphics.toArray();q(a,e),a.refreshComponent(),this._emitUndoEvent({graphics:e,tool:r})},redo:()=>{let e=this.updateGraphics.toArray();J(a,e),a.refreshComponent(),this._emitRedoEvent({graphics:e,tool:r})},addToSelection:async e=>{await this._updatingHandles.addPromise(this._updateSpatialReference(e)),this.updateGraphics.push(e),i.graphics=this.updateGraphics.toArray(),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`})},removeFromSelection:async e=>{let t=this.updateGraphics.indexOf(e);a.history.undo.forEach(e=>e.updates.splice(t,1)),a.history.redo.forEach(e=>e.updates.splice(t,1)),this.updateGraphics.remove(e);let n=this.updateGraphics.toArray();if(this.emit(`update`,{graphics:n,state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),this.updateGraphics.length===0){a.complete();return}i.graphics=n}}),o=!1,s=[n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(a,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(a,e),e.key===A.constraint&&!e.repeat&&(o=!0,i.enableMoveAllGraphics=!i.enableMoveAllGraphics)},k.WIDGET),n.on(`key-up`,e=>{e.key===A.constraint&&o&&(o=!1,i.enableMoveAllGraphics=!i.enableMoveAllGraphics)},k.WIDGET)],l=this._getHandlesForComponent(a,t);return a}async _setupReshape3DOperation(e,t,n,r=!1){let i=`reshape`,a=await this._requireModule(import(`../../views/3d/interactive/editingTools.js`));if($(a))return a;let{ManipulatedObject3DGraphic:o,ReshapeTool3D:s}=a.module,l=new o({view:n,graphic:e}),u=ye(l);if(u!==0)return l.destroy(),this._logError(`sketch:reshape`,`Reshape operation not supported for provided graphic(s) (${D(u)}).`),null;let d=t.reshapeOptions,f=new s({view:n,object:l,enableZVertex:t.enableZ&&d?.vertexOperation===`move`,enableZShape:t.enableZ&&d?.shapeOperation===`move`,enableMoveObject:d?.shapeOperation===`move`||d?.shapeOperation===`move-xy`,enableMidpoints:d?.edgeOperation===`split`,enableEdgeOffset:d?.edgeOperation===`offset`,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions});n.tools.add(f),r||this.updateGraphics.add(l.graphic);let p=[],m=new R({activeComponent:f,tool:i,type:`update`,onEnd:()=>{c(p),Q(n,f),l.destroy()},canUndo:()=>!f.destroyed&&f.canUndo,undo:()=>{f.destroyed||(f.undo(),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},canRedo:()=>!f.destroyed&&f.canRedo,redo:()=>{f.destroyed||(f.redo(),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:i}))},addToSelection:async e=>{this.updateGraphics.add(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`}),await this._replaceUpdateOperationHandle(m,t,()=>this._setupMove3DOperation(this.updateGraphics.toArray(),t,n,`transform`,!0))},removeFromSelection:async e=>{this.updateGraphics.remove(e),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`}),m.complete()},toggleTool:async()=>{t.toggleToolOnClick!==!1&&await this._replaceUpdateOperationHandle(m,t,()=>this._setupGraphicTransform3DOperation(this.updateGraphics.toArray(),t,n,!0))}});return p.push(...this._getHandlesForComponent(m,t),n.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(m,e,t),k.WIDGET),n.on(`key-down`,e=>{this._getCommonUpdateOperationKeyDownHandlers(m,e)},k.WIDGET)),m}async _setupTransformOrReshape2DOperation(e,t,n,r){this.updateGraphics.addMany(e),await this._updatingHandles.addPromise(this._updateSpatialReference(e));let i=await this._updatingHandles.addPromise(t===`transform`?this._getBox(e,n,r):this._getReshape(e,n,r));if($(i))return i;let a=new R({activeComponent:i,type:`update`,onEnd:()=>{c(s),c(o),a.activeComponent&&!a.activeComponent.destroyed&&a.activeComponent.destroy(),this._internalGraphicsLayer.removeMany(this.updateGraphics.toArray())},undo:()=>{q(a,this.updateGraphics.toArray()),a.refreshComponent(),this._emitUndoEvent({graphics:this.updateGraphics.toArray(),tool:a.tool})},redo:()=>{J(a,this.updateGraphics.toArray()),a.refreshComponent(),this._emitRedoEvent({graphics:this.updateGraphics.toArray(),tool:a.tool})},addToSelection:async e=>{let t=a.activeComponent;if(t?.type===`reshape`){let t=[...this.updateGraphics,e];if(this.updateGraphics.removeAll(),!await this._replaceUpdateOperationHandle(a,n,()=>this._setupTransformOrReshape2DOperation(t,`transform`,n,r)))return}else this.updateGraphics.add(e),t=t,t.graphics=this.updateGraphics.toArray(),t.refresh(),a.resetHistory();this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[e],removed:[],type:`selection-change`},type:`update`})},removeFromSelection:async e=>{let t=this.updateGraphics.indexOf(e);a.history.undo.forEach(e=>e.updates.splice(t,1)),a.history.redo.forEach(e=>e.updates.splice(t,1)),this.updateGraphics.remove(e);let n=this.updateGraphics.toArray();n.length===0?a.complete():B(n)?await a.toggleTool():a.activeComponent.graphics=n,this.emit(`update`,{graphics:n,state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:[],removed:[e],type:`selection-change`},type:`update`})},toggleTool:async()=>{if(this.updateGraphics.length>1)return;let e=this.updateGraphics.at(0),t=e.geometry;if(t!=null&&(a.tool===`reshape`&&t.type===`point`||a.tool===`transform`&&t.type===`extent`))return;let i=null,o={...this.defaultUpdateOptions,...n,...this.activeUpdateOptions,reshapeOptions:{...this.defaultUpdateOptions.reshapeOptions,...n?.reshapeOptions,...this.activeUpdateOptions?.reshapeOptions},highlightOptions:{...this.defaultUpdateOptions.highlightOptions,...n?.highlightOptions,...this.activeUpdateOptions?.highlightOptions}};a.tool===`transform`?i=await this._updatingHandles.addPromise(this._getReshape([e],o,r)):a.tool===`reshape`&&(i=await this._updatingHandles.addPromise(this._getBox([e],o,r))),!$(i)&&(a.activeComponent?.destroy(),a.activeComponent=i,a.activeComponent&&(c(s),s=this._getHandlesForComponent(a,o)))}}),o=[r.on(`immediate-click`,e=>this._getCommonUpdateOperationClickHandlers(a,e,n),k.WIDGET),r.on(`key-down`,e=>{if(this._getCommonUpdateOperationKeyDownHandlers(a,e),e.key===A.constraint&&!e.repeat&&a){let e=a.activeComponent;e?.type===`box`&&(e.preserveAspectRatio=!e.preserveAspectRatio)}},k.WIDGET),r.on(`key-up`,e=>{if(e.key===A.constraint&&a){let e=a.activeComponent;e?.type===`box`&&(e.preserveAspectRatio=!e.preserveAspectRatio)}},k.WIDGET)],s=this._getHandlesForComponent(a,n);return a}async _getGraphicMover(e,t,n){let{enableMoveAllGraphics:r,highlightOptions:i}=t,a=await this._requireModule(import(`../../views/draw/support/GraphicMover.js`));return $(a)?a:new a.module.default({enableMoveAllGraphics:r,highlightName:i?.name,highlightsEnabled:!!i?.enabled,indicatorsEnabled:!1,graphics:e,view:n,callbacks:{onGraphicMoveStart:({dx:e,dy:t,graphic:n})=>{this._displayCursor(`grabbing`),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:`move-start`},type:`update`})},onGraphicMove:({dx:e,dy:t,graphic:n})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:`move`},type:`update`}),onGraphicMoveStop:({dx:e,dy:t,graphic:n})=>{this._displayCursor(`pointer`),this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:`move-stop`},type:`update`})},onGraphicPointerOver:()=>this._displayCursor(`move`),onGraphicPointerOut:()=>this._clearCursor()}})}async _getBox(e,t,n){let{enableRotation:r,enableScaling:i,highlightOptions:a,preserveAspectRatio:o}=t,s=await this._requireModule(import(`../../views/draw/support/Box.js`));if($(s))return s;let c=this.view?.inputManager?.isModifierKeyDown(A.constraint),l=new s.module.default({graphics:e,enableRotation:r,enableScaling:i,highlightName:a?.name,highlightsEnabled:!!a?.enabled,preserveAspectRatio:!!o!=!!c,layer:this._internalGraphicsLayer,view:n,toolOptions:this._operationToolOptions,callbacks:{onMoveStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onMove:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onMoveStop:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onScaleStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onScale:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onScaleStop:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onRotateStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onRotate:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onRotateStop:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`})}});return l.addHandles(_(()=>[this.activeUpdateOptions?.enableRotation,this.activeUpdateOptions?.enableScaling],([e,n])=>{l.enableRotation=e??t.enableRotation??!0,l.enableScaling=n??t.enableScaling??!0,l.refresh()},v)),l}async _getReshape(e,t,n){let{highlightOptions:r,reshapeOptions:i}=t,a=i?.edgeOperation===`split`,o=i?.shapeOperation===`move`,s=!!i?.enableCreateCurveFromStraightEdge,c=await this._requireModule(import(`../../views/draw/support/Reshape.js`));return $(c)?c:new c.module.default({enableMidpoints:a,enableMovement:o,enableCurveOnMidpoint:s,graphic:e[0],highlightName:r?.name,highlightsEnabled:!!r?.enabled,layer:this._internalGraphicsLayer,snappingManager:this._operationSnappingManager,toolOptions:this._operationToolOptions,view:n,callbacks:{onReshapeStart:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onReshape:e=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e},type:`update`}),onReshapeStop:({mover:e,type:t})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e,type:t},type:`update`}),onMoveStart:({dx:e,dy:t,mover:n,type:r})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:r},type:`update`}),onMove:({dx:e,dy:t,mover:n,type:r})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:r},type:`update`}),onMoveStop:({dx:e,dy:t,mover:n,type:r})=>this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e,dy:t,mover:n,type:r},type:`update`}),onVertexAdd:({added:e,type:t,vertices:n})=>{let r=e.map(e=>C(e.geometry));this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{added:r,vertices:n,type:t},type:`update`})},onVertexRemove:({removed:e,type:t,vertices:n})=>{let r=e.map(e=>C(e.geometry));this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{removed:r,vertices:n,type:t},type:`update`})}}})}_getHandlesForComponent(e,t){let n=e.activeComponent;if(!n)return[];switch(n.type){case`graphic-mover`:return[n.on(`graphic-click`,({graphic:n,viewEvent:r})=>{r.native?.shiftKey&&t.multipleSelectionEnabled&&(r.stopPropagation(),this._updatingHandles.consumePromise(e.removeFromSelection(n)))}),n.on(`graphic-move-start`,t=>e.addToHistory(Z(t.allGraphics)))];case`box`:return[n.on(`graphic-click`,n=>this._onTransformOrReshape2DGraphicClick(e,t,n)),n.on(`move-start`,t=>e.addToHistory(Z(t.graphics))),n.on(`rotate-start`,t=>e.addToHistory(Z(t.graphics))),n.on(`scale-start`,t=>e.addToHistory(Z(t.graphics)))];case`reshape`:return[n.on(`graphic-click`,n=>this._onTransformOrReshape2DGraphicClick(e,t,n)),n.on(`move-start`,t=>e.addToHistory(Z([t.mover]))),n.on(`reshape-start`,t=>e.addToHistory(Z([t.graphic]))),n.on(`vertex-add`,t=>e.addToHistory(Z([t.oldGraphic]))),n.on(`vertex-remove`,t=>e.addToHistory(Z([t.oldGraphic])))];case`move-3d`:return[n.events.on(`record-undo`,({updates:t})=>{e.addToHistory({updates:t})}),n.events.on(`move-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:0,dy:0,mover:e.objects.length>0?e.objects[0].graphic:null,type:`move-start`},type:`update`})}),n.events.on(`move`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:e.dx,dy:e.dy,mover:e.objects.length>0?e.objects[0].graphic:null,type:`move`},type:`update`})}),n.events.on(`move-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{dx:0,dy:0,mover:e.objects.length>0?e.objects[0].graphic:null,type:`move-stop`},type:`update`})}),n.events.on(`immediate-click`,n=>{this._updatingHandles.consumePromise(n.shiftKey?this._toggleSelection([n.object.graphic],e,t):e.toggleTool())})];case`transform-3d`:return[n.events.on(`record-undo`,({updates:t})=>{e.addToHistory({updates:t})}),n.events.on(`translate-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,dx:e.dxScreen,dy:e.dyScreen,type:`move-start`},type:`update`})}),n.events.on(`translate-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,dx:e.dxScreen,dy:e.dyScreen,type:`move-stop`},type:`update`})}),n.events.on(`rotate-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,angle:e.angle,type:`rotate-start`},type:`update`})}),n.events.on(`rotate-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,angle:e.angle,type:`rotate-stop`},type:`update`})}),n.events.on(`scale-start`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,xScale:e.xScale,yScale:e.yScale,type:`scale-start`},type:`update`})}),n.events.on(`scale-stop`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,xScale:e.xScale,yScale:e.yScale,type:`scale-stop`},type:`update`})}),n.events.on(`translate`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,dx:e.dxScreen,dy:e.dyScreen,type:`move`},type:`update`})}),n.events.on(`rotate`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,angle:e.angle,type:`rotate`},type:`update`})}),n.events.on(`scale`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{mover:e.object.graphic,xScale:e.xScale,yScale:e.yScale,type:`scale`},type:`update`})}),n.events.on(`immediate-click`,n=>{this._updatingHandles.consumePromise(n.shiftKey?this._toggleSelection([n.object.graphic],e,t):e.toggleTool())})];case`reshape-3d`:return[n.events.on(`reshape`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e,mover:e.object.graphic},type:`update`})}),n.events.on(`move`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:{...e,mover:e.object.graphic},type:`update`})}),n.events.on(`vertex-add`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:e,type:`update`})}),n.events.on(`vertex-remove`,e=>{this.emit(`update`,{graphics:this.updateGraphics.toArray(),state:`active`,aborted:!1,tool:this.activeTool,toolEventInfo:e,type:`update`})}),n.events.on(`immediate-click`,n=>{this._updatingHandles.consumePromise(n.shiftKey?this._toggleSelection([n.object.graphic],e,t):e.toggleTool())})]}}_onTransformOrReshape2DGraphicClick(e,t,n){let{graphic:r,viewEvent:i}=n;if(i.native?.shiftKey&&this.hasGraphic(r)){i.stopPropagation(),this._updatingHandles.consumePromise(e.removeFromSelection(r));return}t.toggleToolOnClick&&(i.stopPropagation(),this._updatingHandles.consumePromise(e.toggleTool()))}async _replaceUpdateOperationHandle(e,t,n){let r=this._operationContext;e.onEnd(),e.destroy();let i=await this._updatingHandles.addPromise(n());return!i||$(i)||r!==this._operationContext?(i&&!$(i)&&(i.onEnd(),i.destroy()),this._destroyOperationContext(r),!1):(this._setUpdateOperationHandle(i,t),!0)}_setUpdateOperationHandle(e,t){this._operationHandle=e;let n=this.view?.map;this._disablePopup(t),e.on(`complete`,()=>{if(e===this._operationHandle){let r=this.updateGraphics.toArray(),i=this._operationHandle.tool;this._operationHandle.destroy(),this._operationHandle=null,this._destroyOperationContext(),this._internalGraphicsLayer.removeMany(this.updateGraphics.toArray()),this.updateGraphics.removeAll(),n&&n.remove(this._internalGraphicsLayer),this._restorePopup(t),this.emit(`update`,{graphics:r,state:`complete`,aborted:e.cancelled,tool:i,toolEventInfo:null,type:`update`})}})}_getCommonUpdateOperationClickHandlers(e,t,n){return this._updatingHandles.addPromise(this._handleCommonUpdateOperationClick(e,t,n))}async _handleCommonUpdateOperationClick(e,t,n){let r=L(t),i=await t.defer(()=>this._getFirstHit(r));if(i==null){this.cancelUpdateOnClickAway&&e.complete();return}let a=t.native.shiftKey?this._toggleSelection([i.graphic],e,n):null;if(a){t.stopPropagation(),await a;return}this.updateGraphics.includes(i.graphic)?this._shouldTemporarilyDisablePopup(n)&&t.stopPropagation():e.complete()}async _toggleSelection(e,t,n){let r=!!n.multipleSelectionEnabled;for(let n of e)if(n!=null&&r&&this.hasGraphic(n))return this.updateGraphics.includes(n)?await t.removeFromSelection(n):await t.addToSelection(n)}_getCommonUpdateOperationKeyDownHandlers(e,t){if(!e)return;let n=t.key;n===A.undo&&e.canUndo()?(t.stopPropagation(),e.undo()):n===A.redo&&e.canRedo()?(t.stopPropagation(),e.redo()):n===A.cancel?(t.stopPropagation(),e.cancel()):this.allowDeleteKey&&A.delete.includes(n)&&this._onDeleteKey(t)}_onDeleteKey(e){this._operationHandle&&this._operationHandle.type===`update`&&this.activeComponent!=null&&(e.stopPropagation(),this.delete())}_removeDefaultLayer(){this._internalGraphicsLayer&&=(this.view?.map?.remove(this._internalGraphicsLayer),d(this._internalGraphicsLayer))}_isComponentGraphic(e){let{activeComponent:t}=this;return!e||t==null?!1:e.attributes?.esriSketchTool||t.type===`draw-2d`&&t.graphic===e||(t.type===`box`||t.type===`reshape`)&&t.isUIGraphic(e)}_clearCursor(){this.removeHandles(U)}_displayCursor(e){this.removeHandles(U),this.view?.container&&e!=null&&this.addHandles(this.view.acquireCursor(e,`high`),U)}_logError(e,t,n){u.getLogger(this).error(new i(e,t,n))}async _requireModule(e){let t=new AbortController;this._moduleLoaderAbortController=t;let n=await e;return this._moduleLoaderAbortController!==t||t.signal.aborted?{requireError:`aborted`}:{module:n}}_emitUndoEvent(e){this.emit(`undo`,{...e,type:`undo`})}_emitRedoEvent(e){this.emit(`redo`,{...e,type:`redo`})}_emitDeleteEvent(e){this.emit(`delete`,{...e,type:`delete`})}_onLayerGraphicsChangeCallback(e){if(this._operationHandle!=null){let{updateGraphics:t}=this;for(let n of e.removed)if(t.includes(n)){if(t.length>1)this._updatingHandles.consumePromise(this._operationHandle.removeFromSelection(n));else{this._operationHandle.cancel();break}}}}async _setupAdvancedDrawToolIntegrationMaybe(){this.isUsingLegacyCreateTools||this.pluginManager.loaded||await this.pluginManager.loadPlugins()}async _setupDrawTool(e,n,r){if(this.isUsingLegacyCreateTools||!this._pluginManager)return null;let i=this.view,a=await import(`../../views/draw/DrawTool.js`);await this.pluginManager.loadPlugins();let o=await this.pluginManager.makeRenderer({customSymbol:n.graphicSymbol,useTextSymbol:r===`text`}),s=new a.DrawTool({view:i,elevationInfo:this._layerAdapter?.elevationInfo??pe(i.type===`3d`),hasZ:!!n.hasZ,toolOptions:this._operationToolOptions,renderer:o,defaultZ:n.defaultZ??0,directionOptions:n.directionOptions,snappingManager:this._operationSnappingManager,enableVertexVisuals:r!==`rectangle`&&r!==`circle`,readPluginSetting:(e,t)=>this.settingsManager.getValue(t)});s.addHandles(l(o));let c=new t({...n.graphicProperties,attributes:{...n.graphicProperties?.attributes},symbol:n.graphicSymbol??this._getGraphicSymbolFromTool(r)});return n.graphicSymbol||s.addHandles(_(()=>this._getGraphicSymbolFromTool(r),e=>c.symbol=e)),this._set(`createGraphic`,c),i.addAndActivateTool(s),s.begin(e),s}get test(){}wait(){return y(()=>!this.updating)}_shouldTemporarilyDisablePopup(e){return this.updateOnGraphicClick||(e?.toggleToolOnClick??!1)}_disablePopup(e){this._shouldTemporarilyDisablePopup(e)&&this.view&&this._originalPopupEnabled==null&&(this._originalPopupEnabled=this.view.popupEnabled,this.view.popupEnabled=!1)}_restorePopup(e){this._shouldTemporarilyDisablePopup(e)&&this.view&&this._originalPopupEnabled!=null&&(this.view.popupEnabled=this._originalPopupEnabled,this._originalPopupEnabled=null)}async _waitViewReady(){let e=this.view;if(!e){this._logMissingView();return}f(this._viewReadyAbortController),this._viewReadyAbortController=new AbortController,await g(y(()=>e?.ready),this._viewReadyAbortController.signal)}_logMissingView(){this._logError(`sketch:missing-property`,K(`view`))}_logMissingLayer(){this._logError(Re,K(`layer`))}};e([b()],G.prototype,`_defaultSnappingManager`,void 0),e([b()],G.prototype,`_operationContext`,void 0),e([b()],G.prototype,`_layerAdapter`,null),e([b()],G.prototype,`_pluginManager`,void 0),e([b({readOnly:!0})],G.prototype,`settingsManager`,void 0),e([b()],G.prototype,`_operationHandle`,void 0),e([b({readOnly:!0})],G.prototype,`_updatingHandles`,void 0),e([b({readOnly:!0})],G.prototype,`_toolTransitionHandles`,void 0),e([b()],G.prototype,`_drawToolSimplifyAbortController`,void 0),e([b({readOnly:!0})],G.prototype,`activeTool`,null),e([b()],G.prototype,`geometrySimplificationInProgress`,null),e([b({readOnly:!0})],G.prototype,`activeCreateToolDrawMode`,null),e([b()],G.prototype,`activeTooltip`,null),e([b({types:E})],G.prototype,`activeFillSymbol`,void 0),e([b()],G.prototype,`activeLineSymbol`,void 0),e([b()],G.prototype,`activeVertexSymbol`,void 0),e([b()],G.prototype,`allowDeleteKey`,void 0),e([b({readOnly:!0})],G.prototype,`createGraphic`,null),e([b()],G.prototype,`defaultCreateOptions`,null),e([b()],G.prototype,`defaultUpdateOptions`,null),e([b()],G.prototype,`activeUpdateOptions`,void 0),e([b({type:M,nonNullable:!0})],G.prototype,`labelOptions`,null),e([b()],G.prototype,`layer`,void 0),e([b({types:E})],G.prototype,`pointSymbol`,void 0),e([b({types:E})],G.prototype,`polygonSymbol`,void 0),e([b({types:E})],G.prototype,`polylineSymbol`,void 0),e([b()],G.prototype,`meshSymbol`,void 0),e([b({type:T})],G.prototype,`textSymbol`,null),e([b({type:F,nonNullable:!0})],G.prototype,`snappingOptions`,null),e([b()],G.prototype,`snappingManager`,null),e([b({readOnly:!0})],G.prototype,`state`,null),e([b()],G.prototype,`toolTransitionInProgress`,null),e([b({type:Se,nonNullable:!0})],G.prototype,`tooltipOptions`,null),e([b({readOnly:!0})],G.prototype,`updateGraphics`,void 0),e([b()],G.prototype,`updateOnGraphicClick`,void 0),e([b()],G.prototype,`useViewOptions`,void 0),e([b()],G.prototype,`cancelUpdateOnClickAway`,void 0),e([b()],G.prototype,`updating`,null),e([b()],G.prototype,`creationMode`,void 0),e([b({type:Ce,nonNullable:!0})],G.prototype,`valueOptions`,null),e([b({types:E})],G.prototype,`vertexSymbol`,void 0),e([b({value:null})],G.prototype,`view`,null),e([b({constructOnly:!0,type:N})],G.prototype,`sketchOptions`,void 0),e([b()],G.prototype,`useLegacyCreateTools`,void 0),e([b()],G.prototype,`isUsingLegacyCreateTools`,null),e([b()],G.prototype,`pluginManager`,null),e([b()],G.prototype,`drawTool`,null),e([b()],G.prototype,`activePluginConfigurations`,null),e([b()],G.prototype,`rootPlugins`,null),e([b()],G.prototype,`effectiveAvailablePlugins`,null),e([b()],G.prototype,`firstPluginWithSwappableLeaf`,null),e([b()],G.prototype,`multiplePluginsActive`,null),G=e([re(`esri.widgets.Sketch.SketchViewModel`)],G);const Re=`sketch:missing-property`,K=e=>`Property '${e}' is missing on SketchViewModel.`;function ze(e){return e===`polygon`||e===`rectangle`||e===`circle`}function q(e,t){Y(`undo`,e.history.undo,e.history.redo,t)}function J(e,t){Y(`redo`,e.history.redo,e.history.undo,t)}function Y(e,t,n,r){let i=t.pop();if(!i)return;let a=i.updates,o=[];r.forEach((t,n)=>{let r=a[n];r!=null&&(`geometry`in r&&r.geometry!=null&&(o.push({geometry:t.geometry}),t.geometry=r.geometry),`symbol`in r&&r.symbol!=null&&(o.push({symbol:t.symbol}),t.symbol=r.symbol),`undo`in r&&(o.push(r),r[e](t)))}),n.push({updates:o})}function X(e,t){e!=null&&t.hasGrabbedManipulators&&(e.activeTool=null)}function Z(e){return{updates:e.map(({geometry:e})=>e?.type===`mesh`?{geometry:e.cloneShallow()}:{geometry:e})}}function Q(e,t){e.tools?.remove(t),t.destroyed||t.destroy()}function $(e){return`requireError`in e&&e.requireError===`aborted`}export{G as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{isSome as n}from"../../../core/arrayUtils.js";import r from"../../../core/Error.js";import{handlesGroup as i}from"../../../core/handleUtils.js";import a from"../../../core/Logger.js";import{throwIfAborted as o}from"../../../core/promiseUtils.js";import{watch as s}from"../../../core/reactiveUtils.js";import{property as c}from"../../../core/accessorSupport/decorators/property.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{freehandSnappingEnabledSettingKey as u,bezierEnableSplineBehaviorSettingKey as d}from"../../../views/draw/support/types.js";let f=class extends t{constructor(e){super(e),this._pluginLoadPromise=null,this._pluginConstructors=null}get _freehandPluginSettings(){return{[u]:{titleLocalizationKey:`settings.freehandSnappingEnabledTitle`,descriptionLocalizationKey:`settings.freehandSnappingEnabledDescription`,type:`toggle`,default:!0}}}get _simplePointPlugin(){let e=Symbol.for(`esri-builtin-plugin-leaf-point`);return{uniqueId:e,localizationKey:`leaf-point-segment`,kind:[`vertex`],geometryType:`point`,icon:`line-straight`,legacyCreateTool:`point`,create:()=>this._createPlugin(e),[Symbol.toStringTag]:`Point`}}get _hybridSegmentPlugin(){let e=Symbol.for(`esri-builtin-plugin-freehand`);return{...this._simplePointPlugin,create:()=>{let t=this._createPlugin(e);return t.completeOnDragEnd=!0,t.snappingBehavior=`when-not-capturing`,t},settings:this._freehandPluginSettings,[Symbol.toStringTag]:`Hybrid Segment`}}get _pointLikeFreehandSegmentPlugin(){let e=Symbol.for(`esri-builtin-plugin-freehand`);return{...this._simplePointPlugin,create:()=>{let t=this._createPlugin(e);return t.completeOnDragEnd=!0,t.snappingBehavior=`when-not-capturing`,t},settings:this._freehandPluginSettings,[Symbol.toStringTag]:`Freehand Segment`}}get _effectiveConfiguredDrawingMode(){return this.sketchViewModel?.defaultCreateOptions?.mode??`click`}get _effectivePointLikePlugin(){switch(this._effectiveConfiguredDrawingMode){case`hybrid`:return this._hybridSegmentPlugin;case`freehand`:return this._pointLikeFreehandSegmentPlugin;default:return this._simplePointPlugin}}get _simplePointPluginRoot(){return{...this._simplePointPlugin,icon:`pin`,localizationKey:`root-point`,create:()=>{let e=this._createPlugin(this._simplePointPlugin.uniqueId);return e.enableHelpMessages=!0,e}}}get _textPointPlugin(){let e=Symbol.for(`esri-builtin-plugin-text-point`);return{uniqueId:e,localizationKey:`root-text`,kind:[`vertex`],geometryType:`point`,icon:`text`,legacyCreateTool:`text`,create:()=>this._createPlugin(e),[Symbol.toStringTag]:`Text`}}get _multipointPlugin(){let e={...this._simplePointPlugin,localizationKey:`leaf-point`,icon:`point`,hidden:!0},t=Symbol.for(`esri-builtin-plugin-multipoint`);return{uniqueId:t,localizationKey:`root-multipoint`,kind:[`part`],geometryType:`multipoint`,icon:`pins`,legacyCreateTool:`multipoint`,excludedViews:[`3d`],create:()=>this._createPlugin(t),availableDownstreamPlugins:[e],defaultDownstreamPlugin:e,[Symbol.toStringTag]:`Multipoint`}}get _freehandPlugin(){let e=Symbol.for(`esri-builtin-plugin-freehand`);return{uniqueId:e,localizationKey:`leaf-stream`,kind:[`vertex`,`section`,`part`],geometryType:`polyline`,icon:`freehand`,legacyCreateTool:`freehandPolyline`,create:()=>{let t=this._createPlugin(e);return t.completeOnDragEnd=!0,t.snappingBehavior=`when-not-capturing`,t},settings:this._freehandPluginSettings,[Symbol.toStringTag]:`Freehand`}}get _bezierPlugin(){let e=Symbol.for(`esri-builtin-plugin-bezier-segment`);return{uniqueId:e,localizationKey:`leaf-bezier`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`cubic-bezier`],icon:`bezier-curve`,excludedViews:[`3d`],create:()=>this._createPlugin(e),settings:{[d]:{titleLocalizationKey:`settings.bezierEnableSplineBehaviorTitle`,descriptionLocalizationKey:`settings.bezierEnableSplineBehaviorDescription`,type:`toggle`,default:!0}},[Symbol.toStringTag]:`Bezier`}}get _tangentArcPlugin(){let e=Symbol.for(`esri-builtin-plugin-tangent-arc-segment`);return{uniqueId:e,localizationKey:`leaf-tangent-arc`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`circular-arc`],icon:`tangent-curve`,excludedViews:[`3d`],create:()=>this._createPlugin(e),availableDownstreamPlugins:[],[Symbol.toStringTag]:`Tangent Arc`}}get _endpointArcPlugin(){let e=Symbol.for(`esri-builtin-plugin-circular-arc-segment-end-first`);return{uniqueId:e,localizationKey:`leaf-endpoint-arc`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`circular-arc`],icon:`end-point-arc-segment`,excludedViews:[`3d`],create:()=>{let t=this._createPlugin(e);return t.arcDrawingMode=`end-first`,t},availableDownstreamPlugins:[],[Symbol.toStringTag]:`Endpoint Arc`}}get _interiorArcPlugin(){let e=Symbol.for(`esri-builtin-plugin-circular-arc-segment-interior-first`);return{uniqueId:e,localizationKey:`leaf-circular-arc`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`circular-arc`],icon:`arc-segment`,excludedViews:[`3d`],create:()=>{let t=this._createPlugin(e);return t.arcDrawingMode=`interior-first`,t},availableDownstreamPlugins:[],[Symbol.toStringTag]:`Interior Arc`}}get _singlePartPolylinePlugin(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`freehandPolyline`)&&e?.freehandPolyline!==!1,r=!this._isExcludedByAvailableCreateTools(`polyline`)&&e?.polyline!==!1,i=this._effectiveConfiguredDrawingMode===`freehand`&&t?this._simplePointPlugin:this._effectivePointLikePlugin,a=Symbol.for(`esri-builtin-plugin-simple-polyline`);return{uniqueId:a,localizationKey:`root-polyline`,kind:[`section`,`part`],geometryType:`polyline`,legacyCreateTool:`polyline`,icon:r?`line`:`freehand`,create:()=>this._createPlugin(a),availableDownstreamPlugins:r?[i,t?this._freehandPlugin:null,this._bezierPlugin,this._tangentArcPlugin,this._interiorArcPlugin,this._endpointArcPlugin].filter(n):[t?this._freehandPlugin:null].filter(n),defaultDownstreamPlugin:r?i:this._freehandPlugin,[Symbol.toStringTag]:`Polyline`}}get _singlePartPolygonPlugin(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`freehandPolygon`)&&e?.freehandPolygon!==!1,r=!this._isExcludedByAvailableCreateTools(`polygon`)&&e?.polygon!==!1,i=this._effectiveConfiguredDrawingMode===`freehand`&&t?this._simplePointPlugin:this._effectivePointLikePlugin,a=Symbol.for(`esri-builtin-plugin-simple-polygon`);return{uniqueId:a,localizationKey:`root-polygon`,kind:[`section`,`part`],geometryType:`polygon`,legacyCreateTool:`polygon`,icon:r?`polygon`:`freehand-area`,create:()=>this._createPlugin(a),availableDownstreamPlugins:r?[i,t?this._freehandPlugin:null,this._bezierPlugin,this._tangentArcPlugin,this._interiorArcPlugin,this._endpointArcPlugin].filter(n):[t?this._freehandPlugin:null].filter(n),defaultDownstreamPlugin:r?i:this._freehandPlugin,[Symbol.toStringTag]:`Polygon`}}get _rectanglePlugin(){let e=Symbol.for(`esri-builtin-plugin-simple-rectangle`);return{uniqueId:e,localizationKey:`root-rectangle`,kind:[`part`],geometryType:`polygon`,icon:`rectangle`,legacyCreateTool:`rectangle`,create:()=>this._createPlugin(e),[Symbol.toStringTag]:`Rectangle`}}get _circlePlugin(){let e=Symbol.for(`esri-builtin-plugin-simple-ellipse`);return{uniqueId:e,localizationKey:`root-circle`,kind:[`part`],geometryType:`polygon`,icon:`circle`,legacyCreateTool:`circle`,create:()=>{let t=this._createPlugin(e);return t.shapeType=`circle`,t.defaultUniform=!0,t.defaultCentered=!0,t},[Symbol.toStringTag]:`Circle`}}set sketch(e){this._set(`sketch`,e)}set sketchViewModel(e){this._overrideIfSome(`sketchViewModel`,e)}get sketchViewModel(){return this.sketch?.viewModel}get effectiveRootPoint(){return this.sketch?.visibleElements.createTools?.point!==!1&&!this._isExcludedByAvailableCreateTools(`point`)?this._simplePointPluginRoot:null}get effectiveRootText(){return this.sketch?.visibleElements.createTools?.text!==!1&&!this._isExcludedByAvailableCreateTools(`text`)?this._textPointPlugin:null}get effectiveRootMultipoint(){return this.sketch?.visibleElements.createTools?.multipoint!==!1&&!this._isExcludedByAvailableCreateTools(`multipoint`)&&this.sketchViewModel?.view?.type!==`3d`?this._multipointPlugin:null}get effectiveRootPolyline(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`polyline`)&&e?.polyline!==!1,n=!this._isExcludedByAvailableCreateTools(`freehandPolyline`)&&e?.freehandPolyline!==!1;return t||n?this._singlePartPolylinePlugin:null}get effectiveRootPolygon(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`polygon`)&&e?.polygon!==!1,n=!this._isExcludedByAvailableCreateTools(`freehandPolygon`)&&e?.freehandPolygon!==!1;return t||n?this._singlePartPolygonPlugin:null}get effectiveRootRectangle(){return this.sketch?.visibleElements.createTools?.rectangle!==!1&&!this._isExcludedByAvailableCreateTools(`rectangle`)?this._rectanglePlugin:null}get effectiveRootCircle(){return this.sketch?.visibleElements.createTools?.circle!==!1&&!this._isExcludedByAvailableCreateTools(`circle`)?this._circlePlugin:null}get availablePlugins(){let e=[this.effectiveRootPoint,this.effectiveRootText,this.effectiveRootMultipoint,this.effectiveRootPolyline,this.effectiveRootPolygon,this.effectiveRootRectangle,this.effectiveRootCircle].filter(n),t=this.sketch?.availableCreateTools;if(!t)return e;let r=e=>{if(!e.legacyCreateTool)return 2**53-1;let n=t.indexOf(e.legacyCreateTool);return n===-1?2**53-1:n};return e.map((e,t)=>({plugin:e,index:t,order:r(e)})).sort((e,t)=>e.order-t.order||e.index-t.index).map(({plugin:e})=>e)}get visiblePluginsFlat(){if(this.sketchViewModel?.isUsingLegacyCreateTools)return[];let e=this.sketchViewModel?.view?.type??`2d`,t=new Set,n=[],r=i=>{i&&!i.excludedViews?.includes(e)&&(t.has(i.uniqueId)||(t.add(i.uniqueId),i.hidden||n.push(i)),i.availableDownstreamPlugins?.forEach(e=>r(e)))};return this.availablePlugins.forEach(e=>r(e)),n}get loaded(){return this._pluginConstructors!=null}getPluginsEquivalentToCreateTool(e,t){switch(e){case`text`:return[this._textPointPlugin];case`point`:return[this._simplePointPluginRoot];case`rectangle`:return[this._rectanglePlugin];case`circle`:return[this._circlePlugin];case`freehandPolyline`:return[this._singlePartPolylinePlugin,this._freehandPlugin];case`freehandPolygon`:return[this._singlePartPolygonPlugin,this._freehandPlugin];case`polyline`:return t===`freehand`?this.sketch?.viewModel?.defaultCreateOptions?.mode===`freehand`?[this._singlePartPolylinePlugin,this._effectivePointLikePlugin]:[this._singlePartPolylinePlugin,this._freehandPlugin]:t===`hybrid`?[this._singlePartPolylinePlugin,this._hybridSegmentPlugin]:[this._singlePartPolylinePlugin,this._simplePointPlugin];case`polygon`:return t===`freehand`?this.sketch?.viewModel?.defaultCreateOptions?.mode===`freehand`?[this._singlePartPolygonPlugin,this._effectivePointLikePlugin]:[this._singlePartPolygonPlugin,this._freehandPlugin]:t===`hybrid`?[this._singlePartPolygonPlugin,this._hybridSegmentPlugin]:[this._singlePartPolygonPlugin,this._simplePointPlugin];case`multipoint`:return[this._multipointPlugin];case`mesh`:return null;default:return null}}getDrawingModeEquivalentToPluginStack(e){let t=e.at(-1);return t===this._freehandPlugin?`freehand`:t===this._hybridSegmentPlugin||t===this._rectanglePlugin||t===this._circlePlugin?`hybrid`:`click`}async makeRenderer(e={}){let t=this.sketchViewModel;if(!t?.view)return null;let{abortOptions:n,useTextSymbol:r,customSymbol:i}=e;return t.view.type===`2d`?await this._makeDrawToolRenderer2D({view:t.view,svm:t,useTextSymbol:r,customSymbol:i,abortOptions:n}):await this._makeDrawToolRenderer3D({view:t.view,svm:t,useTextSymbol:r,abortOptions:n})}async loadPlugins(){if(!this.loaded)return this._pluginLoadPromise||=(async()=>{let[{PointPlugin:e},{MultipointPlugin:t},{PolylinePlugin:n},{PolygonPlugin:r},{FreehandSegmentPlugin:i},{BezierSegmentPlugin:a},{TangentArcSegmentPlugin:o},{CircularArcSegmentPlugin:s},{ShapePlugin:c}]=await Promise.all([import(`../../../views/draw/plugins/PointPlugin.js`),import(`../../../views/draw/plugins/MultipointPlugin.js`),import(`../../../views/draw/plugins/PolylinePlugin.js`),import(`../../../views/draw/plugins/PolygonPlugin.js`),import(`../../../views/draw/plugins/FreehandSegmentPlugin.js`),import(`../../../views/draw/plugins/BezierSegmentPlugin.js`),import(`../../../views/draw/plugins/TangentArcSegmentPlugin.js`),import(`../../../views/draw/plugins/CircularArcSegmentPlugin.js`),import(`../../../views/draw/plugins/ShapePlugin.js`)]);this._pluginConstructors=new Map([[Symbol.for(`esri-builtin-plugin-leaf-point`),e],[Symbol.for(`esri-builtin-plugin-text-point`),e],[Symbol.for(`esri-builtin-plugin-multipoint`),t],[Symbol.for(`esri-builtin-plugin-freehand`),i],[Symbol.for(`esri-builtin-plugin-bezier-segment`),a],[Symbol.for(`esri-builtin-plugin-tangent-arc-segment`),o],[Symbol.for(`esri-builtin-plugin-circular-arc-segment-end-first`),s],[Symbol.for(`esri-builtin-plugin-circular-arc-segment-interior-first`),s],[Symbol.for(`esri-builtin-plugin-simple-polyline`),n],[Symbol.for(`esri-builtin-plugin-simple-polygon`),r],[Symbol.for(`esri-builtin-plugin-simple-rectangle`),c],[Symbol.for(`esri-builtin-plugin-simple-ellipse`),c]])})().catch(e=>{throw this._pluginLoadPromise=null,e}),this._pluginLoadPromise}_isExcludedByAvailableCreateTools(e){return this.sketch?!this.sketch.availableCreateTools?.includes(e):!1}_createPlugin(e){let t=this._pluginConstructors?.get(e);if(!t)throw new r(`Sketch:PluginManager`,`Plugin implementations are not loaded. Call loadPlugins() before creating plugins.`);return new t}async _makeDrawToolRenderer2D(e){let{DrawToolRenderer2D:t}=await import(`../../../views/2d/interactive/editingTools/draw/DrawToolRenderer2D.js`),{view:n,svm:r,useTextSymbol:i,abortOptions:a}=e;o(a);let s=i?r.textSymbol??r.pointSymbol:r.pointSymbol,c=new t({symbolOverrides:{polyline:{outputGeometry:{default:e.customSymbol??r.polylineSymbol},outline:{active:r.activeLineSymbol??void 0}},polygon:{outputGeometry:{default:e.customSymbol??r.activeFillSymbol??r.polygonSymbol}},point:{outputGeometry:{default:e.customSymbol??s},vertex:{default:r.vertexSymbol,active:r.activeVertexSymbol??void 0}}},view:n}),l=this._setupSymbolWatcher(c,r,!!i,!!e.customSymbol);return c.addHandles(l),c}async _makeDrawToolRenderer3D(e){let{view:t,svm:n,useTextSymbol:r,abortOptions:i}=e;return a.getLogger(this).warnOnce(`Using DrawToolRenderer2D in 3D view. A 3D-specific implementation of DrawToolRenderer is not yet available.`),this._makeDrawToolRenderer2D({view:t,svm:n,useTextSymbol:r,abortOptions:i})}_setupSymbolWatcher(e,t,n,r){let a=(t,n,r)=>(i,a)=>{i!==a&&e.overrideSymbol({symbol:i,geometryType:t,role:n,state:r})},o=[s(()=>t.activeLineSymbol,a(`polyline`,`outline`,`active`)),s(()=>t.vertexSymbol,a(`point`,`vertex`)),s(()=>t.activeVertexSymbol,a(`point`,`vertex`,`active`))];return r||o.push(s(()=>t.polylineSymbol,a(`polyline`,`outputGeometry`)),s(()=>t.activeFillSymbol??t.polygonSymbol,a(`polygon`,`outputGeometry`)),s(()=>n?t.textSymbol??t.pointSymbol:t.pointSymbol,a(`point`,`outputGeometry`))),i(o)}};e([c()],f.prototype,`_freehandPluginSettings`,null),e([c()],f.prototype,`_simplePointPlugin`,null),e([c()],f.prototype,`_hybridSegmentPlugin`,null),e([c()],f.prototype,`_pointLikeFreehandSegmentPlugin`,null),e([c()],f.prototype,`_effectiveConfiguredDrawingMode`,null),e([c()],f.prototype,`_effectivePointLikePlugin`,null),e([c()],f.prototype,`_simplePointPluginRoot`,null),e([c()],f.prototype,`_textPointPlugin`,null),e([c()],f.prototype,`_multipointPlugin`,null),e([c()],f.prototype,`_freehandPlugin`,null),e([c()],f.prototype,`_bezierPlugin`,null),e([c()],f.prototype,`_tangentArcPlugin`,null),e([c()],f.prototype,`_endpointArcPlugin`,null),e([c()],f.prototype,`_interiorArcPlugin`,null),e([c()],f.prototype,`_singlePartPolylinePlugin`,null),e([c()],f.prototype,`_singlePartPolygonPlugin`,null),e([c()],f.prototype,`_rectanglePlugin`,null),e([c()],f.prototype,`_circlePlugin`,null),e([c()],f.prototype,`sketch`,null),e([c()],f.prototype,`sketchViewModel`,null),e([c()],f.prototype,`effectiveRootPoint`,null),e([c()],f.prototype,`effectiveRootText`,null),e([c()],f.prototype,`effectiveRootMultipoint`,null),e([c()],f.prototype,`effectiveRootPolyline`,null),e([c()],f.prototype,`effectiveRootPolygon`,null),e([c()],f.prototype,`effectiveRootRectangle`,null),e([c()],f.prototype,`effectiveRootCircle`,null),e([c()],f.prototype,`availablePlugins`,null),e([c()],f.prototype,`visiblePluginsFlat`,null),e([c()],f.prototype,`loaded`,null),f=e([l(`esri.widgets.Sketch.support.PluginManager`)],f);export{f as PluginManager};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{isSome as n}from"../../../core/arrayUtils.js";import r from"../../../core/Error.js";import{handlesGroup as i}from"../../../core/handleUtils.js";import a from"../../../core/Logger.js";import{throwIfAborted as o}from"../../../core/promiseUtils.js";import{watch as s}from"../../../core/reactiveUtils.js";import{property as c}from"../../../core/accessorSupport/decorators/property.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{freehandSnappingEnabledSettingKey as u,bezierEnableSplineBehaviorSettingKey as d}from"../../../views/draw/support/types.js";let f=class extends t{constructor(e){super(e),this._pluginLoadPromise=null,this._pluginConstructors=null}get _freehandPluginSettings(){return{[u]:{titleLocalizationKey:`settings.freehandSnappingEnabledTitle`,descriptionLocalizationKey:`settings.freehandSnappingEnabledDescription`,type:`toggle`,default:!0}}}get _simplePointPlugin(){let e=Symbol.for(`esri-builtin-plugin-leaf-point`);return{uniqueId:e,localizationKey:`leaf-point-segment`,kind:[`vertex`],geometryType:`point`,icon:`line-straight`,legacyCreateTool:`point`,create:()=>this._createPlugin(e),[Symbol.toStringTag]:`Point`}}get _hybridSegmentPlugin(){let e=Symbol.for(`esri-builtin-plugin-freehand`);return{...this._simplePointPlugin,create:()=>{let t=this._createPlugin(e);return t.completeOnDragEnd=!0,t.snappingBehavior=`when-not-capturing`,t},settings:this._freehandPluginSettings,[Symbol.toStringTag]:`Hybrid Segment`}}get _pointLikeFreehandSegmentPlugin(){let e=Symbol.for(`esri-builtin-plugin-freehand`);return{...this._simplePointPlugin,create:()=>{let t=this._createPlugin(e);return t.completeOnDragEnd=!0,t.snappingBehavior=`when-not-capturing`,t},settings:this._freehandPluginSettings,[Symbol.toStringTag]:`Freehand Segment`}}get _effectiveConfiguredDrawingMode(){return this.sketchViewModel?.defaultCreateOptions?.mode??`click`}get _effectivePointLikePlugin(){switch(this._effectiveConfiguredDrawingMode){case`hybrid`:return this._hybridSegmentPlugin;case`freehand`:return this._pointLikeFreehandSegmentPlugin;default:return this._simplePointPlugin}}get _simplePointPluginRoot(){return{...this._simplePointPlugin,icon:`pin`,localizationKey:`root-point`,create:()=>{let e=this._createPlugin(this._simplePointPlugin.uniqueId);return e.enableHelpMessages=!0,e}}}get _textPointPlugin(){let e=Symbol.for(`esri-builtin-plugin-text-point`);return{uniqueId:e,localizationKey:`root-text`,kind:[`vertex`],geometryType:`point`,icon:`text`,legacyCreateTool:`text`,create:()=>this._createPlugin(e),[Symbol.toStringTag]:`Text`}}get _multipointPlugin(){let e={...this._simplePointPlugin,localizationKey:`leaf-point`,icon:`point`,hidden:!0},t=Symbol.for(`esri-builtin-plugin-multipoint`);return{uniqueId:t,localizationKey:`root-multipoint`,kind:[`part`],geometryType:`multipoint`,icon:`pins`,legacyCreateTool:`multipoint`,excludedViews:[`3d`],create:()=>this._createPlugin(t),availableDownstreamPlugins:[e],defaultDownstreamPlugin:e,[Symbol.toStringTag]:`Multipoint`}}get _freehandPlugin(){let e=Symbol.for(`esri-builtin-plugin-freehand`);return{uniqueId:e,localizationKey:`leaf-stream`,kind:[`vertex`,`section`,`part`],geometryType:`polyline`,icon:`freehand`,legacyCreateTool:`freehandPolyline`,create:()=>{let t=this._createPlugin(e);return t.completeOnDragEnd=!0,t.snappingBehavior=`when-not-capturing`,t},settings:this._freehandPluginSettings,[Symbol.toStringTag]:`Freehand`}}get _bezierPlugin(){let e=Symbol.for(`esri-builtin-plugin-bezier-segment`);return{uniqueId:e,localizationKey:`leaf-bezier`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`cubic-bezier`],icon:`bezier-curve`,excludedViews:[`3d`],create:()=>this._createPlugin(e),settings:{[d]:{titleLocalizationKey:`settings.bezierEnableSplineBehaviorTitle`,descriptionLocalizationKey:`settings.bezierEnableSplineBehaviorDescription`,type:`toggle`,default:!0}},[Symbol.toStringTag]:`Bezier`}}get _tangentArcPlugin(){let e=Symbol.for(`esri-builtin-plugin-tangent-arc-segment`);return{uniqueId:e,localizationKey:`leaf-tangent-arc`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`circular-arc`],icon:`tangent-curve`,excludedViews:[`3d`],create:()=>this._createPlugin(e),availableDownstreamPlugins:[],[Symbol.toStringTag]:`Tangent Arc`}}get _endpointArcPlugin(){let e=Symbol.for(`esri-builtin-plugin-circular-arc-segment-end-first`);return{uniqueId:e,localizationKey:`leaf-endpoint-arc`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`circular-arc`],icon:`end-point-arc-segment`,excludedViews:[`3d`],create:()=>{let t=this._createPlugin(e);return t.arcDrawingMode=`end-first`,t},availableDownstreamPlugins:[],[Symbol.toStringTag]:`Endpoint Arc`}}get _interiorArcPlugin(){let e=Symbol.for(`esri-builtin-plugin-circular-arc-segment-interior-first`);return{uniqueId:e,localizationKey:`leaf-circular-arc`,kind:[`vertex`,`section`],geometryType:`point`,curveTypes:[`circular-arc`],icon:`arc-segment`,excludedViews:[`3d`],create:()=>{let t=this._createPlugin(e);return t.arcDrawingMode=`interior-first`,t},availableDownstreamPlugins:[],[Symbol.toStringTag]:`Interior Arc`}}get _singlePartPolylinePlugin(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`freehandPolyline`)&&e?.freehandPolyline!==!1,r=!this._isExcludedByAvailableCreateTools(`polyline`)&&e?.polyline!==!1,i=this._effectiveConfiguredDrawingMode===`freehand`&&t?this._simplePointPlugin:this._effectivePointLikePlugin,a=Symbol.for(`esri-builtin-plugin-simple-polyline`);return{uniqueId:a,localizationKey:`root-polyline`,kind:[`section`,`part`],geometryType:`polyline`,legacyCreateTool:`polyline`,icon:r?`line`:`freehand`,create:()=>this._createPlugin(a),availableDownstreamPlugins:r?[i,t?this._freehandPlugin:null,this._bezierPlugin,this._tangentArcPlugin,this._interiorArcPlugin,this._endpointArcPlugin].filter(n):[t?this._freehandPlugin:null].filter(n),defaultDownstreamPlugin:r?i:this._freehandPlugin,[Symbol.toStringTag]:`Polyline`}}get _singlePartPolygonPlugin(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`freehandPolygon`)&&e?.freehandPolygon!==!1,r=!this._isExcludedByAvailableCreateTools(`polygon`)&&e?.polygon!==!1,i=this._effectiveConfiguredDrawingMode===`freehand`&&t?this._simplePointPlugin:this._effectivePointLikePlugin,a=Symbol.for(`esri-builtin-plugin-simple-polygon`);return{uniqueId:a,localizationKey:`root-polygon`,kind:[`section`,`part`],geometryType:`polygon`,legacyCreateTool:`polygon`,icon:r?`polygon`:`freehand-area`,create:()=>this._createPlugin(a),availableDownstreamPlugins:r?[i,t?this._freehandPlugin:null,this._bezierPlugin,this._tangentArcPlugin,this._interiorArcPlugin,this._endpointArcPlugin].filter(n):[t?this._freehandPlugin:null].filter(n),defaultDownstreamPlugin:r?i:this._freehandPlugin,[Symbol.toStringTag]:`Polygon`}}get _rectanglePlugin(){let e=Symbol.for(`esri-builtin-plugin-simple-rectangle`);return{uniqueId:e,localizationKey:`root-rectangle`,kind:[`part`],geometryType:`polygon`,icon:`rectangle`,legacyCreateTool:`rectangle`,create:()=>this._createPlugin(e),[Symbol.toStringTag]:`Rectangle`}}get _circlePlugin(){let e=Symbol.for(`esri-builtin-plugin-simple-ellipse`);return{uniqueId:e,localizationKey:`root-circle`,kind:[`part`],geometryType:`polygon`,icon:`circle`,legacyCreateTool:`circle`,create:()=>{let t=this._createPlugin(e);return t.shapeType=`circle`,t.defaultUniform=!0,t.defaultCentered=!0,t},[Symbol.toStringTag]:`Circle`}}get _ellipsePlugin(){let e=Symbol.for(`esri-builtin-plugin-simple-ellipse-unconstrained`);return{uniqueId:e,localizationKey:`root-circle`,kind:[`part`],geometryType:`polygon`,icon:`ellipse`,legacyCreateTool:`circle`,create:()=>{let t=this._createPlugin(e);return t.shapeType=`circle`,t.defaultUniform=!1,t.defaultCentered=!0,t},[Symbol.toStringTag]:`Ellipse`}}set sketch(e){this._set(`sketch`,e)}set sketchViewModel(e){this._overrideIfSome(`sketchViewModel`,e)}get sketchViewModel(){return this.sketch?.viewModel}get effectiveRootPoint(){return this.sketch?.visibleElements.createTools?.point!==!1&&!this._isExcludedByAvailableCreateTools(`point`)?this._simplePointPluginRoot:null}get effectiveRootText(){return this.sketch?.visibleElements.createTools?.text!==!1&&!this._isExcludedByAvailableCreateTools(`text`)?this._textPointPlugin:null}get effectiveRootMultipoint(){return this.sketch?.visibleElements.createTools?.multipoint!==!1&&!this._isExcludedByAvailableCreateTools(`multipoint`)&&this.sketchViewModel?.view?.type!==`3d`?this._multipointPlugin:null}get effectiveRootPolyline(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`polyline`)&&e?.polyline!==!1,n=!this._isExcludedByAvailableCreateTools(`freehandPolyline`)&&e?.freehandPolyline!==!1;return t||n?this._singlePartPolylinePlugin:null}get effectiveRootPolygon(){let e=this.sketch?.visibleElements.createTools,t=!this._isExcludedByAvailableCreateTools(`polygon`)&&e?.polygon!==!1,n=!this._isExcludedByAvailableCreateTools(`freehandPolygon`)&&e?.freehandPolygon!==!1;return t||n?this._singlePartPolygonPlugin:null}get effectiveRootRectangle(){return this.sketch?.visibleElements.createTools?.rectangle!==!1&&!this._isExcludedByAvailableCreateTools(`rectangle`)?this._rectanglePlugin:null}get effectiveRootCircle(){return this.sketch?.visibleElements.createTools?.circle!==!1&&!this._isExcludedByAvailableCreateTools(`circle`)?this._circlePlugin:null}get effectiveRootEllipse(){return this.sketch?.visibleElements.createTools?.circle!==!1&&!this._isExcludedByAvailableCreateTools(`circle`)?this._ellipsePlugin:null}get availablePlugins(){let e=this.sketch?.viewModel.defaultCreateOptions.optionsPerTool?.get(`circle`)?.preserveAspectRatio===!1,t=[this.effectiveRootPoint,this.effectiveRootText,this.effectiveRootMultipoint,this.effectiveRootPolyline,this.effectiveRootPolygon,this.effectiveRootRectangle,e?this.effectiveRootEllipse:this.effectiveRootCircle].filter(n),r=this.sketch?.availableCreateTools;if(!r)return t;let i=e=>{if(!e.legacyCreateTool)return 2**53-1;let t=r.indexOf(e.legacyCreateTool);return t===-1?2**53-1:t};return t.map((e,t)=>({plugin:e,index:t,order:i(e)})).sort((e,t)=>e.order-t.order||e.index-t.index).map(({plugin:e})=>e)}get visiblePluginsFlat(){if(this.sketchViewModel?.isUsingLegacyCreateTools)return[];let e=this.sketchViewModel?.view?.type??`2d`,t=new Set,n=[],r=i=>{i&&!i.excludedViews?.includes(e)&&(t.has(i.uniqueId)||(t.add(i.uniqueId),i.hidden||n.push(i)),i.availableDownstreamPlugins?.forEach(e=>r(e)))};return this.availablePlugins.forEach(e=>r(e)),n}get loaded(){return this._pluginConstructors!=null}getPluginsEquivalentToCreateTool(e,t){switch(e){case`text`:return[this._textPointPlugin];case`point`:return[this._simplePointPluginRoot];case`rectangle`:return[this._rectanglePlugin];case`circle`:return t.optionsPerTool?.get(`circle`)?.preserveAspectRatio===!1?[this._ellipsePlugin]:[this._circlePlugin];case`freehandPolyline`:return[this._singlePartPolylinePlugin,this._freehandPlugin];case`freehandPolygon`:return[this._singlePartPolygonPlugin,this._freehandPlugin];case`polyline`:return t.mode===`freehand`?this.sketch?.viewModel?.defaultCreateOptions?.mode===`freehand`?[this._singlePartPolylinePlugin,this._effectivePointLikePlugin]:[this._singlePartPolylinePlugin,this._freehandPlugin]:t.mode===`hybrid`?[this._singlePartPolylinePlugin,this._hybridSegmentPlugin]:[this._singlePartPolylinePlugin,this._simplePointPlugin];case`polygon`:return t.mode===`freehand`?this.sketch?.viewModel?.defaultCreateOptions?.mode===`freehand`?[this._singlePartPolygonPlugin,this._effectivePointLikePlugin]:[this._singlePartPolygonPlugin,this._freehandPlugin]:t.mode===`hybrid`?[this._singlePartPolygonPlugin,this._hybridSegmentPlugin]:[this._singlePartPolygonPlugin,this._simplePointPlugin];case`multipoint`:return[this._multipointPlugin];case`mesh`:return null;default:return null}}getDrawingModeEquivalentToPluginStack(e){let t=e.at(-1);return t===this._freehandPlugin?`freehand`:t===this._hybridSegmentPlugin||t===this._rectanglePlugin||t===this._circlePlugin?`hybrid`:`click`}async makeRenderer(e={}){let t=this.sketchViewModel;if(!t?.view)return null;let{abortOptions:n,useTextSymbol:r,customSymbol:i}=e;return t.view.type===`2d`?await this._makeDrawToolRenderer2D({view:t.view,svm:t,useTextSymbol:r,customSymbol:i,abortOptions:n}):await this._makeDrawToolRenderer3D({view:t.view,svm:t,useTextSymbol:r,abortOptions:n})}async loadPlugins(){if(!this.loaded)return this._pluginLoadPromise||=(async()=>{let[{PointPlugin:e},{MultipointPlugin:t},{PolylinePlugin:n},{PolygonPlugin:r},{FreehandSegmentPlugin:i},{BezierSegmentPlugin:a},{TangentArcSegmentPlugin:o},{CircularArcSegmentPlugin:s},{ShapePlugin:c}]=await Promise.all([import(`../../../views/draw/plugins/PointPlugin.js`),import(`../../../views/draw/plugins/MultipointPlugin.js`),import(`../../../views/draw/plugins/PolylinePlugin.js`),import(`../../../views/draw/plugins/PolygonPlugin.js`),import(`../../../views/draw/plugins/FreehandSegmentPlugin.js`),import(`../../../views/draw/plugins/BezierSegmentPlugin.js`),import(`../../../views/draw/plugins/TangentArcSegmentPlugin.js`),import(`../../../views/draw/plugins/CircularArcSegmentPlugin.js`),import(`../../../views/draw/plugins/ShapePlugin.js`)]);this._pluginConstructors=new Map([[Symbol.for(`esri-builtin-plugin-leaf-point`),e],[Symbol.for(`esri-builtin-plugin-text-point`),e],[Symbol.for(`esri-builtin-plugin-multipoint`),t],[Symbol.for(`esri-builtin-plugin-freehand`),i],[Symbol.for(`esri-builtin-plugin-bezier-segment`),a],[Symbol.for(`esri-builtin-plugin-tangent-arc-segment`),o],[Symbol.for(`esri-builtin-plugin-circular-arc-segment-end-first`),s],[Symbol.for(`esri-builtin-plugin-circular-arc-segment-interior-first`),s],[Symbol.for(`esri-builtin-plugin-simple-polyline`),n],[Symbol.for(`esri-builtin-plugin-simple-polygon`),r],[Symbol.for(`esri-builtin-plugin-simple-rectangle`),c],[Symbol.for(`esri-builtin-plugin-simple-ellipse`),c],[Symbol.for(`esri-builtin-plugin-simple-ellipse-unconstrained`),c]])})().catch(e=>{throw this._pluginLoadPromise=null,e}),this._pluginLoadPromise}_isExcludedByAvailableCreateTools(e){return this.sketch?!this.sketch.availableCreateTools?.includes(e):!1}_createPlugin(e){let t=this._pluginConstructors?.get(e);if(!t)throw new r(`Sketch:PluginManager`,`Plugin implementations are not loaded. Call loadPlugins() before creating plugins.`);return new t}async _makeDrawToolRenderer2D(e){let{DrawToolRenderer2D:t}=await import(`../../../views/2d/interactive/editingTools/draw/DrawToolRenderer2D.js`),{view:n,svm:r,useTextSymbol:i,abortOptions:a}=e;o(a);let s=i?r.textSymbol??r.pointSymbol:r.pointSymbol,c=new t({symbolOverrides:{polyline:{outputGeometry:{default:e.customSymbol??r.polylineSymbol},outline:{active:r.activeLineSymbol??void 0}},polygon:{outputGeometry:{default:e.customSymbol??r.activeFillSymbol??r.polygonSymbol}},point:{outputGeometry:{default:e.customSymbol??s},vertex:{default:r.vertexSymbol,active:r.activeVertexSymbol??void 0}}},view:n}),l=this._setupSymbolWatcher(c,r,!!i,!!e.customSymbol);return c.addHandles(l),c}async _makeDrawToolRenderer3D(e){let{view:t,svm:n,useTextSymbol:r,abortOptions:i}=e;return a.getLogger(this).warnOnce(`Using DrawToolRenderer2D in 3D view. A 3D-specific implementation of DrawToolRenderer is not yet available.`),this._makeDrawToolRenderer2D({view:t,svm:n,useTextSymbol:r,abortOptions:i})}_setupSymbolWatcher(e,t,n,r){let a=(t,n,r)=>(i,a)=>{i!==a&&e.overrideSymbol({symbol:i,geometryType:t,role:n,state:r})},o=[s(()=>t.activeLineSymbol,a(`polyline`,`outline`,`active`)),s(()=>t.vertexSymbol,a(`point`,`vertex`)),s(()=>t.activeVertexSymbol,a(`point`,`vertex`,`active`))];return r||o.push(s(()=>t.polylineSymbol,a(`polyline`,`outputGeometry`)),s(()=>t.activeFillSymbol??t.polygonSymbol,a(`polygon`,`outputGeometry`)),s(()=>n?t.textSymbol??t.pointSymbol:t.pointSymbol,a(`point`,`outputGeometry`))),i(o)}};e([c()],f.prototype,`_freehandPluginSettings`,null),e([c()],f.prototype,`_simplePointPlugin`,null),e([c()],f.prototype,`_hybridSegmentPlugin`,null),e([c()],f.prototype,`_pointLikeFreehandSegmentPlugin`,null),e([c()],f.prototype,`_effectiveConfiguredDrawingMode`,null),e([c()],f.prototype,`_effectivePointLikePlugin`,null),e([c()],f.prototype,`_simplePointPluginRoot`,null),e([c()],f.prototype,`_textPointPlugin`,null),e([c()],f.prototype,`_multipointPlugin`,null),e([c()],f.prototype,`_freehandPlugin`,null),e([c()],f.prototype,`_bezierPlugin`,null),e([c()],f.prototype,`_tangentArcPlugin`,null),e([c()],f.prototype,`_endpointArcPlugin`,null),e([c()],f.prototype,`_interiorArcPlugin`,null),e([c()],f.prototype,`_singlePartPolylinePlugin`,null),e([c()],f.prototype,`_singlePartPolygonPlugin`,null),e([c()],f.prototype,`_rectanglePlugin`,null),e([c()],f.prototype,`_circlePlugin`,null),e([c()],f.prototype,`_ellipsePlugin`,null),e([c()],f.prototype,`sketch`,null),e([c()],f.prototype,`sketchViewModel`,null),e([c()],f.prototype,`effectiveRootPoint`,null),e([c()],f.prototype,`effectiveRootText`,null),e([c()],f.prototype,`effectiveRootMultipoint`,null),e([c()],f.prototype,`effectiveRootPolyline`,null),e([c()],f.prototype,`effectiveRootPolygon`,null),e([c()],f.prototype,`effectiveRootRectangle`,null),e([c()],f.prototype,`effectiveRootCircle`,null),e([c()],f.prototype,`effectiveRootEllipse`,null),e([c()],f.prototype,`availablePlugins`,null),e([c()],f.prototype,`visiblePluginsFlat`,null),e([c()],f.prototype,`loaded`,null),f=e([l(`esri.widgets.Sketch.support.PluginManager`)],f);export{f as PluginManager};
@@ -21,7 +21,7 @@ export interface TimeSliderViewModelProperties extends Partial<Pick<TimeSliderVi
21
21
  * can be used to execute custom code such as setting the [timeExtent](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/TimeSliderViewModel/#timeExtent) to a specific date or copying the
22
22
  * timeExtent to the browser's clipboard.
23
23
  *
24
- * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/sandbox/?sample=widgets-timeslider-offset)
24
+ * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
25
25
  *
26
26
  * @since 4.21
27
27
  * @example
@@ -173,6 +173,7 @@ export interface TimeSliderViewModelTriggerActionEvent {
173
173
  * @see [Sample - Time Bar component](https://developers.arcgis.com/javascript/latest/sample-code/time-bar/)
174
174
  * @see [Sample - SceneLayer with time filter](https://developers.arcgis.com/javascript/latest/sample-code/layers-scenelayer-time/)
175
175
  * @see [Sample - Filter features with Time Bar component](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-filter/)
176
+ * @see [Sample - Time Bar with timeOffset and actions](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
176
177
  * @see [Sample - Visualizing wind data with VectorFieldRenderer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-vfrenderer/)
177
178
  * @see [Temporal data (ArcGIS Pro)](https://pro.arcgis.com/en/pro-app/latest/help/mapping/time/temporal-data.htm)
178
179
  * @see [Set time properties on data (ArcGIS Pro)](https://pro.arcgis.com/en/pro-app/latest/help/mapping/time/set-the-time-properties-on-data.htm)
@@ -217,7 +218,7 @@ export default class TimeSliderViewModel extends EventedAccessor {
217
218
  * can be used to execute custom code such as setting the [timeExtent](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/TimeSliderViewModel/#timeExtent) to a specific date or copying the
218
219
  * timeExtent to the browser's clipboard.
219
220
  *
220
- * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/sandbox/?sample=widgets-timeslider-offset)
221
+ * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
221
222
  *
222
223
  * @since 4.21
223
224
  * @example
@@ -26,10 +26,10 @@ export interface TimeSliderProperties extends WidgetProperties, Partial<Pick<Tim
26
26
  * can be used to execute custom code such as setting the [timeExtent](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/#timeExtent) to a specific date or copying the
27
27
  * timeExtent to the browser's clipboard.
28
28
  *
29
- * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/widgets-timeslider-offset/)
29
+ * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
30
30
  *
31
31
  * @since 4.21
32
- * @see [Sample - TimeSlider with offset](https://developers.arcgis.com/javascript/latest/sample-code/widgets-timeslider-offset/)
32
+ * @see [Sample - Time Bar with timeOffset and actions](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
33
33
  * @example
34
34
  * // Create a TimeSlider with two actions to snap the thumb to
35
35
  * // two specific time extents.
@@ -420,6 +420,7 @@ export interface TimeSliderEvents extends TimeSliderViewModelEvents {}
420
420
  * @see [Sample - Time Bar component](https://developers.arcgis.com/javascript/latest/sample-code/time-bar/)
421
421
  * @see [Sample - SceneLayer with time filter](https://developers.arcgis.com/javascript/latest/sample-code/layers-scenelayer-time/)
422
422
  * @see [Sample - Filter features with Time Bar component](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-filter/)
423
+ * @see [Sample - Time Bar with timeOffset and actions](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
423
424
  * @see [Sample - Visualizing wind data with VectorFieldRenderer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-vfrenderer/)
424
425
  * @see [Temporal data (ArcGIS Pro)](https://doc.esri.com/en/arcgis-pro/latest/help/mapping/time/temporal-data.html)
425
426
  * @see [Set time properties on data (ArcGIS Pro)](https://doc.esri.com/en/arcgis-pro/latest/help/mapping/time/set-the-time-properties-on-data.html)
@@ -447,10 +448,10 @@ export default class TimeSlider extends Widget {
447
448
  * can be used to execute custom code such as setting the [timeExtent](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/#timeExtent) to a specific date or copying the
448
449
  * timeExtent to the browser's clipboard.
449
450
  *
450
- * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/widgets-timeslider-offset/)
451
+ * [![widgets-timeSlider-actions](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/timeslider/widgets-timeslider-actions.avif)](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
451
452
  *
452
453
  * @since 4.21
453
- * @see [Sample - TimeSlider with offset](https://developers.arcgis.com/javascript/latest/sample-code/widgets-timeslider-offset/)
454
+ * @see [Sample - Time Bar with timeOffset and actions](https://developers.arcgis.com/javascript/latest/sample-code/time-bar-time-offset/)
454
455
  * @example
455
456
  * // Create a TimeSlider with two actions to snap the thumb to
456
457
  * // two specific time extents.
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{substitute as t}from"../../intl.js";import n from"../../core/Collection.js";import{watch as r}from"../../core/reactiveUtils.js";import{throttle as i}from"../../core/throttle.js";import{property as a,subclass as o}from"../../core/accessorSupport/decorators.js";import{getGraphicLayer as s}from"../../graphic/graphicOriginUtils.js";import{fetchMessageBundle as c}from"../../intl/messages.js";import{isFeatureLayer as l,isSubtypeSublayer as u}from"../../layers/support/layerUtils.js";import{UtilityNetworkAssociationsContent as d}from"../../popup/content.js";import{substituteActionImage as f,getActionStyles as p}from"../../support/actions/actionUtils.js";import m from"../Feature.js";import h from"../Spinner.js";import g from"../Widget.js";import{css as _}from"../Feature/resources.js";import{FeatureContentMixin as v}from"../Feature/support/FeatureContentMixin.js";import{css as y}from"../Features/css.js";import b from"../Features/FeaturesViewModel.js";import{ActionsCollection as x}from"../Popup/actions.js";import{zoomToLocation as S}from"../Popup/actionUtils.js";import{loadCalciteComponents as C}from"../support/componentsUtils.js";import{globalCss as w}from"../support/globalCss.js";import{Heading as T}from"../support/Heading.js";import{tsx as E,messageBundle as D,vmEvent as O}from"../support/widget.js";import k from"./UtilityNetworkTraceFeaturesDrillIn.js";const A=`features-spinner`,j=`esri-utility-network-trace`,M={blockContainer:`${j}__block-container`,blockContent:`${j}__block-content`,featureContent:`${j}__feature-content`,paddingBottom:`${j}__pad-bottom`,paddingTop:`${j}__pad-top`};let N=class extends v(g){constructor(e,t){super(e,t),this._actionBarMenuNode=null,this._drillInFlowItems=new n,this._drillInWidget=new k({flowItems:this._drillInFlowItems}),this._feature=null,this._featureMenuViewportNode=null,this._spinner=null,this._utilityNetworkTraceMessages=null,this.featureNavigationTop=!1,this.headerActions=new x,this.headingLevel=2,this.messages=null,this.messagesCommon=null,this.responsiveActionsEnabled=!1,this.viewModel=new b({suppressDeprecationWarning:!0}),this._renderAction=(e,t)=>{let n=this._getActionTitle(e),{type:r,active:i,uid:a,disabled:o,indicator:s}=e;return e.visible?E(`calcite-action`,{active:r===`toggle`&&e.value,bind:this,"data-action-uid":a,disabled:e.id===`zoom-to-feature`?!this.feature.geometry:o,icon:this._getActionIcon(e),indicator:s,key:`action-${t}`,loading:i,scale:`s`,text:n,title:this._hideActionText?n:void 0,onclick:this._triggerAction},this._renderFallbackIcon(e)):null},this._renderAddNsoBlock=()=>{let{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return E(`calcite-block`,{class:M.blockContent,expanded:!this.feature,heading:e?.inputsStrings.addNonspatialOption},E(`calcite-action`,{icon:`x`,slot:`actions-end`,text:t.close,onclick:()=>this.emit(`close-un-trace-feature-block`)}),E(`calcite-notice`,{icon:`information`,kind:`info`,open:!this.feature},E(`div`,{slot:`message`},e?.inputsStrings.addNonspatialHint)))},this._renderNoPopupErrorBlock=()=>{let{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return E(`calcite-block`,{description:void 0,expanded:!0,heading:this.mode===`show-feature-info`?t.warning:void 0},E(`calcite-notice`,{class:this.classes(M.paddingBottom,M.paddingTop),icon:`exclamation-mark-triangle`,kind:`danger`,open:!0},E(`div`,{slot:`message`},e.alertsStrings.noPopupConfigured)),this.mode===`show-feature-info`?E(`calcite-action`,{icon:`x`,slot:`actions-end`,text:t.close,onclick:()=>this.emit(`close-un-trace-feature-block`)}):void 0)},this._displaySpinnerThrottled=i(()=>this._displaySpinner(),0),this.addHandles([this._displaySpinnerThrottled,r(()=>this.viewModel?.active,e=>this._drillInWidget.closed=!e),r(()=>this.viewModel?.view,(e,t)=>this._viewChange(e,t)),r(()=>this.viewModel?.view?.ready,(e,t)=>this._viewReadyChange(e??!1,t??!1)),r(()=>[this.viewModel?.waitingForResult,this.viewModel?.location],()=>{this._hideSpinner(),this._displaySpinnerThrottled()}),r(()=>this.viewModel?.screenLocation,()=>this._closeOpenActionMenu()),r(()=>this.selectedFeatureWidget,()=>this._destroyDrillInFlowItemWidgets()),r(()=>{let e=this.selectedFeatureWidget?.viewModel;return[e?.title,e?.state]},()=>this._setTitleFromFeatureWidget()),r(()=>{let e=this.selectedFeatureWidget?.viewModel;return[e?.content,e?.state]},()=>this._setContentFromFeatureWidget()),r(()=>this.viewModel?.featureViewModels,()=>this._featureMenuViewportScrollTop()),this._drillInWidget.on(`close`,()=>{this.emit(`close`)}),this._drillInWidget.on(`exit`,()=>this._destroyDrillInFlowItemWidgets()),this._drillInWidget.on(`open-feature`,({feature:e})=>this._openRelatedFeature(e)),this._drillInWidget.on(`zoom-to-feature`,({featureWidget:e})=>S(this.viewModel,e)),this._drillInWidget.on(`add-nso-trace-location`,({featureWidget:e})=>this.emit(`add-nso-trace-location`,{featureWidget:e}))])}initialize(){(async()=>{this._utilityNetworkTraceMessages=await c(`esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace`)})(),this._drillInWidget.mode=this.mode,this._drillInWidget.closable=!1}loadDependencies(){return C({action:()=>import(`@esri/calcite-components/dist/components/calcite-action`),"action-bar":()=>import(`@esri/calcite-components/dist/components/calcite-action-bar`),"action-group":()=>import(`@esri/calcite-components/dist/components/calcite-action-group`),block:()=>import(`@esri/calcite-components/dist/components/calcite-block`),flow:()=>import(`@esri/calcite-components/dist/components/calcite-flow`),"flow-item":()=>import(`@esri/calcite-components/dist/components/calcite-flow-item`),notice:()=>import(`@esri/calcite-components/dist/components/calcite-notice`)})}destroy(){this._destroyDrillInFlowItemWidgets(),this._destroySelectedFeatureWidget(),this._destroySpinner(),this._drillInWidget?.destroy()}get _hideActionText(){if(!this.responsiveActionsEnabled)return!1;let e=this.view?.widthBreakpoint;return e===`xsmall`||e===`small`||e===`medium`}get active(){return this.viewModel.active}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get feature(){return this.viewModel.features.length?this.viewModel.features[0]:null}set feature(e){e?this.viewModel.features=[e]:this.viewModel.features=[]}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get hasAssociationsPopupElement(){if(!this.feature)return!1;let e=s(this.feature),t=e&&l(e)?e:void 0,n=u(e)?e:void 0,r=(t?.popupTemplate||n?.popupTemplate||null)?.content;return!(Array.isArray(r)&&!r.some(e=>e instanceof d))}get hasPopupInfo(){let e=this.feature?s(this.feature):null,t=e&&l(e)?e:void 0,n=u(e)?e:void 0;return!(!t?.popupTemplate&&!n?.popupTemplate)}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get mode(){return this._get(`mode`)||`add-nso`}set mode(e){this._set(`mode`,e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedDrillInFeature(){let e=Array.from(this._drillInFlowItems).at(-1);if(!e)return null;let{flowType:t}=e;return t===`feature-association`||t===`feature-relationship`?e.graphic??null:null}get selectedFeatureWidget(){let{_feature:e,headingLevel:t,_drillInFlowItems:n,timeZone:r}=this,{selectedFeatureViewModel:i}=this.viewModel,a={title:!1};return i?(e?(e.viewModel=i,e.visibleElements=a):this._feature=new m({flowItems:n,headingLevel:t+1,timeZone:r,viewModel:i,visibleElements:a}),this._feature):null}get timeZone(){return this.viewModel.timeZone}set timeZone(e){this.viewModel.timeZone=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}open(e){this.removeHandles(`selected-index`),this.viewModel.open({features:[e]})}triggerAction(e){return this.viewModel.triggerAction(e)}render(){return E(`div`,{bind:this,class:this.classes(y.base,w.widget,w.panel,M.blockContainer)},this.mode===`add-nso`?this._renderAddNsoBlock():void 0,this.feature?this.hasPopupInfo?this._renderContentContainer():this._renderNoPopupErrorBlock():void 0)}_renderActionBar(){return this.viewModel.allActions?.length?E(`calcite-action-bar`,{expandDisabled:!0,expanded:!this._hideActionText,key:`header-action-bar`,scale:`s`,slot:`action-bar`},E(`calcite-action-group`,{afterCreate:e=>this._actionBarMenuNode=e,overlayPositioning:`fixed`,scale:`s`},this._renderActions())):null}_renderActions(){return this.viewModel.allActions.toArray().map(this._renderAction)}_renderContent(){let e=this.viewModel?.content;return e?typeof e==`string`?E(`div`,{class:_.contentNode,innerHTML:e,key:e}):this.renderNodeContent(e):null}_renderContentContainer(){let e=[this._renderContentFeature(),this._drillInWidget.render()];return E(`calcite-flow`,{key:`content-container`},e)}_renderContentFeature(){let{_drillInFlowItems:e,headingLevel:t,featureNavigationTop:n}=this,{title:r,active:i}=this.viewModel,a=r||``;return E(`calcite-flow-item`,{bind:this,class:this.classes({[y.contentFeature]:!0}),closed:!i,collapseDirection:n?`down`:`up`,headingLevel:t,key:`root-flow-item`,loading:this.viewModel.waitingForContents,selected:e.length===0},this.mode===`show-feature-info`?E(`calcite-action`,{icon:`x`,slot:`header-actions-end`,text:this.messagesCommon.close,onclick:()=>{this.emit(`close`)}}):void 0,a?E(T,{class:this.classes(y.featuresHeading,w.heading),innerHTML:a,key:`header-content`,level:this.headingLevel,slot:`header-content`}):null,this._renderHeaderActions(),this._renderActionBar(),E(`div`,{class:this.mode===`add-nso`?this.classes(y.container,y.contentContainer):this.classes(y.container,y.contentContainer,M.featureContent)},this._renderContent()))}_renderFallbackIcon(e){let{className:t,icon:n}=e;if(n)return null;let r=f({action:e,feature:this.selectedFeature}),i={[y.icon]:!!t,[y.actionImage]:!!r};return t&&(i[t]=!0),r||t?E(`span`,{"aria-hidden":`true`,class:this.classes(y.icon,i),key:`icon`,styles:p(r)}):null}_renderHeaderAction(e,t){let n=e.title||``;return e.visible?E(`calcite-action`,{active:e.type===`toggle`&&e.value,bind:this,"data-action-uid":e.uid,disabled:e.disabled||!this.feature.geometry,icon:e.icon??void 0,indicator:e.indicator,key:`header-action-${t}`,loading:e.active,slot:`header-actions-end`,text:n,title:n,onclick:this._triggerHeaderAction}):null}_renderHeaderActions(){return this.headerActions.map((e,t)=>this._renderHeaderAction(e,t)).toArray()}_closeOpenActionMenu(){let{_actionBarMenuNode:e}=this;e&&(e.menuOpen=!1)}_createSpinner(e){e&&(this._spinner=new h({view:e}),e.ui.add(this._spinner,{key:A,position:`manual`,internal:!0}))}_destroyDrillInFlowItemWidgets(){this._drillInFlowItems.drain(e=>{`showAllEnabled`in e.viewModel&&(e.viewModel.showAllEnabled=!1),e.viewModel=null,e.destroy()})}_destroySelectedFeatureWidget(){let{_feature:e}=this;e&&(e.viewModel=null,!e.destroyed&&e.destroy()),this._feature=null}_destroySpinner(){let{_spinner:e,view:t}=this;e&&(t?.ui?.remove(e,A),e.destroy(),this._spinner=null)}_displaySpinner(){let{_spinner:e}=this;if(!e)return;let{location:t,waitingForResult:n}=this.viewModel;n&&t?e.show({location:t}):e.hide()}_featureMenuViewportScrollTop(){this._featureMenuViewportNode?.scrollContentTo({top:0})}_getActionIcon(e){if(e.icon)return e.icon;if(!e.image&&!e.className)return`question`}_getActionTitle(e){let{messages:n,selectedFeature:r,messagesCommon:i}=this,{id:a}=e,o=r?.attributes,s=e.title??``,c=a===`zoom-to-feature`?t(s,{messages:n}):a===`remove-selected-feature`?t(s,{messages:i}):a===`zoom-to-clustered-features`||a===`browse-clustered-features`?t(s,{messages:n}):e.title;return c&&o?t(c,o):c??``}_hideSpinner(){let{_spinner:e}=this;e&&(e.location=null,e.hide())}async _openRelatedFeature(e){await e.viewModel.updateGeometry();let t=e.graphic,n=t?.geometry;n!=null&&t!=null&&(this._destroyDrillInFlowItemWidgets(),await this.viewModel.zoomTo({target:n}),this.open(t))}_setContentFromFeatureWidget(){let{selectedFeatureWidget:e}=this;e&&(this.viewModel.content=e)}_setTitleFromFeatureWidget(){let{selectedFeatureWidget:e,messagesCommon:t}=this,n=e?.viewModel;e&&(this.viewModel.title=n?.state===`error`?t?.errorMessage:n?.title||``)}_triggerAction(e){let t=e.currentTarget;if(t.disabled)return;let n=t.dataset.actionUid,{allActions:r}=this.viewModel,i=r.findIndex(e=>e.uid===n),a=r.at(i);a?.type===`toggle`&&(a.value=!a.value),this.viewModel.triggerAction(i)}_triggerHeaderAction(e){let t=e.currentTarget;if(t.disabled)return;let n=t.dataset.actionUid,r=this.headerActions.find(({uid:e})=>e===n);r&&!r.disabled&&(r?.type===`toggle`&&(r.value=!r.value),this.emit(`trigger-header-action`,{action:r}))}_viewReadyChange(e,t){if(e){this._wireUpView(this.viewModel?.view);return}t&&this.viewModel.clear()}_viewChange(e,t){e&&t&&this.viewModel.clear()}_wireUpView(e){this._destroySpinner(),e&&this._createSpinner(e)}};e([a()],N.prototype,`_drillInFlowItems`,void 0),e([a()],N.prototype,`_hideActionText`,null),e([a({readOnly:!0})],N.prototype,`active`,null),e([a()],N.prototype,`content`,null),e([a()],N.prototype,`feature`,null),e([a()],N.prototype,`featureNavigationTop`,void 0),e([a()],N.prototype,`goToOverride`,null),e([a()],N.prototype,`hasAssociationsPopupElement`,null),e([a()],N.prototype,`hasPopupInfo`,null),e([a({type:x})],N.prototype,`headerActions`,void 0),e([a()],N.prototype,`headingLevel`,void 0),e([a()],N.prototype,`location`,null),e([a(),D(`esri/widgets/Features/t9n/Features`)],N.prototype,`messages`,void 0),e([a(),D(`esri/t9n/common`)],N.prototype,`messagesCommon`,void 0),e([a()],N.prototype,`mode`,null),e([a()],N.prototype,`promises`,null),e([a()],N.prototype,`responsiveActionsEnabled`,void 0),e([a({readOnly:!0})],N.prototype,`selectedFeature`,null),e([a({readOnly:!0})],N.prototype,`selectedDrillInFeature`,null),e([a({readOnly:!0})],N.prototype,`selectedFeatureWidget`,null),e([a()],N.prototype,`timeZone`,null),e([a()],N.prototype,`view`,null),e([a({type:b}),O([`triggerAction`,`trigger-action`])],N.prototype,`viewModel`,void 0),N=e([o(`esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceFeature`)],N);const P=N;export{P as default};
2
+ import{__decorate as e}from"tslib";import{substitute as t}from"../../intl.js";import n from"../../core/Collection.js";import{watch as r}from"../../core/reactiveUtils.js";import{throttle as i}from"../../core/throttle.js";import{property as a,subclass as o}from"../../core/accessorSupport/decorators.js";import{getGraphicLayer as s}from"../../graphic/graphicOriginUtils.js";import{fetchMessageBundle as c}from"../../intl/messages.js";import{isFeatureLayer as l,isSubtypeSublayer as u}from"../../layers/support/layerUtils.js";import d from"../../popup/content/UtilityNetworkAssociationsContent.js";import{substituteActionImage as f,getActionStyles as p}from"../../support/actions/actionUtils.js";import m from"../Feature.js";import h from"../Spinner.js";import g from"../Widget.js";import{css as _}from"../Feature/resources.js";import{FeatureContentMixin as v}from"../Feature/support/FeatureContentMixin.js";import{css as y}from"../Features/css.js";import b from"../Features/FeaturesViewModel.js";import{ActionsCollection as x}from"../Popup/actions.js";import{zoomToLocation as S}from"../Popup/actionUtils.js";import{loadCalciteComponents as C}from"../support/componentsUtils.js";import{globalCss as w}from"../support/globalCss.js";import{Heading as T}from"../support/Heading.js";import{tsx as E,messageBundle as D,vmEvent as O}from"../support/widget.js";import k from"./UtilityNetworkTraceFeaturesDrillIn.js";const A=`features-spinner`,j=`esri-utility-network-trace`,M={blockContainer:`${j}__block-container`,blockContent:`${j}__block-content`,featureContent:`${j}__feature-content`,paddingBottom:`${j}__pad-bottom`,paddingTop:`${j}__pad-top`};let N=class extends v(g){constructor(e,t){super(e,t),this._actionBarMenuNode=null,this._drillInFlowItems=new n,this._drillInWidget=new k({flowItems:this._drillInFlowItems}),this._feature=null,this._featureMenuViewportNode=null,this._spinner=null,this._utilityNetworkTraceMessages=null,this.featureNavigationTop=!1,this.headerActions=new x,this.headingLevel=2,this.messages=null,this.messagesCommon=null,this.responsiveActionsEnabled=!1,this.viewModel=new b({suppressDeprecationWarning:!0}),this._renderAction=(e,t)=>{let n=this._getActionTitle(e),{type:r,active:i,uid:a,disabled:o,indicator:s}=e;return e.visible?E(`calcite-action`,{active:r===`toggle`&&e.value,bind:this,"data-action-uid":a,disabled:e.id===`zoom-to-feature`?!this.feature.geometry:o,icon:this._getActionIcon(e),indicator:s,key:`action-${t}`,loading:i,scale:`s`,text:n,title:this._hideActionText?n:void 0,onclick:this._triggerAction},this._renderFallbackIcon(e)):null},this._renderAddNsoBlock=()=>{let{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return E(`calcite-block`,{class:M.blockContent,expanded:!this.feature,heading:e?.inputsStrings.addNonspatialOption},E(`calcite-action`,{icon:`x`,slot:`actions-end`,text:t.close,onclick:()=>this.emit(`close-un-trace-feature-block`)}),E(`calcite-notice`,{icon:`information`,kind:`info`,open:!this.feature},E(`div`,{slot:`message`},e?.inputsStrings.addNonspatialHint)))},this._renderNoPopupErrorBlock=()=>{let{_utilityNetworkTraceMessages:e,messagesCommon:t}=this;return E(`calcite-block`,{description:void 0,expanded:!0,heading:this.mode===`show-feature-info`?t.warning:void 0},E(`calcite-notice`,{class:this.classes(M.paddingBottom,M.paddingTop),icon:`exclamation-mark-triangle`,kind:`danger`,open:!0},E(`div`,{slot:`message`},e.alertsStrings.noPopupConfigured)),this.mode===`show-feature-info`?E(`calcite-action`,{icon:`x`,slot:`actions-end`,text:t.close,onclick:()=>this.emit(`close-un-trace-feature-block`)}):void 0)},this._displaySpinnerThrottled=i(()=>this._displaySpinner(),0),this.addHandles([this._displaySpinnerThrottled,r(()=>this.viewModel?.active,e=>this._drillInWidget.closed=!e),r(()=>this.viewModel?.view,(e,t)=>this._viewChange(e,t)),r(()=>this.viewModel?.view?.ready,(e,t)=>this._viewReadyChange(e??!1,t??!1)),r(()=>[this.viewModel?.waitingForResult,this.viewModel?.location],()=>{this._hideSpinner(),this._displaySpinnerThrottled()}),r(()=>this.viewModel?.screenLocation,()=>this._closeOpenActionMenu()),r(()=>this.selectedFeatureWidget,()=>this._destroyDrillInFlowItemWidgets()),r(()=>{let e=this.selectedFeatureWidget?.viewModel;return[e?.title,e?.state]},()=>this._setTitleFromFeatureWidget()),r(()=>{let e=this.selectedFeatureWidget?.viewModel;return[e?.content,e?.state]},()=>this._setContentFromFeatureWidget()),r(()=>this.viewModel?.featureViewModels,()=>this._featureMenuViewportScrollTop()),this._drillInWidget.on(`close`,()=>{this.emit(`close`)}),this._drillInWidget.on(`exit`,()=>this._destroyDrillInFlowItemWidgets()),this._drillInWidget.on(`open-feature`,({feature:e})=>this._openRelatedFeature(e)),this._drillInWidget.on(`zoom-to-feature`,({featureWidget:e})=>S(this.viewModel,e)),this._drillInWidget.on(`add-nso-trace-location`,({featureWidget:e})=>this.emit(`add-nso-trace-location`,{featureWidget:e}))])}initialize(){(async()=>{this._utilityNetworkTraceMessages=await c(`esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace`)})(),this._drillInWidget.mode=this.mode,this._drillInWidget.closable=!1}loadDependencies(){return C({action:()=>import(`@esri/calcite-components/dist/components/calcite-action`),"action-bar":()=>import(`@esri/calcite-components/dist/components/calcite-action-bar`),"action-group":()=>import(`@esri/calcite-components/dist/components/calcite-action-group`),block:()=>import(`@esri/calcite-components/dist/components/calcite-block`),flow:()=>import(`@esri/calcite-components/dist/components/calcite-flow`),"flow-item":()=>import(`@esri/calcite-components/dist/components/calcite-flow-item`),notice:()=>import(`@esri/calcite-components/dist/components/calcite-notice`)})}destroy(){this._destroyDrillInFlowItemWidgets(),this._destroySelectedFeatureWidget(),this._destroySpinner(),this._drillInWidget?.destroy()}get _hideActionText(){if(!this.responsiveActionsEnabled)return!1;let e=this.view?.widthBreakpoint;return e===`xsmall`||e===`small`||e===`medium`}get active(){return this.viewModel.active}get content(){return this.viewModel.content}set content(e){this.viewModel.content=e}get feature(){return this.viewModel.features.length?this.viewModel.features[0]:null}set feature(e){e?this.viewModel.features=[e]:this.viewModel.features=[]}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get hasAssociationsPopupElement(){if(!this.feature)return!1;let e=s(this.feature),t=e&&l(e)?e:void 0,n=u(e)?e:void 0,r=(t?.popupTemplate||n?.popupTemplate||null)?.content;return!(Array.isArray(r)&&!r.some(e=>e instanceof d))}get hasPopupInfo(){let e=this.feature?s(this.feature):null,t=e&&l(e)?e:void 0,n=u(e)?e:void 0;return!(!t?.popupTemplate&&!n?.popupTemplate)}get location(){return this.viewModel.location}set location(e){this.viewModel.location=e}get mode(){return this._get(`mode`)||`add-nso`}set mode(e){this._set(`mode`,e)}get promises(){return this.viewModel.promises}set promises(e){this.viewModel.promises=e}get selectedFeature(){return this.viewModel.selectedFeature}get selectedDrillInFeature(){let e=Array.from(this._drillInFlowItems).at(-1);if(!e)return null;let{flowType:t}=e;return t===`feature-association`||t===`feature-relationship`?e.graphic??null:null}get selectedFeatureWidget(){let{_feature:e,headingLevel:t,_drillInFlowItems:n,timeZone:r}=this,{selectedFeatureViewModel:i}=this.viewModel,a={title:!1};return i?(e?(e.viewModel=i,e.visibleElements=a):this._feature=new m({flowItems:n,headingLevel:t+1,timeZone:r,viewModel:i,visibleElements:a}),this._feature):null}get timeZone(){return this.viewModel.timeZone}set timeZone(e){this.viewModel.timeZone=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}open(e){this.removeHandles(`selected-index`),this.viewModel.open({features:[e]})}triggerAction(e){return this.viewModel.triggerAction(e)}render(){return E(`div`,{bind:this,class:this.classes(y.base,w.widget,w.panel,M.blockContainer)},this.mode===`add-nso`?this._renderAddNsoBlock():void 0,this.feature?this.hasPopupInfo?this._renderContentContainer():this._renderNoPopupErrorBlock():void 0)}_renderActionBar(){return this.viewModel.allActions?.length?E(`calcite-action-bar`,{expandDisabled:!0,expanded:!this._hideActionText,key:`header-action-bar`,scale:`s`,slot:`action-bar`},E(`calcite-action-group`,{afterCreate:e=>this._actionBarMenuNode=e,overlayPositioning:`fixed`,scale:`s`},this._renderActions())):null}_renderActions(){return this.viewModel.allActions.toArray().map(this._renderAction)}_renderContent(){let e=this.viewModel?.content;return e?typeof e==`string`?E(`div`,{class:_.contentNode,innerHTML:e,key:e}):this.renderNodeContent(e):null}_renderContentContainer(){let e=[this._renderContentFeature(),this._drillInWidget.render()];return E(`calcite-flow`,{key:`content-container`},e)}_renderContentFeature(){let{_drillInFlowItems:e,headingLevel:t,featureNavigationTop:n}=this,{title:r,active:i}=this.viewModel,a=r||``;return E(`calcite-flow-item`,{bind:this,class:this.classes({[y.contentFeature]:!0}),closed:!i,collapseDirection:n?`down`:`up`,headingLevel:t,key:`root-flow-item`,loading:this.viewModel.waitingForContents,selected:e.length===0},this.mode===`show-feature-info`?E(`calcite-action`,{icon:`x`,slot:`header-actions-end`,text:this.messagesCommon.close,onclick:()=>{this.emit(`close`)}}):void 0,a?E(T,{class:this.classes(y.featuresHeading,w.heading),innerHTML:a,key:`header-content`,level:this.headingLevel,slot:`header-content`}):null,this._renderHeaderActions(),this._renderActionBar(),E(`div`,{class:this.mode===`add-nso`?this.classes(y.container,y.contentContainer):this.classes(y.container,y.contentContainer,M.featureContent)},this._renderContent()))}_renderFallbackIcon(e){let{className:t,icon:n}=e;if(n)return null;let r=f({action:e,feature:this.selectedFeature}),i={[y.icon]:!!t,[y.actionImage]:!!r};return t&&(i[t]=!0),r||t?E(`span`,{"aria-hidden":`true`,class:this.classes(y.icon,i),key:`icon`,styles:p(r)}):null}_renderHeaderAction(e,t){let n=e.title||``;return e.visible?E(`calcite-action`,{active:e.type===`toggle`&&e.value,bind:this,"data-action-uid":e.uid,disabled:e.disabled||!this.feature.geometry,icon:e.icon??void 0,indicator:e.indicator,key:`header-action-${t}`,loading:e.active,slot:`header-actions-end`,text:n,title:n,onclick:this._triggerHeaderAction}):null}_renderHeaderActions(){return this.headerActions.map((e,t)=>this._renderHeaderAction(e,t)).toArray()}_closeOpenActionMenu(){let{_actionBarMenuNode:e}=this;e&&(e.menuOpen=!1)}_createSpinner(e){e&&(this._spinner=new h({view:e}),e.ui.add(this._spinner,{key:A,position:`manual`,internal:!0}))}_destroyDrillInFlowItemWidgets(){this._drillInFlowItems.drain(e=>{`showAllEnabled`in e.viewModel&&(e.viewModel.showAllEnabled=!1),e.viewModel=null,e.destroy()})}_destroySelectedFeatureWidget(){let{_feature:e}=this;e&&(e.viewModel=null,!e.destroyed&&e.destroy()),this._feature=null}_destroySpinner(){let{_spinner:e,view:t}=this;e&&(t?.ui?.remove(e,A),e.destroy(),this._spinner=null)}_displaySpinner(){let{_spinner:e}=this;if(!e)return;let{location:t,waitingForResult:n}=this.viewModel;n&&t?e.show({location:t}):e.hide()}_featureMenuViewportScrollTop(){this._featureMenuViewportNode?.scrollContentTo({top:0})}_getActionIcon(e){if(e.icon)return e.icon;if(!e.image&&!e.className)return`question`}_getActionTitle(e){let{messages:n,selectedFeature:r,messagesCommon:i}=this,{id:a}=e,o=r?.attributes,s=e.title??``,c=a===`zoom-to-feature`?t(s,{messages:n}):a===`remove-selected-feature`?t(s,{messages:i}):a===`zoom-to-clustered-features`||a===`browse-clustered-features`?t(s,{messages:n}):e.title;return c&&o?t(c,o):c??``}_hideSpinner(){let{_spinner:e}=this;e&&(e.location=null,e.hide())}async _openRelatedFeature(e){await e.viewModel.updateGeometry();let t=e.graphic,n=t?.geometry;n!=null&&t!=null&&(this._destroyDrillInFlowItemWidgets(),await this.viewModel.zoomTo({target:n}),this.open(t))}_setContentFromFeatureWidget(){let{selectedFeatureWidget:e}=this;e&&(this.viewModel.content=e)}_setTitleFromFeatureWidget(){let{selectedFeatureWidget:e,messagesCommon:t}=this,n=e?.viewModel;e&&(this.viewModel.title=n?.state===`error`?t?.errorMessage:n?.title||``)}_triggerAction(e){let t=e.currentTarget;if(t.disabled)return;let n=t.dataset.actionUid,{allActions:r}=this.viewModel,i=r.findIndex(e=>e.uid===n),a=r.at(i);a?.type===`toggle`&&(a.value=!a.value),this.viewModel.triggerAction(i)}_triggerHeaderAction(e){let t=e.currentTarget;if(t.disabled)return;let n=t.dataset.actionUid,r=this.headerActions.find(({uid:e})=>e===n);r&&!r.disabled&&(r?.type===`toggle`&&(r.value=!r.value),this.emit(`trigger-header-action`,{action:r}))}_viewReadyChange(e,t){if(e){this._wireUpView(this.viewModel?.view);return}t&&this.viewModel.clear()}_viewChange(e,t){e&&t&&this.viewModel.clear()}_wireUpView(e){this._destroySpinner(),e&&this._createSpinner(e)}};e([a()],N.prototype,`_drillInFlowItems`,void 0),e([a()],N.prototype,`_hideActionText`,null),e([a({readOnly:!0})],N.prototype,`active`,null),e([a()],N.prototype,`content`,null),e([a()],N.prototype,`feature`,null),e([a()],N.prototype,`featureNavigationTop`,void 0),e([a()],N.prototype,`goToOverride`,null),e([a()],N.prototype,`hasAssociationsPopupElement`,null),e([a()],N.prototype,`hasPopupInfo`,null),e([a({type:x})],N.prototype,`headerActions`,void 0),e([a()],N.prototype,`headingLevel`,void 0),e([a()],N.prototype,`location`,null),e([a(),D(`esri/widgets/Features/t9n/Features`)],N.prototype,`messages`,void 0),e([a(),D(`esri/t9n/common`)],N.prototype,`messagesCommon`,void 0),e([a()],N.prototype,`mode`,null),e([a()],N.prototype,`promises`,null),e([a()],N.prototype,`responsiveActionsEnabled`,void 0),e([a({readOnly:!0})],N.prototype,`selectedFeature`,null),e([a({readOnly:!0})],N.prototype,`selectedDrillInFeature`,null),e([a({readOnly:!0})],N.prototype,`selectedFeatureWidget`,null),e([a()],N.prototype,`timeZone`,null),e([a()],N.prototype,`view`,null),e([a({type:b}),O([`triggerAction`,`trigger-action`])],N.prototype,`viewModel`,void 0),N=e([o(`esri.widgets.UtilityNetworkTrace.UtilityNetworkTraceFeature`)],N);const P=N;export{P as default};
@@ -18,13 +18,13 @@ export type UtilityNetworkValidateTopologyViewModelExtentOption = "current" | "e
18
18
  export type UtilityNetworkValidateTopologyViewModelState = "loading" | "ready" | "executing" | "success" | "failed" | "disabled";
19
19
 
20
20
  /**
21
- * Provides the logic for the [UtilityNetworkValidateTopology](https://developers.arcgis.com/javascript/latest/references/core/widgets/UtilityNetworkValidateTopology/) widget and [component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-validate-topology/).
21
+ * Provides the logic for the [UtilityNetworkValidateTopology](https://developers.arcgis.com/javascript/latest/references/core/widgets/UtilityNetworkValidateTopology/) widget and the legacy [Utility Network Validate Topology component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-validate-topology/).
22
22
  *
23
- * @deprecated since version 5.0. Use [UtilityNetwork.validateTopology()](https://developers.arcgis.com/javascript/latest/references/core/networks/UtilityNetwork/#validateTopology) instead.
23
+ * @deprecated since version 5.0. Use [UtilityNetwork.validateTopology()](https://developers.arcgis.com/javascript/latest/references/core/networks/UtilityNetwork/#validateTopology) instead. For an interactive workflow, use the [Utility Network Validate Network Topology component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-validate-network-topology/).
24
24
  * @since 4.27
25
25
  * @see [UtilityNetwork](https://developers.arcgis.com/javascript/latest/references/core/networks/UtilityNetwork/)
26
26
  * @see [UtilityNetworkValidateTopology](https://developers.arcgis.com/javascript/latest/references/core/widgets/UtilityNetworkValidateTopology/) widget
27
- * @see [Utility Network Validate Topology component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-validate-topology/)
27
+ * @see [Utility Network Validate Network Topology component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-validate-network-topology/)
28
28
  */
29
29
  export default class UtilityNetworkValidateTopologyViewModel extends Accessor {
30
30
  constructor(properties?: UtilityNetworkValidateTopologyViewModelProperties);
@@ -50,7 +50,7 @@ export type UtilityNetworkValidateTopologyExtentOption = "current" | "entire";
50
50
  * >
51
51
  * > The UtilityNetworkValidateTopology widget class is unable to support proxied feature services or feature services that utilize stored credentials.
52
52
  *
53
- * @deprecated since version 5.0. Use the [Utility Network Validate Topology component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-validate-topology/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
53
+ * @deprecated since version 5.0. Use the [Utility Network Validate Network Topology component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-validate-network-topology/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
54
54
  * @since 4.27
55
55
  * @see [UtilityNetwork](https://developers.arcgis.com/javascript/latest/references/core/networks/UtilityNetwork/)
56
56
  * @see [UtilityNetworkValidateTopologyViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/UtilityNetworkValidateTopology/UtilityNetworkValidateTopologyViewModel/)