@arcgis/core 5.2.0-next.154 → 5.2.0-next.156

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 (240) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/{d994bcf0a65d1c07160f.js → 0320cbd825f9a4222042.js} +1 -1
  3. package/assets/esri/core/workers/chunks/0590857215c547e63b51.js +1 -0
  4. package/assets/esri/core/workers/chunks/08fe248e412bb170210d.js +1 -0
  5. package/assets/esri/core/workers/chunks/0cb50bc2b2125c5fedf2.js +1 -0
  6. package/assets/esri/core/workers/chunks/1201b8c5852830836eac.js +1 -0
  7. package/assets/esri/core/workers/chunks/129e04d24ced77c9bb6d.js +1 -0
  8. package/assets/esri/core/workers/chunks/15e1117a706a98b17ad5.js +1 -0
  9. package/assets/esri/core/workers/chunks/164e74d586297946a717.js +1 -0
  10. package/assets/esri/core/workers/chunks/168a523bdc3653081f8a.js +1 -0
  11. package/assets/esri/core/workers/chunks/{6f4e6022a52de0c54aab.js → 172cfeb5f415e4662432.js} +1 -1
  12. package/assets/esri/core/workers/chunks/1aa4f5394a596e544aeb.js +1 -0
  13. package/assets/esri/core/workers/chunks/22b01fe31bbf0bdc48db.js +1 -0
  14. package/assets/esri/core/workers/chunks/27c2da2e779def2ee08b.js +1 -0
  15. package/assets/esri/core/workers/chunks/28b74bc77f7c13080074.js +1 -0
  16. package/assets/esri/core/workers/chunks/{481589c3eddad6e026ad.js → 369780276b2755361f7d.js} +1 -1
  17. package/assets/esri/core/workers/chunks/3914d96147642a9d4b01.js +1 -0
  18. package/assets/esri/core/workers/chunks/{731018c0deffc41ffc97.js → 3e3e076fa5e8d5d5f33f.js} +1 -1
  19. package/assets/esri/core/workers/chunks/43cf862577bf37344ff4.js +1 -0
  20. package/assets/esri/core/workers/chunks/4932773663469919d10a.js +1 -0
  21. package/assets/esri/core/workers/chunks/4996869b9cbd8c8ddcfa.js +1 -0
  22. package/assets/esri/core/workers/chunks/4c389472b8cdb0c55154.js +1 -0
  23. package/assets/esri/core/workers/chunks/4e4f747de424941a0bfa.js +1 -0
  24. package/assets/esri/core/workers/chunks/{eb815148ae65388dd733.js → 544070198d2ca556103a.js} +1 -1
  25. package/assets/esri/core/workers/chunks/5736feefa261589b6273.js +1 -0
  26. package/assets/esri/core/workers/chunks/{aeaaff7a4b1a99540f52.js → 5cb26bbaa08114aec5ce.js} +1 -1
  27. package/assets/esri/core/workers/chunks/5f4feca26102088ea565.js +1 -0
  28. package/assets/esri/core/workers/chunks/{407f1e8176f3b0af73b4.js → 66867e523cc82f8fe35b.js} +1 -1
  29. package/assets/esri/core/workers/chunks/6f73e41e14817acfaead.js +1 -0
  30. package/assets/esri/core/workers/chunks/{320e5942a098dd104366.js → 74137ffec5265628c33b.js} +1 -1
  31. package/assets/esri/core/workers/chunks/7446d0dfebf93e86c098.js +1 -0
  32. package/assets/esri/core/workers/chunks/{688f2dbf784e66082308.js → 74c866e0b66e61751861.js} +1 -1
  33. package/assets/esri/core/workers/chunks/7711ae5612f685078fc8.js +1 -0
  34. package/assets/esri/core/workers/chunks/{5116b569a8dbda4910c8.js → 784a2fba3e18286958d1.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{693873b3eb99fba58fa9.js → 78c4e43cfa1eda06b4d9.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{f6e62d2d279a328cbed7.js → 7bcedf479b07a4b4a234.js} +1 -1
  37. package/assets/esri/core/workers/chunks/81cad8d2f62a5f671c55.js +1 -0
  38. package/assets/esri/core/workers/chunks/{588e677f33df86a595bf.js → 820c8aaf3632edb0150c.js} +1 -1
  39. package/assets/esri/core/workers/chunks/842893e75696428d536f.js +1 -0
  40. package/assets/esri/core/workers/chunks/8e19629899a5becf8e19.js +1 -0
  41. package/assets/esri/core/workers/chunks/950d4578dc450467404c.js +1 -0
  42. package/assets/esri/core/workers/chunks/{68be3fb88ca61f82fb90.js → 95dbbddac6581b9d671f.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{a4162a8660bf763d542d.js → 967b4992b400517ee712.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{adf25e5ed99615b83c68.js → a62c12925303ff802c3d.js} +1 -1
  45. package/assets/esri/core/workers/chunks/{900181f68449d8f82eeb.js → aa1ac7954e4f0fefe15b.js} +1 -1
  46. package/assets/esri/core/workers/chunks/ac24b4370dc7194a3107.js +1 -0
  47. package/assets/esri/core/workers/chunks/acdfd275dbf8533a67f3.js +1 -0
  48. package/assets/esri/core/workers/chunks/ace2e0a9d9013edd8624.js +1 -0
  49. package/assets/esri/core/workers/chunks/b1d5d236d5268fcbc74b.js +1 -0
  50. package/assets/esri/core/workers/chunks/b3007aedbf731dacaff1.js +1 -0
  51. package/assets/esri/core/workers/chunks/{53e2f2b922116a45fe8f.js → b573df59391ca41ee5a7.js} +1 -1
  52. package/assets/esri/core/workers/chunks/bac8c32665e982896ecc.js +1 -0
  53. package/assets/esri/core/workers/chunks/{f3da30d7300b92bd8bb0.js → befa32b9e7b3fbdd431e.js} +1 -1
  54. package/assets/esri/core/workers/chunks/c19f238b55ff2893f7c2.js +1 -0
  55. package/assets/esri/core/workers/chunks/c5ed67fdf261cbb1624b.js +1 -0
  56. package/assets/esri/core/workers/chunks/c72a904e01dc8c17d992.js +1 -0
  57. package/assets/esri/core/workers/chunks/d9b1aed88b205689cec6.js +1 -0
  58. package/assets/esri/core/workers/chunks/de6081df29183bf80787.js +1 -0
  59. package/assets/esri/core/workers/chunks/{c598b22f78ccc57f9d6d.js → dfd2dc5cdc97ffba8926.js} +1 -1
  60. package/assets/esri/core/workers/chunks/e1b7806ab3e1967b15f0.js +1 -0
  61. package/assets/esri/core/workers/chunks/e653c81ffb3d818645dd.js +1 -0
  62. package/assets/esri/core/workers/chunks/eaddffcc7004101fc230.js +1 -0
  63. package/assets/esri/core/workers/chunks/eb2652ec48faa78de3c5.js +1 -0
  64. package/assets/esri/core/workers/chunks/{c62738f84c914671b143.js → f4a7aa3cdbc0c429c359.js} +1 -1
  65. package/assets/esri/core/workers/chunks/fda83bcb8e40e8044c24.js +1 -0
  66. package/assets/esri/libs/pdfjs/wasm/openjpeg_nowasm_fallback.js +1 -0
  67. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +4 -0
  68. package/assets/esri/themes/dark/main.css +1 -1
  69. package/assets/esri/themes/light/main.css +1 -1
  70. package/assets/esri/themes/light/view.css +1 -1
  71. package/assets/esri/widgets/support/uriUtils/t9n/messages.fr.json +1 -1
  72. package/config.d.ts +2 -0
  73. package/config.js +1 -1
  74. package/core/ObjectPool.js +1 -1
  75. package/core/PooledArray.js +1 -1
  76. package/core/accessorSupport/tracking/SimpleTrackingTarget.js +1 -1
  77. package/geometry/support/buffer/BufferPool.js +1 -1
  78. package/geometry/support/coordsUtils.js +1 -1
  79. package/geometry/support/curves/ellipticArc7Utils.js +1 -1
  80. package/geometry/support/curves/mathUtils.js +1 -1
  81. package/interfaces.d.ts +18 -9
  82. package/kernel.js +1 -1
  83. package/layers/AnnotationFeatureLayer.d.ts +2 -2
  84. package/layers/AnnotationFeatureLayer.js +1 -1
  85. package/layers/CatalogLayer.d.ts +2 -2
  86. package/layers/CatalogLayer.js +1 -1
  87. package/layers/DimensionFeatureLayer.d.ts +2 -2
  88. package/layers/DimensionFeatureLayer.js +1 -1
  89. package/layers/FeatureLayer.d.ts +2 -2
  90. package/layers/FeatureLayer.js +1 -1
  91. package/layers/SubtypeGroupLayer.d.ts +2 -2
  92. package/layers/SubtypeGroupLayer.js +1 -1
  93. package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
  94. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +9 -9
  95. package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
  96. package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
  97. package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
  98. package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
  99. package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
  100. package/layers/graphics/sources/GeoJSONSource.js +1 -1
  101. package/layers/graphics/sources/geojson/GeoJSONSourceWorker.js +1 -1
  102. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  103. package/layers/graphics/sources/support/MemorySourceWorker.js +1 -1
  104. package/layers/graphics/sources/support/clientSideDefaults.js +1 -1
  105. package/layers/graphics/sources/support/sourceUtils.js +1 -1
  106. package/layers/mixins/{FeatureLayerReload.d.ts → ReloadableLayer.d.ts} +5 -3
  107. package/layers/mixins/ReloadableLayer.js +2 -0
  108. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  109. package/layers/raster/datasets/BaseRaster.js +1 -1
  110. package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
  111. package/layers/raster/datasets/ImageAuxRaster.js +1 -1
  112. package/layers/raster/datasets/ImageServerRaster.js +1 -1
  113. package/layers/raster/datasets/MRFRaster.js +1 -1
  114. package/layers/raster/datasets/TIFFRaster.js +1 -1
  115. package/layers/raster/datasets/WCSRaster.js +1 -1
  116. package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
  117. package/layers/raster/formats/RasterCodec.js +1 -1
  118. package/layers/raster/formats/TiffDecoder.js +1 -1
  119. package/layers/raster/formats/Zlib.js +1 -1
  120. package/layers/support/RasterWorker.js +1 -1
  121. package/layers/support/fieldUtils.js +1 -1
  122. package/layers/support/vectorTileLayerLoader.js +1 -1
  123. package/package.json +2 -2
  124. package/popup/FeatureModel.js +1 -1
  125. package/popup/FeaturesModel.js +1 -1
  126. package/portal/schemas/definitions.js +1 -1
  127. package/request/process.js +1 -1
  128. package/request/types.d.ts +7 -0
  129. package/symbols/cim/cimAnalyzer.js +1 -1
  130. package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
  131. package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSource.js +1 -1
  132. package/views/2d/engine/vectorTiles/style/GeoJSONVectorTileSourceWorker.js +1 -1
  133. package/views/2d/engine/vectorTiles/style/geoJSONVectorTileUtils.js +2 -0
  134. package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueBackground.js +1 -1
  135. package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueFill.js +1 -1
  136. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  137. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  138. package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
  139. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  140. package/views/3d/analysis/LineOfSight/LineOfSightObserverPlugin.js +1 -1
  141. package/views/3d/analysis/LineOfSight/LineOfSightPlacementController.js +1 -1
  142. package/views/3d/analysis/LineOfSight/{LineOfSightRootPlugin.js → LineOfSightPlacementRootPlugin.js} +1 -1
  143. package/views/3d/analysis/LineOfSight/LineOfSightTargetPlugin.js +1 -1
  144. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  145. package/views/3d/analysis/Viewshed/ViewshedPlacementPointPlugin.js +1 -1
  146. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  147. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  148. package/views/3d/interactive/editingTools/ManipulatedObject3DGraphic.js +1 -1
  149. package/views/3d/support/MemoryController.js +1 -1
  150. package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
  151. package/views/3d/webgl-engine/effects/geometry/RenderOccluded.js +1 -1
  152. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  153. package/views/3d/webgl-engine/lib/PathCapBuilder.js +1 -1
  154. package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
  155. package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
  156. package/views/3d/webgl-engine/lib/PathProfile.js +1 -1
  157. package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
  158. package/views/draw/DrawTool.js +1 -1
  159. package/views/draw/support/PluginContext.js +1 -1
  160. package/views/draw/support/managers/TooltipManager.js +1 -1
  161. package/views/draw/support/types.d.ts +5 -2
  162. package/webdoc/applicationProperties/SearchLayerField.d.ts +7 -1
  163. package/webdoc/applicationProperties/SearchLayerField.js +1 -1
  164. package/webdoc/applicationProperties/SearchTableField.d.ts +7 -1
  165. package/webdoc/applicationProperties/SearchTableField.js +1 -1
  166. package/webdoc/applicationProperties/searchMode.js +2 -0
  167. package/widgets/BatchAttributeForm/inputs/support/DynamicChoiceController.js +1 -1
  168. package/widgets/BatchAttributeForm/inputs/support/inputUtils.js +1 -1
  169. package/widgets/BatchAttributeForm.js +1 -1
  170. package/widgets/Editor/EditorViewModel.d.ts +10 -1
  171. package/widgets/Editor.d.ts +10 -1
  172. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  173. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  174. package/widgets/HistogramRangeSlider.d.ts +2 -2
  175. package/widgets/HistogramRangeSlider.js +1 -1
  176. package/widgets/Legend.d.ts +1 -0
  177. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  178. package/widgets/OrientedImageryViewer.js +2 -2
  179. package/widgets/PanoramicViewer/PanoramicVideoViewerViewModel.js +1 -1
  180. package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.d.ts +5 -2
  181. package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.js +1 -1
  182. package/widgets/ScaleRangeSlider.js +1 -1
  183. package/widgets/Search/LayerSearchSource.d.ts +23 -1
  184. package/widgets/Search/LayerSearchSource.js +1 -1
  185. package/widgets/Search/support/layerSearchUtils.js +1 -1
  186. package/widgets/Search/types.d.ts +7 -0
  187. package/widgets/ValuePicker/ValuePickerBaseComponent.d.ts +5 -1
  188. package/widgets/ValuePicker/ValuePickerCollection.d.ts +2 -0
  189. package/widgets/ValuePicker/ValuePickerCombobox.d.ts +7 -1
  190. package/widgets/ValuePicker/ValuePickerLabel.d.ts +7 -1
  191. package/widgets/ValuePicker/ValuePickerSlider.d.ts +2 -0
  192. package/widgets/ValuePicker/ValuePickerSliderVisibleElements.d.ts +5 -1
  193. package/widgets/ValuePicker/ValuePickerVisibleElements.d.ts +5 -1
  194. package/widgets/ValuePicker/types.d.ts +2 -0
  195. package/widgets/support/forms/formUtils.js +1 -1
  196. package/widgets/support/forms/types.d.ts +1 -1
  197. package/assets/esri/core/workers/chunks/03261b9451e293a0fac8.js +0 -1
  198. package/assets/esri/core/workers/chunks/03afeefb9d16b6f1d844.js +0 -1
  199. package/assets/esri/core/workers/chunks/09b9a886363bc1197785.js +0 -1
  200. package/assets/esri/core/workers/chunks/0ad0484ffcbe4ad21bd3.js +0 -1
  201. package/assets/esri/core/workers/chunks/19743dedaa40446259ec.js +0 -1
  202. package/assets/esri/core/workers/chunks/1c65ab9ed611c322ce27.js +0 -1
  203. package/assets/esri/core/workers/chunks/1f339247b68b061ab0a4.js +0 -1
  204. package/assets/esri/core/workers/chunks/251921cd10ecfbc89451.js +0 -1
  205. package/assets/esri/core/workers/chunks/3252b1fae363bb0129a0.js +0 -1
  206. package/assets/esri/core/workers/chunks/408e81c8f1eff8a7b379.js +0 -1
  207. package/assets/esri/core/workers/chunks/4fc337240e7cddd0e988.js +0 -1
  208. package/assets/esri/core/workers/chunks/50036a323c2e7f155311.js +0 -1
  209. package/assets/esri/core/workers/chunks/55dcbf296d8d0092e473.js +0 -1
  210. package/assets/esri/core/workers/chunks/5732fdf6d8b87739aeea.js +0 -1
  211. package/assets/esri/core/workers/chunks/5924ec3167a2941ebb1f.js +0 -1
  212. package/assets/esri/core/workers/chunks/59b216b60464611742d4.js +0 -1
  213. package/assets/esri/core/workers/chunks/5bfea0c55aca826de536.js +0 -1
  214. package/assets/esri/core/workers/chunks/5fa1ec357c3ad1f91bc7.js +0 -1
  215. package/assets/esri/core/workers/chunks/60d3056a31d982c9cad0.js +0 -1
  216. package/assets/esri/core/workers/chunks/6558488ea96620439f34.js +0 -1
  217. package/assets/esri/core/workers/chunks/6aebf7cfd294e88bf926.js +0 -1
  218. package/assets/esri/core/workers/chunks/6b43bb78f9839ed43135.js +0 -1
  219. package/assets/esri/core/workers/chunks/6c83398cf586ecea0eb1.js +0 -1
  220. package/assets/esri/core/workers/chunks/7267b17de212207142c9.js +0 -1
  221. package/assets/esri/core/workers/chunks/7d1fd2df579a4b535e0e.js +0 -1
  222. package/assets/esri/core/workers/chunks/7e0cf70c0eb5a2ddfcec.js +0 -1
  223. package/assets/esri/core/workers/chunks/879b2de825c1dfc8849d.js +0 -1
  224. package/assets/esri/core/workers/chunks/912080c90b5cc2e817cf.js +0 -1
  225. package/assets/esri/core/workers/chunks/917f53833b853898facc.js +0 -1
  226. package/assets/esri/core/workers/chunks/937824bc7948f7bc7845.js +0 -1
  227. package/assets/esri/core/workers/chunks/a97d85774f9a417202df.js +0 -1
  228. package/assets/esri/core/workers/chunks/aff32980d91dab07dfb7.js +0 -1
  229. package/assets/esri/core/workers/chunks/b132ffa7e8bb461b6786.js +0 -1
  230. package/assets/esri/core/workers/chunks/b1b4066e8d1c0c9656e5.js +0 -1
  231. package/assets/esri/core/workers/chunks/b6ba66a05030d3815dfd.js +0 -1
  232. package/assets/esri/core/workers/chunks/bbec9d2e3b75a5c59681.js +0 -1
  233. package/assets/esri/core/workers/chunks/bf69024804ac51c8f733.js +0 -1
  234. package/assets/esri/core/workers/chunks/d938987344bce83cc660.js +0 -1
  235. package/assets/esri/core/workers/chunks/db1ab9b9c8bf5c7635d3.js +0 -1
  236. package/assets/esri/core/workers/chunks/e01aeac34474540f61ee.js +0 -1
  237. package/assets/esri/core/workers/chunks/e15ba90af0faf873b42d.js +0 -1
  238. package/assets/esri/core/workers/chunks/fd9663952d5a94f3a83f.js +0 -1
  239. package/layers/mixins/FeatureLayerReload.js +0 -2
  240. /package/views/3d/analysis/LineOfSight/{lineOfSightPlacementUtils.js → placementUtils.js} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import{createTask as r}from"../../core/asyncUtils.js";import{makeHandle as i,disposable as a}from"../../core/handleUtils.js";import o from"../../core/Logger.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import{destroyMaybe as c,abortMaybe as l}from"../../core/maybe.js";import{ignoreAbortErrors as u}from"../../core/promiseUtils.js";import{when as d,initial as f,watch as p,syncAndInitial as ee,on as m,sync as h}from"../../core/reactiveUtils.js";import{screenPointEqual as g,createScreenPoint as _}from"../../core/screenUtils.js";import{diff as v}from"../../core/accessorSupport/diffUtils.js";import{property as y}from"../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as x}from"../../core/support/UpdatingHandles.js";import te from"../../geometry/Polygon.js";import{simplifyIsSimple as S,simplifyExecute as C}from"../../geometry/operators/simplifyOperator.js";import{isPolygon as w}from"../../geometry/support/typeUtils.js";import{isCurvedGeometry as T}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{getEffectiveElevationInfo as D}from"../../support/elevationInfoUtils.js";import{getMaxDeviationInPixels as O,getMinSegmentsPerCurve as k}from"../2d/layers/graphics/densificationConstants.js";import{createSnappingVisualizer as A}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as j,markHandled as M,getPointerType as N,getPointerId as P}from"./support/drawToolUtils.js";import{PluginContext as F}from"./support/PluginContext.js";import{viewEventToCommand as I}from"./support/input/drawToolInput.js";import{EditSessionManager as L}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as R}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as z}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as B}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as V}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as H}from"./support/managers/SurfaceManager.js";import{TooltipManager as U}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as W}from"../input/InputManager.js";import{createCoordinateHelper as G}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as K}from"../interactive/InteractiveToolBase.js";import{KeyBindings as q,mediaKeys as J,sketchKeys as Y,advancedSketchKeys as X,tooltipKeys as Z}from"../interactive/keybindings.js";import{isInputModeAvailable as ne}from"../interactive/tooltip/tooltipCommonUtils.js";const Q=Symbol();let $=class extends K{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._queuedFeedbackEvents=[],this._flushingQueuedFeedbackEvents=!1,this._commandsSuspended=!1,this._snappingVisualizer=null,this._segmentLabels=null,this._segmentLabelsImportTask=null,this._updatingHandles=new x,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type=`draw-2.0`,this.automaticManipulatorSelection=!0,this.snappingManager=null,this.toolOptions=null,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new B,this.globalStateManager=new R({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new L({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new V({getContext:this._getContextForPlugin.bind(this),editSessionManager:this.editSessionManager,afterAttach:this._afterAttach.bind(this),afterDetach:this._afterDetach.bind(this),beforeResume:this._beforeResume.bind(this)}),this.surfaceManager=null,this.interactiveHandleManager=null,this.renderer=null,this.readPluginSetting=null,this.enableVertexVisuals=!0}initialize(){let{view:e}=this;this.interactiveHandleManager=new z({view:e,renderer:this.renderer}),this._override(`manipulators`,this.interactiveHandleManager.manipulators),this.tooltipManager=new U({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(d(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:`outputGeometry`}),t.addOrUpdateVisual(this._vertexVisualId,{role:`vertex`}),this._updatingHandles.addPromise(A(e,t).then(e=>this._snappingVisualizer=e))},f)),this.addHandles([p(()=>[this.view,this.coordinateHelper.spatialReference,this.defaultZ,this.hasZ,this.elevationInfo],([e,t,n,r,i])=>{this.surfaceManager?.destroy(),this.surfaceManager=new H({spatialReference:t,excludedGraphicsLayer:null,defaultZ:n,hasZ:r,view:e,elevationInfo:i,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},ee),d(()=>this.toolOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),p(()=>[this.editGeometryOperations,this.toolOptions?.labels.enabled,this.globalStateManager.segmentLabelsDisabled],()=>{this._updatingHandles.addPromise(this._setupSegmentLabels())},f),m(()=>this.editSessionManager,`cancelPlugin`,({plugin:e})=>{this._suspendPlugin(e)},h),m(()=>this.editSessionManager,`restartPlugin`,({restartInfo:e})=>{this._resumePlugin(e)},h),p(()=>this.lifecycleManager.updating,e=>{e||this._emitQueuedFeedbackEvents()},h),m(()=>this.editGeometryOperations,[`vertex-add`,`vertex-update`,`vertex-remove`],e=>{let t=e.vertices.map(e=>({componentIndex:0,vertexIndex:e.index,coordinates:this.coordinateHelper.vectorToArray(e.pos)})),n=t.map(e=>e.coordinates);switch(e.type){case`vertex-add`:this._emitWhenReady(e.type,{...e,added:n,vertices:t});break;case`vertex-update`:this._emitWhenReady(e.type,{...e,updated:n,vertices:t});break;case`vertex-remove`:this._emitWhenReady(e.type,{...e,removed:n,vertices:t})}})])}destroy(){this.active&&this.onDeactivate(),this.editSessionManager.destroy(),this.lifecycleManager.destroy(),this.measurementManager.destroy(),this.globalStateManager.destroy();for(let e of this._pluginContexts.values())e.destroy();this._pluginContexts.clear(),this.surfaceManager=c(this.surfaceManager),this.interactiveHandleManager=c(this.interactiveHandleManager),this._segmentLabelsImportTask=l(this._segmentLabelsImportTask),this._segmentLabels=c(this._segmentLabels),this.tooltipManager=c(this.tooltipManager)}get _zOfLastUserInput(){let e=(this.mostDownstreamPlugin&&this.editSessionManager.getSession(this.mostDownstreamPlugin))?.firstPointAddedBySession?.point;return e?.hasZ?e.z:null}get _tooltipDependencies(){let{defaultZ:e,editGeometryOperations:t,toolOptions:n,directionOptions:r,elevationInfo:i,view:a}=this;return!t||!n||!a?null:{defaultZ:e,directionOptions:r,elevationInfo:i,editGeometryOperations:t,toolOptions:n,view:a,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,getAllHandles:()=>this.interactiveHandleManager?.allhandles,getHelpMessageKey:()=>this.helpMessageKey,notifyTooltipsChanged:()=>{let{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}}get _editSessionManagerContext(){let{coordinateHelper:e,view:t}=this;return t?{coordinateHelper:e,viewingMode:t.type===`3d`&&t.viewingMode===`global`?1:2}:null}get _densificationParameters(){let{view:e,coordinateHelper:t}=this,n=t.spatialReference,r=e?.spatialReference,i=e.resolution;if(!n||!r||!i||!Number.isFinite(i))return null;let a=r.metersPerUnit/n.metersPerUnit;return{maxDeviation:2**Math.round(Math.log2(i))*O()*a,minSegmentsPerCurve:k()}}get test(){return{densificationParameters:this._densificationParameters,segmentLabels:this._segmentLabels}}get updating(){return this._updatingHandles.updating||this.snappingManager?.updating||this.lifecycleManager.updating||!!this._segmentLabels?.updating}get coordinateHelper(){return G(this.hasZ,!1,this.view.spatialReference)}get editGeometry(){return this.editGeometryOperations?.data}get editGeometryOperations(){return this.editSessionManager.editGeometryOperations}get unprocessedGeometry(){return this.editSessionManager.outputGeometry}get simplifiedGeometryPreview(){let e=this.editSessionManager.outputGeometry;if(e&&w(e))try{let t=this._densificationParameters,n=T(e)&&t?new te({...E(e,t)}):e;if(!S(n))return C(n)}catch{return e}return e}get _suppressCoincidentPointOverlaysIn3D(){return this.view.type===`3d`&&this.unprocessedGeometry?.type===`point`&&!!this.interactiveHandleManager?.allhandles?.find(e=>e.role===`primary`)?.outputMapPosition}get _shapeVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.simplifiedGeometryPreview}get _vertexVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.unprocessedGeometry}get canUndo(){return this.editSessionManager.canUndo}get canRedo(){return this.editSessionManager.canRedo}get pluginStack(){return this.lifecycleManager.pluginStack}get mostDownstreamPlugin(){return this.pluginStack.at(-1)}get mostUpstreamPlugin(){return this.pluginStack.at(0)}get positionOfLastUserInput(){let e=this.lastScreenPosition;return e?this.surfaceManager?.screenToMap(e,{firstPointZ:this._zOfLastUserInput})??this.view.toMap(e):this.view.center}get movementCommandContext(){let{editGeometryOperations:e,tooltipManager:t,surfaceManager:n,snappingManager:r,interactiveHandleManager:i,_snappingVisualizer:a,defaultZ:o,hasZ:s,globalStateManager:{drawAtFixedElevation:c},view:l}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:n,interactiveHandleManager:i,snappingManager:r,snappingVisualizer:a,pointerType:`mouse`,hasZ:s,defaultZ:o,view:l,drawAtFixedElevation:c}}get tooltip(){return this.tooltipManager?.tooltip}get activeTooltipInfo(){return this.tooltipManager?.tooltipInfo}get helpMessageKey(){return this.pluginStack.items.findLast(e=>e.helpMessageKey)?.helpMessageKey??`noTool`}begin(e){if(!this.active){this._pendingBeginRequest=e;return}this.lifecycleManager.begin(e),this._pendingBeginRequest=null}complete(e){let t=this.lifecycleManager;if(e&&t.complete(e),t.pluginStack.length===0){let e=this.unprocessedGeometry,t=!e||e.type===`mesh`||S(e);this.emit(`complete`,{geometry:e,isSimple:t,aborted:!1,type:`complete`,vertices:[]}),this.view?.activeTool===this&&(this.view.activeTool=null)}}cancelFirstUserLeafPlugin(){let e=this.pluginStack.toArray().findLast(e=>e.configuration?.hidden!==!0);e&&this.lifecycleManager.cancel(e)}getVertexSnappingCandidates(){return this.interactiveHandleManager?.capturingHandle?.role===`secondary`?[]:this.snappingManager?.getVertexCandidates()??[]}replaceLeaf(e){let t=this.lifecycleManager;if(t.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,`replaceLeaf`);return}t.replaceLeaf(e)}finishPart(){let e=this.mostUpstreamPlugin?.configuration;if(this.editGeometryOperations&&e&&e.kind?.includes(`multipart`)){let e=this.pluginStack.at(1);e&&this.complete(e)}}undo(){this._handleCommand({action:`undo`})}redo(){this._handleCommand({action:`redo`})}executeCommand(e){return this._handleCommand(e)}suspendCommands(){return this._commandsSuspended=!0,i(()=>{this._commandsSuspended=!1;let e=this.view?.inputManager.latestPointerInfo;if(e){let{x:t,y:n}=e.location;this._handleCommand({action:`manipulator-move-to`,x:t,y:n})}})}addPromise(e){return this._updatingHandles.addPromise(e)}readPluginSettingValue(e,t){return this.readPluginSetting?.(e,t)}getGeometryIfCompleted(){let e=this.lifecycleManager.gatherCompletablePlugins();return this.editSessionManager?.generatePreviewGeometryForPlugins(e)}onActivate(){super.onActivate();let{view:e}=this;this.lastScreenPosition=e?.inputManager.latestPointerInfo?.location,this.renderer?.activate(),this._pendingBeginRequest&&=(this.begin(this._pendingBeginRequest),null),this.enableVertexVisuals&&this.addHandles(p(()=>this._vertexVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?j(e):null})},f)),this.addHandles([p(()=>this._shapeVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e})},f),d(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:g}),p(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{let n=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&n&&this._emitWhenReady(`cursor-update`,{updated:n.pos,type:`vertex-update`,operation:`apply`,vertices:[{componentIndex:n.part.index,vertexIndex:n.index,coordinates:n.pos}]})},h),this._keybindings.register(e,W.TOOL),p(()=>e.viewpoint,(e,t)=>{e&&t&&v(e,t)&&this._handleCommand({action:`viewpoint-moved`})})],Q)}onDeactivate(){super.onDeactivate(),this.removeHandles(Q),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){e.type===`pointer-down`?this.interactiveHandleManager?.notePointerDown(e.pointerId,e.pointerType):(e.type===`pointer-up`||e.type===`pointer-leave`)&&this.interactiveHandleManager?.notePointerUp(e.pointerId,e.pointerType);let t=I(e);t&&this._handleCommand(t)}forceAddVertex(){this._commitNext()}_emitWhenReady(e,t){if(this.destroyed)return;let n=()=>{this.emit(e,t)};this.lifecycleManager.updating||this._flushingQueuedFeedbackEvents?this._queuedFeedbackEvents.push(n):n()}_emitQueuedFeedbackEvents(){if(!(this.destroyed||this._flushingQueuedFeedbackEvents||this.lifecycleManager.updating||this._queuedFeedbackEvents.length===0)){this._flushingQueuedFeedbackEvents=!0;try{for(;!this.destroyed&&!this.lifecycleManager.updating&&this._queuedFeedbackEvents.length>0;)this._queuedFeedbackEvents.shift()?.()}finally{this._flushingQueuedFeedbackEvents=!1}}}async _handleCommand(e){if(!this._commandsSuspended){if(this.lifecycleManager.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,e.action);return}switch(e.action){case`view-drag`:return await this._handleViewDragCommand(e);case`vertex-add`:return this._guardCommand(e,()=>{M(e),this._commitNext()});case`vertex-add-and-finish-part`:return this._handleVertexAddAndFinishPartCommand(e);case`cancel`:return this._guardCommand(e,()=>this.cancel());case`complete`:return this._guardCommand(e,()=>{this.mostUpstreamPlugin&&(M(e),this.complete(this.mostUpstreamPlugin))});case`finish-part`:return this._guardCommand(e,()=>this.finishPart());case`undo`:return this._guardCommand(e,()=>this.editSessionManager.undo());case`redo`:return this._guardCommand(e,()=>this.editSessionManager.redo());case`next-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`forward`));case`previous-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`backward`));case`toggle-manipulator-follow`:this.interactiveHandleManager?.toggleFollow()&&M(e);break;case`viewpoint-moved`:return await this._handleViewpointMovedCommand(e);case`manipulator-move-to`:return await this._handleManipulatorMoveToCommand(e);case`manipulator-drag-to`:return await this._handleManipulatorDragToCommand(e);case`vertex-add-at-point`:return await this._handleVertexAddAtPointCommand(e);case`show-tooltip`:return this._guardCommand(e,async()=>{let t=this.tooltipManager?.tooltip;t&&ne(t.info)&&(await t.enterInputMode(),M(e))});case`constraint-center`:this.globalStateManager.setCentered(e.enabled);break;case`constraint-aspect`:this.globalStateManager.setPreserveAspectRatio(e.enabled)}}}async _handleViewDragCommand(e){if(!this.editable)return;let t=e.originalEvent,n=this.interactiveHandleManager?.capturingHandle;if(t&&`pointerType`in t&&t.pointerType===`touch`&&(n?.captureMode===`capture-always`||n?.captureMode===`capture-when-engaged`)){M(e);return}if(this.interactiveHandleManager?.capturingHandle?.captureMode===`capture-when-engaged`){M(e);return}if(this._before(e)){M(e);return}}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(M(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:t,pointerId:n})),this.interactiveHandleManager?.updateAllScreenPositions(this.movementCommandContext.surfaceManager)}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&M(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e),i=this.interactiveHandleManager?.findHandleByManipulator(r,t);t===`touch`&&i&&e.state===`start`&&this.interactiveHandleManager?.releaseHandle();let a=this.interactiveHandleManager?.findHandleDragging(),o=this.interactiveHandleManager?.capturingHandle,s=a??o??i;s&&!i&&M(e),s?.captureMode===`capture-when-engaged`||s?.captureMode===`capture-always`&&t===`touch`?e.state===`end`?await this._updatingHandles.addPromise(s.noteDragEnd(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&s.role===`primary`&&(this.interactiveHandleManager?.handleCount===1?this._handleCommand({action:`vertex-add`}):this.interactiveHandleManager?.releaseHandle())})):e.state===`start`?await this._updatingHandles.addPromise(s.noteDragStart(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&!s.editSession?.lastPointAddedBySession&&this._handleCommand({action:`vertex-add`})})):await this._updatingHandles.addPromise(s?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})):s?.captureMode===`grabbable-object`&&(this.interactiveHandleManager?.releaseHandle(o),await this._updatingHandles.addPromise(s.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})))}async _handleVertexAddAtPointCommand(e){let t=this._updateLastScreenPosition(e),n=N(e.originalEvent),r=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(r,n))return;let i=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t,n);this.editable&&i&&(this._before(e)||(M(e),await this._updatingHandles.addPromise(i.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:n,pointerId:r}).finally(()=>this._commitNext()))))}_makeKeyBindings(){let e=new q,t=(t,n)=>{e.addToggle(t,e=>this._handleCommand({action:n,originalEvent:e,enabled:e.type===`key-down`}))},n=(t,n)=>{e.add(t,e=>this._handleCommand({action:n,originalEvent:e}))};return t(J.preserveAspectRatio,`constraint-aspect`),t(Y.center,`constraint-center`),n(X.toggleFollowManipulator,`toggle-manipulator-follow`),n(Y.undo,`undo`),n(Y.redo,`redo`),n(Y.complete,`complete`),n(Y.vertexAdd,`vertex-add`),n({key:Z.enterInputMode,continuePropagation:!0,repeats:!0},`show-tooltip`),e}_afterAttach(){}_afterDetach(e){this.interactiveHandleManager?.unregisterCustomConstraint(e),this.interactiveHandleManager?.unregisterHandle(e),this.tooltipManager?.unregisterPluginFields(e),this.globalStateManager.clearPluginOverrides(e);let t=this._pluginContexts.get(e);t&&(t.destroy(),this._pluginContexts.delete(e))}_beforeResume(e,t){this.interactiveHandleManager?.replaceEditSessions(e,t)}_commitNext(){let n={stack:[],error:void 0,hasError:!1};try{let t=this.mostDownstreamPlugin;if(!t)return;this.tooltipManager?.storeConstraintSnapshot();let r=!1,i=this.editGeometryOperations;e(n,i?a(i.on(`vertex-add`,()=>r=!0)):null,!1),t.completeStep?t.completeStep():this.complete(t),r&&this.tooltipManager?.unlockOnVertexPlacement()}catch(e){n.error=e,n.hasError=!0}finally{t(n)}}_suspendPlugin(e){this.lifecycleManager.suspend(e),this.measurementManager.suspendPlugin(e)}_resumePlugin(e){this.lifecycleManager.resume(e)}_updateLastScreenPosition(e){let t=_(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){let n=s(this._pluginContexts,e,()=>new F({drawTool:this,plugin:e,session:t}));return n.session=t,n}_before(e){if(!this.hasEventListener(`before-${e.action}`))return!1;let t=new CustomEvent(`before-${e.action}`,{detail:e,cancelable:!0});return this.emit(`before-${e.action}`,t),t.defaultPrevented}_guardCommand(e,t,n){return this._before(e)?n?.():t()}async _setupSegmentLabels(){let e=this.editGeometryOperations,t=this.toolOptions?.labels,n=!!t?.enabled,r=this.globalStateManager.segmentLabelsDisabled;if(!e||!t||!n){this._segmentLabels=c(this._segmentLabels);return}if(r){this._segmentLabels&&(this._segmentLabels.visible=!1);return}if(this._segmentLabels?.context?.editGeometryOperations===e&&this._segmentLabels.context.labelOptions===t){this._segmentLabels.visible=!0;return}let i=await this._createSegmentLabels(e,t);i&&(this._segmentLabels=c(this._segmentLabels),this._segmentLabels=i)}async _createSegmentLabels(e,t){this._segmentLabelsImportTask?.abort();let n=this._segmentLabelsImportTask=r(async n=>{if(this.view.type===`3d`){let r=import(`../3d/interactive/SegmentLabels3D.js`),{SegmentLabels3D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})}let r=import(`../2d/interactive/SegmentLabels2D.js`),{SegmentLabels2D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})});return u(n.promise)}_isSegmentLabelsSetupStale(e,t,n){return e.aborted||this.editGeometryOperations!==t||this.toolOptions?.labels!==n||!n.enabled||this.globalStateManager.segmentLabelsDisabled}};n([y()],$.prototype,`_commandsSuspended`,void 0),n([y()],$.prototype,`_zOfLastUserInput`,null),n([y()],$.prototype,`_snappingVisualizer`,void 0),n([y()],$.prototype,`_segmentLabels`,void 0),n([y()],$.prototype,`_segmentLabelsImportTask`,void 0),n([y()],$.prototype,`_tooltipDependencies`,null),n([y()],$.prototype,`_editSessionManagerContext`,null),n([y()],$.prototype,`_densificationParameters`,null),n([y({constructOnly:!0,nonNullable:!0})],$.prototype,`view`,void 0),n([y()],$.prototype,`automaticManipulatorSelection`,void 0),n([y()],$.prototype,`updating`,null),n([y()],$.prototype,`coordinateHelper`,null),n([y()],$.prototype,`editGeometry`,null),n([y()],$.prototype,`editGeometryOperations`,null),n([y()],$.prototype,`unprocessedGeometry`,null),n([y()],$.prototype,`simplifiedGeometryPreview`,null),n([y()],$.prototype,`_suppressCoincidentPointOverlaysIn3D`,null),n([y()],$.prototype,`_shapeVisualGeometry`,null),n([y()],$.prototype,`_vertexVisualGeometry`,null),n([y()],$.prototype,`snappingManager`,void 0),n([y()],$.prototype,`toolOptions`,void 0),n([y()],$.prototype,`elevationInfo`,void 0),n([y()],$.prototype,`hasZ`,void 0),n([y()],$.prototype,`defaultZ`,void 0),n([y()],$.prototype,`directionOptions`,void 0),n([y()],$.prototype,`canUndo`,null),n([y()],$.prototype,`canRedo`,null),n([y()],$.prototype,`pluginStack`,null),n([y()],$.prototype,`mostDownstreamPlugin`,null),n([y()],$.prototype,`mostUpstreamPlugin`,null),n([y()],$.prototype,`lastScreenPosition`,void 0),n([y()],$.prototype,`positionOfLastUserInput`,null),n([y()],$.prototype,`tooltipManager`,void 0),n([y()],$.prototype,`measurementManager`,void 0),n([y()],$.prototype,`globalStateManager`,void 0),n([y()],$.prototype,`editSessionManager`,void 0),n([y()],$.prototype,`lifecycleManager`,void 0),n([y()],$.prototype,`surfaceManager`,void 0),n([y()],$.prototype,`interactiveHandleManager`,void 0),n([y()],$.prototype,`renderer`,void 0),n([y()],$.prototype,`readPluginSetting`,void 0),n([y()],$.prototype,`movementCommandContext`,null),n([y()],$.prototype,`tooltip`,null),n([y()],$.prototype,`activeTooltipInfo`,null),n([y()],$.prototype,`helpMessageKey`,null),n([y({constructOnly:!0})],$.prototype,`enableVertexVisuals`,void 0),$=n([b(`esri.views.draw.DrawTool`)],$);export{$ as DrawTool};
2
+ import{__addDisposableResource as e,__disposeResources as t,__decorate as n}from"tslib";import{createTask as r}from"../../core/asyncUtils.js";import{makeHandle as i,disposable as a}from"../../core/handleUtils.js";import o from"../../core/Logger.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import{destroyMaybe as c,abortMaybe as l}from"../../core/maybe.js";import{ignoreAbortErrors as u}from"../../core/promiseUtils.js";import{when as d,initial as f,watch as p,syncAndInitial as ee,on as m,sync as h}from"../../core/reactiveUtils.js";import{screenPointEqual as g,createScreenPoint as _}from"../../core/screenUtils.js";import{diff as v}from"../../core/accessorSupport/diffUtils.js";import{property as y}from"../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as x}from"../../core/support/UpdatingHandles.js";import te from"../../geometry/Polygon.js";import{simplifyIsSimple as S,simplifyExecute as C}from"../../geometry/operators/simplifyOperator.js";import{isPolygon as w}from"../../geometry/support/typeUtils.js";import{isCurvedGeometry as T}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as E}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{getEffectiveElevationInfo as D}from"../../support/elevationInfoUtils.js";import{getMaxDeviationInPixels as O,getMinSegmentsPerCurve as k}from"../2d/layers/graphics/densificationConstants.js";import{createSnappingVisualizer as A}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as j,markHandled as M,getPointerType as N,getPointerId as P}from"./support/drawToolUtils.js";import{PluginContext as F}from"./support/PluginContext.js";import{viewEventToCommand as I}from"./support/input/drawToolInput.js";import{EditSessionManager as L}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as R}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as z}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as B}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as V}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as H}from"./support/managers/SurfaceManager.js";import{TooltipManager as U}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as W}from"../input/InputManager.js";import{createCoordinateHelper as G}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as K}from"../interactive/InteractiveToolBase.js";import{KeyBindings as q,mediaKeys as J,sketchKeys as Y,advancedSketchKeys as X,tooltipKeys as Z}from"../interactive/keybindings.js";import{isInputModeAvailable as ne}from"../interactive/tooltip/tooltipCommonUtils.js";const Q=Symbol();let $=class extends K{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._queuedFeedbackEvents=[],this._flushingQueuedFeedbackEvents=!1,this._commandsSuspended=!1,this._snappingVisualizer=null,this._segmentLabels=null,this._segmentLabelsImportTask=null,this._updatingHandles=new x,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type=`draw-2.0`,this.automaticManipulatorSelection=!0,this.snappingManager=null,this.toolOptions=null,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new B,this.globalStateManager=new R({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new L({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new V({getContext:this._getContextForPlugin.bind(this),editSessionManager:this.editSessionManager,afterAttach:this._afterAttach.bind(this),afterDetach:this._afterDetach.bind(this),beforeResume:this._beforeResume.bind(this)}),this.surfaceManager=null,this.interactiveHandleManager=null,this.renderer=null,this.readPluginSetting=null,this.enableVertexVisuals=!0}initialize(){let{view:e}=this;this.interactiveHandleManager=new z({view:e,renderer:this.renderer}),this._override(`manipulators`,this.interactiveHandleManager.manipulators),this.tooltipManager=new U({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(d(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:`outputGeometry`}),t.addOrUpdateVisual(this._vertexVisualId,{role:`vertex`}),this._updatingHandles.addPromise(A(e,t).then(e=>this._snappingVisualizer=e))},f)),this.addHandles([p(()=>[this.view,this.coordinateHelper.spatialReference,this.defaultZ,this.hasZ,this.elevationInfo],([e,t,n,r,i])=>{this.surfaceManager?.destroy(),this.surfaceManager=new H({spatialReference:t,excludedGraphicsLayer:null,defaultZ:n,hasZ:r,view:e,elevationInfo:i,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},ee),d(()=>this.toolOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),p(()=>[this.editGeometryOperations,this.toolOptions?.labels.enabled,this.globalStateManager.segmentLabelsDisabled],()=>{this._updatingHandles.addPromise(this._setupSegmentLabels())},f),m(()=>this.editSessionManager,`cancelPlugin`,({plugin:e})=>{this._suspendPlugin(e)},h),m(()=>this.editSessionManager,`restartPlugin`,({restartInfo:e})=>{this._resumePlugin(e)},h),p(()=>this.lifecycleManager.updating,e=>{e||this._emitQueuedFeedbackEvents()},h),m(()=>this.editGeometryOperations,[`vertex-add`,`vertex-update`,`vertex-remove`],e=>{let t=e.vertices.map(e=>({componentIndex:0,vertexIndex:e.index,coordinates:this.coordinateHelper.vectorToArray(e.pos)})),n=t.map(e=>e.coordinates);switch(e.type){case`vertex-add`:this._emitWhenReady(e.type,{...e,added:n,vertices:t});break;case`vertex-update`:this._emitWhenReady(e.type,{...e,updated:n,vertices:t});break;case`vertex-remove`:this._emitWhenReady(e.type,{...e,removed:n,vertices:t})}})])}destroy(){this.active&&this.onDeactivate(),this.editSessionManager.destroy(),this.lifecycleManager.destroy(),this.measurementManager.destroy(),this.globalStateManager.destroy();for(let e of this._pluginContexts.values())e.destroy();this._pluginContexts.clear(),this.surfaceManager=c(this.surfaceManager),this.interactiveHandleManager=c(this.interactiveHandleManager),this._segmentLabelsImportTask=l(this._segmentLabelsImportTask),this._segmentLabels=c(this._segmentLabels),this.tooltipManager=c(this.tooltipManager)}get _zOfLastUserInput(){let e=(this.mostDownstreamPlugin&&this.editSessionManager.getSession(this.mostDownstreamPlugin))?.firstPointAddedBySession?.point;return e?.hasZ?e.z:null}get _tooltipDependencies(){let{defaultZ:e,editGeometryOperations:t,toolOptions:n,directionOptions:r,elevationInfo:i,view:a}=this;return!t||!n||!a?null:{defaultZ:e,directionOptions:r,elevationInfo:i,editGeometryOperations:t,toolOptions:n,view:a,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,getAllHandles:()=>this.interactiveHandleManager?.allhandles,getHelpMessageKey:()=>this.helpMessageKey,notifyTooltipsChanged:()=>{let{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}}get _editSessionManagerContext(){let{coordinateHelper:e,view:t}=this;return t?{coordinateHelper:e,viewingMode:t.type===`3d`&&t.viewingMode===`global`?1:2}:null}get _densificationParameters(){let{view:e,coordinateHelper:t}=this,n=t.spatialReference,r=e?.spatialReference,i=e.resolution;if(!n||!r||!i||!Number.isFinite(i))return null;let a=r.metersPerUnit/n.metersPerUnit;return{maxDeviation:2**Math.round(Math.log2(i))*O()*a,minSegmentsPerCurve:k()}}get test(){return{densificationParameters:this._densificationParameters,segmentLabels:this._segmentLabels}}get updating(){return this._updatingHandles.updating||this.snappingManager?.updating||this.lifecycleManager.updating||!!this._segmentLabels?.updating}get coordinateHelper(){return G(this.hasZ,!1,this.view.spatialReference)}get editGeometry(){return this.editGeometryOperations?.data}get editGeometryOperations(){return this.editSessionManager.editGeometryOperations}get unprocessedGeometry(){return this.editSessionManager.outputGeometry}get simplifiedGeometryPreview(){let e=this.editSessionManager.outputGeometry;if(e&&w(e))try{let t=this._densificationParameters,n=T(e)&&t?new te({...E(e,t)}):e;if(!S(n))return C(n)}catch{return e}return e}get _suppressCoincidentPointOverlaysIn3D(){return this.view.type===`3d`&&this.unprocessedGeometry?.type===`point`&&!!this.interactiveHandleManager?.allhandles?.find(e=>e.role===`primary`)?.outputMapPosition}get _shapeVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.simplifiedGeometryPreview}get _vertexVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.unprocessedGeometry}get canUndo(){return this.editSessionManager.canUndo}get canRedo(){return this.editSessionManager.canRedo}get pluginStack(){return this.lifecycleManager.pluginStack}get mostDownstreamPlugin(){return this.pluginStack.at(-1)}get mostUpstreamPlugin(){return this.pluginStack.at(0)}get positionOfLastUserInput(){let e=this.lastScreenPosition;return e?this.surfaceManager?.screenToMap(e,{firstPointZ:this._zOfLastUserInput})??this.view.toMap(e):this.view.center}get movementCommandContext(){let{editGeometryOperations:e,tooltipManager:t,surfaceManager:n,snappingManager:r,interactiveHandleManager:i,_snappingVisualizer:a,defaultZ:o,hasZ:s,globalStateManager:{drawAtFixedElevation:c},view:l}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:n,interactiveHandleManager:i,snappingManager:r,snappingVisualizer:a,pointerType:`mouse`,hasZ:s,defaultZ:o,view:l,drawAtFixedElevation:c}}get tooltip(){return this.tooltipManager?.tooltip}get activeTooltipInfo(){return this.tooltipManager?.tooltipInfo}get helpMessageKey(){return this.pluginStack.items.findLast(e=>e.helpMessageKey)?.helpMessageKey??`noTool`}begin(e){if(!this.active){this._pendingBeginRequest=e;return}this.lifecycleManager.begin(e),this._pendingBeginRequest=null}complete(e){let t=this.lifecycleManager;if(e&&t.complete(e),t.pluginStack.length===0){let e=this.unprocessedGeometry,t=!e||e.type===`mesh`||S(e);this.emit(`complete`,{geometry:e,isSimple:t,aborted:!1,type:`complete`,vertices:[]}),this.view?.activeTool===this&&(this.view.activeTool=null)}}cancelFirstUserLeafPlugin(){let e=this.pluginStack.toArray().findLast(e=>e.configuration?.hidden!==!0);e&&this.lifecycleManager.cancel(e)}getVertexSnappingCandidates(){return this.interactiveHandleManager?.capturingHandle?.role===`secondary`?[]:this.snappingManager?.getVertexCandidates()??[]}replaceLeaf(e){let t=this.lifecycleManager;if(t.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,`replaceLeaf`);return}t.replaceLeaf(e)}finishPart(){let e=this.mostUpstreamPlugin?.configuration;if(this.editGeometryOperations&&e&&e.kind?.includes(`multipart`)){let e=this.pluginStack.at(1);e&&this.complete(e)}}undo(){this._handleCommand({action:`undo`})}redo(){this._handleCommand({action:`redo`})}executeCommand(e){return this._handleCommand(e)}suspendCommands(){return this._commandsSuspended=!0,i(()=>{this._commandsSuspended=!1;let e=this.view?.inputManager.latestPointerInfo;if(e){let{x:t,y:n}=e.location;this._handleCommand({action:`manipulator-move-to`,x:t,y:n})}})}addPromise(e){return this._updatingHandles.addPromise(e)}readPluginSettingValue(e,t){return this.readPluginSetting?.(e,t)}getGeometryIfCompleted(){let e=this.lifecycleManager.gatherCompletablePlugins();return this.editSessionManager?.generatePreviewGeometryForPlugins(e)}onActivate(){super.onActivate();let{view:e}=this;this.lastScreenPosition=e?.inputManager.latestPointerInfo?.location,this.renderer?.activate(),this._pendingBeginRequest&&=(this.begin(this._pendingBeginRequest),null),this.enableVertexVisuals&&this.addHandles(p(()=>this._vertexVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?j(e):null})},f)),this.addHandles([p(()=>this._shapeVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e})},f),d(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:g}),p(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{let n=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&n&&this._emitWhenReady(`cursor-update`,{updated:n.pos,type:`vertex-update`,operation:`apply`,vertices:[{componentIndex:n.part.index,vertexIndex:n.index,coordinates:n.pos}]})},h),this._keybindings.register(e,W.TOOL),p(()=>e.viewpoint,(e,t)=>{e&&t&&v(e,t)&&this._handleCommand({action:`viewpoint-moved`})})],Q)}onDeactivate(){super.onDeactivate(),this.removeHandles(Q),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){e.type===`pointer-down`?this.interactiveHandleManager?.notePointerDown(e.pointerId,e.pointerType):(e.type===`pointer-up`||e.type===`pointer-leave`)&&this.interactiveHandleManager?.notePointerUp(e.pointerId,e.pointerType);let t=I(e);t&&this._handleCommand(t)}forceAddVertex(){this._commitNext()}_emitWhenReady(e,t){if(this.destroyed)return;let n=()=>{this.emit(e,t)};this.lifecycleManager.updating||this._flushingQueuedFeedbackEvents?this._queuedFeedbackEvents.push(n):n()}_emitQueuedFeedbackEvents(){if(!(this.destroyed||this._flushingQueuedFeedbackEvents||this.lifecycleManager.updating||this._queuedFeedbackEvents.length===0)){this._flushingQueuedFeedbackEvents=!0;try{for(;!this.destroyed&&!this.lifecycleManager.updating&&this._queuedFeedbackEvents.length>0;)this._queuedFeedbackEvents.shift()?.()}finally{this._flushingQueuedFeedbackEvents=!1}}}async _handleCommand(e){if(!this._commandsSuspended){if(this.lifecycleManager.updating){o.getLogger(this).info(`Ignoring command; arrived while updating:`,e.action);return}switch(e.action){case`view-drag`:return await this._handleViewDragCommand(e);case`vertex-add`:return this._guardCommand(e,()=>{M(e),this._commitNext()});case`vertex-add-and-finish-part`:return this._handleVertexAddAndFinishPartCommand(e);case`cancel`:return this._guardCommand(e,()=>this.cancel());case`complete`:return this._guardCommand(e,()=>{this.mostUpstreamPlugin&&(M(e),this.complete(this.mostUpstreamPlugin))});case`finish-part`:return this._guardCommand(e,()=>this.finishPart());case`undo`:return this._guardCommand(e,()=>this.editSessionManager.undo());case`redo`:return this._guardCommand(e,()=>this.editSessionManager.redo());case`next-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`forward`));case`previous-manipulator`:return this._guardCommand(e,()=>this.interactiveHandleManager?.cycleManipulator(`backward`));case`toggle-manipulator-follow`:this.interactiveHandleManager?.toggleFollow()&&M(e);break;case`viewpoint-moved`:return await this._handleViewpointMovedCommand(e);case`manipulator-move-to`:return await this._handleManipulatorMoveToCommand(e);case`manipulator-drag-to`:return await this._handleManipulatorDragToCommand(e);case`vertex-add-at-point`:return await this._handleVertexAddAtPointCommand(e);case`show-tooltip`:return this._guardCommand(e,async()=>{let t=this.tooltipManager?.tooltip;t&&ne(t.info)&&(await t.enterInputMode(),M(e))});case`constraint-center`:this.globalStateManager.setCentered(e.enabled);break;case`constraint-aspect`:this.globalStateManager.setPreserveAspectRatio(e.enabled)}}}async _handleViewDragCommand(e){if(!this.editable)return;let t=e.originalEvent,n=this.interactiveHandleManager?.capturingHandle;if(t&&`pointerType`in t&&t.pointerType===`touch`&&(n?.captureMode===`capture-always`||n?.captureMode===`capture-when-engaged`)){M(e);return}if(this.interactiveHandleManager?.capturingHandle?.captureMode===`capture-when-engaged`){M(e);return}if(this._before(e)){M(e);return}}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(M(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:t,pointerId:n})),this.interactiveHandleManager?.updateAllScreenPositions(this.movementCommandContext.surfaceManager)}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&M(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;let t=N(e.originalEvent),n=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,t))return;let r=this._updateLastScreenPosition(e),i=this.interactiveHandleManager?.findHandleByManipulator(r,t);t===`touch`&&i&&e.state===`start`&&this.interactiveHandleManager?.releaseHandle();let a=this.interactiveHandleManager?.findHandleDragging(),o=this.interactiveHandleManager?.capturingHandle,s=a??o??i;s&&!i&&M(e),s?.captureMode===`capture-when-engaged`||s?.captureMode===`capture-always`&&t===`touch`?e.state===`end`?await this._updatingHandles.addPromise(s.noteDragEnd(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&s.role===`primary`&&(this.interactiveHandleManager?.handleCount===1?this._handleCommand({action:`vertex-add`}):this.interactiveHandleManager?.releaseHandle())})):e.state===`start`?await this._updatingHandles.addPromise(s.noteDragStart(r,{...this.movementCommandContext,pointerType:t,pointerId:n}).then(()=>{s&&N(e.originalEvent)===`touch`&&s.captureMode!==`grabbable-object`&&s.defaultCaptureMode!==`capture-when-engaged`&&!s.editSession?.lastPointAddedBySession&&this._handleCommand({action:`vertex-add`})})):await this._updatingHandles.addPromise(s?.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})):s?.captureMode===`grabbable-object`&&(this.interactiveHandleManager?.releaseHandle(o),await this._updatingHandles.addPromise(s.moveTo(r,{...this.movementCommandContext,pointerType:t,pointerId:n})))}async _handleVertexAddAtPointCommand(e){let t=this._updateLastScreenPosition(e),n=N(e.originalEvent),r=P(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(r,n))return;let i=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t,n);this.editable&&i&&(this._before(e)||(M(e),await this._updatingHandles.addPromise(i.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:n,pointerId:r}).finally(()=>this._commitNext()))))}_makeKeyBindings(){let e=new q,t=(t,n)=>{e.addToggle(t,e=>this._handleCommand({action:n,originalEvent:e,enabled:e.type===`key-down`}))},n=(t,n)=>{e.add(t,e=>this._handleCommand({action:n,originalEvent:e}))};return t(J.preserveAspectRatio,`constraint-aspect`),t(Y.center,`constraint-center`),n(X.toggleFollowManipulator,`toggle-manipulator-follow`),n(Y.undo,`undo`),n(Y.redo,`redo`),n(Y.complete,`complete`),n(Y.vertexAdd,`vertex-add`),n({key:Z.enterInputMode,continuePropagation:!0,repeats:!0},`show-tooltip`),e}_afterAttach(){}_afterDetach(e){this.interactiveHandleManager?.unregisterCustomConstraint(e),this.interactiveHandleManager?.unregisterHandle(e),this.tooltipManager?.unregisterPluginFields(e),this.globalStateManager.clearPluginOverrides(e);let t=this._pluginContexts.get(e);t&&(t.destroy(),this._pluginContexts.delete(e))}_beforeResume(e,t){this.interactiveHandleManager?.replaceEditSessions(e,t)}_commitNext(){let n={stack:[],error:void 0,hasError:!1};try{let t=this.mostDownstreamPlugin;if(!t)return;this.tooltipManager?.storeConstraintSnapshot();let r=this.tooltipManager?.getFieldsToUnlockOnVertexPlacement()??[],i=!1,o=this.editGeometryOperations;e(n,o?a(o.on(`vertex-add`,()=>i=!0)):null,!1),t.completeStep?t.completeStep():this.complete(t),i&&this.tooltipManager?.unlockOnVertexPlacement(r)}catch(e){n.error=e,n.hasError=!0}finally{t(n)}}_suspendPlugin(e){this.lifecycleManager.suspend(e),this.measurementManager.suspendPlugin(e)}_resumePlugin(e){this.lifecycleManager.resume(e)}_updateLastScreenPosition(e){let t=_(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){let n=s(this._pluginContexts,e,()=>new F({drawTool:this,plugin:e,session:t}));return n.session=t,n}_before(e){if(!this.hasEventListener(`before-${e.action}`))return!1;let t=new CustomEvent(`before-${e.action}`,{detail:e,cancelable:!0});return this.emit(`before-${e.action}`,t),t.defaultPrevented}_guardCommand(e,t,n){return this._before(e)?n?.():t()}async _setupSegmentLabels(){let e=this.editGeometryOperations,t=this.toolOptions?.labels,n=!!t?.enabled,r=this.globalStateManager.segmentLabelsDisabled;if(!e||!t||!n){this._segmentLabels=c(this._segmentLabels);return}if(r){this._segmentLabels&&(this._segmentLabels.visible=!1);return}if(this._segmentLabels?.context?.editGeometryOperations===e&&this._segmentLabels.context.labelOptions===t){this._segmentLabels.visible=!0;return}let i=await this._createSegmentLabels(e,t);i&&(this._segmentLabels=c(this._segmentLabels),this._segmentLabels=i)}async _createSegmentLabels(e,t){this._segmentLabelsImportTask?.abort();let n=this._segmentLabelsImportTask=r(async n=>{if(this.view.type===`3d`){let r=import(`../3d/interactive/SegmentLabels3D.js`),{SegmentLabels3D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})}let r=import(`../2d/interactive/SegmentLabels2D.js`),{SegmentLabels2D:i}=await this._updatingHandles.addPromise(r);return this._isSegmentLabelsSetupStale(n,e,t)?null:new i({context:{view:this.view,editGeometryOperations:e,elevationInfo:D(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})});return u(n.promise)}_isSegmentLabelsSetupStale(e,t,n){return e.aborted||this.editGeometryOperations!==t||this.toolOptions?.labels!==n||!n.enabled||this.globalStateManager.segmentLabelsDisabled}};n([y()],$.prototype,`_commandsSuspended`,void 0),n([y()],$.prototype,`_zOfLastUserInput`,null),n([y()],$.prototype,`_snappingVisualizer`,void 0),n([y()],$.prototype,`_segmentLabels`,void 0),n([y()],$.prototype,`_segmentLabelsImportTask`,void 0),n([y()],$.prototype,`_tooltipDependencies`,null),n([y()],$.prototype,`_editSessionManagerContext`,null),n([y()],$.prototype,`_densificationParameters`,null),n([y({constructOnly:!0,nonNullable:!0})],$.prototype,`view`,void 0),n([y()],$.prototype,`automaticManipulatorSelection`,void 0),n([y()],$.prototype,`updating`,null),n([y()],$.prototype,`coordinateHelper`,null),n([y()],$.prototype,`editGeometry`,null),n([y()],$.prototype,`editGeometryOperations`,null),n([y()],$.prototype,`unprocessedGeometry`,null),n([y()],$.prototype,`simplifiedGeometryPreview`,null),n([y()],$.prototype,`_suppressCoincidentPointOverlaysIn3D`,null),n([y()],$.prototype,`_shapeVisualGeometry`,null),n([y()],$.prototype,`_vertexVisualGeometry`,null),n([y()],$.prototype,`snappingManager`,void 0),n([y()],$.prototype,`toolOptions`,void 0),n([y()],$.prototype,`elevationInfo`,void 0),n([y()],$.prototype,`hasZ`,void 0),n([y()],$.prototype,`defaultZ`,void 0),n([y()],$.prototype,`directionOptions`,void 0),n([y()],$.prototype,`canUndo`,null),n([y()],$.prototype,`canRedo`,null),n([y()],$.prototype,`pluginStack`,null),n([y()],$.prototype,`mostDownstreamPlugin`,null),n([y()],$.prototype,`mostUpstreamPlugin`,null),n([y()],$.prototype,`lastScreenPosition`,void 0),n([y()],$.prototype,`positionOfLastUserInput`,null),n([y()],$.prototype,`tooltipManager`,void 0),n([y()],$.prototype,`measurementManager`,void 0),n([y()],$.prototype,`globalStateManager`,void 0),n([y()],$.prototype,`editSessionManager`,void 0),n([y()],$.prototype,`lifecycleManager`,void 0),n([y()],$.prototype,`surfaceManager`,void 0),n([y()],$.prototype,`interactiveHandleManager`,void 0),n([y()],$.prototype,`renderer`,void 0),n([y()],$.prototype,`readPluginSetting`,void 0),n([y()],$.prototype,`movementCommandContext`,null),n([y()],$.prototype,`tooltip`,null),n([y()],$.prototype,`activeTooltipInfo`,null),n([y()],$.prototype,`helpMessageKey`,null),n([y({constructOnly:!0})],$.prototype,`enableVertexVisuals`,void 0),$=n([b(`esri.views.draw.DrawTool`)],$);export{$ as DrawTool};
@@ -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 n from"../../../core/Error.js";import{makeHandle as r}from"../../../core/handleUtils.js";import{createScalar as i,createLength as a,toUnit as o}from"../../../core/quantity.js";import{generateUUID as s}from"../../../core/uuid.js";import{property as c}from"../../../core/accessorSupport/decorators/property.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{isWebMercator as u,isGeographic as d}from"../../../geometry/support/spatialReferenceUtils.js";import{getEffectiveElevationMode as f}from"../../../support/elevationInfoUtils.js";import{createViewAlignedCoordinateSystem as p}from"./surfaceCoordinateSystems.js";import{knownFieldDisplayOrders as m}from"./types.js";import{createGeographicCoordinate as h}from"../../interactive/tooltip/fields/parsingAndFormattingUtils.js";import{elevationFromPoint as g}from"../../support/euclideanLengthMeasurementUtils.js";const _={x:m.Coordinates+10,y:m.Coordinates+11,elevation:m.Coordinates+12};let v=class extends t{constructor(e){super(e)}normalizeCtorArgs(e){let{drawTool:t,plugin:n,...r}=e;return{_drawTool:t,_plugin:n,...r}}get positionOfLastUserInput(){return this._drawTool.positionOfLastUserInput}get elevationConstraint(){return this._drawTool.tooltipManager?.elevationConstraint}getSession(e){return this._drawTool.editSessionManager.getSession(e)}readBooleanSetting(e){let t=this._plugin.configuration?.uniqueId;if(t)return this._drawTool.readPluginSettingValue(t,e)}createInteractiveHandle(e,t){let r=this._drawTool.interactiveHandleManager,a=this._drawTool.tooltipManager,o=this._plugin,c=this.session,l=this._drawTool.coordinateHelper;if(!r||!a)throw new n(`draw-tool:interactive-handle-missing-dependencies`,`Attempted to set up an interactive handle without required dependencies.`);let p=e.name??s(),m=e.defaultCaptureMode??`capture-always`,g=r.registerHandle(o,{...e,name:p,editSession:c,defaultCaptureMode:m,captureMode:m});if(this._drawTool.addPromise(r.setupManipulatorForHandle(g,this._drawTool.lastScreenPosition,this._drawTool.movementCommandContext)),!t?.disableDefaultXYFields){let e=l.spatialReference;if(u(e)||d(e)?(a.createMeasuredField(o,{id:Symbol(`tooltip-long-${p}`),preset:`longitude`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>h(e?.longitude),fieldProperties:{displayOrder:_.x},fieldFilters:{appliesToHandlesWithName:p}}),a.createMeasuredField(o,{id:Symbol(`tooltip-lat-${p}`),preset:`latitude`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>h(e?.latitude),fieldProperties:{displayOrder:_.y},fieldFilters:{appliesToHandlesWithName:p}})):(a.createMeasuredField(o,{id:Symbol(`tooltip-x-${p}`),preset:`x`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>e?i(e.x):null,fieldProperties:{displayOrder:_.x},fieldFilters:{appliesToHandlesWithName:p}}),a.createMeasuredField(o,{id:Symbol(`tooltip-y-${p}`),preset:`y`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>e?i(e.y):null,fieldProperties:{displayOrder:_.y},fieldFilters:{appliesToHandlesWithName:p}})),this._drawTool.hasZ&&g.role===`primary`){let e=a.createMeasuredField(o,{id:Symbol(`tooltip-z-${p}`),preset:`elevation`,getMeasurementInput:()=>g.outputMapPosition,measure:async(e,t)=>this.measureElevation(e,t.inputUnitInfos.verticalLength.unit),fieldProperties:{displayOrder:_.elevation},fieldFilters:{appliesToHandlesWithName:p}}).field,{view:t,hasZ:n,elevationInfo:r}=this._drawTool;t.type===`3d`&&f(n,r)!==`absolute-height`&&!e.locked&&e.lock(this.measureElevation(null))}}return g}removeInteractiveHandle(e){let t=e;this._drawTool.interactiveHandleManager?.unregisterHandle(this._plugin,t)}createConstraint(e,t){this._drawTool.interactiveHandleManager?.registerCustomConstraint(this._plugin,e,t)}removeConstraint(e){this._drawTool.interactiveHandleManager?.unregisterCustomConstraint(this._plugin,e)}createCustomField(e){if(!this._drawTool.tooltipManager)throw new n(`draw-tool:tooltip-manager-missing`,`Attempted to create a field without access to a tooltip manager.`);return this._drawTool.tooltipManager.createCustomField(this._plugin,e)}createMeasuredField(e){if(!this._drawTool.tooltipManager)throw new n(`draw-tool:tooltip-manager-missing`,`Attempted to create a field without access to a tooltip manager.`);return this._drawTool.tooltipManager.createMeasuredField(this._plugin,e)}requestComplete(){this._drawTool.complete(this._plugin)}requestCancel(e){this._drawTool.lifecycleManager.cancel(this._plugin)}requestBeginDownstreamPlugin(e,t){this._drawTool.lifecycleManager.begin([e],this._plugin,t?.cancelExisting)}async measureLength(e,t,n,r){let{_drawTool:i,_plugin:a}=this;if(n!==`tooltip`||i.tooltipManager?.effectiveEnabled)return await i.measurementManager.measureLength(a,t,e,r)}async measureArea(e,t,n,r){let{_drawTool:i,_plugin:a}=this;if(n!==`tooltip`||i.tooltipManager?.effectiveEnabled)return await i.measurementManager.measureArea(a,t,e,r)}async measureDistance(e,t,n,r){let{_drawTool:i,_plugin:a}=this;if(n!==`tooltip`||i.tooltipManager?.effectiveEnabled)return await i.measurementManager.measureDistance(a,t,e,r)}measureElevation(e,t){let n=this._drawTool,r=g(e);if(!r){let e=n.surfaceManager?.metersPerVerticalUnit;e&&(r=a(n.defaultZ*e,`meters`))}return t&&r&&r.unit!==t?o(r,t):r}getGlobalState(){return this._drawTool.globalStateManager.getGlobalState()}setGlobalState(e,t){this._drawTool.globalStateManager.setGlobalState(this._plugin,e,t)}addOrUpdateGraphic(e,t){let{_plugin:n,_drawTool:i}=this,a=i.renderer;a?.addOrUpdateGraphic(e,t),n.hasHandles(e)||n.addHandles(r(()=>a?.removeGraphic(e)),e)}addOrUpdateVisual(e,t){let n=this._plugin,i=this._drawTool.renderer;i?.addOrUpdateVisual(e,t),n.hasHandles(e)||n.addHandles(r(()=>i?.removeVisual(e)),e)}removeGraphic(e){this._plugin.removeHandles(e)}removeVisual(e){this._plugin.removeHandles(e)}getViewInformation(){return this._drawTool.view}getViewAlignedSurfaceCoordinateSystem(e){let{view:t,coordinateHelper:n}=this._drawTool;return!t||!n?null:p(t,n.pointToVector(e))}};e([c()],v.prototype,`_plugin`,void 0),e([c()],v.prototype,`_drawTool`,void 0),e([c({nonNullable:!0})],v.prototype,`session`,void 0),e([c()],v.prototype,`positionOfLastUserInput`,null),e([c()],v.prototype,`elevationConstraint`,null),v=e([l(`esri.views.draw.support.PluginContext`)],v);export{v as PluginContext};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import n from"../../../core/Error.js";import{makeHandle as r}from"../../../core/handleUtils.js";import{createScalar as i,createLength as a,toUnit as o}from"../../../core/quantity.js";import{generateUUID as s}from"../../../core/uuid.js";import{property as c}from"../../../core/accessorSupport/decorators/property.js";import{subclass as l}from"../../../core/accessorSupport/decorators/subclass.js";import{isWebMercator as u,isGeographic as d}from"../../../geometry/support/spatialReferenceUtils.js";import{getEffectiveElevationMode as f}from"../../../support/elevationInfoUtils.js";import{createViewAlignedCoordinateSystem as p}from"./surfaceCoordinateSystems.js";import{knownFieldDisplayOrders as m}from"./types.js";import{createGeographicCoordinate as h}from"../../interactive/tooltip/fields/parsingAndFormattingUtils.js";import{elevationFromPoint as g}from"../../support/euclideanLengthMeasurementUtils.js";const _={x:m.Coordinates+10,y:m.Coordinates+11,elevation:m.Coordinates+12};let v=class extends t{constructor(e){super(e)}normalizeCtorArgs(e){let{drawTool:t,plugin:n,...r}=e;return{_drawTool:t,_plugin:n,...r}}get positionOfLastUserInput(){return this._drawTool.positionOfLastUserInput}get elevationConstraint(){return this._drawTool.tooltipManager?.elevationConstraint}getSession(e){return this._drawTool.editSessionManager.getSession(e)}readBooleanSetting(e){let t=this._plugin.configuration?.uniqueId;if(t)return this._drawTool.readPluginSettingValue(t,e)}createInteractiveHandle(e,t){let r=this._drawTool.interactiveHandleManager,a=this._drawTool.tooltipManager,o=this._plugin,c=this.session,l=this._drawTool.coordinateHelper;if(!r||!a)throw new n(`draw-tool:interactive-handle-missing-dependencies`,`Attempted to set up an interactive handle without required dependencies.`);let p=e.name??s(),m=e.defaultCaptureMode??`capture-always`,g=r.registerHandle(o,{...e,name:p,editSession:c,defaultCaptureMode:m,captureMode:m});if(this._drawTool.addPromise(r.setupManipulatorForHandle(g,this._drawTool.lastScreenPosition,this._drawTool.movementCommandContext)),!t?.disableDefaultXYFields){let e=l.spatialReference;if(u(e)||d(e)?(a.createMeasuredField(o,{id:Symbol(`tooltip-long-${p}`),preset:`longitude`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>h(e?.longitude),fieldProperties:{displayOrder:_.x},fieldFilters:{appliesToHandlesWithName:p}}),a.createMeasuredField(o,{id:Symbol(`tooltip-lat-${p}`),preset:`latitude`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>h(e?.latitude),fieldProperties:{displayOrder:_.y},fieldFilters:{appliesToHandlesWithName:p}})):(a.createMeasuredField(o,{id:Symbol(`tooltip-x-${p}`),preset:`x`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>e?i(e.x):null,fieldProperties:{displayOrder:_.x},fieldFilters:{appliesToHandlesWithName:p}}),a.createMeasuredField(o,{id:Symbol(`tooltip-y-${p}`),preset:`y`,getMeasurementInput:()=>g.outputMapPosition,measure:async e=>e?i(e.y):null,fieldProperties:{displayOrder:_.y},fieldFilters:{appliesToHandlesWithName:p}})),this._drawTool.hasZ&&g.role===`primary`){let e=a.createMeasuredField(o,{id:Symbol(`tooltip-z-${p}`),preset:`elevation`,getMeasurementInput:()=>g.outputMapPosition,measure:async(e,t)=>this.measureElevation(e,t.inputUnitInfos.verticalLength.unit),fieldProperties:{displayOrder:_.elevation,...t?.elevationFieldProperties},fieldFilters:{appliesToHandlesWithName:p}}).field,{view:n,hasZ:r,elevationInfo:i}=this._drawTool;n.type===`3d`&&f(r,i)!==`absolute-height`&&!e.locked&&e.lock(this.measureElevation(null))}}return g}removeInteractiveHandle(e){let t=e;this._drawTool.interactiveHandleManager?.unregisterHandle(this._plugin,t)}createConstraint(e,t){this._drawTool.interactiveHandleManager?.registerCustomConstraint(this._plugin,e,t)}removeConstraint(e){this._drawTool.interactiveHandleManager?.unregisterCustomConstraint(this._plugin,e)}createCustomField(e){if(!this._drawTool.tooltipManager)throw new n(`draw-tool:tooltip-manager-missing`,`Attempted to create a field without access to a tooltip manager.`);return this._drawTool.tooltipManager.createCustomField(this._plugin,e)}createMeasuredField(e){if(!this._drawTool.tooltipManager)throw new n(`draw-tool:tooltip-manager-missing`,`Attempted to create a field without access to a tooltip manager.`);return this._drawTool.tooltipManager.createMeasuredField(this._plugin,e)}requestComplete(){this._drawTool.complete(this._plugin)}requestCancel(e){this._drawTool.lifecycleManager.cancel(this._plugin)}requestBeginDownstreamPlugin(e,t){this._drawTool.lifecycleManager.begin([e],this._plugin,t?.cancelExisting)}async measureLength(e,t,n,r){let{_drawTool:i,_plugin:a}=this;if(n!==`tooltip`||i.tooltipManager?.effectiveEnabled)return await i.measurementManager.measureLength(a,t,e,r)}async measureArea(e,t,n,r){let{_drawTool:i,_plugin:a}=this;if(n!==`tooltip`||i.tooltipManager?.effectiveEnabled)return await i.measurementManager.measureArea(a,t,e,r)}async measureDistance(e,t,n,r){let{_drawTool:i,_plugin:a}=this;if(n!==`tooltip`||i.tooltipManager?.effectiveEnabled)return await i.measurementManager.measureDistance(a,t,e,r)}measureElevation(e,t){let n=this._drawTool,r=g(e);if(!r){let e=n.surfaceManager?.metersPerVerticalUnit;e&&(r=a(n.defaultZ*e,`meters`))}return t&&r&&r.unit!==t?o(r,t):r}getGlobalState(){return this._drawTool.globalStateManager.getGlobalState()}setGlobalState(e,t){this._drawTool.globalStateManager.setGlobalState(this._plugin,e,t)}addOrUpdateGraphic(e,t){let{_plugin:n,_drawTool:i}=this,a=i.renderer;a?.addOrUpdateGraphic(e,t),n.hasHandles(e)||n.addHandles(r(()=>a?.removeGraphic(e)),e)}addOrUpdateVisual(e,t){let n=this._plugin,i=this._drawTool.renderer;i?.addOrUpdateVisual(e,t),n.hasHandles(e)||n.addHandles(r(()=>i?.removeVisual(e)),e)}removeGraphic(e){this._plugin.removeHandles(e)}removeVisual(e){this._plugin.removeHandles(e)}getViewInformation(){return this._drawTool.view}getViewAlignedSurfaceCoordinateSystem(e){let{view:t,coordinateHelper:n}=this._drawTool;return!t||!n?null:p(t,n.pointToVector(e))}};e([c()],v.prototype,`_plugin`,void 0),e([c()],v.prototype,`_drawTool`,void 0),e([c({nonNullable:!0})],v.prototype,`session`,void 0),e([c()],v.prototype,`positionOfLastUserInput`,null),e([c()],v.prototype,`elevationConstraint`,null),v=e([l(`esri.views.draw.support.PluginContext`)],v);export{v as PluginContext};
@@ -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{createTask as n}from"../../../../core/asyncUtils.js";import r from"../../../../core/Error.js";import{getOrCreateMapValue as i}from"../../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../../core/maybe.js";import o from"../../../../core/ReactiveMap.js";import{watch as s,syncAndInitial as c,initial as l}from"../../../../core/reactiveUtils.js";import{property as u}from"../../../../core/accessorSupport/decorators.js";import{subclass as d}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as f}from"../../../../core/support/UpdatingHandles.js";import{isLoaded as p,load as m}from"../../../../geometry/coordinateFormatter.js";import{absoluteHeightElevationInfo as h}from"../../../../support/elevationInfoUtils.js";import{ManagedTooltipField as g}from"../ManagedTooltipField.js";import{getConstraintContext as _}from"../../../interactive/sketch/constraintUtils.js";import{makeTooltip as v}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{makeScalarField as y,makeOrientationField as b,makeAreaField as x,makeLengthField as S,makeRadiusField as C,makeTotalLengthField as w,makeSizeField as T,makeScaleField as E,makeYField as D,makeXField as O,makeLongitudeField as k,makeLatitudeField as A,makeElevationField as j,makeDistanceField as M,makeDirectionField as N}from"../../../interactive/tooltip/fields/fields.js";import{TooltipField as P}from"../../../interactive/tooltip/fields/TooltipField.js";import{DynamicTooltipInfo as F,filterFieldsForHandle as I,isKnownConstraintField as L}from"../../../interactive/tooltip/infos/DynamicTooltipInfo.js";let R=class extends t{constructor(e){super(e),this._pluginTooltipFieldRegistry=new o,this._updatingHandles=new f,this._coordinateFormatterLoadTask=null,this._constraintSnapshot=null,this.constraintsEnabled=!0,this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled=!1,this.enabled=!0}initialize(){this.addHandles([s(()=>[this.effectiveEnabled,this.context?.view,this.context?.toolOptions],([e,t,n])=>{let{context:r}=this;e&&t&&n?(this._tooltipInfo??=new F({toolOptions:n,getAllFields:()=>this.allFields,getActiveHandle:()=>this.effectiveActiveHandle,getHelpMessageKey:()=>this.context?.getHelpMessageKey(),viewType:t.type}),this._tooltip||this._setupTooltip(r)):(this._tooltip=a(this._tooltip),this._tooltipInfo=a(this._tooltipInfo),this.inputModeHandle=null)},c)])}destroy(){this._tooltip=a(this._tooltip),this._tooltipInfo=a(this._tooltipInfo)}get context(){return this.getDependencies?.()}get focusedHandle(){return this.context?.getActiveHandle?.()}get allHandles(){return this.context?.getAllHandles?.()}get effectiveActiveHandle(){return this._tooltip?.isInInputMode?this.inputModeHandle:this.focusedHandle}get updating(){return this._updatingHandles.updating}get tooltip(){return this._tooltip}get tooltipInfo(){return this._tooltipInfo}get elevationConstraint(){return I(this.allFields,this.focusedHandle).map(({field:e})=>e).filter(L).find(e=>e.name===`elevation`)?.committed}get allFields(){return Array.from(this._pluginTooltipFieldRegistry.values()).flatMap(e=>Array.from(e.values()))}get effectiveEnabled(){return this.enabled&&(this.context?.toolOptions.tooltips.effectiveEnabled||this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled)}getConstraints(e){let{tooltipInfo:t,context:n}=this,{view:r,editGeometryOperations:i,elevationInfo:a,toolOptions:o}=n??{},s=this.getLastScreenPosition?.();if(!s||!r||!t||!i||!o)return null;let{coordinateHelper:c,spatialReference:l}=i.data,u=r.toMap(s);if(!u)return null;let d=_(u,r,l,a??h,c.hasZ(),o.values.effectiveDirectionMode);return{...H(t.getConstraintFieldsForHandle(e)),context:d}}storeConstraintSnapshot(){let e=I(this.allFields,this.focusedHandle).map(({field:e})=>e).filter(e=>e.locked&&!e.unlockOnVertexPlacement).filter(L);if(!e.length){this._constraintSnapshot=null;return}this._constraintSnapshot=H(e)}unlockOnVertexPlacement(){this.tooltipInfo?.allFields.forEach(e=>{e.unlockOnVertexPlacement&&(e.committed=null)})}unregisterPluginFields(e){let t=this._pluginTooltipFieldRegistry.get(e);t?.forEach(e=>e.destroy()),t?.clear(),this._pluginTooltipFieldRegistry.delete(e)}createMeasuredField(e,{id:t,preset:n,getMeasurementInput:r,measure:i,fieldProperties:a,fieldFilters:o}){let c=this._getOrCreateField(e,t,n,a,o);return c.registerMeasurement(r,i,()=>this.tooltipInfo?.renderContext),c.addHandles(s(()=>this.tooltipInfo?.isEffectiveVisibleField(c.field),e=>c.enabled=!!e,l)),c}createCustomField(e,{id:t,preset:n,fieldProperties:r,fieldFilters:i}){return this._getOrCreateField(e,t,n,r,i)}_setupTooltip(e){let t=this._tooltip=v(()=>({view:e.view,options:e.toolOptions.tooltips,info:this.tooltipInfo}));t.addHandles([s(()=>this.focusedHandle,e=>{(e&&(!t.isInInputMode||this.inputModeHandle==null)||this.inputModeHandle&&!this.allHandles?.includes(this.inputModeHandle))&&(this.inputModeHandle=e)},c),s(()=>this.focusedHandle?.screenPosition,e=>{e?(t.position=e,t.hidden=!1):t.hidden=!0},c),t.on(`commit`,()=>{this.context?.notifyTooltipsChanged()})]),!this._coordinateFormatterLoadTask&&!p()&&(this._coordinateFormatterLoadTask=n(()=>m()),this.addHandles(this._coordinateFormatterLoadTask),this._updatingHandles.addPromise(this._coordinateFormatterLoadTask.promise))}_getOrCreateField(e,t,n,r,a){let s=i(this._pluginTooltipFieldRegistry,e,()=>new o);if(s.has(t))return s.get(t);let c=V(n,r),l=new g({field:c,displayGroup:r?.displayGroup,...a});s.set(t,l);let u=L(c)?this._constraintSnapshot?.[c.name]:void 0;return u&&c.lock(u),l}};e([u()],R.prototype,`_updatingHandles`,void 0),e([u()],R.prototype,`_tooltip`,void 0),e([u()],R.prototype,`_tooltipInfo`,void 0),e([u()],R.prototype,`_coordinateFormatterLoadTask`,void 0),e([u()],R.prototype,`_constraintSnapshot`,void 0),e([u()],R.prototype,`getDependencies`,void 0),e([u()],R.prototype,`getLastScreenPosition`,void 0),e([u()],R.prototype,`context`,null),e([u()],R.prototype,`inputModeHandle`,void 0),e([u()],R.prototype,`focusedHandle`,null),e([u()],R.prototype,`allHandles`,null),e([u()],R.prototype,`effectiveActiveHandle`,null),e([u()],R.prototype,`updating`,null),e([u()],R.prototype,`tooltip`,null),e([u()],R.prototype,`tooltipInfo`,null),e([u()],R.prototype,`constraintsEnabled`,void 0),e([u()],R.prototype,`elevationConstraint`,null),e([u()],R.prototype,`allFields`,null),e([u()],R.prototype,`keepTooltipAliveEvenWhenTooltipsAreNotEnabled`,void 0),e([u()],R.prototype,`enabled`,void 0),e([u()],R.prototype,`effectiveEnabled`,null),R=e([d(`esri.views.draw.support.managers.TooltipManager`)],R);function z(e){return e==null||!(`unit`in e)||!(`rotationType`in e)?null:e}function B(e){return e==null||`rotationType`in e?null:e}function V(e,t){let n=t?{...t}:{};switch(delete n.displayGroup,e){case`area`:return x({...n,name:`area`});case`direction`:return N({...n,name:`direction`});case`distance`:return M({...n,name:`distance`});case`elevation`:{let e=j({...n,name:`elevation`});return e.showAsZ=!0,e}case`latitude`:return A({...n,name:`y`});case`longitude`:return k({...n,name:`x`});case`x`:return O({...n,name:`x`});case`y`:return D({...n,name:`y`});case`orientation`:return b({...n,name:`orientation`});case`scale`:return E({...n,name:`scale`});case`size`:return T({...n,name:`size`});case`totalLength`:return w({...n,name:`totalLength`});case`radius`:return C({...n,name:`radius`});case`generic-length`:return S({...n,name:null});case`generic-area`:return x({...n,name:null});case`generic-angle`:return b({...n,name:null});case`generic-scalar`:return y({...n,name:null});default:if(!n)throw new r(`draw-tool:tooltips:invalid-field-config`,`Attempted to create a tooltip without a preset definition and without tooltip configuration.`);return new P(n)}}function H(e){let t={};for(let n of e)switch(n.name){case`direction`:t[n.name]=n.committed;break;case`distance`:case`elevation`:t[n.name]=n.committed;break;case`x`:t[n.name]=B(n.committed),t.longitude=z(n.committed);break;case`y`:t[n.name]=B(n.committed),t.latitude=z(n.committed)}return t}export{R as TooltipManager};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{createTask as n}from"../../../../core/asyncUtils.js";import r from"../../../../core/Error.js";import{getOrCreateMapValue as i}from"../../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../../core/maybe.js";import o from"../../../../core/ReactiveMap.js";import{watch as s,syncAndInitial as c,initial as l}from"../../../../core/reactiveUtils.js";import{property as u}from"../../../../core/accessorSupport/decorators.js";import{subclass as d}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as f}from"../../../../core/support/UpdatingHandles.js";import{isLoaded as p,load as m}from"../../../../geometry/coordinateFormatter.js";import{absoluteHeightElevationInfo as h}from"../../../../support/elevationInfoUtils.js";import{ManagedTooltipField as g}from"../ManagedTooltipField.js";import{getConstraintContext as _}from"../../../interactive/sketch/constraintUtils.js";import{makeTooltip as v}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{makeScalarField as y,makeOrientationField as b,makeAreaField as x,makeLengthField as S,makeRadiusField as C,makeTotalLengthField as w,makeSizeField as T,makeScaleField as E,makeYField as D,makeXField as O,makeLongitudeField as k,makeLatitudeField as A,makeElevationField as j,makeDistanceField as M,makeDirectionField as N}from"../../../interactive/tooltip/fields/fields.js";import{TooltipField as P}from"../../../interactive/tooltip/fields/TooltipField.js";import{DynamicTooltipInfo as F,filterFieldsForHandle as I,isKnownConstraintField as L}from"../../../interactive/tooltip/infos/DynamicTooltipInfo.js";let R=class extends t{constructor(e){super(e),this._pluginTooltipFieldRegistry=new o,this._updatingHandles=new f,this._coordinateFormatterLoadTask=null,this._constraintSnapshot=null,this.constraintsEnabled=!0,this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled=!1,this.enabled=!0}initialize(){this.addHandles([s(()=>[this.effectiveEnabled,this.context?.view,this.context?.toolOptions],([e,t,n])=>{let{context:r}=this;e&&t&&n?(this._tooltipInfo??=new F({toolOptions:n,getAllFields:()=>this.allFields,getActiveHandle:()=>this.effectiveActiveHandle,getHelpMessageKey:()=>this.context?.getHelpMessageKey(),viewType:t.type}),this._tooltip||this._setupTooltip(r)):(this._tooltip=a(this._tooltip),this._tooltipInfo=a(this._tooltipInfo),this.inputModeHandle=null)},c)])}destroy(){this._tooltip=a(this._tooltip),this._tooltipInfo=a(this._tooltipInfo)}get context(){return this.getDependencies?.()}get focusedHandle(){return this.context?.getActiveHandle?.()}get allHandles(){return this.context?.getAllHandles?.()}get effectiveActiveHandle(){return this._tooltip?.isInInputMode?this.inputModeHandle:this.focusedHandle}get updating(){return this._updatingHandles.updating}get tooltip(){return this._tooltip}get tooltipInfo(){return this._tooltipInfo}get elevationConstraint(){return I(this.allFields,this.focusedHandle).map(({field:e})=>e).filter(L).find(e=>e.name===`elevation`)?.committed}get allFields(){return Array.from(this._pluginTooltipFieldRegistry.values()).flatMap(e=>Array.from(e.values()))}get effectiveEnabled(){return this.enabled&&(this.context?.toolOptions.tooltips.effectiveEnabled||this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled)}getConstraints(e){let{tooltipInfo:t,context:n}=this,{view:r,editGeometryOperations:i,elevationInfo:a,toolOptions:o}=n??{},s=this.getLastScreenPosition?.();if(!s||!r||!t||!i||!o)return null;let{coordinateHelper:c,spatialReference:l}=i.data,u=r.toMap(s);if(!u)return null;let d=_(u,r,l,a??h,c.hasZ(),o.values.effectiveDirectionMode);return{...H(t.getConstraintFieldsForHandle(e)),context:d}}storeConstraintSnapshot(){let e=I(this.allFields,this.focusedHandle).map(({field:e})=>e).filter(e=>e.locked&&!e.unlockOnVertexPlacement).filter(L);if(!e.length){this._constraintSnapshot=null;return}this._constraintSnapshot=H(e)}getFieldsToUnlockOnVertexPlacement(){return I(this.allFields,this.focusedHandle).map(({field:e})=>e).filter(e=>e.unlockOnVertexPlacement)}unlockOnVertexPlacement(e){for(let t of e)t.unlock()}unregisterPluginFields(e){let t=this._pluginTooltipFieldRegistry.get(e);t?.forEach(e=>e.destroy()),t?.clear(),this._pluginTooltipFieldRegistry.delete(e)}createMeasuredField(e,{id:t,preset:n,getMeasurementInput:r,measure:i,fieldProperties:a,fieldFilters:o}){let c=this._getOrCreateField(e,t,n,a,o);return c.registerMeasurement(r,i,()=>this.tooltipInfo?.renderContext),c.addHandles(s(()=>this.tooltipInfo?.isEffectiveVisibleField(c.field),e=>c.enabled=!!e,l)),c}createCustomField(e,{id:t,preset:n,fieldProperties:r,fieldFilters:i}){return this._getOrCreateField(e,t,n,r,i)}_setupTooltip(e){let t=this._tooltip=v(()=>({view:e.view,options:e.toolOptions.tooltips,info:this.tooltipInfo}));t.addHandles([s(()=>this.focusedHandle,e=>{(e&&(!t.isInInputMode||this.inputModeHandle==null)||this.inputModeHandle&&!this.allHandles?.includes(this.inputModeHandle))&&(this.inputModeHandle=e)},c),s(()=>this.focusedHandle?.screenPosition,e=>{e?(t.position=e,t.hidden=!1):t.hidden=!0},c),t.on(`commit`,()=>{this.context?.notifyTooltipsChanged()})]),!this._coordinateFormatterLoadTask&&!p()&&(this._coordinateFormatterLoadTask=n(()=>m()),this.addHandles(this._coordinateFormatterLoadTask),this._updatingHandles.addPromise(this._coordinateFormatterLoadTask.promise))}_getOrCreateField(e,t,n,r,a){let s=i(this._pluginTooltipFieldRegistry,e,()=>new o);if(s.has(t))return s.get(t);let c=V(n,r),l=new g({field:c,displayGroup:r?.displayGroup,...a});s.set(t,l);let u=L(c)?this._constraintSnapshot?.[c.name]:void 0;return u&&!c.unlockOnVertexPlacement&&c.lock(u),l}};e([u()],R.prototype,`_updatingHandles`,void 0),e([u()],R.prototype,`_tooltip`,void 0),e([u()],R.prototype,`_tooltipInfo`,void 0),e([u()],R.prototype,`_coordinateFormatterLoadTask`,void 0),e([u()],R.prototype,`_constraintSnapshot`,void 0),e([u()],R.prototype,`getDependencies`,void 0),e([u()],R.prototype,`getLastScreenPosition`,void 0),e([u()],R.prototype,`context`,null),e([u()],R.prototype,`inputModeHandle`,void 0),e([u()],R.prototype,`focusedHandle`,null),e([u()],R.prototype,`allHandles`,null),e([u()],R.prototype,`effectiveActiveHandle`,null),e([u()],R.prototype,`updating`,null),e([u()],R.prototype,`tooltip`,null),e([u()],R.prototype,`tooltipInfo`,null),e([u()],R.prototype,`constraintsEnabled`,void 0),e([u()],R.prototype,`elevationConstraint`,null),e([u()],R.prototype,`allFields`,null),e([u()],R.prototype,`keepTooltipAliveEvenWhenTooltipsAreNotEnabled`,void 0),e([u()],R.prototype,`enabled`,void 0),e([u()],R.prototype,`effectiveEnabled`,null),R=e([d(`esri.views.draw.support.managers.TooltipManager`)],R);function z(e){return e==null||!(`unit`in e)||!(`rotationType`in e)?null:e}function B(e){return e==null||`rotationType`in e?null:e}function V(e,t){let n=t?{...t}:{};switch(delete n.displayGroup,e){case`area`:return x({...n,name:`area`});case`direction`:return N({...n,name:`direction`});case`distance`:return M({...n,name:`distance`});case`elevation`:{let e=j({...n,name:`elevation`});return e.showAsZ=!0,e}case`latitude`:return A({...n,name:`y`});case`longitude`:return k({...n,name:`x`});case`x`:return O({...n,name:`x`});case`y`:return D({...n,name:`y`});case`orientation`:return b({...n,name:`orientation`});case`scale`:return E({...n,name:`scale`});case`size`:return T({...n,name:`size`});case`totalLength`:return w({...n,name:`totalLength`});case`radius`:return C({...n,name:`radius`});case`generic-length`:return S({...n,name:null});case`generic-area`:return x({...n,name:null});case`generic-angle`:return b({...n,name:null});case`generic-scalar`:return y({...n,name:null});default:if(!n)throw new r(`draw-tool:tooltips:invalid-field-config`,`Attempted to create a tooltip without a preset definition and without tooltip configuration.`);return new P(n)}}function H(e){let t={};for(let n of e)switch(n.name){case`direction`:t[n.name]=n.committed;break;case`distance`:case`elevation`:t[n.name]=n.committed;break;case`x`:t[n.name]=B(n.committed),t.longitude=z(n.committed);break;case`y`:t[n.name]=B(n.committed),t.latitude=z(n.committed)}return t}export{R as TooltipManager};
@@ -797,7 +797,7 @@ export interface PluginContext {
797
797
  * Use this method to set up interactive handles that will be used to capture user input.
798
798
  *
799
799
  * By default, handles will be configured with x/y/z fields, unless opted out using the options
800
- * parameter.
800
+ * parameter. Use `elevationFieldProperties` to override the default elevation field settings.
801
801
  *
802
802
  * The `role` property controls both the appearance and several aspects of the behavior of the handle.
803
803
  * In general, `"primary"` should be used for handles that correspond directly with a vertex/point/curve endpoint
@@ -809,7 +809,10 @@ export interface PluginContext {
809
809
  * @returns The interactive handle
810
810
  * @internal
811
811
  */
812
- createInteractiveHandle(properties: Partial<InteractiveHandleConfigurationProperties>, options?: { disableDefaultXYFields?: boolean; }): InteractiveHandle;
812
+ createInteractiveHandle(properties: Partial<InteractiveHandleConfigurationProperties>, options?: {
813
+ disableDefaultXYFields?: boolean;
814
+ elevationFieldProperties?: Partial<CustomFieldProperties<Length>>;
815
+ }): InteractiveHandle;
813
816
  /**
814
817
  * Removes an interactive handle.
815
818
  *
@@ -1,7 +1,7 @@
1
1
  import type { JSONSupport } from "../../core/JSONSupport.js";
2
2
  import type { FieldType } from "../../layers/support/types.js";
3
3
 
4
- export interface SearchLayerFieldProperties extends Partial<Pick<SearchLayerField, "exactMatch" | "name" | "type">> {}
4
+ export interface SearchLayerFieldProperties extends Partial<Pick<SearchLayerField, "exactMatch" | "name" | "searchMode" | "type">> {}
5
5
 
6
6
  /**
7
7
  * Represents the field of a layer to use for search.
@@ -18,6 +18,12 @@ export default class SearchLayerField extends JSONSupport {
18
18
  accessor exactMatch: boolean;
19
19
  /** The name of the field. */
20
20
  accessor name: string | null | undefined;
21
+ /**
22
+ * Specifies how text is matched against the field when searching.
23
+ *
24
+ * @since 5.2
25
+ */
26
+ searchMode?: "simple" | "starts-with" | "full-text-starts-with" | "full-text-simple" | null;
21
27
  /** The data type of the field. */
22
28
  type?: FieldType | null;
23
29
  /**
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{JSONSupport as t}from"../../core/JSONSupport.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import{kebabDict as i}from"../../layers/support/fieldType.js";import{enumeration as a}from"../../core/accessorSupport/decorators/enumeration.js";var o;let s=o=class extends t{constructor(e){super(e),this.exactMatch=!1,this.name=null,this.type=null}clone(){return new o({exactMatch:this.exactMatch,type:this.type,name:this.name})}};e([n({type:Boolean,json:{write:!0}})],s.prototype,`exactMatch`,void 0),e([n({type:String,json:{write:!0}})],s.prototype,`name`,void 0),e([a(i)],s.prototype,`type`,void 0),s=o=e([r(`esri.webdoc.applicationProperties.SearchLayerField`)],s);const c=s;export{c as default};
2
+ import{__decorate as e}from"tslib";import{JSONSupport as t}from"../../core/JSONSupport.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import{kebabDict as i}from"../../layers/support/fieldType.js";import{searchModeKebabDict as a}from"./searchMode.js";import{enumeration as o}from"../../core/accessorSupport/decorators/enumeration.js";var s;let c=s=class extends t{constructor(e){super(e),this.exactMatch=!1,this.searchMode=null,this.name=null,this.type=null}clone(){return new s({exactMatch:this.exactMatch,type:this.type,name:this.name,searchMode:this.searchMode})}};e([n({type:Boolean,json:{write:!0}})],c.prototype,`exactMatch`,void 0),e([o(a)],c.prototype,`searchMode`,void 0),e([n({type:String,json:{write:!0}})],c.prototype,`name`,void 0),e([o(i)],c.prototype,`type`,void 0),c=s=e([r(`esri.webdoc.applicationProperties.SearchLayerField`)],c);const l=c;export{l as default};
@@ -1,7 +1,7 @@
1
1
  import type { JSONSupport } from "../../core/JSONSupport.js";
2
2
  import type { FieldType } from "../../layers/support/types.js";
3
3
 
4
- export interface SearchTableFieldProperties extends Partial<Pick<SearchTableField, "exactMatch" | "name" | "type">> {}
4
+ export interface SearchTableFieldProperties extends Partial<Pick<SearchTableField, "exactMatch" | "name" | "searchMode" | "type">> {}
5
5
 
6
6
  /**
7
7
  * Represents the field of a table to use for search.
@@ -18,6 +18,12 @@ export default class SearchTableField extends JSONSupport {
18
18
  accessor exactMatch: boolean;
19
19
  /** The name of the field. */
20
20
  accessor name: string | null | undefined;
21
+ /**
22
+ * Specifies how text is matched against the field when searching.
23
+ *
24
+ * @since 5.2
25
+ */
26
+ searchMode?: "simple" | "starts-with" | "full-text-starts-with" | "full-text-simple" | null;
21
27
  /** The data type of the field. */
22
28
  type?: FieldType | null;
23
29
  /**
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{JSONSupport as t}from"../../core/JSONSupport.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import{kebabDict as i}from"../../layers/support/fieldType.js";import{enumeration as a}from"../../core/accessorSupport/decorators/enumeration.js";var o;let s=o=class extends t{constructor(e){super(e),this.exactMatch=!1,this.name=null,this.type=null}clone(){return new o({exactMatch:this.exactMatch,type:this.type,name:this.name})}};e([n({type:Boolean,json:{write:!0}})],s.prototype,`exactMatch`,void 0),e([n({type:String,json:{write:!0}})],s.prototype,`name`,void 0),e([a(i)],s.prototype,`type`,void 0),s=o=e([r(`esri.webdoc.applicationProperties.SearchTableField`)],s);const c=s;export{c as default};
2
+ import{__decorate as e}from"tslib";import{JSONSupport as t}from"../../core/JSONSupport.js";import{property as n,subclass as r}from"../../core/accessorSupport/decorators.js";import{kebabDict as i}from"../../layers/support/fieldType.js";import{searchModeKebabDict as a}from"./searchMode.js";import{enumeration as o}from"../../core/accessorSupport/decorators/enumeration.js";var s;let c=s=class extends t{constructor(e){super(e),this.exactMatch=!1,this.name=null,this.searchMode=null,this.type=null}clone(){return new s({exactMatch:this.exactMatch,type:this.type,name:this.name,searchMode:this.searchMode})}};e([n({type:Boolean,json:{write:!0}})],c.prototype,`exactMatch`,void 0),e([n({type:String,json:{write:!0}})],c.prototype,`name`,void 0),e([o(a)],c.prototype,`searchMode`,void 0),e([o(i)],c.prototype,`type`,void 0),c=s=e([r(`esri.webdoc.applicationProperties.SearchTableField`)],c);const l=c;export{l as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{JSONMap as e}from"../../core/jsonMap.js";const t=new e({simple:`simple`,startsWith:`starts-with`,fullTextStartsWith:`full-text-starts-with`,fullTextSimple:`full-text-simple`});export{t as searchModeKebabDict};
@@ -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{createTask as n}from"../../../../core/asyncUtils.js";import r from"../../../../core/Logger.js";import{getOrCreateMapValue as i}from"../../../../core/MapUtils.js";import{abortMaybe as a}from"../../../../core/maybe.js";import{ignoreAbortErrors as o,throwIfAborted as s}from"../../../../core/promiseUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import{validateDomainValue as d}from"../../../../layers/support/domainUtils.js";import{castArcadeValue as f}from"../../expressions/expressionUtils.js";import{makeUseId as p}from"./inputUtils.js";import{isEmptyValue as m}from"../../../support/forms/formUtils.js";let h=class extends t{constructor(e){super(e),this.initialEvaluationInProgress=!1,this.filterValue=``,this._choices=[],this._evaluated=!1,this._choicesByCode=new Map,this._expressionTask=null,this._interactionActive=!1,this._updatingHandles=new u}initialize(){!this._codedValueDomain&&!m(this.fieldInput.value)&&(this.initialEvaluationInProgress=!0,this.evaluateChoiceExpression().finally(()=>{this.initialEvaluationInProgress=!1}))}destroy(){a(this._expressionTask),this._updatingHandles.destroy()}get arcadeContextInfo(){return this.fieldInput.expressionsManager.arcadeContext}get choices(){return this._choices}get evaluating(){return this._updatingHandles.updating}get evaluated(){return this._evaluated}get inputValue(){if(this._interactionActive)return this.filterValue;let e=this.fieldInput.value;return e==null?``:this.getLabel(e)}get features(){return this.fieldInput.features}get filteredChoices(){let e=this.choices,t=this.filterValue.trim().toLocaleLowerCase();return t?e.filter((e,n)=>this._normalizedChoiceNames[n].includes(t)):e}get input(){return this.fieldInput.input}get _codedValueDomain(){let e=this.fieldInput.domain;return e?.type===`coded-value`?e:null}get _normalizedChoiceNames(){return this._choices.map(({code:e,name:t})=>`${t}\n${this.getLabel(e)}`.toLocaleLowerCase())}beginInteraction(){this._interactionActive||(this._interactionActive=!0,this.filterValue=``,this.evaluateChoiceExpression())}getChoice(e){return this._choicesByCode.get(e)}getLabel(e){let t=this._codedValueDomain;return t?t.getName(e)??this.getChoice(e)?.name??String(e):this.getChoice(e)?.name??String(e)}endInteraction(){this._interactionActive=!1,this.filterValue=``}async evaluateChoiceExpression(){this._expressionTask=a(this._expressionTask);let e=n(e=>this._evaluateChoiceExpression(e));this._expressionTask=e;try{return await o(this._updatingHandles.addPromise(e.promise))??this.choices}finally{this._expressionTask===e&&(this._expressionTask=null)}}async _evaluateChoiceExpression(e){let t=await import(`../../../../arcade/languageUtils.js`);s(e);let n=this.arcadeContextInfo,r=this.fieldInput.field,i=this.fieldInput.template;await this.requestDeferredExpressionEvaluation({features:this.features.toArray(),getExecutor:e=>i.getExpressionExecutorsForLayer(e)?.choiceExpression}),this._evaluated=!0;let a=[];for(let e of this.features){let i=this._lookupExpressionOutcome(e),o=i?.result?this._parseChoices(i.result,n,r,t):[];if(o.length===0)return[];a.push(o)}let o=this.fieldInput.domain,c=v(_(a)).filter(({code:e})=>d(r,e,o)===null);return this._choicesByCode=new Map(c.map(e=>[e.code,e])),this._choices=c,c}_lookupExpressionOutcome(e){return this.fieldInput.expressionsManager.outcomes.get(e)?.get(p({elementId:this.fieldInput.template.elementId,executorPurpose:`choiceExpression`}))}_parseChoices(e,t,n,r){if(!y(e,r))return x(this),[];let i=b(e,`choices`),a=r.isImmutableArray(i)?i.toArray():Array.isArray(i)?i:[],o=[];for(let e of a){if(!y(e,r)){x(this);continue}let i=b(e,`name`),a=b(e,`code`);if(typeof i!=`string`||a===void 0||r.isVoid(a)||r.isFunctionParameter(a)){x(this);continue}let s=f(a,n,t.timeZone,r);s!=null&&o.push({name:i,code:s})}return o}};e([c()],h.prototype,`arcadeContextInfo`,null),e([c()],h.prototype,`choices`,null),e([c()],h.prototype,`evaluating`,null),e([c()],h.prototype,`evaluated`,null),e([c()],h.prototype,`initialEvaluationInProgress`,void 0),e([c()],h.prototype,`inputValue`,null),e([c()],h.prototype,`features`,null),e([c({constructOnly:!0})],h.prototype,`fieldInput`,void 0),e([c()],h.prototype,`filteredChoices`,null),e([c()],h.prototype,`filterValue`,void 0),e([c()],h.prototype,`input`,null),e([c()],h.prototype,`requestDeferredExpressionEvaluation`,void 0),e([c()],h.prototype,`_choices`,void 0),e([c()],h.prototype,`_codedValueDomain`,null),e([c()],h.prototype,`_evaluated`,void 0),e([c()],h.prototype,`_choicesByCode`,void 0),e([c()],h.prototype,`_interactionActive`,void 0),e([c()],h.prototype,`_normalizedChoiceNames`,null),h=e([l(`esri.widgets.BatchAttributeForm.inputs.support.DynamicChoiceController`)],h);const g=h;function _(e){let[t,...n]=e;if(!t||t.length===0)return[];let r=t;for(let e of n.sort((e,t)=>e.length-t.length)){if(!e.length)return[];let t=new Map;for(let{code:n,name:r}of e)i(t,n,()=>new Set).add(r);if(r=r.filter(({code:e,name:n})=>t.get(e)?.has(n)),!r.length)break}return r}function v(e){let t=new Set;return e.filter(({code:e})=>!t.has(e)&&(t.add(e),!0))}function y(e,t){return t.isDictionary(e)&&typeof e.field==`function`&&typeof e.keys==`function`}function b(e,t){let n=e.keys().find(e=>e.toLowerCase()===t);return n==null?void 0:e.field(n)}function x(e){r.getLogger(e).error(`Value returned by choice expression does not conform to specification.`)}export{g as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{createTask as n}from"../../../../core/asyncUtils.js";import r from"../../../../core/Logger.js";import{getOrCreateMapValue as i}from"../../../../core/MapUtils.js";import{abortMaybe as a}from"../../../../core/maybe.js";import{ignoreAbortErrors as o,throwIfAborted as s}from"../../../../core/promiseUtils.js";import{property as c,subclass as l}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import{validateDomainValue as d}from"../../../../layers/support/domainUtils.js";import{castArcadeValue as f}from"../../expressions/expressionUtils.js";import{makeUseId as p}from"./inputUtils.js";import{isEmptyValue as m}from"../../../support/forms/formUtils.js";let h=class extends t{constructor(e){super(e),this.initialEvaluationInProgress=!1,this.filterValue=``,this._choices=[],this._evaluated=!1,this._choicesByCode=new Map,this._expressionTask=null,this._interactionActive=!1,this._previouslySelectedChoice=void 0,this._updatingHandles=new u}initialize(){!this._codedValueDomain&&!m(this.fieldInput.value)&&(this.initialEvaluationInProgress=!0,this.evaluateChoiceExpression().finally(()=>{this.initialEvaluationInProgress=!1}))}destroy(){a(this._expressionTask),this._updatingHandles.destroy()}get arcadeContextInfo(){return this.fieldInput.expressionsManager.arcadeContext}get choices(){return this._choices}get evaluating(){return this._updatingHandles.updating}get evaluated(){return this._evaluated}get inputValue(){if(this._interactionActive)return this.filterValue;let e=this.fieldInput.value;return e==null?``:this.getLabel(e)}get interactionActive(){return this._interactionActive}get features(){return this.fieldInput.features}get filteredChoices(){let e=this.choices,t=this.filterValue.trim().toLocaleLowerCase();return t?e.filter((e,n)=>this._normalizedChoiceNames[n].includes(t)):e}get input(){return this.fieldInput.input}get _codedValueDomain(){let e=this.fieldInput.domain;return e?.type===`coded-value`?e:null}get _normalizedChoiceNames(){return this._choices.map(({code:e,name:t})=>`${t}\n${this.getLabel(e)}`.toLocaleLowerCase())}beginInteraction(){this._interactionActive||(this._interactionActive=!0,this.filterValue=``,this.evaluateChoiceExpression())}getChoice(e){return this._choicesByCode.get(e)}getLabel(e){return this._codedValueDomain?.getName(e)??this.getChoice(e)?.name??(this._previouslySelectedChoice?.code===e?this._previouslySelectedChoice.name:String(e))}endInteraction(){this._interactionActive=!1,this.filterValue=``}async evaluateChoiceExpression(){this._expressionTask=a(this._expressionTask);let e=n(e=>this._evaluateChoiceExpression(e));this._expressionTask=e;try{return await o(this._updatingHandles.addPromise(e.promise))??this.choices}finally{this._expressionTask===e&&(this._expressionTask=null)}}async _evaluateChoiceExpression(e){let t=await import(`../../../../arcade/languageUtils.js`);s(e);let n=this.arcadeContextInfo,r=this.fieldInput.field,i=this.fieldInput.template;await this.requestDeferredExpressionEvaluation({features:this.features.toArray(),getExecutor:e=>i.getExpressionExecutorsForLayer(e)?.choiceExpression}),s(e),this._evaluated=!0;let a=[];for(let e of this.features){let i=this._lookupExpressionOutcome(e),o=i?.result?this._parseChoices(i.result,n,r,t):[];if(a.push(o),o.length===0)break}let o=this.fieldInput.domain,c=v(_(a)).filter(({code:e})=>d(r,e,o)===null),l=this.fieldInput.value,u=l==null?void 0:this.getChoice(l)??(this._previouslySelectedChoice?.code===l?this._previouslySelectedChoice:void 0);return this._choicesByCode=new Map(c.map(e=>[e.code,e])),this._previouslySelectedChoice=u&&!this._choicesByCode.has(u.code)?u:void 0,this._choices=c,c}_lookupExpressionOutcome(e){return this.fieldInput.expressionsManager.outcomes.get(e)?.get(p({elementId:this.fieldInput.template.elementId,executorPurpose:`choiceExpression`}))}_parseChoices(e,t,n,r){if(!y(e,r))return x(this),[];let i=b(e,`choices`),a=r.isImmutableArray(i)?i.toArray():Array.isArray(i)?i:[],o=[];for(let e of a){if(!y(e,r)){x(this);continue}let i=b(e,`name`),a=b(e,`code`);if(typeof i!=`string`||a===void 0||r.isVoid(a)||r.isFunctionParameter(a)){x(this);continue}let s=f(a,n,t.timeZone,r);s!=null&&o.push({name:i,code:s})}return o}};e([c()],h.prototype,`arcadeContextInfo`,null),e([c()],h.prototype,`choices`,null),e([c()],h.prototype,`evaluating`,null),e([c()],h.prototype,`evaluated`,null),e([c()],h.prototype,`initialEvaluationInProgress`,void 0),e([c()],h.prototype,`inputValue`,null),e([c()],h.prototype,`interactionActive`,null),e([c()],h.prototype,`features`,null),e([c({constructOnly:!0})],h.prototype,`fieldInput`,void 0),e([c()],h.prototype,`filteredChoices`,null),e([c()],h.prototype,`filterValue`,void 0),e([c()],h.prototype,`input`,null),e([c()],h.prototype,`requestDeferredExpressionEvaluation`,void 0),e([c()],h.prototype,`_choices`,void 0),e([c()],h.prototype,`_codedValueDomain`,null),e([c()],h.prototype,`_evaluated`,void 0),e([c()],h.prototype,`_choicesByCode`,void 0),e([c()],h.prototype,`_interactionActive`,void 0),e([c()],h.prototype,`_normalizedChoiceNames`,null),e([c()],h.prototype,`_previouslySelectedChoice`,void 0),h=e([l(`esri.widgets.BatchAttributeForm.inputs.support.DynamicChoiceController`)],h);const g=h;function _(e){let[t,...n]=e;if(!t||t.length===0)return[];let r=t;for(let e of n.sort((e,t)=>e.length-t.length)){if(!e.length)return[];let t=new Map;for(let{code:n,name:r}of e)i(t,n,()=>new Set).add(r);if(r=r.filter(({code:e,name:n})=>t.get(e)?.has(n)),!r.length)break}return r}function v(e){let t=new Set;return e.filter(({code:e})=>!t.has(e)&&(t.add(e),!0))}function y(e,t){return t.isDictionary(e)&&typeof e.field==`function`&&typeof e.keys==`function`}function b(e,t){let n=e.keys().find(e=>e.toLowerCase()===t);return n==null?void 0:e.field(n)}function x(e){r.getLogger(e).error(`Value returned by choice expression does not conform to specification.`)}export{g as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isNumericField as e,isStringField as t,isTimeOnlyField as n}from"../../../../layers/support/fieldUtils.js";import{isAnyDateField as r}from"../../../../smartMapping/support/utils.js";import{ContingentValuesValidationError as i}from"../../../support/forms/formUtils.js";const a=`esri_BatchAttributeForm_different_values`,o={DIFFERENT_ERRORS:`batch-attribute-form-validation::features-have-different-errors`},s={OUT_OF_SUBTYPE_DOMAIN:`batch-attribute-form-validation::out-of-subtype-domain`};function c(e){return e===`visible`}function l(e){return e===s.OUT_OF_SUBTYPE_DOMAIN}function u(e){return e.type===`field`}function d(e){return u(e)&&e.input?.type===`multiple-choice`}function f(e){return e.type===`group`}function p(e){return e.type===`relationship`}function m(e){return e.type===`text`}function h(e){return e.type===`attachment`}function g(e){return u(e)||h(e)||p(e)||y(e)}function _(e){return u(e)||h(e)||p(e)||y(e)||m(e)}function v(e){return _(e)&&e.group!=null}function y(e){return e.type===`utilityNetworkAssociations`}function b(e){let t=`${e.elementId}:${e.executorPurpose}`;return e.textExpressionIndex==null?t:`${t}:${e.textExpressionIndex}`}const x=e=>e!=null&&(S(e,`combo-box`)||S(e,`dynamic-choice`)||S(e,`radio-buttons`));function S(e,t){return e?.type===t}function C(e,t,n=[]){for(let r of e)t(r)?n.push(r):f(r)&&C(r.inputs,t,n);return n}function w(e,t){return e.layers[0]?.getField(t)?.name??t}function T(i){return e(i)?`number`:t(i)?`text`:r(i)||n(i)?`date`:`unsupported`}function E(e){return e===i.CONTINGENCY_VIOLATION_ERROR||e===i.CONTINGENCY_VIOLATION_WARNING}export{s as FormValidationWarning,o as MultiFeatureError,C as deepFilterInputs,a as differentValuesString,T as getFieldInputDataType,w as getNormalizedFieldName,h as isAttachmentElementInput,E as isContingentValuesError,g as isEditableInput,u as isFieldInput,x as isFieldInputWithShowNoValueOptionInput,f as isGroupInput,_ as isGroupableInput,v as isGroupedInput,S as isInputWithInputType,d as isMultipleChoiceFieldInput,p as isRelationshipElementInput,m as isTextElementInput,y as isUtilityNetworkAssociationsElementInput,l as isWarning,b as makeUseId,c as visibilityCodeToBoolean};
2
+ import{isNumericField as e,isStringField as t,isTimeOnlyField as n,isGuidField as r}from"../../../../layers/support/fieldUtils.js";import{isAnyDateField as i}from"../../../../smartMapping/support/utils.js";import{ContingentValuesValidationError as a}from"../../../support/forms/formUtils.js";const o=`esri_BatchAttributeForm_different_values`,s={DIFFERENT_ERRORS:`batch-attribute-form-validation::features-have-different-errors`},c={OUT_OF_SUBTYPE_DOMAIN:`batch-attribute-form-validation::out-of-subtype-domain`};function l(e){return e===`visible`}function u(e){return e===c.OUT_OF_SUBTYPE_DOMAIN}function d(e){return e.type===`field`}function f(e){return d(e)&&e.input?.type===`multiple-choice`}function p(e){return e.type===`group`}function m(e){return e.type===`relationship`}function h(e){return e.type===`text`}function g(e){return e.type===`attachment`}function _(e){return d(e)||g(e)||m(e)||b(e)}function v(e){return d(e)||g(e)||m(e)||b(e)||h(e)}function y(e){return v(e)&&e.group!=null}function b(e){return e.type===`utilityNetworkAssociations`}function x(e){let t=`${e.elementId}:${e.executorPurpose}`;return e.textExpressionIndex==null?t:`${t}:${e.textExpressionIndex}`}const S=e=>e!=null&&(C(e,`combo-box`)||C(e,`dynamic-choice`)||C(e,`radio-buttons`));function C(e,t){return e?.type===t}function w(e,t,n=[]){for(let r of e)t(r)?n.push(r):p(r)&&w(r.inputs,t,n);return n}function T(e,t){return e.layers[0]?.getField(t)?.name??t}function E(a){return e(a)?`number`:t(a)?`text`:i(a)||n(a)?`date`:r(a)?`guid`:`unsupported`}function D(e){return e===a.CONTINGENCY_VIOLATION_ERROR||e===a.CONTINGENCY_VIOLATION_WARNING}export{c as FormValidationWarning,s as MultiFeatureError,w as deepFilterInputs,o as differentValuesString,E as getFieldInputDataType,T as getNormalizedFieldName,g as isAttachmentElementInput,D as isContingentValuesError,_ as isEditableInput,d as isFieldInput,S as isFieldInputWithShowNoValueOptionInput,p as isGroupInput,v as isGroupableInput,y as isGroupedInput,C as isInputWithInputType,f as isMultipleChoiceFieldInput,m as isRelationshipElementInput,h as isTextElementInput,b as isUtilityNetworkAssociationsElementInput,u as isWarning,x as makeUseId,l as visibilityCodeToBoolean};