@arcgis/core 5.1.0-next.18 → 5.1.0-next.19

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 (662) hide show
  1. package/Camera.d.ts +1 -1
  2. package/Ground.d.ts +7 -7
  3. package/PopupTemplate.d.ts +6 -6
  4. package/WebScene.d.ts +1 -1
  5. package/analysis/AreaMeasurementAnalysis.d.ts +1 -1
  6. package/analysis/DirectLineMeasurementAnalysis.d.ts +1 -1
  7. package/analysis/LengthDimension.d.ts +4 -4
  8. package/analysis/ShadowCastAnalysis.d.ts +3 -3
  9. package/analysis/SliceAnalysis.d.ts +1 -1
  10. package/analysis/SlicePlane.d.ts +1 -1
  11. package/analysis/VolumeMeasurement/VolumeMeasurementCutFillOptions.d.ts +1 -1
  12. package/analysis/VolumeMeasurementAnalysis.d.ts +1 -1
  13. package/applications/Components/applySetUtils.d.ts +1 -1
  14. package/applications/WebEditor/geometryUtils.d.ts +26 -0
  15. package/applications/WebEditor/geometryUtils.js +2 -0
  16. package/assets/esri/core/workers/RemoteClient.js +1 -1
  17. package/assets/esri/core/workers/chunks/045e4e520d6dffe06ba7.js +1 -0
  18. package/assets/esri/core/workers/chunks/05d6cd51ca970705e46a.js +1 -0
  19. package/assets/esri/core/workers/chunks/{fd125618f513bc2f5206.js → 08d73543c713984f6ecf.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{982e709d2cef971ecd82.js → 0d9d33f29124d464a4cb.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{07317f6b57c1314db442.js → 0e1d559d05229ef92e35.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{2762149a922275136171.js → 112227b862b935123ddf.js} +2 -2
  23. package/assets/esri/core/workers/chunks/128cdb4a02549abc68b5.js +1 -0
  24. package/assets/esri/core/workers/chunks/1336f685bae5f1251558.js +1 -0
  25. package/assets/esri/core/workers/chunks/{b71e4f48377fefe2537d.js → 15d46482ec096e3ce161.js} +1 -1
  26. package/assets/esri/core/workers/chunks/1794db88a2006711eff3.js +1 -0
  27. package/assets/esri/core/workers/chunks/{a327f36561f093dc0fab.js → 19fcc74d34cbbaa56a41.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{d0d1378e714ff0e43e26.js → 1cfa8d404d42b9eccf78.js} +1 -1
  29. package/assets/esri/core/workers/chunks/1e916e552ce7d53692d2.js +1 -0
  30. package/assets/esri/core/workers/chunks/2011da6dfc4bb89829c6.js +1 -0
  31. package/assets/esri/core/workers/chunks/{1e29a114c1cfe21121c4.js → 203ef5459fc5dde12851.js} +1 -1
  32. package/assets/esri/core/workers/chunks/215c54520d0da638fe57.js +1 -0
  33. package/assets/esri/core/workers/chunks/22045f85e503ae0ec8f4.js +1 -0
  34. package/assets/esri/core/workers/chunks/{78fc7ef00cc4931ef47d.js → 2351b713ba3d05de0728.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{0a4ebb5dca630a4ab0dd.js → 236f8137ae505c8f0764.js} +1 -1
  36. package/assets/esri/core/workers/chunks/249630af2fb01257eb75.js +1 -0
  37. package/assets/esri/core/workers/chunks/{1f30558e3ad6ac68bdb8.js → 25d34552bfb255af9467.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{7cd4280d24b24045bd7e.js → 27e14277128446e76b45.js} +1 -1
  39. package/assets/esri/core/workers/chunks/3214763f268622f09986.js +1 -0
  40. package/assets/esri/core/workers/chunks/32a1ccc145c9f6091e13.js +1 -0
  41. package/assets/esri/core/workers/chunks/34691b147318b2cfdd45.js +1 -0
  42. package/assets/esri/core/workers/chunks/{18c05353d6d8950d1491.js → 36215b2c0b1020743458.js} +1 -1
  43. package/assets/esri/core/workers/chunks/3d3b1ce112be6ea31d93.js +1 -0
  44. package/assets/esri/core/workers/chunks/{2badadf8032e166b34ec.js → 3f3c63420644f9522ab1.js} +1 -1
  45. package/assets/esri/core/workers/chunks/41108f58f0f439ebba3f.js +1 -0
  46. package/assets/esri/core/workers/chunks/{bc9997d15ec0a86793c6.js → 415957a42e45eb21aa84.js} +1 -1
  47. package/assets/esri/core/workers/chunks/43c797bfc2191b51875b.js +1 -0
  48. package/assets/esri/core/workers/chunks/460a82f3e4838b13e3b4.js +1 -0
  49. package/assets/esri/core/workers/chunks/4ad6f80488aa218b95e3.js +1 -0
  50. package/assets/esri/core/workers/chunks/4e9863a11d09900baf30.js +1 -0
  51. package/assets/esri/core/workers/chunks/4fe210314813ea1f7a26.js +1 -0
  52. package/assets/esri/core/workers/chunks/5028de543cc1b8e60e65.js +1 -0
  53. package/assets/esri/core/workers/chunks/52705ccbb452a3edb064.js +1 -0
  54. package/assets/esri/core/workers/chunks/{17b39b88547968048113.js → 531c55f3b8e708ccf767.js} +1 -1
  55. package/assets/esri/core/workers/chunks/{72acfb74fd9ab9bae923.js → 53e348f5585fa8c53fe8.js} +2 -2
  56. package/assets/esri/core/workers/chunks/54c545f44b7ce21fb604.js +1 -0
  57. package/assets/esri/core/workers/chunks/558e9fed2e58cbbf9947.js +1 -0
  58. package/assets/esri/core/workers/chunks/{b50d2d3379654de1f2f3.js → 58134617fb7530836b81.js} +1 -1
  59. package/assets/esri/core/workers/chunks/58c4be467a922fe37f01.js +1 -0
  60. package/assets/esri/core/workers/chunks/{ec4e2f18453e1cb68fed.js → 5f10f39835cb40179000.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{7b1964255722e756eba3.js → 5f9eeab833a6c08c76c4.js} +1 -1
  62. package/assets/esri/core/workers/chunks/651b46aeabf22ff53a38.js +1 -0
  63. package/assets/esri/core/workers/chunks/65f86594c42ff82095fe.js +1 -0
  64. package/assets/esri/core/workers/chunks/{90316fb569389d48920f.js → 666f201d222c50ab8428.js} +1 -1
  65. package/assets/esri/core/workers/chunks/677f5e444ff588ab670f.js +1 -0
  66. package/assets/esri/core/workers/chunks/{323f6077a659416c4cee.js → 6a9a96aa811c1d3b6edb.js} +1 -1
  67. package/assets/esri/core/workers/chunks/6bf7d8de86b9eb76f920.js +1 -0
  68. package/assets/esri/core/workers/chunks/6c0b7890c8eec7febe28.js +1 -0
  69. package/assets/esri/core/workers/chunks/{25c189e894927099c239.js → 6c85396c90941a042c33.js} +1 -1
  70. package/assets/esri/core/workers/chunks/{18b0776aef1536867ab8.js → 6f337c3ccd84d90a35e5.js} +1 -1
  71. package/assets/esri/core/workers/chunks/711bec78dc00fad0f78d.js +1 -0
  72. package/assets/esri/core/workers/chunks/7382c9882525101eddad.js +1 -0
  73. package/assets/esri/core/workers/chunks/778ab9e4c3928b0d7d74.js +1 -0
  74. package/assets/esri/core/workers/chunks/{a3e8b7185d63a0f85931.js → 79c69ae86a1f4a56f7c7.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{0420fb4b3592f8a26b1f.js → 7d2b1e5402a88b6bee85.js} +1 -1
  76. package/assets/esri/core/workers/chunks/7ec83fc059325e207825.js +1 -0
  77. package/assets/esri/core/workers/chunks/7f385e9c88df3395e678.js +1 -0
  78. package/assets/esri/core/workers/chunks/{66ed527cd8ad11d008be.js → 80d51d58db09b9f96cb5.js} +1 -1
  79. package/assets/esri/core/workers/chunks/81a45d7e9dadf678b584.js +1 -0
  80. package/assets/esri/core/workers/chunks/81c758bdc07ed9d9a132.js +1 -0
  81. package/assets/esri/core/workers/chunks/{8670d9d11950f3c61b79.js → 83711695e16912e9b9c5.js} +1 -1
  82. package/assets/esri/core/workers/chunks/8c3bf66f8543cedc72ef.js +1 -0
  83. package/assets/esri/core/workers/chunks/8cade3af17a8bb6d4e37.js +1 -0
  84. package/assets/esri/core/workers/chunks/920d6330df72e2f01d19.js +1 -0
  85. package/assets/esri/core/workers/chunks/9dc7abca1d1eb9ba5b58.js +1 -0
  86. package/assets/esri/core/workers/chunks/9e054c264b17f04b7efa.js +1 -0
  87. package/assets/esri/core/workers/chunks/a143a6f8e2f21548b244.js +1 -0
  88. package/assets/esri/core/workers/chunks/a48a6232fa33084cb686.js +1 -0
  89. package/assets/esri/core/workers/chunks/a4947d5d2fa6b7bd399b.js +1 -0
  90. package/assets/esri/core/workers/chunks/a49f1172b17c14527acf.js +1 -0
  91. package/assets/esri/core/workers/chunks/{6af14a0217077d9ab47f.js → aaf3ed508d30ed583915.js} +1 -1
  92. package/assets/esri/core/workers/chunks/{ab9156be67332338bbe4.js → aceec85ce64a3e6d8761.js} +1 -1
  93. package/assets/esri/core/workers/chunks/b10b3eb8c2ed9be14ab2.js +1 -0
  94. package/assets/esri/core/workers/chunks/b315b3771d0d19681aa5.js +1 -0
  95. package/assets/esri/core/workers/chunks/{91858b02da40ff251ab2.js → b397a9f87082705301a4.js} +2 -2
  96. package/assets/esri/core/workers/chunks/b40e4ed067da65c3d7ce.js +1 -0
  97. package/assets/esri/core/workers/chunks/b4b16914950792c46bd3.js +1 -0
  98. package/assets/esri/core/workers/chunks/{360b3499e2a671c309ce.js → b6969a42602517a6ef1c.js} +1 -1
  99. package/assets/esri/core/workers/chunks/baad696d84ab78b3d00e.js +2 -0
  100. package/assets/esri/core/workers/chunks/{2e7d4a437717606bc39c.js → bc2dcbdc414d157ab727.js} +1 -1
  101. package/assets/esri/core/workers/chunks/{1aa2187597f7c4adb67f.js → bcb254cb7297fec88679.js} +1 -1
  102. package/assets/esri/core/workers/chunks/{2d1a772abd730b61854f.js → bd2125e0a68378533641.js} +1 -1
  103. package/assets/esri/core/workers/chunks/{6bd910e0480451a8d6aa.js → bde2c3199f667b63dbe8.js} +1 -1
  104. package/assets/esri/core/workers/chunks/bf595eb10f99b8a96baa.js +1 -0
  105. package/assets/esri/core/workers/chunks/c0b6706f86665cec85f8.js +1 -0
  106. package/assets/esri/core/workers/chunks/{12fd2e26e949d90abfbd.js → c3c6d337ff53e5d921e8.js} +1 -1
  107. package/assets/esri/core/workers/chunks/c461c19e4fdbdd2e94d4.js +1 -0
  108. package/assets/esri/core/workers/chunks/{4214f46bee613dea72f3.js → c66aa57b6360963bd938.js} +1 -1
  109. package/assets/esri/core/workers/chunks/c873ac660e7d5dc88781.js +1 -0
  110. package/assets/esri/core/workers/chunks/c99f36159b5ed6f9267e.js +1 -0
  111. package/assets/esri/core/workers/chunks/cb5f4820277f3fc7ff2f.js +1 -0
  112. package/assets/esri/core/workers/chunks/cbcb3530375e280bfeac.js +1 -0
  113. package/assets/esri/core/workers/chunks/cf4202ad468501ef24cf.js +1 -0
  114. package/assets/esri/core/workers/chunks/d03d50f3247327257d8b.js +1 -0
  115. package/assets/esri/core/workers/chunks/{a5af20f3d484d2d3bafe.js → d2017b0b27b9e4ada922.js} +1 -1
  116. package/assets/esri/core/workers/chunks/d2d9c1f32a75befe168b.js +1 -0
  117. package/assets/esri/core/workers/chunks/{5c12a9b0db317620dce2.js → d39f5d57f7e35c00ca16.js} +1 -1
  118. package/assets/esri/core/workers/chunks/d5b4487a983921572e58.js +1 -0
  119. package/assets/esri/core/workers/chunks/d78b2f85ec9212a973e8.js +1 -0
  120. package/assets/esri/core/workers/chunks/d9dc8d9fc8ab2706f96b.js +1 -0
  121. package/assets/esri/core/workers/chunks/{09cf8aed89a1ea1f8b28.js → da42da04a9df651b06cc.js} +1 -1
  122. package/assets/esri/core/workers/chunks/{a82587f69c4bbcac7e0b.js → dc7df2072c0ebed5602c.js} +1 -1
  123. package/assets/esri/core/workers/chunks/dd24cddc406f610d2483.js +1 -0
  124. package/assets/esri/core/workers/chunks/dd3789e71270a4640551.js +1 -0
  125. package/assets/esri/core/workers/chunks/de5719ef663224860af5.js +1 -0
  126. package/assets/esri/core/workers/chunks/de6438fdbe38d32c4ad5.js +1 -0
  127. package/assets/esri/core/workers/chunks/ded71a656e2626a411f9.js +1 -0
  128. package/assets/esri/core/workers/chunks/df1fa0f7e8f7e2bcc2e6.js +1 -0
  129. package/assets/esri/core/workers/chunks/{b705f837caa76cee81fc.js → e09722903e63f6cc2540.js} +1 -1
  130. package/assets/esri/core/workers/chunks/e2e03622936d2b35afc0.js +1 -0
  131. package/assets/esri/core/workers/chunks/e33f5780fb45ac7ca889.js +1 -0
  132. package/assets/esri/core/workers/chunks/{eb9e913fe0dfcc71cf92.js → e4611ebd7dba7692a914.js} +1 -1
  133. package/assets/esri/core/workers/chunks/e52793690dff1a199647.js +1 -0
  134. package/assets/esri/core/workers/chunks/{c13efb74aa4602f6a1ee.js → e56a10a475ce128b5fce.js} +1 -1
  135. package/assets/esri/core/workers/chunks/{9531f17cecd50431cce2.js → e8ae71e482b8d5f54a72.js} +1 -1
  136. package/assets/esri/core/workers/chunks/ea633a6a3b9ea8ce965d.js +1 -0
  137. package/assets/esri/core/workers/chunks/eae1c098c16e2faaf90d.js +1 -0
  138. package/assets/esri/core/workers/chunks/{f7e25a85a79c4e3c1c9f.js → ec63c0fa21cd3c872633.js} +1 -1
  139. package/assets/esri/core/workers/chunks/ece363681bb09072f379.js +1 -0
  140. package/assets/esri/core/workers/chunks/edaae0fc63d16b0f675d.js +2 -0
  141. package/assets/esri/core/workers/chunks/{8650fbe1db55b7280c00.js → ef4237dc7b67c9039826.js} +1 -1
  142. package/assets/esri/core/workers/chunks/ef9106ee818ec732b670.js +1 -0
  143. package/assets/esri/core/workers/chunks/f121a0bf33c03abfa0b6.js +1 -0
  144. package/assets/esri/core/workers/chunks/{a2f38e86acf45272dbc2.js → f7506c9d57b2ae0c5fd3.js} +1 -1
  145. package/assets/esri/core/workers/chunks/fab7e3e07d700d7bb651.js +1 -0
  146. package/assets/esri/core/workers/chunks/fcc8d0b60f7c2397e550.js +1 -0
  147. package/assets/esri/core/workers/chunks/fe5aec7e2da4465422b4.js +1 -0
  148. package/assets/esri/themes/base/widgets/_BasemapGallery.scss +1 -0
  149. package/assets/esri/themes/base/widgets/_Editor.scss +1 -0
  150. package/assets/esri/themes/dark/main.css +1 -1
  151. package/assets/esri/themes/light/main.css +1 -1
  152. package/assets/esri/themes/light/view.css +1 -1
  153. package/chunks/Envelope.js +1 -1
  154. package/chunks/GeodeticDistanceCalculator-Ce-woMPw.js +1 -1
  155. package/chunks/GeodeticUtils.js +1 -1
  156. package/chunks/Geometry.js +1 -1
  157. package/chunks/MultiPathImpl.js +1 -1
  158. package/chunks/OperatorGeodesicBuffer.js +1 -1
  159. package/chunks/OperatorGeodeticArea.js +1 -1
  160. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  161. package/chunks/OperatorGeodeticLength.js +1 -1
  162. package/chunks/OperatorIntegrate.js +2 -0
  163. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  164. package/chunks/OperatorProximityGeodesic.js +1 -1
  165. package/chunks/OperatorShapePreservingLength.js +1 -1
  166. package/chunks/OperatorShapePreservingProject.js +1 -1
  167. package/chunks/Point2D.js +1 -1
  168. package/chunks/SpatialReference.js +1 -1
  169. package/chunks/containsOperator.js +1 -1
  170. package/chunks/disjointOperator.js +1 -1
  171. package/chunks/relateOperator.js +1 -1
  172. package/config.js +1 -1
  173. package/core/has.js +1 -1
  174. package/editing/sharedTemplates/SharedTemplateMetadata.d.ts +0 -31
  175. package/{layers/graphics/editingSupport.d.ts → editing/types.d.ts} +8 -8
  176. package/editing/types.js +2 -0
  177. package/effects/FocusAreas.d.ts +1 -1
  178. package/form/elements/FieldElement.d.ts +1 -1
  179. package/form/elements/GroupElement.d.ts +1 -1
  180. package/form/elements/TextElement.d.ts +1 -1
  181. package/form/elements/inputs/ComboBoxInput.d.ts +1 -1
  182. package/form/elements/inputs/RadioButtonsInput.d.ts +1 -1
  183. package/form/elements/inputs/SwitchInput.d.ts +1 -1
  184. package/geometry/Mesh.d.ts +7 -7
  185. package/geometry/operators/alphaShapeOperator.d.ts +1 -1
  186. package/geometry/operators/areaOperator.d.ts +1 -1
  187. package/geometry/operators/bufferOperator.d.ts +1 -1
  188. package/geometry/operators/centroidOperator.d.ts +1 -1
  189. package/geometry/operators/clipOperator.d.ts +1 -1
  190. package/geometry/operators/containsOperator.d.ts +1 -1
  191. package/geometry/operators/convexHullOperator.d.ts +1 -1
  192. package/geometry/operators/crossesOperator.d.ts +1 -1
  193. package/geometry/operators/cutOperator.d.ts +1 -1
  194. package/geometry/operators/densifyOperator.d.ts +1 -1
  195. package/geometry/operators/differenceOperator.d.ts +1 -1
  196. package/geometry/operators/disjointOperator.d.ts +1 -1
  197. package/geometry/operators/distanceOperator.d.ts +1 -1
  198. package/geometry/operators/extendOperator.js +1 -1
  199. package/geometry/operators/generalizeOperator.d.ts +1 -1
  200. package/geometry/operators/geodesicProximityOperator.d.ts +1 -1
  201. package/geometry/operators/geodeticDistanceOperator.d.ts +1 -1
  202. package/geometry/operators/geodeticUtilsOperator.d.ts +2 -2
  203. package/geometry/operators/graphicBufferOperator.d.ts +1 -1
  204. package/geometry/operators/gx/operatorAlphaShape.js +1 -1
  205. package/geometry/operators/gx/operatorAutoComplete.js +1 -1
  206. package/geometry/operators/gx/operatorConvexHull.js +1 -1
  207. package/geometry/operators/gx/operatorIntegrate.js +1 -1
  208. package/geometry/operators/gx/operatorIntersection.js +1 -1
  209. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  210. package/geometry/operators/gx/operatorMinimumBoundingCircle.js +1 -1
  211. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  212. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  213. package/geometry/operators/intersectionOperator.d.ts +1 -1
  214. package/geometry/operators/intersectsOperator.d.ts +1 -1
  215. package/geometry/operators/isNearOperator.d.ts +1 -1
  216. package/geometry/operators/json/containsOperator.js +1 -1
  217. package/geometry/operators/json/disjointOperator.js +1 -1
  218. package/geometry/operators/lengthOperator.d.ts +1 -1
  219. package/geometry/operators/locateBetweenOperator.d.ts +1 -1
  220. package/geometry/operators/multiPartToSinglePartOperator.d.ts +1 -1
  221. package/geometry/operators/offsetOperator.d.ts +5 -5
  222. package/geometry/operators/overlapsOperator.d.ts +1 -1
  223. package/geometry/operators/proximityOperator.d.ts +1 -1
  224. package/geometry/operators/reshapeOperator.js +1 -1
  225. package/geometry/operators/simplifyOGCOperator.d.ts +1 -1
  226. package/geometry/operators/simplifyOperator.d.ts +1 -1
  227. package/geometry/operators/support/GeographicTransformation.d.ts +6 -4
  228. package/geometry/operators/support/GeographicTransformation.js +1 -1
  229. package/geometry/operators/support/GeographicTransformationStep.d.ts +5 -3
  230. package/geometry/operators/support/GeographicTransformationStep.js +1 -1
  231. package/geometry/operators/support/Transformation.d.ts +6 -6
  232. package/geometry/operators/support/jsonConverter.js +1 -1
  233. package/geometry/operators/support/projectionTransformation.js +1 -1
  234. package/geometry/operators/symmetricDifferenceOperator.d.ts +1 -1
  235. package/geometry/operators/touchesOperator.d.ts +1 -1
  236. package/geometry/operators/unionOperator.d.ts +1 -1
  237. package/geometry/operators/withinOperator.d.ts +1 -1
  238. package/geometry/support/MeshMaterialMetallicRoughness.d.ts +1 -1
  239. package/geometry/support/zscale.js +1 -1
  240. package/graphic/KnowledgeGraphGraphicOrigin.d.ts +0 -1
  241. package/graphic/LinkChartGraphicOrigin.js +1 -1
  242. package/interfaces.d.ts +60 -60
  243. package/kernel.js +1 -1
  244. package/layers/BuildingSceneLayer.d.ts +4 -4
  245. package/layers/CSVLayer.d.ts +319 -542
  246. package/layers/CSVLayer.js +1 -1
  247. package/layers/CatalogLayer.d.ts +2 -2
  248. package/layers/ElevationLayer.d.ts +1 -1
  249. package/layers/FeatureLayer.d.ts +15 -15
  250. package/layers/FeatureLayer.js +1 -1
  251. package/layers/GeoJSONLayer.d.ts +6 -6
  252. package/layers/GeoRSSLayer.d.ts +1 -1
  253. package/layers/GraphicsLayer.d.ts +2 -2
  254. package/layers/ImageryLayer.d.ts +3 -3
  255. package/layers/ImageryTileLayer.d.ts +2 -2
  256. package/layers/IntegratedMesh3DTilesLayer.d.ts +6 -6
  257. package/layers/IntegratedMeshLayer.d.ts +7 -7
  258. package/layers/MapImageLayer.d.ts +1 -1
  259. package/layers/MediaLayer.d.ts +1 -1
  260. package/layers/OGCFeatureLayer.d.ts +2 -2
  261. package/layers/OrientedImageryLayer.d.ts +6 -6
  262. package/layers/OrientedImageryLayer.js +1 -1
  263. package/layers/PointCloudLayer.d.ts +1 -1
  264. package/layers/SceneLayer.d.ts +7 -7
  265. package/layers/StreamLayer.d.ts +2 -2
  266. package/layers/SubtypeGroupLayer.d.ts +5 -5
  267. package/layers/VectorTileLayer.d.ts +2 -2
  268. package/layers/VideoLayer.d.ts +1 -1
  269. package/layers/VoxelLayer.d.ts +8 -8
  270. package/layers/WFSLayer.d.ts +6 -6
  271. package/layers/catalog/CatalogFootprintLayer.d.ts +1 -1
  272. package/layers/graphics/applyEditsUtils.js +1 -1
  273. package/layers/graphics/data/QueryEngineCapabilities.js +1 -1
  274. package/layers/graphics/data/QueryEngineResult.js +1 -1
  275. package/layers/graphics/editingSupport.js +1 -1
  276. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  277. package/layers/graphics/sources/OGCFeatureSource.js +1 -1
  278. package/layers/graphics/sources/support/CSVSourceWorker.js +1 -1
  279. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  280. package/layers/graphics/sources/support/QueryTask.js +1 -1
  281. package/layers/mixins/ArcGISImageService.js +1 -1
  282. package/layers/mixins/BlendLayer.d.ts +6 -6
  283. package/layers/mixins/EditBusLayer.d.ts +1 -1
  284. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  285. package/layers/orientedImagery/transformations/utils.js +1 -1
  286. package/layers/pointCloudFilters/PointCloudReturnFilter.d.ts +1 -1
  287. package/layers/pointCloudFilters/PointCloudValueFilter.d.ts +1 -1
  288. package/layers/raster/datasets/ImageServerRaster.js +1 -1
  289. package/layers/raster/functions/ExtractBandFunction.js +1 -1
  290. package/layers/support/DimensionalDefinition.d.ts +2 -2
  291. package/layers/support/FeatureEffect.d.ts +4 -4
  292. package/layers/support/FeatureFilter.d.ts +17 -17
  293. package/layers/support/FeatureReductionBinning.d.ts +1 -1
  294. package/layers/support/FeatureReductionCluster.d.ts +9 -9
  295. package/layers/support/LabelClass.d.ts +2 -2
  296. package/layers/support/RasterFunction.d.ts +1 -1
  297. package/layers/support/SceneFilter.d.ts +2 -2
  298. package/layers/support/SceneModification.d.ts +3 -3
  299. package/layers/support/SubtypeSublayer.d.ts +5 -5
  300. package/layers/support/arcgisLayerUrl.js +1 -1
  301. package/layers/support/capabilities.js +1 -1
  302. package/layers/support/featurePopupQueryUtils.js +1 -1
  303. package/layers/support/serviceCapabilitiesUtils.js +1 -1
  304. package/networks/support/Circuit.d.ts +11 -2
  305. package/networks/support/CircuitSection.d.ts +3 -2
  306. package/networks/support/TraceConfiguration.d.ts +5 -4
  307. package/networks/support/UNTraceConfiguration.d.ts +6 -5
  308. package/networks/support/jsonTypes.d.ts +305 -0
  309. package/package.json +3 -3
  310. package/popup/content/AttachmentsContent.d.ts +1 -1
  311. package/popup/content/BarChartMediaInfo.d.ts +1 -1
  312. package/popup/content/ColumnChartMediaInfo.d.ts +1 -1
  313. package/popup/content/FieldsContent.d.ts +1 -1
  314. package/popup/content/ImageMediaInfo.d.ts +1 -1
  315. package/popup/content/LineChartMediaInfo.d.ts +1 -1
  316. package/popup/content/MediaContent.d.ts +1 -1
  317. package/popup/content/PieChartMediaInfo.d.ts +1 -1
  318. package/popup/content/RelationshipContent.d.ts +1 -1
  319. package/popup/content/TextContent.d.ts +1 -1
  320. package/portal/schemas/definitions.js +1 -1
  321. package/portal/support/urlUtils.js +1 -1
  322. package/renderers/DotDensityRenderer.d.ts +3 -3
  323. package/renderers/FlowRenderer.d.ts +6 -6
  324. package/renderers/HeatmapRenderer.d.ts +3 -3
  325. package/renderers/PieChartRenderer.d.ts +1 -1
  326. package/renderers/RasterShadedReliefRenderer.d.ts +1 -1
  327. package/renderers/Renderer.d.ts +2 -2
  328. package/renderers/SimpleRenderer.d.ts +1 -1
  329. package/renderers/VectorFieldRenderer.d.ts +1 -1
  330. package/renderers/mixins/VisualVariablesMixin.d.ts +8 -8
  331. package/rest/featureService/FeatureService.js +1 -1
  332. package/rest/featureService/types.d.ts +7 -1
  333. package/rest/query/operations/editsZScale.js +1 -1
  334. package/rest/query/operations/pbfFlatFeatureSet.js +1 -1
  335. package/rest/query/support/AttachmentInfo.d.ts +1 -1
  336. package/rest/support/AutoIntervalBinParameters.d.ts +1 -1
  337. package/rest/support/DateBinParameters.d.ts +1 -1
  338. package/rest/support/FixedBoundariesBinParameters.d.ts +1 -1
  339. package/rest/support/FixedIntervalBinParameters.d.ts +1 -1
  340. package/rest/support/Query.d.ts +3 -2
  341. package/rest/types.d.ts +1 -3
  342. package/smartMapping/labels/clusters.d.ts +1 -1
  343. package/smartMapping/popup/clusters.d.ts +2 -2
  344. package/smartMapping/popup/templates.d.ts +1 -1
  345. package/smartMapping/raster/renderers/flow.d.ts +2 -2
  346. package/smartMapping/renderers/color.d.ts +12 -12
  347. package/smartMapping/renderers/predominance.d.ts +3 -3
  348. package/smartMapping/renderers/relationship.d.ts +15 -15
  349. package/smartMapping/renderers/univariateColorSize.d.ts +4 -4
  350. package/smartMapping/support/adapters/FeatureLayerAdapter.js +1 -1
  351. package/smartMapping/support/adapters/InMemoryLayerAdapter.js +1 -1
  352. package/smartMapping/support/utils.js +1 -1
  353. package/smartMapping/symbology/color.d.ts +4 -4
  354. package/smartMapping/symbology/flow.d.ts +2 -2
  355. package/smartMapping/symbology/types.d.ts +18 -18
  356. package/support/revision.js +1 -1
  357. package/symbols/CIMSymbol.d.ts +1 -1
  358. package/symbols/FillSymbol3DLayer.d.ts +3 -3
  359. package/symbols/IconSymbol3DLayer.d.ts +1 -1
  360. package/symbols/LabelSymbol3D.d.ts +2 -2
  361. package/symbols/LineStyleMarker3D.d.ts +7 -7
  362. package/symbols/LineSymbol3D.d.ts +2 -2
  363. package/symbols/LineSymbol3DLayer.d.ts +7 -7
  364. package/symbols/LineSymbolMarker.d.ts +6 -6
  365. package/symbols/MarkerSymbol.d.ts +1 -1
  366. package/symbols/MeshSymbol3D.d.ts +2 -2
  367. package/symbols/ObjectSymbol3DLayer.d.ts +1 -1
  368. package/symbols/PathSymbol3DLayer.d.ts +14 -14
  369. package/symbols/PictureFillSymbol.d.ts +1 -1
  370. package/symbols/PictureMarkerSymbol.d.ts +1 -1
  371. package/symbols/PointSymbol3D.d.ts +3 -3
  372. package/symbols/PolygonSymbol3D.d.ts +8 -26
  373. package/symbols/PolygonSymbol3D.js +1 -1
  374. package/symbols/SimpleFillSymbol.d.ts +8 -8
  375. package/symbols/SimpleLineSymbol.d.ts +20 -20
  376. package/symbols/SimpleMarkerSymbol.d.ts +7 -7
  377. package/symbols/Symbol3DLayer.d.ts +16 -16
  378. package/symbols/TextSymbol.d.ts +1 -1
  379. package/symbols/TextSymbol3DLayer.d.ts +1 -1
  380. package/symbols/WaterSymbol3DLayer.d.ts +3 -3
  381. package/symbols/WebStyleSymbol.d.ts +1 -1
  382. package/symbols/callouts/Callout3D.d.ts +1 -1
  383. package/symbols/callouts/LineCallout3D.d.ts +3 -3
  384. package/symbols/cim/CIMCursor.js +1 -1
  385. package/symbols/cim/CIMSymbolHelper.js +1 -1
  386. package/symbols/cim/cimAnalyzer.js +1 -1
  387. package/symbols/cim/placements/PlacementAlongLineSameSize.js +1 -1
  388. package/symbols/cim/placements/PlacementAtExtremities.js +1 -1
  389. package/symbols/cim/placements/PlacementAtMeasuredUnits.js +1 -1
  390. package/symbols/cim/placements/PlacementAtRatioPositions.js +1 -1
  391. package/symbols/cim/placements/PlacementOnLine.js +1 -1
  392. package/symbols/cim/placements/PlacementOnVertices.js +1 -1
  393. package/symbols/cim/types.d.ts +30 -23
  394. package/symbols/edges/Edges3D.d.ts +1 -1
  395. package/symbols/edges/SolidEdges3D.d.ts +1 -1
  396. package/symbols/patterns/LineStylePattern3D.d.ts +11 -11
  397. package/symbols/patterns/StylePattern3D.d.ts +8 -8
  398. package/symbols/support/ElevationInfo.d.ts +2 -2
  399. package/symbols/support/IconSymbol3DLayerResource.d.ts +6 -6
  400. package/symbols/support/ObjectSymbol3DLayerResource.d.ts +7 -7
  401. package/symbols/support/Symbol3DEmissive.d.ts +24 -13
  402. package/symbols/support/Symbol3DVerticalOffset.d.ts +2 -2
  403. package/symbols/support/previewSymbol3D.js +1 -1
  404. package/versionManagement/VersionManagementService.d.ts +3 -2
  405. package/views/2d/analysis/DistanceMeasurement/utils.js +1 -1
  406. package/views/2d/engine/webgl/shaderGraph/techniques/GraphicInstanceStore.js +1 -1
  407. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedPolyShader.js +1 -1
  408. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedFillShader.js +1 -1
  409. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedPolyMeshWriters.js +1 -1
  410. package/views/2d/engine/webgl/shaderGraph/techniques/animated/attributes.js +1 -1
  411. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  412. package/views/2d/layers/BaseLayerViewGL2D.d.ts +1 -1
  413. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  414. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  415. package/views/2d/types.d.ts +3 -3
  416. package/views/3d/environment/CloudyWeather.d.ts +1 -1
  417. package/views/3d/environment/Environment.d.ts +4 -4
  418. package/views/3d/environment/FoggyWeather.d.ts +1 -1
  419. package/views/3d/environment/RainyWeather.d.ts +1 -1
  420. package/views/3d/environment/SnowyWeather.d.ts +1 -1
  421. package/views/3d/environment/SunLighting.d.ts +1 -1
  422. package/views/3d/environment/SunnyWeather.d.ts +1 -1
  423. package/views/3d/environment/VirtualLighting.d.ts +1 -1
  424. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  425. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  426. package/views/3d/support/MemoryController.js +1 -1
  427. package/views/3d/support/orientedBoundingBox.js +1 -1
  428. package/views/3d/webgl/RenderNode.d.ts +46 -57
  429. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  430. package/views/3d/webgl-engine/lib/Viewshed.js +1 -1
  431. package/views/3d/webgl.d.ts +8 -5
  432. package/views/DOMContainer.js +1 -1
  433. package/views/Magnifier.d.ts +3 -3
  434. package/views/MapView.d.ts +7 -7
  435. package/views/SceneView.d.ts +34 -37
  436. package/views/View.d.ts +2 -2
  437. package/views/analysis/ElevationProfile/ElevationProfileChart.js +1 -1
  438. package/views/draw/DrawOperation.js +1 -1
  439. package/views/draw/DrawTool.js +1 -1
  440. package/views/draw/plugins/BezierSegmentPlugin.js +1 -1
  441. package/views/draw/plugins/CircularArcSegmentPlugin.js +1 -1
  442. package/views/draw/plugins/FreehandSegmentPlugin.js +1 -1
  443. package/views/draw/plugins/MultipointPlugin.js +1 -1
  444. package/views/draw/plugins/PointPlugin.js +1 -1
  445. package/views/draw/plugins/PolygonPlugin.js +1 -1
  446. package/views/draw/plugins/PolylinePlugin.js +1 -1
  447. package/views/draw/plugins/ShapePlugin.js +1 -1
  448. package/views/draw/support/managers/TooltipManager.js +1 -1
  449. package/views/interactive/sketch/SketchLabelOptions.d.ts +1 -1
  450. package/views/interactive/sketch/SketchTooltipOptions.d.ts +1 -1
  451. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  452. package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
  453. package/views/interactive/snapping/SnappingOptions.d.ts +7 -7
  454. package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiledFetcher.js +1 -1
  455. package/views/interactive/tooltip/content/TooltipContentDynamic.js +1 -1
  456. package/views/interactive/tooltip/infos/DynamicTooltipInfo.js +1 -1
  457. package/views/layers/FeatureLikeLayerView.js +1 -1
  458. package/views/support/HighlightOptions.d.ts +1 -1
  459. package/views/support/flow/dataUtils.js +1 -1
  460. package/views/ui/DefaultUI.d.ts +2 -2
  461. package/webscene/Environment.d.ts +10 -10
  462. package/webscene/Glow.d.ts +13 -2
  463. package/webscene/background/ColorBackground.d.ts +1 -1
  464. package/webscene/spec-certification/spec.js +1 -1
  465. package/widgets/AreaMeasurement2D.d.ts +1 -1
  466. package/widgets/AreaMeasurement3D.d.ts +2 -2
  467. package/widgets/Attachments.d.ts +1 -1
  468. package/widgets/Attribution.d.ts +1 -1
  469. package/widgets/BasemapGallery.d.ts +1 -1
  470. package/widgets/BasemapLayerList.d.ts +3 -3
  471. package/widgets/BasemapToggle.d.ts +1 -1
  472. package/widgets/Bookmarks/BookmarksVisibleElements.d.ts +1 -1
  473. package/widgets/Bookmarks.d.ts +2 -2
  474. package/widgets/BuildingExplorer.d.ts +1 -1
  475. package/widgets/CatalogLayerList.d.ts +3 -3
  476. package/widgets/Compass.d.ts +2 -2
  477. package/widgets/CoordinateConversion.d.ts +1 -1
  478. package/widgets/Daylight.d.ts +5 -5
  479. package/widgets/DirectLineMeasurement3D.d.ts +2 -2
  480. package/widgets/Directions/DirectionsViewModel.d.ts +12 -0
  481. package/widgets/Directions/DirectionsViewModel.js +1 -1
  482. package/widgets/Directions.d.ts +4 -4
  483. package/widgets/Directions.js +1 -1
  484. package/widgets/DistanceMeasurement2D.d.ts +1 -1
  485. package/widgets/Editor/CreateFeaturesWorkflow.d.ts +1 -1
  486. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  487. package/widgets/Editor/SplitFeatureWorkflow.js +1 -1
  488. package/widgets/Editor.d.ts +2 -2
  489. package/widgets/ElevationProfile/ElevationProfileLineGround.d.ts +1 -1
  490. package/widgets/ElevationProfile/ElevationProfileLineInput.d.ts +1 -1
  491. package/widgets/ElevationProfile/ElevationProfileLineView.d.ts +1 -1
  492. package/widgets/ElevationProfile.d.ts +3 -3
  493. package/widgets/Expand.d.ts +1 -1
  494. package/widgets/FeatureForm.d.ts +1 -1
  495. package/widgets/FeatureTable/ActionColumn.d.ts +1 -1
  496. package/widgets/FeatureTable/AttachmentsColumn.d.ts +1 -1
  497. package/widgets/FeatureTable/FeatureTableViewModel.d.ts +3 -3
  498. package/widgets/FeatureTable/Grid/GroupColumn.d.ts +1 -1
  499. package/widgets/FeatureTable/RelationshipColumn.d.ts +1 -1
  500. package/widgets/FeatureTable/VisibleElements.d.ts +1 -1
  501. package/widgets/FeatureTable.d.ts +9 -9
  502. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.d.ts +5 -5
  503. package/widgets/FeatureTemplates.d.ts +8 -8
  504. package/widgets/Features/FeaturesViewModel.d.ts +2 -2
  505. package/widgets/Features/FeaturesVisibleElements.d.ts +2 -2
  506. package/widgets/Features.d.ts +1 -1
  507. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  508. package/widgets/Histogram.d.ts +2 -2
  509. package/widgets/HistogramRangeSlider.d.ts +1 -1
  510. package/widgets/Home/HomeViewModel.d.ts +2 -1
  511. package/widgets/Home/HomeViewModel.js +1 -1
  512. package/widgets/Home.d.ts +1 -1
  513. package/widgets/Home.js +1 -1
  514. package/widgets/LayerList.d.ts +4 -4
  515. package/widgets/Legend.d.ts +8 -8
  516. package/widgets/LineOfSight.d.ts +1 -1
  517. package/widgets/Locate.d.ts +2 -2
  518. package/widgets/Measurement.d.ts +1 -1
  519. package/widgets/NavigationToggle/NavigationToggleViewModel.d.ts +1 -1
  520. package/widgets/NavigationToggle.d.ts +3 -3
  521. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  522. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  523. package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
  524. package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
  525. package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
  526. package/widgets/OrientedImageryViewer/constants.js +1 -1
  527. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  528. package/widgets/OrientedImageryViewer/navigation/NavigationManager.js +1 -1
  529. package/widgets/OrientedImageryViewer/navigation/queries.js +1 -1
  530. package/widgets/OrientedImageryViewer/navigation/utils.js +1 -1
  531. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  532. package/widgets/OrientedImageryViewer/services/TransformationService.js +1 -1
  533. package/widgets/OrientedImageryViewer/types.js +1 -1
  534. package/widgets/OrientedImageryViewer/videoViewerUtils.js +1 -1
  535. package/widgets/OrientedImageryViewer.js +1 -1
  536. package/widgets/Popup/PopupVisibleElements.d.ts +2 -2
  537. package/widgets/Popup.d.ts +5 -5
  538. package/widgets/Print/CustomTemplate.d.ts +1 -1
  539. package/widgets/Print/TemplateOptions.d.ts +4 -4
  540. package/widgets/ScaleRangeSlider.d.ts +1 -1
  541. package/widgets/Search/SearchViewModel.d.ts +4 -4
  542. package/widgets/Search.d.ts +5 -5
  543. package/widgets/ShadowCast.d.ts +3 -3
  544. package/widgets/Sketch/SketchViewModel.d.ts +39 -39
  545. package/widgets/Sketch/SketchViewModel.js +1 -1
  546. package/widgets/Sketch/support/PluginManager.js +1 -1
  547. package/widgets/Sketch.d.ts +43 -43
  548. package/widgets/Slice.d.ts +2 -2
  549. package/widgets/Slider/SliderViewModel.d.ts +2 -2
  550. package/widgets/Slider.d.ts +9 -9
  551. package/widgets/Swipe/SwipeViewModel.d.ts +1 -1
  552. package/widgets/Swipe.d.ts +2 -2
  553. package/widgets/TableList.d.ts +1 -1
  554. package/widgets/TimeSlider/TimeSliderViewModel.d.ts +8 -8
  555. package/widgets/TimeSlider/types.d.ts +1 -1
  556. package/widgets/TimeSlider.d.ts +11 -11
  557. package/widgets/Track.d.ts +2 -2
  558. package/widgets/UtilityNetworkAssociations.d.ts +3 -3
  559. package/widgets/UtilityNetworkTrace.d.ts +4 -4
  560. package/widgets/UtilityNetworkValidateTopology.d.ts +1 -1
  561. package/widgets/ValuePicker.d.ts +5 -5
  562. package/widgets/VideoPlayer.d.ts +1 -1
  563. package/widgets/smartMapping/ClassedColorSlider.d.ts +1 -1
  564. package/widgets/smartMapping/ClassedSizeSlider.d.ts +1 -1
  565. package/widgets/smartMapping/ColorSizeSlider.d.ts +2 -2
  566. package/widgets/smartMapping/ColorSlider.d.ts +1 -1
  567. package/widgets/smartMapping/HeatmapSlider.d.ts +1 -1
  568. package/widgets/smartMapping/OpacitySlider.d.ts +1 -1
  569. package/widgets/smartMapping/SizeSlider.d.ts +1 -1
  570. package/widgets/smartMapping/SmartMappingSliderBase.d.ts +4 -4
  571. package/widgets/smartMapping/SmartMappingSliderViewModel.d.ts +6 -6
  572. package/widgets/support/GridControls.d.ts +1 -1
  573. package/widgets/support/SnappingControls/VisibleElements.d.ts +1 -1
  574. package/widgets/support/SnappingControls.d.ts +6 -6
  575. package/assets/esri/core/workers/chunks/0184b4c0c92c76c60ab2.js +0 -1
  576. package/assets/esri/core/workers/chunks/08616877b58b518e7461.js +0 -1
  577. package/assets/esri/core/workers/chunks/089cef7124173a5cd5f9.js +0 -1
  578. package/assets/esri/core/workers/chunks/0baa0d66003d23cc76a7.js +0 -1
  579. package/assets/esri/core/workers/chunks/0baf2cf9d8998045a605.js +0 -1
  580. package/assets/esri/core/workers/chunks/0bf742d48f434c4c575f.js +0 -1
  581. package/assets/esri/core/workers/chunks/0cc68540194bd9f7aa3c.js +0 -1
  582. package/assets/esri/core/workers/chunks/0e216f0075fd531c3a2b.js +0 -1
  583. package/assets/esri/core/workers/chunks/1219b588f983b4f35033.js +0 -1
  584. package/assets/esri/core/workers/chunks/13e913aa5f5113fceb16.js +0 -1
  585. package/assets/esri/core/workers/chunks/15ba0296403dd4152b88.js +0 -1
  586. package/assets/esri/core/workers/chunks/15e5471277a48f482383.js +0 -1
  587. package/assets/esri/core/workers/chunks/16abc548724e428c325a.js +0 -1
  588. package/assets/esri/core/workers/chunks/1d124a55f6804be19e09.js +0 -1
  589. package/assets/esri/core/workers/chunks/1ede5fa7a16839ed9444.js +0 -1
  590. package/assets/esri/core/workers/chunks/25267253ba578eba38cf.js +0 -1
  591. package/assets/esri/core/workers/chunks/27aa21da934ecaca381a.js +0 -1
  592. package/assets/esri/core/workers/chunks/27d1f8279df34d8b15b5.js +0 -1
  593. package/assets/esri/core/workers/chunks/2907e9a7216b5a29729b.js +0 -1
  594. package/assets/esri/core/workers/chunks/2b0891ba57ba66b913ce.js +0 -1
  595. package/assets/esri/core/workers/chunks/2bb7bb7901bd343201fc.js +0 -1
  596. package/assets/esri/core/workers/chunks/2c7e5b78d94e5850537b.js +0 -1
  597. package/assets/esri/core/workers/chunks/2d52b137ee64469a46b2.js +0 -1
  598. package/assets/esri/core/workers/chunks/2eb7df99170b7bb2a914.js +0 -1
  599. package/assets/esri/core/workers/chunks/36b8dd092697ef544f40.js +0 -1
  600. package/assets/esri/core/workers/chunks/395ee51a863757ea8124.js +0 -1
  601. package/assets/esri/core/workers/chunks/3b0cfe3db8d90e02d6c6.js +0 -1
  602. package/assets/esri/core/workers/chunks/454150571b5b664b576a.js +0 -1
  603. package/assets/esri/core/workers/chunks/4740d319f233b7f528fe.js +0 -1
  604. package/assets/esri/core/workers/chunks/4742a8c19b86a5f859f0.js +0 -1
  605. package/assets/esri/core/workers/chunks/49d58bacb5b397246978.js +0 -1
  606. package/assets/esri/core/workers/chunks/4ba4aa6c75e3f8950e65.js +0 -1
  607. package/assets/esri/core/workers/chunks/59f955c7d6b0589e7cc6.js +0 -1
  608. package/assets/esri/core/workers/chunks/5a347b1d87eb6f710136.js +0 -1
  609. package/assets/esri/core/workers/chunks/5b97cdeb5949822fbef3.js +0 -1
  610. package/assets/esri/core/workers/chunks/5cd614f50e8925eeeaf4.js +0 -1
  611. package/assets/esri/core/workers/chunks/620d7cd0b0885122aa0f.js +0 -1
  612. package/assets/esri/core/workers/chunks/6321680c8070dffa3b6c.js +0 -1
  613. package/assets/esri/core/workers/chunks/7017c2e621236c7a7da4.js +0 -1
  614. package/assets/esri/core/workers/chunks/731e6eaad319865fb780.js +0 -1
  615. package/assets/esri/core/workers/chunks/7407a1e0cef508116a0b.js +0 -1
  616. package/assets/esri/core/workers/chunks/752c43cdd38dfde912d2.js +0 -1
  617. package/assets/esri/core/workers/chunks/78936c591fd49ff955a9.js +0 -1
  618. package/assets/esri/core/workers/chunks/796f5265747ce8be910e.js +0 -1
  619. package/assets/esri/core/workers/chunks/7b7288c431933a75daca.js +0 -1
  620. package/assets/esri/core/workers/chunks/7e6309bfed6692e8d2d7.js +0 -2
  621. package/assets/esri/core/workers/chunks/7f60309d211c49721265.js +0 -1
  622. package/assets/esri/core/workers/chunks/7f9b0ef7f9b3f3fd3df9.js +0 -1
  623. package/assets/esri/core/workers/chunks/8177e95596b71bf020aa.js +0 -1
  624. package/assets/esri/core/workers/chunks/9bb04d5f2e6f6e4585a0.js +0 -1
  625. package/assets/esri/core/workers/chunks/a03196e6579d738251fc.js +0 -1
  626. package/assets/esri/core/workers/chunks/a0b715cf03895082b773.js +0 -1
  627. package/assets/esri/core/workers/chunks/a115984b794a7f90b2c0.js +0 -1
  628. package/assets/esri/core/workers/chunks/a5e91cf150f6cf6a5d2a.js +0 -1
  629. package/assets/esri/core/workers/chunks/a60a84c8c45f6d03443f.js +0 -1
  630. package/assets/esri/core/workers/chunks/aec827b50df6edc54808.js +0 -1
  631. package/assets/esri/core/workers/chunks/aef2832902b270f1a594.js +0 -1
  632. package/assets/esri/core/workers/chunks/b0b24fb60a21b995b348.js +0 -1
  633. package/assets/esri/core/workers/chunks/bb830d93e97dceac350f.js +0 -1
  634. package/assets/esri/core/workers/chunks/bd05e68b00b9878d0266.js +0 -1
  635. package/assets/esri/core/workers/chunks/bd12ca39198e6efbefbb.js +0 -1
  636. package/assets/esri/core/workers/chunks/bdd246cc50ccd5c10987.js +0 -1
  637. package/assets/esri/core/workers/chunks/c080e189764d8bb9cf25.js +0 -1
  638. package/assets/esri/core/workers/chunks/c15f0769a64863cccef0.js +0 -1
  639. package/assets/esri/core/workers/chunks/c516b185b099bf69c0ed.js +0 -1
  640. package/assets/esri/core/workers/chunks/c53048b0f153b251d792.js +0 -1
  641. package/assets/esri/core/workers/chunks/c693e8eb96ab8a4b9cbe.js +0 -1
  642. package/assets/esri/core/workers/chunks/c9babe86c00ae69e63ee.js +0 -2
  643. package/assets/esri/core/workers/chunks/cf09408cb7729126caae.js +0 -1
  644. package/assets/esri/core/workers/chunks/d9c1e1ec5c56f09fb82f.js +0 -1
  645. package/assets/esri/core/workers/chunks/e0565849281ffbe8269e.js +0 -1
  646. package/assets/esri/core/workers/chunks/e1ba6f857ca12f154e77.js +0 -1
  647. package/assets/esri/core/workers/chunks/e4f1e584f89ffb86206b.js +0 -1
  648. package/assets/esri/core/workers/chunks/e60684918100666bb892.js +0 -1
  649. package/assets/esri/core/workers/chunks/e94448b371cd17d7a472.js +0 -1
  650. package/assets/esri/core/workers/chunks/ed78e19b1e400c0db309.js +0 -1
  651. package/assets/esri/core/workers/chunks/ede1d1cc2f315a34f4ca.js +0 -1
  652. package/assets/esri/core/workers/chunks/f17a301516f008abef3a.js +0 -1
  653. package/assets/esri/core/workers/chunks/fc98b8351be567d3eb62.js +0 -1
  654. package/assets/esri/core/workers/chunks/fd5a5b05a1551cdb8c87.js +0 -1
  655. package/assets/esri/core/workers/chunks/fda0f4469d9cda637af4.js +0 -1
  656. package/assets/esri/core/workers/chunks/fe52117fe6982046c9e3.js +0 -1
  657. package/assets/esri/core/workers/chunks/ff961bb6d29ab3fe129d.js +0 -1
  658. /package/assets/esri/core/workers/chunks/{2762149a922275136171.js.LICENSE.txt → 112227b862b935123ddf.js.LICENSE.txt} +0 -0
  659. /package/assets/esri/core/workers/chunks/{72acfb74fd9ab9bae923.js.LICENSE.txt → 53e348f5585fa8c53fe8.js.LICENSE.txt} +0 -0
  660. /package/assets/esri/core/workers/chunks/{7e6309bfed6692e8d2d7.js.LICENSE.txt → b397a9f87082705301a4.js.LICENSE.txt} +0 -0
  661. /package/assets/esri/core/workers/chunks/{91858b02da40ff251ab2.js.LICENSE.txt → baad696d84ab78b3d00e.js.LICENSE.txt} +0 -0
  662. /package/assets/esri/core/workers/chunks/{c9babe86c00ae69e63ee.js.LICENSE.txt → edaae0fc63d16b0f675d.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import*as e from"@amcharts/amcharts5/index.js";import{XYChart as i,ValueAxis as s,AxisRendererX as o,AxisRendererY as n,XYCursor as r,LineSeries as a}from"@amcharts/amcharts5/xy.js";import l from"@amcharts/amcharts5/themes/Dark.js";import p from"@amcharts/amcharts5/themes/Responsive.js";import{fetchMessageBundle as c,substitute as d,formatNumber as h}from"../../../intl.js";import u from"../../../core/Accessor.js";import{createTask as m}from"../../../core/asyncUtils.js";import{makeHandle as f,handlesGroup as g}from"../../../core/handleUtils.js";import"../../../core/has.js";import{throwIfAborted as x}from"../../../core/promiseUtils.js";import{watch as _,initial as y}from"../../../core/reactiveUtils.js";import{throttle as v}from"../../../core/throttle.js";import{formatDecimal as A,unitName as T}from"../../../core/unitFormatUtils.js";import{property as b,subclass as M}from"../../../core/accessorSupport/decorators.js";import{getEpsilon as P}from"../../../core/libs/gl-matrix-2/math/common.js";import{isDarkMode as S}from"../../../support/modeUtils.js";import{getConfig as w,notAvailable as F}from"./constants.js";import{getAdjustedBounds as C}from"./elevationProfileChartBoundsUtils.js";import{themeLight as L,themeDark as z}from"./elevationProfileChartTheme.js";import{binaryFindClosest as I}from"./elevationProfileGenerationUtils.js";import{createRoot as k}from"../../../widgets/support/chartUtilsAm5.js";let j=class extends u{get chartVisible(){const t=this._chartData;if(null==t)return!1;let e=0;for(const{samples:i}of t.lines)e+=i?.length??0;return t.refined||e<=w().largeChartSamples}get spinnerVisible(){return null!=this._chartData&&(this.analysisView?.progress??0)<1}get _updateParameters(){const{messages:t,_unitsMessages:e}=this;if(t&&e)return{data:this._chartData,messages:t,unitsMessages:e}}get _chartData(){const{analysisView:t,uniformScaling:e}=this;if(!this._hasGeometry||!t)return;const{analysis:i,effectiveDisplayUnits:s,progress:o,statistics:n}=t;return{lines:this._lineData,statistics:n,effectiveUnits:s,refined:1===o,uniformScaling:e,dynamicElevationRange:i.profiles.some(t=>"scene"===t.type)}}get _hasGeometry(){return null!=this.analysisView?.analysis.geometry}get _lineData(){const{analysisView:t}=this;if(!t)return[];const{analysis:e,results:i}=t,{profiles:s}=e;if(i.length!==s.length)return[];const o=[];for(let n=0;n<s.length;n++){const t=s.at(n),e=i.at(n);if(!e.available||!e.rawResult?.hasZ||!t.chartOptions.lineVisible)continue;const r="input"!==t.type;o.push({id:t.id,type:t.type,title:t.title,color:t.color,samples:e.samples,fillEnabled:r,strokeOffsetY:r?-1:0,strokeWidth:1.5})}return o}constructor(t){super(t),this.view=null,this.analysisView=null,this.messages=null,this.uniformScaling=!1,this._theme=L,this._data=null,this._seriesInfos=new Map,this._pointerIsOver=!1,this._rtl=!1,this._chartInfo=null,this._unitsMessages=null,this._throttledUpdate=v(t=>{this._update(t)},w().updateThrottleMillis),this._onCursorMove=()=>{const t=this._chartInfo;if(!t||!this._pointerIsOver)return;const{chart:e,xAxis:i,yAxis:s}=t;this._updateTooltips();const o=e.get("cursor");let n=o?.getPrivate("positionX")??0,r=o?.getPrivate("positionY")??0;const a=this._data;if(null!=a?.statistics){const{maxDistance:t,minElevation:e,maxElevation:o}=a.statistics;let l,p;if(null!=t){1===Y(i)?(l=0,p=t):(l=O(i),p=R(i)),n=V(n,l,p,0,t)}if(null!=e&&null!=o){1===Y(s)?(l=e,p=o):(l=O(s),p=R(s)),r=V(r,l,p,e,o)}}this.onCursorPositionChange?.(n,r)}}initialize(){this.addHandles(m(t=>this._initializeChart(t)))}destroy(){this._chartInfo=null,this._seriesInfos.clear(),this._data=null}zoomOut(){this._chartInfo?.xAxis.zoom(0,1),this._chartInfo?.yAxis.zoom(0,1)}async _initializeChart(t){const[e,s]=await Promise.all([k(this.container),c("esri/core/t9n/Units")]);x(t);const o=E(this.container),n=S(this.container),r=n?z:L;e.setThemes(n?[p.new(e),l.new(e)]:[p.new(e)]),this._rtl=o,this._theme=r,this._unitsMessages=s;const a=e.container.children.push(i.new(e,{panX:!0,panY:!0,paddingTop:r.paddingTop,paddingBottom:r.paddingBottom,paddingLeft:o?r.paddingRight:r.paddingLeft,paddingRight:o?r.paddingLeft:r.paddingRight,maxTooltipDistance:-1}));a.zoomOutButton.set("forceHidden",!0);const d=a.xAxes.push(this._createXAxis(e)),h=a.yAxes.push(this._createYAxis(e));this._chartInfo={chart:a,xAxis:d,yAxis:h},this._initializeTest(a),this.addHandles([this._setupZoomHandling(),this._setupCursorHandling(),W(e),_(()=>this._updateParameters,t=>this._throttledUpdate(t),y),this._throttledUpdate])}_initializeTest(t){}_update(t){if(!t||this.destroyed)return;const e=this._data,i=t.data;if(i===e&&t.messages===this.messages&&t.unitsMessages===this._unitsMessages)return;const s=e!==i,o=e?.effectiveUnits!==i?.effectiveUnits,n=e?.uniformScaling!==i?.uniformScaling;this._data=i,(s||o)&&(this._updateAxes(),this._updateSeries()),n&&this.zoomOut(),this._updateTooltips()}_createXAxis(t){const i=this._theme,n=s.new(t,{renderer:o.new(t,{})});n.setAll({extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:this._makeFormatter(t,"distance"),strictMinMax:!0,strictMinMaxSelection:!0}),n.axisHeader.set("forceHidden",!0);const r=n.get("renderer");r.setAll({inside:!1,minGridDistance:i.xAxisMinGridDistance}),r.labels.template.setAll({centerX:e.p0,centerY:e.p0,fill:e.color(i.axisLabelsColor),fontFamily:i.fontFamily,fontSize:i.axisLabelsFontSize,fontWeight:i.axisLabelsFontWeight,maxPosition:i.xAxisMaxLabelPosition,minPosition:i.xAxisMinLabelPosition,paddingLeft:0,paddingRight:0,paddingTop:i.xAxisLabelsSpacing});const a=n.set("tooltip",e.Tooltip.new(t,{paddingBottom:0,paddingLeft:0,paddingRight:0,paddingTop:0}));return a.get("background")?.setAll({fill:e.color(i.axisTooltipBackgroundColor),stroke:void 0}),a.label.setAll({fill:e.color(i.axisTooltipLabelColor),fontFamily:i.fontFamily,fontSize:i.axisTooltipFontSize,paddingBottom:i.axisTooltipPaddingBottom,paddingLeft:i.axisTooltipPaddingHorizontal,paddingRight:i.axisTooltipPaddingHorizontal,paddingTop:i.axisTooltipPaddingTop,direction:this._rtl?"rtl":"ltr"}),r.grid.template.setAll({strokeOpacity:1,stroke:e.color(i.axisGridStroke)}),n}_createYAxis(t){const i=this._theme,o=this._rtl,r=s.new(t,{renderer:n.new(t,{})});r.setAll({baseValue:w().noDataValue,extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:this._makeFormatter(t,"elevation"),strictMinMax:!0,strictMinMaxSelection:!0,tooltip:void 0}),r.axisHeader.set("visible",!1);const a=r.get("renderer");return a.setAll({minGridDistance:i.yAxisMinGridDistance,opposite:o,inside:!0}),a.labels.template.setAll({centerX:e.p0,centerY:e.p100,fill:e.color(i.axisLabelsColor),fontFamily:i.fontFamily,fontSize:i.axisLabelsFontSize,fontWeight:i.axisLabelsFontWeight,maxPosition:i.yAxisMaxLabelPosition,minPosition:i.yAxisMinLabelPosition,paddingBottom:0,paddingLeft:o?0:i.yAxisLabelSpacing,paddingRight:o?i.yAxisLabelSpacing:0,paddingTop:0,textAlign:"start"}),a.grid.template.setAll({strokeOpacity:1,stroke:e.color(i.axisGridStroke)}),r}_setupZoomHandling(){const t=this._chartInfo;if(!t)return f();const{xAxis:e,yAxis:i}=t,s=()=>{this.onRangeChange?.(Y(e),Y(i))},o=t=>[t.on("start",s),t.on("end",s)];return G([...o(e),...o(i)])}_setupCursorHandling(){const t=this._chartInfo?.chart;if(!t)return f();const e=t.plotContainer.events,i=t=>{this._pointerIsOver=t,this._updateTooltips()},s=()=>{i(!1),this.onCursorPositionChange?.(null,null)};return G([e.on("pointerover",()=>i(!0)),e.on("pointerout",s),e.on("blur",s)])}_updateAxes(){const t=this._chartInfo;if(!t)return;const{chart:e,xAxis:i,yAxis:s}=t,o=this._data,{minX:n,maxX:r,minY:a,maxY:l}=C({data:o,pixelWidth:i.width(),pixelHeight:s.height()}),p=!!o?.uniformScaling,c=!!o?.refined;e.setAll({panX:!0,panY:p,pinchZoomX:c,pinchZoomY:c&&p,wheelX:"panX",wheelY:c?p?"zoomXY":"zoomX":"none"}),i.setAll({max:r,min:n,panX:!0,panY:!1,zoomX:!0,zoomY:p}),s.setAll({max:l,min:a,panX:!1,panY:p,zoomX:p,zoomY:p})}_updateSeries(){const t=this._seriesInfos,e=this._chartInfo;if(!e)return;const{chart:i,xAxis:s,yAxis:o}=e,n=this._data;if(!n||0===n.lines.length)return this._seriesInfos.clear(),void i.series.clear();const r=new Map,a=new Set(i.series.values),l=n.lines.length;for(let p=0;p<l;p++){const s=n.lines[p];let o=t.get(s.id);o?(o.fill&&a.delete(o.fill),a.delete(o.line)):(o=D(e,s),o.fill&&i.series.push(o.fill),i.series.push(o.line)),r.set(o.id,o);const c=l-p-1;o.fill?.set("layer",c),o.line.set("layer",l+c),this._updateLineSeries(o,s)}this._seriesInfos=r;for(const p of a)i.series.removeValue(p);s.set("layer",l+1),o.set("layer",l+2)}_updateLineSeries(t,i){const s=e.color(i.color.toCss()),o=i.samples??[],n=o.length>0,{line:r,fill:a}=t;r.set("visible",n),r.set("stroke",s),a?.set("visible",n),a?.set("fill",e.Color.lighten(s,this._theme.seriesFillLighten)),r.data.setAll(o),a?.data.setAll(o)}_updateTooltips(){const t=this._chartInfo;if(!t)return;const{chart:e,xAxis:i,yAxis:s}=t,o=e.get("cursor");if(!this._data?.refined)return o?.events.removeType("cursormoved"),o?.dispose(),void e.set("cursor",void 0);if(!o){const t=r.new(e.root,{behavior:"none",xAxis:i,yAxis:s,snapToSeriesBy:"y"});t.lineY.set("visible",!1),t.events.on("cursormoved",this._onCursorMove),e.set("cursor",t)}const n=this._getSeriesTooltipText();n?this._seriesInfos.forEach(e=>{const i=e.line.get("tooltip")??X(t,this._theme,this._rtl);i.label.set("text",n),e.line.set("tooltip",i)}):this._seriesInfos.forEach(t=>{t.line.get("tooltip")?.dispose(),t.line.set("tooltip",void 0)}),this._chartInfo?.xAxis.getTooltip()?.setAll({tooltipText:this._getAxisTooltipText()})}_getSeriesTooltipText(){const t=this._data?.lines.map(t=>({line:t,y:this._getPointNearestToCursor(t)?.elevation})).sort(H);return t&&0!==t.length&&null!=t[0].y?t.map(({y:t,line:e})=>this._getTooltipTextForLine(e,t)).join("\n"):null}_getPointNearestToCursor(t){const e=t.samples??[];if(0===e.length)return null;const i=this._chartInfo;if(!i)return null;const{chart:s,xAxis:o}=i,n=s.get("cursor"),r=n?.getPrivate("positionX")??0,a=o.toAxisPosition(r),l=o.positionToValue(a);return I(e,l,t=>t.distance)}_getTooltipTextForLine(t,e){const i=this._data,s=this.messages,o=this._unitsMessages;if(!i||!s||!o)return"";const n=`[${t.color.toHex()}]●[/]`,r=" ",a=w().formatPrecision,l=d(s.chartTooltip,{name:B(t,s),elevation:null!=e?A(o,e,i.effectiveUnits.elevation,a):F});return this._rtl?l+r+n:n+r+l}_getAxisTooltipText(){const t=this._data,e=this._unitsMessages;if(!t||!e)return"";const i=t.lines[0],s=i?this._getPointNearestToCursor(i):null,o=w().formatPrecision;return null!=s?A(e,s.distance,t.effectiveUnits.distance,o):"-"}_makeFormatter(t,i){const s=e.NumberFormatter.new(t,{});return s.format=(t,e,s)=>{const o=this._data,n=this._unitsMessages;if(!o||!n||"string"==typeof t)return"";return`${h(t,{maximumFractionDigits:s})} ${T(n,o.effectiveUnits[i],"abbr")}`},s}};function D(t,e){const{id:i}=e,s=U(t,`line-${i}`);s.setAll({dy:e.strokeOffsetY,tooltip:void 0}),s.strokes.template.setAll({strokeWidth:e.strokeWidth});let o=null;return e.fillEnabled&&(o=U(t,`fill-${i}`),o.fills.template.setAll({fillOpacity:1,visible:!0})),{id:i,line:s,fill:o}}function U({chart:t,xAxis:e,yAxis:i},s){return a.new(t.root,{connect:!1,excludeFromTotal:!0,fill:void 0,id:s,stroke:void 0,valueXField:"distance",valueYField:"elevation",xAxis:e,yAxis:i})}function X({chart:t},i,s){const o=e.Tooltip.new(t.root,{autoTextColor:!1,getFillFromSprite:!1,getLabelFillFromSprite:!1,pointerOrientation:"vertical",visible:!1}),n=i.seriesTooltipPaddingHorizontal,r=i.seriesTooltipPaddingVertical;return o.label.setAll({fill:e.color(i.seriesTooltipLabelColor),fontFamily:i.fontFamily,fontSize:i.seriesTooltipFontSize,paddingBottom:r,paddingLeft:n,paddingRight:n,paddingTop:r,textAlign:s?"end":"start",direction:"ltr"}),o.get("background")?.setAll({stroke:void 0,fill:e.color(i.seriesTooltipBackgroundColor)}),o.adapters.add("dy",t=>{const e=i.seriesTooltipSpacing,s=o.get("pointTo")?.y??0;return(t??0)+(o.y()>s?e:-e)}),o}function Y(t){const e=Math.abs((t.get("end")??0)-(t.get("start")??0)),i=0!==e?1/e:1;return Math.abs(1-i)<P()?1:i}function V(t,e,i,s,o){return(e+t*(i-e)-s)/(o-s)}function H({y:t},{y:e}){return null==t?1:null==e?-1:e-t}function O(t){return t.positionToValue(t.get("start")??0)}function R(t){return t.positionToValue(t.get("end")??1)}function B(t,e){const i=t.title;if(null!=i)return i;switch(t.type){case"ground":return e.profiles.ground;case"input":return e.profiles.input;case"query":return e.profiles.query;case"scene":return e.profiles.scene;default:return""}}function E(t){const e=t?.closest("[dir]");return null!==e&&e instanceof HTMLElement&&"rtl"===e.dir||"rtl"===document.dir}function G(t){return g(t.map(W))}function W(t){return f(()=>t?.dispose())}t([b()],j.prototype,"view",void 0),t([b()],j.prototype,"analysisView",void 0),t([b()],j.prototype,"container",void 0),t([b()],j.prototype,"messages",void 0),t([b()],j.prototype,"onRangeChange",void 0),t([b()],j.prototype,"onCursorPositionChange",void 0),t([b()],j.prototype,"uniformScaling",void 0),t([b()],j.prototype,"chartVisible",null),t([b()],j.prototype,"spinnerVisible",null),t([b()],j.prototype,"test",void 0),t([b()],j.prototype,"_theme",void 0),t([b()],j.prototype,"_data",void 0),t([b()],j.prototype,"_seriesInfos",void 0),t([b()],j.prototype,"_pointerIsOver",void 0),t([b()],j.prototype,"_rtl",void 0),t([b()],j.prototype,"_chartInfo",void 0),t([b()],j.prototype,"_unitsMessages",void 0),t([b()],j.prototype,"_updateParameters",null),t([b()],j.prototype,"_chartData",null),t([b()],j.prototype,"_hasGeometry",null),t([b()],j.prototype,"_lineData",null),j=t([M("esri.views.analysis.ElevationProfile.ElevationProfileChart")],j);export{j as ElevationProfileChart};
2
+ import{__decorate as t}from"tslib";import*as e from"@amcharts/amcharts5/index.js";import{XYChart as i,ValueAxis as s,AxisRendererX as o,AxisRendererY as n,XYCursor as r,LineSeries as a}from"@amcharts/amcharts5/xy.js";import l from"@amcharts/amcharts5/themes/Dark.js";import p from"@amcharts/amcharts5/themes/Responsive.js";import{fetchMessageBundle as c,substitute as d,formatNumber as h}from"../../../intl.js";import u from"../../../core/Accessor.js";import{createTask as m}from"../../../core/asyncUtils.js";import{makeHandle as f,handlesGroup as g}from"../../../core/handleUtils.js";import"../../../core/has.js";import{throwIfAborted as x}from"../../../core/promiseUtils.js";import{watch as _,initial as y}from"../../../core/reactiveUtils.js";import{throttle as v}from"../../../core/throttle.js";import{formatDecimal as A,unitName as T}from"../../../core/unitFormatUtils.js";import{property as b,subclass as M}from"../../../core/accessorSupport/decorators.js";import{getEpsilon as S}from"../../../core/libs/gl-matrix-2/math/common.js";import{isDarkMode as P}from"../../../support/modeUtils.js";import{getConfig as w,notAvailable as F}from"./constants.js";import{getAdjustedBounds as C}from"./elevationProfileChartBoundsUtils.js";import{themeLight as L,themeDark as z}from"./elevationProfileChartTheme.js";import{binaryFindClosest as I}from"./elevationProfileGenerationUtils.js";import{createRoot as k}from"../../../widgets/support/chartUtilsAm5.js";let j=class extends u{get chartVisible(){const t=this._chartData;if(null==t)return!1;let e=0;for(const{samples:i}of t.lines)e+=i?.length??0;return t.refined||e<=w().largeChartSamples}get spinnerVisible(){return null!=this._chartData&&(this.analysisView?.progress??0)<1}get _updateParameters(){const{messages:t,_unitsMessages:e}=this;if(t&&e)return{data:this._chartData,messages:t,unitsMessages:e}}get _chartData(){const{analysisView:t,uniformScaling:e}=this;if(!this._hasGeometry||!t)return;const{analysis:i,effectiveDisplayUnits:s,progress:o,statistics:n}=t;return{lines:this._lineData,statistics:n,effectiveUnits:s,refined:1===o,uniformScaling:e,dynamicElevationRange:i.profiles.some(t=>"scene"===t.type)}}get _hasGeometry(){return null!=this.analysisView?.analysis.geometry}get _lineData(){const{analysisView:t}=this;if(!t)return[];const{analysis:e,results:i}=t,{profiles:s}=e;if(i.length!==s.length)return[];const o=[];for(let n=0;n<s.length;n++){const t=s.at(n),e=i.at(n);if(!e.available||!e.rawResult?.hasZ||!t.chartOptions.lineVisible)continue;const r="input"!==t.type;o.push({id:t.id,type:t.type,title:t.title,color:t.color,samples:e.samples,fillEnabled:r,strokeOffsetY:r?-1:0,strokeWidth:1.5})}return o}constructor(t){super(t),this.view=null,this.analysisView=null,this.messages=null,this.uniformScaling=!1,this._theme=L,this._data=null,this._seriesInfos=new Map,this._pointerIsOver=!1,this._rtl=!1,this._chartInfo=null,this._unitsMessages=null,this._throttledUpdate=v(t=>{this._update(t)},w().updateThrottleMillis),this._onCursorMove=()=>{const t=this._chartInfo;if(!t||!this._pointerIsOver)return;const{chart:e,xAxis:i,yAxis:s}=t;this._updateTooltips();const o=e.get("cursor");let n=o?.getPrivate("positionX")??0,r=o?.getPrivate("positionY")??0;const a=this._data;if(null!=a?.statistics){const{maxDistance:t,minElevation:e,maxElevation:o}=a.statistics;let l,p;if(null!=t){1===Y(i)?(l=0,p=t):(l=O(i),p=R(i)),n=V(n,l,p,0,t)}if(null!=e&&null!=o){1===Y(s)?(l=e,p=o):(l=O(s),p=R(s)),r=V(r,l,p,e,o)}}this.onCursorPositionChange?.(n,r)}}initialize(){this.addHandles(m(t=>this._initializeChart(t)))}destroy(){this._chartInfo=null,this._seriesInfos.clear(),this._data=null}zoomOut(){this._chartInfo?.xAxis.zoom(0,1),this._chartInfo?.yAxis.zoom(0,1)}async _initializeChart(t){const[e,s]=await Promise.all([k(this.container),c("esri/core/t9n/Units")]);x(t);const o=E(this.container),n=P(this.container),r=n?z:L;e.setThemes(n?[p.new(e),l.new(e)]:[p.new(e)]),this._rtl=o,this._theme=r,this._unitsMessages=s;const a=e.container.children.push(i.new(e,{panX:!0,panY:!0,paddingTop:r.paddingTop,paddingBottom:r.paddingBottom,paddingLeft:o?r.paddingRight:r.paddingLeft,paddingRight:o?r.paddingLeft:r.paddingRight,maxTooltipDistance:-1}));a.zoomOutButton.set("forceHidden",!0);const d=a.xAxes.push(this._createXAxis(e)),h=a.yAxes.push(this._createYAxis(e));this._chartInfo={chart:a,xAxis:d,yAxis:h},this._initializeTest(a),this.addHandles([this._setupZoomHandling(),this._setupCursorHandling(),W(e),_(()=>this._updateParameters,t=>this._throttledUpdate(t),y),this._throttledUpdate])}_initializeTest(t){}_update(t){if(!t||this.destroyed)return;const e=this._data,i=t.data;if(i===e&&t.messages===this.messages&&t.unitsMessages===this._unitsMessages)return;const s=e!==i,o=e?.effectiveUnits!==i?.effectiveUnits,n=e?.uniformScaling!==i?.uniformScaling;this._data=i,(s||o)&&(this._updateAxes(),this._updateSeries()),n&&this.zoomOut(),this._updateTooltips()}_createXAxis(t){const i=this._theme,n=s.new(t,{renderer:o.new(t,{})});n.setAll({extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:this._makeFormatter(t,"distance"),strictMinMax:!0,strictMinMaxSelection:!0}),n.axisHeader.set("forceHidden",!0);const r=n.get("renderer");r.setAll({inside:!1,minGridDistance:i.xAxisMinGridDistance}),r.labels.template.setAll({centerX:e.p0,centerY:e.p0,fill:e.color(i.axisLabelsColor),fontFamily:i.fontFamily,fontSize:i.axisLabelsFontSize,fontWeight:i.axisLabelsFontWeight,maxPosition:i.xAxisMaxLabelPosition,minPosition:i.xAxisMinLabelPosition,paddingLeft:0,paddingRight:0,paddingTop:i.xAxisLabelsSpacing});const a=n.set("tooltip",e.Tooltip.new(t,{paddingBottom:0,paddingLeft:0,paddingRight:0,paddingTop:0}));return a.get("background")?.setAll({fill:e.color(i.axisTooltipBackgroundColor),stroke:void 0}),a.label.setAll({fill:e.color(i.axisTooltipLabelColor),fontFamily:i.fontFamily,fontSize:i.axisTooltipFontSize,paddingBottom:i.axisTooltipPaddingBottom,paddingLeft:i.axisTooltipPaddingHorizontal,paddingRight:i.axisTooltipPaddingHorizontal,paddingTop:i.axisTooltipPaddingTop,direction:this._rtl?"rtl":"ltr"}),r.grid.template.setAll({strokeOpacity:1,stroke:e.color(i.axisGridStroke)}),n}_createYAxis(t){const i=this._theme,o=this._rtl,r=s.new(t,{renderer:n.new(t,{})});r.setAll({baseValue:w().noDataValue,extraMax:0,extraMin:0,maxDeviation:0,numberFormatter:this._makeFormatter(t,"elevation"),strictMinMax:!0,strictMinMaxSelection:!0,tooltip:void 0}),r.axisHeader.set("visible",!1);const a=r.get("renderer");return a.setAll({minGridDistance:i.yAxisMinGridDistance,opposite:o,inside:!0}),a.labels.template.setAll({centerX:e.p0,centerY:e.p100,fill:e.color(i.axisLabelsColor),fontFamily:i.fontFamily,fontSize:i.axisLabelsFontSize,fontWeight:i.axisLabelsFontWeight,maxPosition:i.yAxisMaxLabelPosition,minPosition:i.yAxisMinLabelPosition,paddingBottom:0,paddingLeft:o?0:i.yAxisLabelSpacing,paddingRight:o?i.yAxisLabelSpacing:0,paddingTop:0,textAlign:"start"}),a.grid.template.setAll({strokeOpacity:1,stroke:e.color(i.axisGridStroke)}),r}_setupZoomHandling(){const t=this._chartInfo;if(!t)return f();const{xAxis:e,yAxis:i}=t,s=()=>{this.onRangeChange?.(Y(e),Y(i))},o=t=>[t.on("start",s),t.on("end",s)];return G([...o(e),...o(i)])}_setupCursorHandling(){const t=this._chartInfo?.chart;if(!t)return f();const e=t.plotContainer.events,i=t=>{this._pointerIsOver=t,this._updateTooltips()},s=()=>{i(!1),this.onCursorPositionChange?.(null,null)};return G([e.on("pointerover",()=>i(!0)),e.on("pointerout",s),e.on("blur",s)])}_updateAxes(){const t=this._chartInfo;if(!t)return;const{chart:e,xAxis:i,yAxis:s}=t,o=this._data,{minX:n,maxX:r,minY:a,maxY:l}=C({data:o,pixelWidth:i.width(),pixelHeight:s.height()}),p=!!o?.uniformScaling,c=!!o?.refined;e.setAll({panX:!0,panY:p,pinchZoomX:c,pinchZoomY:c&&p,wheelX:"panX",wheelY:c?p?"zoomXY":"zoomX":"none"}),i.setAll({max:r,min:n,panX:!0,panY:!1,zoomX:!0,zoomY:p}),s.setAll({max:l,min:a,panX:!1,panY:p,zoomX:p,zoomY:p})}_updateSeries(){const t=this._seriesInfos,e=this._chartInfo;if(!e)return;const{chart:i,xAxis:s,yAxis:o}=e,n=this._data;if(!n||0===n.lines.length)return this._seriesInfos.clear(),void i.series.clear();const r=new Map,a=new Set(i.series.values),l=n.lines.length;for(let p=0;p<l;p++){const s=n.lines[p];let o=t.get(s.id);o?(o.fill&&a.delete(o.fill),a.delete(o.line)):(o=D(e,s),o.fill&&i.series.push(o.fill),i.series.push(o.line)),r.set(o.id,o);const c=l-p-1;o.fill?.set("layer",c),o.line.set("layer",l+c),this._updateLineSeries(o,s)}this._seriesInfos=r;for(const p of a)i.series.removeValue(p);s.set("layer",l+1),o.set("layer",l+2)}_updateLineSeries(t,i){const s=e.color(i.color.toCss()),o=i.samples??[],n=o.length>0,{line:r,fill:a}=t;r.set("visible",n),r.set("stroke",s),a?.set("visible",n),a?.set("fill",e.Color.lighten(s,this._theme.seriesFillLighten)),r.data.setAll(o),a?.data.setAll(o)}_updateTooltips(){const t=this._chartInfo;if(!t)return;const{chart:e,xAxis:i,yAxis:s}=t,o=e.get("cursor");if(!this._data?.refined)return o?.events.removeType("cursormoved"),o?.dispose(),void e.set("cursor",void 0);if(!o){const t=r.new(e.root,{behavior:"none",xAxis:i,yAxis:s,snapToSeriesBy:"y"});t.lineY.set("visible",!1),t.events.on("cursormoved",this._onCursorMove),e.set("cursor",t)}const n=this._getSeriesTooltipText();n?this._seriesInfos.forEach(e=>{const i=e.line.get("tooltip")??X(t,this._theme,this._rtl);i.label.set("text",n),e.line.set("tooltip",i)}):this._seriesInfos.forEach(t=>{t.line.get("tooltip")?.dispose(),t.line.set("tooltip",void 0)}),this._chartInfo?.xAxis.getTooltip()?.setAll({tooltipText:this._getAxisTooltipText()})}_getSeriesTooltipText(){const t=this._data?.lines.map(t=>({line:t,y:this._getPointNearestToCursor(t)?.elevation})).sort(H);return t&&0!==t.length&&null!=t[0].y?t.map(({y:t,line:e})=>this._getTooltipTextForLine(e,t)).join("\n"):null}_getPointNearestToCursor(t){const e=t.samples??[];if(0===e.length)return null;const i=this._chartInfo;if(!i)return null;const{chart:s,xAxis:o}=i,n=s.get("cursor"),r=n?.getPrivate("positionX")??0,a=o.toAxisPosition(r),l=o.positionToValue(a);return I(e,l,t=>t.distance)}_getTooltipTextForLine(t,e){const i=this._data,s=this.messages,o=this._unitsMessages;if(!i||!s||!o)return"";const n=`[${t.color.toHex()}]●[/]`,r=" ",a=w().formatPrecision,l=d(s.chartTooltip,{name:B(t,s),elevation:null!=e?A(o,e,i.effectiveUnits.elevation,a):F});return this._rtl?l+r+n:n+r+l}_getAxisTooltipText(){const t=this._data,e=this._unitsMessages;if(!t||!e)return"";const i=t.lines[0],s=i?this._getPointNearestToCursor(i):null,o=w().formatPrecision;return null!=s?A(e,s.distance,t.effectiveUnits.distance,o):"-"}_makeFormatter(t,i){const s=e.NumberFormatter.new(t,{}),o=1e6,n="distance"===i?new Intl.NumberFormat(void 0,{notation:"compact",compactDisplay:"short",maximumSignificantDigits:3}):null;return s.format=(t,e,s)=>{const r=this._data,a=this._unitsMessages;if(!r||!a||"string"==typeof t)return"";let l;return l=n&&Math.abs(t)>=o?n.format(t):h(t,{maximumFractionDigits:s}),`${l} ${T(a,r.effectiveUnits[i],"abbr")}`},s}};function D(t,e){const{id:i}=e,s=U(t,`line-${i}`);s.setAll({dy:e.strokeOffsetY,tooltip:void 0}),s.strokes.template.setAll({strokeWidth:e.strokeWidth});let o=null;return e.fillEnabled&&(o=U(t,`fill-${i}`),o.fills.template.setAll({fillOpacity:1,visible:!0})),{id:i,line:s,fill:o}}function U({chart:t,xAxis:e,yAxis:i},s){return a.new(t.root,{connect:!1,excludeFromTotal:!0,fill:void 0,id:s,stroke:void 0,valueXField:"distance",valueYField:"elevation",xAxis:e,yAxis:i})}function X({chart:t},i,s){const o=e.Tooltip.new(t.root,{autoTextColor:!1,getFillFromSprite:!1,getLabelFillFromSprite:!1,pointerOrientation:"vertical",visible:!1}),n=i.seriesTooltipPaddingHorizontal,r=i.seriesTooltipPaddingVertical;return o.label.setAll({fill:e.color(i.seriesTooltipLabelColor),fontFamily:i.fontFamily,fontSize:i.seriesTooltipFontSize,paddingBottom:r,paddingLeft:n,paddingRight:n,paddingTop:r,textAlign:s?"end":"start",direction:"ltr"}),o.get("background")?.setAll({stroke:void 0,fill:e.color(i.seriesTooltipBackgroundColor)}),o.adapters.add("dy",t=>{const e=i.seriesTooltipSpacing,s=o.get("pointTo")?.y??0;return(t??0)+(o.y()>s?e:-e)}),o}function Y(t){const e=Math.abs((t.get("end")??0)-(t.get("start")??0)),i=0!==e?1/e:1;return Math.abs(1-i)<S()?1:i}function V(t,e,i,s,o){return(e+t*(i-e)-s)/(o-s)}function H({y:t},{y:e}){return null==t?1:null==e?-1:e-t}function O(t){return t.positionToValue(t.get("start")??0)}function R(t){return t.positionToValue(t.get("end")??1)}function B(t,e){const i=t.title;if(null!=i)return i;switch(t.type){case"ground":return e.profiles.ground;case"input":return e.profiles.input;case"query":return e.profiles.query;case"scene":return e.profiles.scene;default:return""}}function E(t){const e=t?.closest("[dir]");return null!==e&&e instanceof HTMLElement&&"rtl"===e.dir||"rtl"===document.dir}function G(t){return g(t.map(W))}function W(t){return f(()=>t?.dispose())}t([b()],j.prototype,"view",void 0),t([b()],j.prototype,"analysisView",void 0),t([b()],j.prototype,"container",void 0),t([b()],j.prototype,"messages",void 0),t([b()],j.prototype,"onRangeChange",void 0),t([b()],j.prototype,"onCursorPositionChange",void 0),t([b()],j.prototype,"uniformScaling",void 0),t([b()],j.prototype,"chartVisible",null),t([b()],j.prototype,"spinnerVisible",null),t([b()],j.prototype,"test",void 0),t([b()],j.prototype,"_theme",void 0),t([b()],j.prototype,"_data",void 0),t([b()],j.prototype,"_seriesInfos",void 0),t([b()],j.prototype,"_pointerIsOver",void 0),t([b()],j.prototype,"_rtl",void 0),t([b()],j.prototype,"_chartInfo",void 0),t([b()],j.prototype,"_unitsMessages",void 0),t([b()],j.prototype,"_updateParameters",null),t([b()],j.prototype,"_chartData",null),t([b()],j.prototype,"_hasGeometry",null),t([b()],j.prototype,"_lineData",null),j=t([M("esri.views.analysis.ElevationProfile.ElevationProfileChart")],j);export{j as ElevationProfileChart};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{EventedAccessor as e}from"../../core/Evented.js";import{clone as i}from"../../core/lang.js";import{equalsMaybe as n,destroyMaybe as r}from"../../core/maybe.js";import{memoize as s}from"../../core/memoize.js";import{ignoreAbortErrors as o}from"../../core/promiseUtils.js";import a from"../../core/ReactiveSet.js";import{watch as p,syncAndInitial as l}from"../../core/reactiveUtils.js";import{createScreenPoint as c}from"../../core/screenUtils.js";import{property as d,subclass as h}from"../../core/accessorSupport/decorators.js";import{diff as u}from"../../core/accessorSupport/diffUtils.js";import{UpdatingHandles as g}from"../../core/support/UpdatingHandles.js";import{pointEquals as m,pointNear as y}from"../../layers/graphics/dehydratedFeatureComparison.js";import{getEffectiveElevationInfo as _}from"../../support/elevationInfoUtils.js";import{defaultDrawingMode as v}from"./drawingModes.js";import{LegacyDrawManipulator as f}from"./LegacyDrawManipulator.js";import{createCoordinateHelper as x}from"../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as P,sceneSnappingAtLocation as b}from"../interactive/dragEventPipeline.js";import{EditGeometry as T,Part as S}from"../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as C}from"../interactive/editGeometry/EditGeometryOperations.js";import{isPoint as V}from"../interactive/sketch/constraints.js";import{getPointConstraint as w,getPolylineOrPolygonConstraint as O,pointToConstraintSpace as M,constraintSpaceToPoint as D}from"../interactive/sketch/constraintUtils.js";import E from"../interactive/sketch/SketchLabelOptions.js";import{SnappingContext as I}from"../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as H}from"../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as G}from"../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as j}from"../interactive/snapping/snappingUtils.js";const k="crosshair",Z="progress",A=Symbol(),L=Symbol();let z=class extends e{constructor(t){super(t),this._createOperationCompleted=!1,this._hideDefaultCursor=!1,this._pointerDownStates=new a,this._stagedScreenPoint=null,this._stagedPointerType=null,this._updatingHandles=new g,this._stagedPointerId=null,this.constraintsEnabled=!1,this.constraints=void 0,this._getPointConstraint=s(w),this._getPolylineOrPolygonConstraint=s(O),this.constraintZ=null,this.defaultZ=null,this.isDraped=!0,this.labelOptions=new E,this.cursor=null,this.loading=!1,this.snapToSceneEnabled=null,this.firstVertex=null,this.lastVertex=null,this.secondToLastVertex=null,null==t.elevationInfo&&(this.elevationInfo=_(!!t.hasZ))}initializePointer(){const t=this.view.inputManager?.latestPointerInfo;null!=t&&this._updatePointer(t.location,t.id,t.type)}initialize(){const{geometryType:t,view:e}=this,i=e.spatialReference,r="viewingMode"in e.state?e.state.viewingMode:2,s="segment"===t||"multipoint"===t?"polyline":t;this.coordinateHelper=x(this.hasZ,this.hasM,i),this._editGeometryOperations=new C(new T(s,this.coordinateHelper),r),this._snappingOperation=new G({view:e}),this.addHandles([p(()=>({stagedPoint:this._snappingOperation.stagedPoint,constraint:this._constraint}),({stagedPoint:t,constraint:e},i)=>{const{snappingOptions:n}=this;n&&(n.forceDisabled=null!=e&&V(e));if(null!=i&&t===i.stagedPoint&&e!==i.constraint)return this._onKeyboardBasedChange();this._processCursor(t??this._screenToMap(this._stagedScreenPoint))},{equals:(t,e)=>t.stagedPoint===e.stagedPoint&&n(t.constraint,e.constraint)}),p(()=>this.view.viewpoint,(t,e)=>{t&&e&&u(t,e)&&this._onKeyboardBasedChange()})]),this._activePart=new S(i,r),this._editGeometryOperations.data.parts.push(this._activePart);const a=this.segmentLabels;null!=a&&(a.context={view:e,editGeometryOperations:this._editGeometryOperations,elevationInfo:this.elevationInfo,labelOptions:this.labelOptions},this.addHandles(p(()=>this.labelOptions.enabled,t=>{a.visible=t},l))),this.addHandles(this._editGeometryOperations.on(["vertex-add","vertex-update","vertex-remove"],t=>{const e=t.vertices.map(t=>({componentIndex:0,vertexIndex:t.index,coordinates:this.coordinateHelper.vectorToArray(t.pos)})),i=e.map(t=>t.coordinates),n=this.coordinateHelper.vectorToDehydratedPoint(this._activePart.getFirstVertex()?.pos)??null;m(n,this.firstVertex)||(this.firstVertex=n);const r=this.coordinateHelper.vectorToDehydratedPoint(this._activePart.getLastVertex()?.pos)??null;m(r,this.lastVertex)||(this.lastVertex=r);const s=this.coordinateHelper.vectorToDehydratedPoint(this._activePart.segments.at(-1)?.leftVertex?.pos)??null;switch(m(s,this.secondToLastVertex)||(this.secondToLastVertex=s),this._processCursor(this.cursorVertex),t.type){case"vertex-add":this.emit(t.type,{...t,added:i,vertices:e});break;case"vertex-update":this.emit(t.type,{...t,updated:i,vertices:e});break;case"vertex-remove":this.emit(t.type,{...t,removed:i,vertices:e})}}));const c=this._manipulator=new f({consumesClicks:!1,grabbableForEvent:t=>"click"!==this.drawingMode||"touch"===t.pointerType&&this._snappingEnabled&&1===this._pointerDownStates.size});this.manipulators.add(c),c.grabbable="point"!==t&&"multipoint"!==t,this.addHandles([c.events.on("immediate-click",t=>this._onImmediateClick(t)),c.events.on("immediate-double-click",t=>this._onImmediateDoubleClick(t)),p(()=>this.drawingMode,()=>{this.removeHandles(A),this.addHandles(this._createManipulatorDragPipeline(c),A)},l),p(()=>({effectiveCursor:this.effectiveCursor}),({effectiveCursor:t})=>{c.cursor=t},l)]),j(this,()=>{const t=this.view.inputManager.latestPointerInfo?.type??"mouse",e=this._getSnappingContext(t);if(null!=this.snappingManager){const t=this._snappingOperation.snapAgainNearPreviousMapPoint(this.snappingManager,e);this._updatingHandles.consumePromise(o(t))}})}destroy(){r(this.segmentLabels),r(this._snappingOperation),this._editGeometryOperations=r(this._editGeometryOperations),this._updatingHandles.destroy()}get _isDragging(){const{_stagedPointerId:t,_manipulator:e}=this;return null!=t&&this._pointerDownStates.has(t)||e.grabbing||!e.interactive}get _snappingEnabled(){return null!=this.snappingManager&&this.snappingManager.options.effectiveEnabled}get _requiresScenePoint(){const t=this._updateAndGetEffectiveDrawSurface();return"3d"===this.view.type&&this.drawSurface!==t}get canRedo(){return this._editGeometryOperations.canRedo}get canUndo(){return this._editGeometryOperations.canUndo}get committedVertices(){return this._activePart.vertices.map(t=>this.coordinateHelper.vectorToArray(t.pos))}get _constraint(){const{constraints:t,constraintsEnabled:e}=this;if(t&&e)switch(this.geometryType){case"point":case"multipoint":return this._getPointConstraint(t);case"polygon":case"polyline":return this._getPolylineOrPolygonConstraint(this.lastVertex,this.secondToLastVertex,t)}}set drawingMode(t){this._set("drawingMode",t??v)}get effectiveCursor(){return this.loading?Z:this._hideDefaultCursor?null:this.cursor||k}get interactive(){return this._manipulator.interactive}set interactive(t){this._manipulator.interactive=t}get isCompleted(){return this._createOperationCompleted}get numCommittedVertices(){return this._activePart.vertices.length}get snappingOptions(){return null!=this.snappingManager?this.snappingManager.options:null}get cursorVertex(){return this._get("cursorVertex")}get visualizationCursorVertex(){return"mouse"===this._stagedPointerType?this.cursorVertex:null}get committableVertex(){const{cursorVertex:t,lastVertex:e,firstVertex:i,geometryType:n}=this;return"polygon"===n&&y(t,i)||y(t,e)?null:t}get updating(){return this._updatingHandles.updating||!!this.segmentLabels?.updating}get geometryIncludingUncommittedVertices(){const{committedVertices:t,committableVertex:e,coordinateHelper:i}=this,n=t.slice();return null!=e&&n.push(i.pointToArray(e)),n}cancel(){this.complete({aborted:!0})}commitStagedVertex(){this._snappingOperation.abort();const{committableVertex:t}=this;null!=t&&this._editGeometryOperations.appendVertex(this.coordinateHelper.pointToVector(t),this._activePart)}complete(t){const e=t?.aborted||!1;this._snappingOperation.abort(),this.snappingManager?.doneSnapping();const{geometryType:i,numCommittedVertices:n}=this,r="multipoint"===i&&0===n||"polyline"===i&&n<2||"polygon"===i&&n<3;"segment"!==i&&"point"!==i||this.commitStagedVertex(),this._createOperationCompleted=!r,(this.isCompleted||e)&&(this._stagedScreenPoint=null,this._stagedPointerId=null,this._stagedPointerType=null,this._processCursor(null),this.emit("complete",{vertices:this.committedVertices.map((t,e)=>({componentIndex:0,vertexIndex:e,coordinates:t})),aborted:e,type:"complete"}))}onInputEvent(t){switch(t.type){case"pointer-down":this._pointerDownStates.add(t.pointerId);break;case"pointer-up":this._pointerDownStates.delete(t.pointerId)}switch(t.type){case"pointer-move":return this._onPointerMove(t);case"hold":return this._onHold(t)}}redo(){this._editGeometryOperations.redo()}undo(){null!=this.snappingManager&&this.snappingManager.doneSnapping(),this._editGeometryOperations.undo()}_processCursor(t){const e=i(this.cursorVertex),n=i(t),r=n&&(this._updateAndGetEffectiveDrawSurface()?.constrainZ(n)??n),s=this._snapToClosingVertex(r),o=this._applyConstraints(s);y(e,o)||(this._set("cursorVertex",o),this.segmentLabels?.set("stagedVertex",null!=o?this.coordinateHelper.pointToVector(o):null),null==o||"mouse"!==this._stagedPointerType?this.emit("cursor-remove"):this.emit("cursor-update",{updated:null,vertices:[{componentIndex:0,vertexIndex:this._activePart.vertices.length,coordinates:this.coordinateHelper.pointToArray(o)}],operation:"apply",type:"vertex-update"}))}_snapToClosingVertex(t){if(null==t||this._isDragging||"polygon"!==this.geometryType||this.numCommittedVertices<=2)return t;const e=this._mapToScreen(t);if(!e)return t;const i=this._activePart;return this._vertexWithinPointerDistance(i.vertices[0].pos,e)?this.firstVertex:this._vertexWithinPointerDistance(i.vertices.at(-1).pos,e)?this.lastVertex:t}_createManipulatorDragPipeline(t){switch(this.drawingMode){case"click":return this._createManipulatorDragPipelineClick(t);case"freehand":return this._createManipulatorDragPipelineFreehand(t);case"hybrid":return this._createManipulatorDragPipelineHybrid(t)}}_createManipulatorDragPipelineClick(t){return P(t,(t,e,i,n)=>{const r="touch"===n&&this._snappingEnabled;if(this.isCompleted||!r)return;const{snappingStep:s,cancelSnapping:o}=H({predicate:()=>r,snappingManager:this.snappingManager,snappingContext:new I({editGeometryOperations:this._editGeometryOperations,elevationInfo:this.elevationInfo,feature:this.graphic,pointer:n,visualizer:this.snappingVisualizer,drawConstraints:this.constraints}),updatingHandles:this._updatingHandles,useZ:!this._requiresScenePoint});i=i.next(t=>(r&&null!=this.snappingManager&&this.snappingManager.doneSnapping(),t)).next(o),e.next(this._screenToMapDragEventStep()).next(t=>("start"===t.action&&(this._processCursor(t.mapStart),("segment"===this.geometryType||r&&!this.numCommittedVertices)&&this.commitStagedVertex()),t)).next(b(this.view,this.elevationInfo)).next(...s).next(t=>(r&&(this._processCursor(t.mapEnd),"end"===t.action&&this.commitStagedVertex()),t)).next(t=>("end"===t.action&&("mouse"!==this._stagedPointerType&&this._snappingOperation.abort(),"segment"!==this.geometryType&&"point"!==this.geometryType||this.complete()),t))})}_createManipulatorDragPipelineFreehand(t){return P(t,(t,e)=>{this.isCompleted||e.next(this._screenToMapDragEventStep()).next(t=>("start"===t.action&&(this._snappingOperation.abort(),null==this.committableVertex&&this._processCursor(t.mapStart),"segment"===this.geometryType&&this.commitStagedVertex()),t)).next(t=>{switch(t.action){case"start":case"update":this._processCursor(t.mapEnd),"polygon"!==this.geometryType&&"polyline"!==this.geometryType||this.commitStagedVertex();break;case"end":this.complete()}return t})})}_createManipulatorDragPipelineHybrid(t){return P(t,(t,e)=>{this.isCompleted||e.next(this._screenToMapDragEventStep()).next(t=>("start"===t.action&&(this._snappingOperation.abort(),this.addHandles(this._editGeometryOperations.createUndoGroup(),L),this._processCursor(t.mapStart),this.commitStagedVertex()),t)).next(t=>{switch(t.action){case"start":case"update":this._processCursor(t.mapEnd),"polygon"!==this.geometryType&&"polyline"!==this.geometryType||this.commitStagedVertex();break;case"end":"mouse"!==this._stagedPointerType&&this._snappingOperation.abort(),this.removeHandles(L),"segment"!==this.geometryType&&"point"!==this.geometryType||this.complete()}return t})})}get _drawAtFixedElevation(){const{constraintsEnabled:t,constraintZ:e,geometryType:i,numCommittedVertices:n}=this;return t?null!=e||"segment"===i&&n>0:("segment"===i||"polygon"===i)&&n>0}_updateAndGetEffectiveDrawSurface(){const{constraintsEnabled:t,coordinateHelper:e,drawSurface:i,elevationDrawSurface:n,snapToSceneEnabled:r}=this;if(null==n)return i;if(!this.hasZ)return n.defaultZ=null,n;const s=this.elevationInfo?.mode;let o=this.defaultZ,a=t||"absolute-height"===s;if(null!=r&&(a=r),"on-the-ground"===s&&(a=!1),this._drawAtFixedElevation){o=(t?this.constraintZ:null)??e.getZ(this._activePart.vertices[0].pos),a=!1}return a?i:(n.defaultZ=o,n)}_mapToScreen(t){return this._updateAndGetEffectiveDrawSurface()?.mapToScreen(t)}_onHold(t){this._snappingOperation.abort(),"click"===this.drawingMode&&"touch"===t.pointerType&&this._snappingEnabled&&this._processCursor(t.mapPoint),t.stopPropagation()}_onImmediateClick(t){if(!("mouse"===t.pointerType&&2===t.button||this._manipulator.dragging))try{const{drawingMode:e,geometryType:i}=this;this._stagedPointerType=t.pointerType,this._stagedScreenPoint=t.screenPoint;const n=this._screenToMap(t.screenPoint);if(null==n)return;if(null==n||"freehand"===e&&"point"!==i&&"multipoint"!==i)return;if(this._snappingEnabled&&null!=this.cursorVertex||this._processCursor(n),null==this.committableVertex)return void this.complete();this.commitStagedVertex(),"mouse"!==t.pointerType&&this._processCursor(null),("freehand"===e&&"multipoint"!==this.geometryType||"point"===i||"segment"===i&&2===this.numCommittedVertices||"segment"===i&&"hybrid"===e&&1===this.numCommittedVertices)&&this.complete()}finally{t.stopPropagation()}}_onImmediateDoubleClick(t){this._manipulator.dragging||"point"===this.geometryType||(this.complete(),t.stopPropagation())}_onPointerMove(t){const e=c(t.x,t.y);this._updatePointer(e,t.pointerId,t.pointerType)&&t.stopPropagation()}_updatePointer(t,e,i){return this._stagedScreenPoint=t,this._stagedPointerType=i,this._stagedPointerId=e,this._isDragging?(this._snappingOperation.abort(),!1):(this._processCursorMovementRelativeToSurface(t,i),!0)}_onKeyboardBasedChange(){"mouse"===this._stagedPointerType&&this._stagedScreenPoint&&null!=this._stagedPointerId&&!this._isDragging?this._processCursorMovementRelativeToSurface(this._stagedScreenPoint,this._stagedPointerType):this._snappingOperation.abort()}_processCursorMovementRelativeToSurface(t,e){const i=this._snappingOperation,n=this._screenToMap(t),r=this._requiresScenePoint?this.drawSurface?.screenToMap(t):null;if(null==n)return this._hideDefaultCursor=!0,this._processCursor(null),void i.abort();this._hideDefaultCursor=!1;const s=this.snappingManager;if(null==s)return this._processCursor(n),void i.abort();const a=this._getSnappingContext(e);this._updatingHandles.consumePromise(o(i.snap({point:n,scenePoint:r},s,a)))}_applyConstraints(t){const{_constraint:e,constraints:i}=this;if(!t||!i||!e)return t;const{context:n}=i,r=M(t,n),s=r?e.closestTo(r):void 0;if(!s)return t;const o=D(s,t,n),a="2d"===this.view.type||"absolute-height"!==n.elevationInfo.mode;return null!=o&&a&&null!=this.constraintZ&&this.hasZ&&(o.z=this.constraintZ),o}_screenToMap(t){return t?this._updateAndGetEffectiveDrawSurface()?.screenToMap(t):null}_screenToMapDragEventStep(){let t=null;return e=>{if("start"===e.action&&(t=this._screenToMap(e.screenStart)),null==t)return null;const i=this._screenToMap(e.screenEnd);return null!=i?{...e,mapStart:t,mapEnd:i}:null}}_vertexWithinPointerDistance(t,e){const i=25,n=this._mapToScreen(this.coordinateHelper.vectorToDehydratedPoint(t));return null!=n&&U(n,e,i)}_getSnappingContext(t){const e=this._drawAtFixedElevation?this.elevationDrawSurface?.defaultZ:null;return new I({editGeometryOperations:this._editGeometryOperations,elevationInfo:this.elevationInfo,pointer:t,feature:this.graphic,visualizer:this.snappingVisualizer,selfSnappingZ:null!=e?{value:e,elevationInfo:this.elevationInfo}:null,drawConstraints:this.constraints})}};function U(t,e,i){const n=t.x-e.x,r=t.y-e.y;return n*n+r*r<=i}t([d()],z.prototype,"_hideDefaultCursor",void 0),t([d()],z.prototype,"_stagedPointerId",void 0),t([d()],z.prototype,"_isDragging",null),t([d()],z.prototype,"_snappingOperation",void 0),t([d()],z.prototype,"_snappingEnabled",null),t([d({constructOnly:!0})],z.prototype,"graphic",void 0),t([d()],z.prototype,"constraintsEnabled",void 0),t([d()],z.prototype,"constraints",void 0),t([d()],z.prototype,"_constraint",null),t([d()],z.prototype,"constraintZ",void 0),t([d()],z.prototype,"defaultZ",void 0),t([d()],z.prototype,"isDraped",void 0),t([d({value:v})],z.prototype,"drawingMode",null),t([d({constructOnly:!0})],z.prototype,"elevationDrawSurface",void 0),t([d({constructOnly:!0})],z.prototype,"elevationInfo",void 0),t([d({constructOnly:!0,type:E})],z.prototype,"labelOptions",void 0),t([d({constructOnly:!0})],z.prototype,"geometryType",void 0),t([d({constructOnly:!0})],z.prototype,"hasM",void 0),t([d({constructOnly:!0})],z.prototype,"hasZ",void 0),t([d()],z.prototype,"cursor",void 0),t([d()],z.prototype,"effectiveCursor",null),t([d()],z.prototype,"loading",void 0),t([d({constructOnly:!0})],z.prototype,"manipulators",void 0),t([d({constructOnly:!0})],z.prototype,"drawSurface",void 0),t([d({constructOnly:!0})],z.prototype,"segmentLabels",void 0),t([d({constructOnly:!0})],z.prototype,"snappingManager",void 0),t([d({constructOnly:!0})],z.prototype,"snappingVisualizer",void 0),t([d()],z.prototype,"snapToSceneEnabled",void 0),t([d({readOnly:!0})],z.prototype,"cursorVertex",null),t([d({readOnly:!0})],z.prototype,"visualizationCursorVertex",null),t([d()],z.prototype,"committableVertex",null),t([d()],z.prototype,"firstVertex",void 0),t([d()],z.prototype,"lastVertex",void 0),t([d()],z.prototype,"secondToLastVertex",void 0),t([d()],z.prototype,"updating",null),t([d({constructOnly:!0})],z.prototype,"view",void 0),z=t([h("esri.views.draw.DrawOperation")],z);export{z as DrawOperation,k as defaultCursor,Z as defaultLoadingCursor};
2
+ import{__decorate as t}from"tslib";import{EventedAccessor as e}from"../../core/Evented.js";import{clone as i}from"../../core/lang.js";import{equalsMaybe as n,destroyMaybe as r}from"../../core/maybe.js";import{memoize as s}from"../../core/memoize.js";import{ignoreAbortErrors as o}from"../../core/promiseUtils.js";import a from"../../core/ReactiveSet.js";import{watch as p,syncAndInitial as l}from"../../core/reactiveUtils.js";import{createScreenPoint as c}from"../../core/screenUtils.js";import{property as d,subclass as h}from"../../core/accessorSupport/decorators.js";import{diff as u}from"../../core/accessorSupport/diffUtils.js";import{UpdatingHandles as g}from"../../core/support/UpdatingHandles.js";import{pointEquals as m,pointNear as y}from"../../layers/graphics/dehydratedFeatureComparison.js";import{getEffectiveElevationInfo as _}from"../../support/elevationInfoUtils.js";import{defaultDrawingMode as v}from"./drawingModes.js";import{LegacyDrawManipulator as f}from"./LegacyDrawManipulator.js";import{createCoordinateHelper as x}from"../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as P,sceneSnappingAtLocation as b}from"../interactive/dragEventPipeline.js";import{EditGeometry as T,Part as S}from"../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as C}from"../interactive/editGeometry/EditGeometryOperations.js";import{isPoint as V}from"../interactive/sketch/constraints.js";import{getPointConstraint as w,getPolylineOrPolygonConstraint as O,pointToConstraintSpace as M,constraintSpaceToPoint as D}from"../interactive/sketch/constraintUtils.js";import E from"../interactive/sketch/SketchLabelOptions.js";import{SnappingContext as I}from"../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as H}from"../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as G}from"../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as j}from"../interactive/snapping/snappingUtils.js";const k="crosshair",Z="progress",A=Symbol(),L=Symbol();let z=class extends e{constructor(t){super(t),this._createOperationCompleted=!1,this._hideDefaultCursor=!1,this._pointerDownStates=new a,this._stagedScreenPoint=null,this._stagedPointerType=null,this._updatingHandles=new g,this._stagedPointerId=null,this.constraintsEnabled=!1,this.constraints=void 0,this._getPointConstraint=s(w),this._getPolylineOrPolygonConstraint=s(O),this.constraintZ=null,this.defaultZ=null,this.isDraped=!0,this.labelOptions=new E,this.cursor=null,this.loading=!1,this.snapToSceneEnabled=null,this.firstVertex=null,this.lastVertex=null,this.secondToLastVertex=null,null==t.elevationInfo&&(this.elevationInfo=_(!!t.hasZ))}initializePointer(){const t=this.view.inputManager?.latestPointerInfo;null!=t&&"touch"!==t.type&&this._updatePointer(t.location,t.id,t.type)}initialize(){const{geometryType:t,view:e}=this,i=e.spatialReference,r="viewingMode"in e.state?e.state.viewingMode:2,s="segment"===t||"multipoint"===t?"polyline":t;this.coordinateHelper=x(this.hasZ,this.hasM,i),this._editGeometryOperations=new C(new T(s,this.coordinateHelper),r),this._snappingOperation=new G({view:e}),this.addHandles([p(()=>({stagedPoint:this._snappingOperation.stagedPoint,constraint:this._constraint}),({stagedPoint:t,constraint:e},i)=>{const{snappingOptions:n}=this;n&&(n.forceDisabled=null!=e&&V(e));if(null!=i&&t===i.stagedPoint&&e!==i.constraint)return this._onKeyboardBasedChange();this._processCursor(t??this._screenToMap(this._stagedScreenPoint))},{equals:(t,e)=>t.stagedPoint===e.stagedPoint&&n(t.constraint,e.constraint)}),p(()=>this.view.viewpoint,(t,e)=>{t&&e&&u(t,e)&&this._onKeyboardBasedChange()})]),this._activePart=new S(i,r),this._editGeometryOperations.data.parts.push(this._activePart);const a=this.segmentLabels;null!=a&&(a.context={view:e,editGeometryOperations:this._editGeometryOperations,elevationInfo:this.elevationInfo,labelOptions:this.labelOptions},this.addHandles(p(()=>this.labelOptions.enabled,t=>{a.visible=t},l))),this.addHandles(this._editGeometryOperations.on(["vertex-add","vertex-update","vertex-remove"],t=>{const e=t.vertices.map(t=>({componentIndex:0,vertexIndex:t.index,coordinates:this.coordinateHelper.vectorToArray(t.pos)})),i=e.map(t=>t.coordinates),n=this.coordinateHelper.vectorToDehydratedPoint(this._activePart.getFirstVertex()?.pos)??null;m(n,this.firstVertex)||(this.firstVertex=n);const r=this.coordinateHelper.vectorToDehydratedPoint(this._activePart.getLastVertex()?.pos)??null;m(r,this.lastVertex)||(this.lastVertex=r);const s=this.coordinateHelper.vectorToDehydratedPoint(this._activePart.segments.at(-1)?.leftVertex?.pos)??null;switch(m(s,this.secondToLastVertex)||(this.secondToLastVertex=s),this._processCursor(this.cursorVertex),t.type){case"vertex-add":this.emit(t.type,{...t,added:i,vertices:e});break;case"vertex-update":this.emit(t.type,{...t,updated:i,vertices:e});break;case"vertex-remove":this.emit(t.type,{...t,removed:i,vertices:e})}}));const c=this._manipulator=new f({consumesClicks:!1,grabbableForEvent:t=>"click"!==this.drawingMode||"touch"===t.pointerType&&this._snappingEnabled&&1===this._pointerDownStates.size});this.manipulators.add(c),c.grabbable="point"!==t&&"multipoint"!==t,this.addHandles([c.events.on("immediate-click",t=>this._onImmediateClick(t)),c.events.on("immediate-double-click",t=>this._onImmediateDoubleClick(t)),p(()=>this.drawingMode,()=>{this.removeHandles(A),this.addHandles(this._createManipulatorDragPipeline(c),A)},l),p(()=>({effectiveCursor:this.effectiveCursor}),({effectiveCursor:t})=>{c.cursor=t},l)]),j(this,()=>{const t=this.view.inputManager.latestPointerInfo?.type??"mouse",e=this._getSnappingContext(t);if(null!=this.snappingManager){const t=this._snappingOperation.snapAgainNearPreviousMapPoint(this.snappingManager,e);this._updatingHandles.consumePromise(o(t))}})}destroy(){r(this.segmentLabels),r(this._snappingOperation),this._editGeometryOperations=r(this._editGeometryOperations),this._updatingHandles.destroy()}get _isDragging(){const{_stagedPointerId:t,_manipulator:e}=this;return null!=t&&this._pointerDownStates.has(t)||e.grabbing||!e.interactive}get _snappingEnabled(){return null!=this.snappingManager&&this.snappingManager.options.effectiveEnabled}get _requiresScenePoint(){const t=this._updateAndGetEffectiveDrawSurface();return"3d"===this.view.type&&this.drawSurface!==t}get canRedo(){return this._editGeometryOperations.canRedo}get canUndo(){return this._editGeometryOperations.canUndo}get committedVertices(){return this._activePart.vertices.map(t=>this.coordinateHelper.vectorToArray(t.pos))}get _constraint(){const{constraints:t,constraintsEnabled:e}=this;if(t&&e)switch(this.geometryType){case"point":case"multipoint":return this._getPointConstraint(t);case"polygon":case"polyline":return this._getPolylineOrPolygonConstraint(this.lastVertex,this.secondToLastVertex,t)}}set drawingMode(t){this._set("drawingMode",t??v)}get effectiveCursor(){return this.loading?Z:this._hideDefaultCursor?null:this.cursor||k}get interactive(){return this._manipulator.interactive}set interactive(t){this._manipulator.interactive=t}get isCompleted(){return this._createOperationCompleted}get numCommittedVertices(){return this._activePart.vertices.length}get snappingOptions(){return null!=this.snappingManager?this.snappingManager.options:null}get cursorVertex(){return this._get("cursorVertex")}get visualizationCursorVertex(){return"mouse"===this._stagedPointerType?this.cursorVertex:null}get committableVertex(){const{cursorVertex:t,lastVertex:e,firstVertex:i,geometryType:n}=this;return"polygon"===n&&y(t,i)||y(t,e)?null:t}get updating(){return this._updatingHandles.updating||!!this.segmentLabels?.updating}get geometryIncludingUncommittedVertices(){const{committedVertices:t,committableVertex:e,coordinateHelper:i}=this,n=t.slice();return null!=e&&n.push(i.pointToArray(e)),n}cancel(){this.complete({aborted:!0})}commitStagedVertex(){this._snappingOperation.abort();const{committableVertex:t}=this;null!=t&&this._editGeometryOperations.appendVertex(this.coordinateHelper.pointToVector(t),this._activePart)}complete(t){const e=t?.aborted||!1;this._snappingOperation.abort(),this.snappingManager?.doneSnapping();const{geometryType:i,numCommittedVertices:n}=this,r="multipoint"===i&&0===n||"polyline"===i&&n<2||"polygon"===i&&n<3;"segment"!==i&&"point"!==i||this.commitStagedVertex(),this._createOperationCompleted=!r,(this.isCompleted||e)&&(this._stagedScreenPoint=null,this._stagedPointerId=null,this._stagedPointerType=null,this._processCursor(null),this.emit("complete",{vertices:this.committedVertices.map((t,e)=>({componentIndex:0,vertexIndex:e,coordinates:t})),aborted:e,type:"complete"}))}onInputEvent(t){switch(t.type){case"pointer-down":this._pointerDownStates.add(t.pointerId);break;case"pointer-up":this._pointerDownStates.delete(t.pointerId)}switch(t.type){case"pointer-move":return this._onPointerMove(t);case"hold":return this._onHold(t)}}redo(){this._editGeometryOperations.redo()}undo(){null!=this.snappingManager&&this.snappingManager.doneSnapping(),this._editGeometryOperations.undo()}_processCursor(t){const e=i(this.cursorVertex),n=i(t),r=n&&(this._updateAndGetEffectiveDrawSurface()?.constrainZ(n)??n),s=this._snapToClosingVertex(r),o=this._applyConstraints(s);y(e,o)||(this._set("cursorVertex",o),this.segmentLabels?.set("stagedVertex",null!=o?this.coordinateHelper.pointToVector(o):null),null==o||"mouse"!==this._stagedPointerType?this.emit("cursor-remove"):this.emit("cursor-update",{updated:null,vertices:[{componentIndex:0,vertexIndex:this._activePart.vertices.length,coordinates:this.coordinateHelper.pointToArray(o)}],operation:"apply",type:"vertex-update"}))}_snapToClosingVertex(t){if(null==t||this._isDragging||"polygon"!==this.geometryType||this.numCommittedVertices<=2)return t;const e=this._mapToScreen(t);if(!e)return t;const i=this._activePart;return this._vertexWithinPointerDistance(i.vertices[0].pos,e)?this.firstVertex:this._vertexWithinPointerDistance(i.vertices.at(-1).pos,e)?this.lastVertex:t}_createManipulatorDragPipeline(t){switch(this.drawingMode){case"click":return this._createManipulatorDragPipelineClick(t);case"freehand":return this._createManipulatorDragPipelineFreehand(t);case"hybrid":return this._createManipulatorDragPipelineHybrid(t)}}_createManipulatorDragPipelineClick(t){return P(t,(t,e,i,n)=>{const r="touch"===n&&this._snappingEnabled;if(this.isCompleted||!r)return;const{snappingStep:s,cancelSnapping:o}=H({predicate:()=>r,snappingManager:this.snappingManager,snappingContext:new I({editGeometryOperations:this._editGeometryOperations,elevationInfo:this.elevationInfo,feature:this.graphic,pointer:n,visualizer:this.snappingVisualizer,drawConstraints:this.constraints}),updatingHandles:this._updatingHandles,useZ:!this._requiresScenePoint});i=i.next(t=>(r&&null!=this.snappingManager&&this.snappingManager.doneSnapping(),t)).next(o),e.next(this._screenToMapDragEventStep()).next(t=>("start"===t.action&&(this._processCursor(t.mapStart),("segment"===this.geometryType||r&&!this.numCommittedVertices)&&this.commitStagedVertex()),t)).next(b(this.view,this.elevationInfo)).next(...s).next(t=>(r&&(this._processCursor(t.mapEnd),"end"===t.action&&this.commitStagedVertex()),t)).next(t=>("end"===t.action&&("mouse"!==this._stagedPointerType&&this._snappingOperation.abort(),"segment"!==this.geometryType&&"point"!==this.geometryType||this.complete()),t))})}_createManipulatorDragPipelineFreehand(t){return P(t,(t,e)=>{this.isCompleted||e.next(this._screenToMapDragEventStep()).next(t=>("start"===t.action&&(this._snappingOperation.abort(),null==this.committableVertex&&this._processCursor(t.mapStart),"segment"===this.geometryType&&this.commitStagedVertex()),t)).next(t=>{switch(t.action){case"start":case"update":this._processCursor(t.mapEnd),"polygon"!==this.geometryType&&"polyline"!==this.geometryType||this.commitStagedVertex();break;case"end":this.complete()}return t})})}_createManipulatorDragPipelineHybrid(t){return P(t,(t,e)=>{this.isCompleted||e.next(this._screenToMapDragEventStep()).next(t=>("start"===t.action&&(this._snappingOperation.abort(),this.addHandles(this._editGeometryOperations.createUndoGroup(),L),this._processCursor(t.mapStart),this.commitStagedVertex()),t)).next(t=>{switch(t.action){case"start":case"update":this._processCursor(t.mapEnd),"polygon"!==this.geometryType&&"polyline"!==this.geometryType||this.commitStagedVertex();break;case"end":"mouse"!==this._stagedPointerType&&this._snappingOperation.abort(),this.removeHandles(L),"segment"!==this.geometryType&&"point"!==this.geometryType||this.complete()}return t})})}get _drawAtFixedElevation(){const{constraintsEnabled:t,constraintZ:e,geometryType:i,numCommittedVertices:n}=this;return t?null!=e||"segment"===i&&n>0:("segment"===i||"polygon"===i)&&n>0}_updateAndGetEffectiveDrawSurface(){const{constraintsEnabled:t,coordinateHelper:e,drawSurface:i,elevationDrawSurface:n,snapToSceneEnabled:r}=this;if(null==n)return i;if(!this.hasZ)return n.defaultZ=null,n;const s=this.elevationInfo?.mode;let o=this.defaultZ,a=t||"absolute-height"===s;if(null!=r&&(a=r),"on-the-ground"===s&&(a=!1),this._drawAtFixedElevation){o=(t?this.constraintZ:null)??e.getZ(this._activePart.vertices[0].pos),a=!1}return a?i:(n.defaultZ=o,n)}_mapToScreen(t){return this._updateAndGetEffectiveDrawSurface()?.mapToScreen(t)}_onHold(t){this._snappingOperation.abort(),"click"===this.drawingMode&&"touch"===t.pointerType&&this._snappingEnabled&&this._processCursor(t.mapPoint),t.stopPropagation()}_onImmediateClick(t){if(!("mouse"===t.pointerType&&2===t.button||this._manipulator.dragging))try{const{drawingMode:e,geometryType:i}=this;this._stagedPointerType=t.pointerType,this._stagedScreenPoint=t.screenPoint;const n=this._screenToMap(t.screenPoint);if(null==n)return;if(null==n||"freehand"===e&&"point"!==i&&"multipoint"!==i)return;if(this._snappingEnabled&&null!=this.cursorVertex||this._processCursor(n),null==this.committableVertex)return void this.complete();this.commitStagedVertex(),"mouse"!==t.pointerType&&this._processCursor(null),("freehand"===e&&"multipoint"!==this.geometryType||"point"===i||"segment"===i&&2===this.numCommittedVertices||"segment"===i&&"hybrid"===e&&1===this.numCommittedVertices)&&this.complete()}finally{t.stopPropagation()}}_onImmediateDoubleClick(t){this._manipulator.dragging||"point"===this.geometryType||(this.complete(),t.stopPropagation())}_onPointerMove(t){const e=c(t.x,t.y);this._updatePointer(e,t.pointerId,t.pointerType)&&t.stopPropagation()}_updatePointer(t,e,i){return this._stagedScreenPoint=t,this._stagedPointerType=i,this._stagedPointerId=e,this._isDragging?(this._snappingOperation.abort(),!1):(this._processCursorMovementRelativeToSurface(t,i),!0)}_onKeyboardBasedChange(){"mouse"===this._stagedPointerType&&this._stagedScreenPoint&&null!=this._stagedPointerId&&!this._isDragging?this._processCursorMovementRelativeToSurface(this._stagedScreenPoint,this._stagedPointerType):this._snappingOperation.abort()}_processCursorMovementRelativeToSurface(t,e){const i=this._snappingOperation,n=this._screenToMap(t),r=this._requiresScenePoint?this.drawSurface?.screenToMap(t):null;if(null==n)return this._hideDefaultCursor=!0,this._processCursor(null),void i.abort();this._hideDefaultCursor=!1;const s=this.snappingManager;if(null==s)return this._processCursor(n),void i.abort();const a=this._getSnappingContext(e);this._updatingHandles.consumePromise(o(i.snap({point:n,scenePoint:r},s,a)))}_applyConstraints(t){const{_constraint:e,constraints:i}=this;if(!t||!i||!e)return t;const{context:n}=i,r=M(t,n),s=r?e.closestTo(r):void 0;if(!s)return t;const o=D(s,t,n),a="2d"===this.view.type||"absolute-height"!==n.elevationInfo.mode;return null!=o&&a&&null!=this.constraintZ&&this.hasZ&&(o.z=this.constraintZ),o}_screenToMap(t){return t?this._updateAndGetEffectiveDrawSurface()?.screenToMap(t):null}_screenToMapDragEventStep(){let t=null;return e=>{if("start"===e.action&&(t=this._screenToMap(e.screenStart)),null==t)return null;const i=this._screenToMap(e.screenEnd);return null!=i?{...e,mapStart:t,mapEnd:i}:null}}_vertexWithinPointerDistance(t,e){const i=25,n=this._mapToScreen(this.coordinateHelper.vectorToDehydratedPoint(t));return null!=n&&U(n,e,i)}_getSnappingContext(t){const e=this._drawAtFixedElevation?this.elevationDrawSurface?.defaultZ:null;return new I({editGeometryOperations:this._editGeometryOperations,elevationInfo:this.elevationInfo,pointer:t,feature:this.graphic,visualizer:this.snappingVisualizer,selfSnappingZ:null!=e?{value:e,elevationInfo:this.elevationInfo}:null,drawConstraints:this.constraints})}};function U(t,e,i){const n=t.x-e.x,r=t.y-e.y;return n*n+r*r<=i}t([d()],z.prototype,"_hideDefaultCursor",void 0),t([d()],z.prototype,"_stagedPointerId",void 0),t([d()],z.prototype,"_isDragging",null),t([d()],z.prototype,"_snappingOperation",void 0),t([d()],z.prototype,"_snappingEnabled",null),t([d({constructOnly:!0})],z.prototype,"graphic",void 0),t([d()],z.prototype,"constraintsEnabled",void 0),t([d()],z.prototype,"constraints",void 0),t([d()],z.prototype,"_constraint",null),t([d()],z.prototype,"constraintZ",void 0),t([d()],z.prototype,"defaultZ",void 0),t([d()],z.prototype,"isDraped",void 0),t([d({value:v})],z.prototype,"drawingMode",null),t([d({constructOnly:!0})],z.prototype,"elevationDrawSurface",void 0),t([d({constructOnly:!0})],z.prototype,"elevationInfo",void 0),t([d({constructOnly:!0,type:E})],z.prototype,"labelOptions",void 0),t([d({constructOnly:!0})],z.prototype,"geometryType",void 0),t([d({constructOnly:!0})],z.prototype,"hasM",void 0),t([d({constructOnly:!0})],z.prototype,"hasZ",void 0),t([d()],z.prototype,"cursor",void 0),t([d()],z.prototype,"effectiveCursor",null),t([d()],z.prototype,"loading",void 0),t([d({constructOnly:!0})],z.prototype,"manipulators",void 0),t([d({constructOnly:!0})],z.prototype,"drawSurface",void 0),t([d({constructOnly:!0})],z.prototype,"segmentLabels",void 0),t([d({constructOnly:!0})],z.prototype,"snappingManager",void 0),t([d({constructOnly:!0})],z.prototype,"snappingVisualizer",void 0),t([d()],z.prototype,"snapToSceneEnabled",void 0),t([d({readOnly:!0})],z.prototype,"cursorVertex",null),t([d({readOnly:!0})],z.prototype,"visualizationCursorVertex",null),t([d()],z.prototype,"committableVertex",null),t([d()],z.prototype,"firstVertex",void 0),t([d()],z.prototype,"lastVertex",void 0),t([d()],z.prototype,"secondToLastVertex",void 0),t([d()],z.prototype,"updating",null),t([d({constructOnly:!0})],z.prototype,"view",void 0),z=t([h("esri.views.draw.DrawOperation")],z);export{z as DrawOperation,k as defaultCursor,Z as defaultLoadingCursor};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__addDisposableResource as e,__disposeResources as t,__decorate as a}from"tslib";import{disposable as i}from"../../core/handleUtils.js";import n from"../../core/Logger.js";import{getOrCreateMapValue as r}from"../../core/MapUtils.js";import{destroyMaybe as o}from"../../core/maybe.js";import{when as s,initial as d,on as l,sync as p,watch as c}from"../../core/reactiveUtils.js";import{screenPointEqual as g,createScreenPoint as u}from"../../core/screenUtils.js";import{diff as h}from"../../core/accessorSupport/diffUtils.js";import{property as m}from"../../core/accessorSupport/decorators/property.js";import{subclass as v}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as M}from"../../core/support/UpdatingHandles.js";import{createSnappingVisualizer as y}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as f,markHandled as _,getPointerType as w}from"./support/drawToolUtils.js";import{PluginContext as C}from"./support/PluginContext.js";import{viewEventToCommand as H}from"./support/input/drawToolInput.js";import{EditSessionManager as x}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as S}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as b}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as P}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as T}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as k}from"./support/managers/SurfaceManager.js";import{TooltipManager as I}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as O}from"../input/InputManager.js";import{createCoordinateHelper as j}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as A}from"../interactive/InteractiveToolBase.js";import{KeyBindings as V,mediaKeys as E,sketchKeys as U,advancedSketchKeys as D,tooltipKeys as L}from"../interactive/keybindings.js";import{isInputModeAvailable as R}from"../interactive/tooltip/tooltipCommonUtils.js";const G=Symbol();let Z=class extends A{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._snappingVisualizer=null,this._updatingHandles=new M,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type="draw-2.0",this.automaticManipulatorSelection=!0,this.snappingManager=null,this.sketchOptions=null,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new P,this.globalStateManager=new S({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new x({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new T({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}initialize(){const{view:e}=this;this.interactiveHandleManager=new b({view:e,renderer:this.renderer}),this._override("manipulators",this.interactiveHandleManager.manipulators),this.tooltipManager=new I({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(s(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:"outputGeometry"}),t.addOrUpdateVisual(this._vertexVisualId,{role:"vertex"}),this._updatingHandles.addPromise(y(e,t).then(e=>this._snappingVisualizer=e))},d)),this.addHandles([s(()=>this.view,e=>{this.surfaceManager?.destroy(),this.surfaceManager=new k({spatialReference:this.coordinateHelper.spatialReference,excludedGraphicsLayer:null,defaultZ:this.defaultZ,hasZ:this.hasZ,view:e,elevationInfo:this.elevationInfo,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},d),s(()=>this.sketchOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),l(()=>this.editSessionManager,"cancelPlugin",({plugin:e})=>{this._suspendPlugin(e)},p),l(()=>this.editSessionManager,"restartPlugin",({restartInfo:e})=>{this._resumePlugin(e)},p),l(()=>this.editGeometryOperations,["vertex-add","vertex-update","vertex-remove"],e=>{const t=e.vertices.map(e=>({componentIndex:0,vertexIndex:e.index,coordinates:this.coordinateHelper.vectorToArray(e.pos)})),a=t.map(e=>e.coordinates);switch(e.type){case"vertex-add":this.emit(e.type,{...e,added:a,vertices:t});break;case"vertex-update":this.emit(e.type,{...e,updated:a,vertices:t});break;case"vertex-remove":this.emit(e.type,{...e,removed:a,vertices:t})}})])}destroy(){this.active&&this.onDeactivate(),this.editSessionManager.destroy(),this.lifecycleManager.destroy(),this.measurementManager.destroy(),this.globalStateManager.destroy();for(const e of this._pluginContexts.values())e.destroy();this._pluginContexts.clear(),this.surfaceManager=o(this.surfaceManager),this.interactiveHandleManager=o(this.interactiveHandleManager),this.tooltipManager=o(this.tooltipManager)}get _tooltipDependencies(){const{defaultZ:e,editGeometryOperations:t,sketchOptions:a,directionOptions:i,view:n}=this;return t&&a&&n?{defaultZ:e,directionOptions:i,editGeometryOperations:t,sketchOptions:a,view:n,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,notifyTooltipsChanged:()=>{const{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}:null}get _editSessionManagerContext(){const{coordinateHelper:e,view:t}=this;return{coordinateHelper:e,viewingMode:"3d"===t?.type&&"global"===t.viewingMode?1:2}}get updating(){return this._updatingHandles.updating||this.lifecycleManager.updating}get coordinateHelper(){return j(this.hasZ,!1,this.view.spatialReference)}get editGeometry(){return this.editGeometryOperations?.data}get editGeometryOperations(){return this.editSessionManager.editGeometryOperations}get geometry(){return this.editSessionManager.outputGeometry}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(){return this.lastScreenPosition?this.view.toMap(this.lastScreenPosition):this.view.center}get movementCommandContext(){const{editGeometryOperations:e,tooltipManager:t,surfaceManager:a,snappingManager:i,interactiveHandleManager:n,_snappingVisualizer:r,defaultZ:o,hasZ:s,globalStateManager:{drawAtFixedElevation:d},view:l}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:a,interactiveHandleManager:n,snappingManager:i,snappingVisualizer:r,pointerType:"mouse",hasZ:s,defaultZ:o,view:l,drawAtFixedElevation:d}}get tooltip(){return this.tooltipManager?.tooltip}get activeTooltipInfo(){return this.tooltipManager?.tooltipInfo}begin(e){this.active?(this.lifecycleManager.begin(e),this._pendingBeginRequest=null):this._pendingBeginRequest=e}complete(e){const t=this.lifecycleManager;e&&t.complete(e),0===t.pluginStack.length&&(this.emit("complete",{geometry:this.geometry,aborted:!1,type:"complete",vertices:[]}),this.view?.activeTool===this&&(this.view.activeTool=null))}cancelFirstUserLeafPlugin(){const e=this.pluginStack.toArray().findLast(e=>!0!==e.configuration?.hidden);e&&this.lifecycleManager.cancel(e)}replaceLeaf(e){const t=this.lifecycleManager;t.updating?n.getLogger(this).info("Ignoring command; arrived while updating:","replaceLeaf"):t.replaceLeaf(e)}finishPart(){const e=this.mostUpstreamPlugin,t=e?.configuration;if(this.editGeometryOperations&&t&&t.kind?.includes("multipart")){const e=this.pluginStack.at(1);e&&this.complete(e)}}undo(){this._guardCommand({action:"undo"},()=>this.editSessionManager.undo())}redo(){this._guardCommand({action:"redo"},()=>this.editSessionManager.redo())}executeCommand(e){return this._handleCommand(e)}addPromise(e){return this._updatingHandles.addPromise(e)}onActivate(){super.onActivate();const{view:e}=this;this.lastScreenPosition=e?.inputManager.latestPointerInfo?.location,this.renderer?.activate(),this._pendingBeginRequest&&(this.begin(this._pendingBeginRequest),this._pendingBeginRequest=null),this.addHandles([c(()=>this.geometry,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e}),this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?f(e):null})},d),s(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:g}),c(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{const a=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&a&&this.emit("cursor-update",{updated:a.pos,type:"vertex-update",operation:"apply",vertices:[{componentIndex:a.part.index,vertexIndex:a.index,coordinates:a.pos}]})},p),this._keybindings.register(e,O.TOOL),c(()=>e.viewpoint,(e,t)=>{e&&t&&h(e,t)&&this._handleCommand({action:"viewpoint-moved"})})],G)}onDeactivate(){super.onDeactivate(),this.removeHandles(G),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){const t=H(e);t&&this._handleCommand(t)}async _handleCommand(e){if(this.lifecycleManager.updating)n.getLogger(this).info("Ignoring command; arrived while updating:",e.action);else switch(e.action){case"view-drag":return await this._handleViewDragCommand(e);case"vertex-add":return this._guardCommand(e,()=>{_(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&&(_(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()&&_(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()=>{const t=this.tooltipManager?.tooltip;t&&R(t.info)&&(await t.enterInputMode(),_(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;const t=e.originalEvent,a=this.interactiveHandleManager?.capturingHandle;(!t||!("pointerType"in t)||"touch"!==t.pointerType||"capture-always"!==a?.captureMode&&"capture-when-engaged"!==a?.captureMode)&&"capture-when-engaged"!==this.interactiveHandleManager?.capturingHandle?.captureMode?this._before(e)&&_(e):_(e)}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(_(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){this.editable&&(await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:w(e.originalEvent)})),this.interactiveHandleManager?.updateAllScreenPositions())}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;const t=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&_(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(t,{...this.movementCommandContext,pointerType:w(e.originalEvent)}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;const t=w(e.originalEvent),a=this._updateLastScreenPosition(e),i=this.interactiveHandleManager?.findHandleByManipulator(a);"touch"===t&&i&&"start"===e.state&&this.interactiveHandleManager?.releaseHandle();const n=this.interactiveHandleManager?.findHandleDragging(),r=this.interactiveHandleManager?.capturingHandle,o=n??r??i;o&&!i&&_(e),"capture-when-engaged"===o?.captureMode||"capture-always"===o?.captureMode&&"touch"===t?"end"===e.state?await this._updatingHandles.addPromise(o.noteDragEnd(a,{...this.movementCommandContext,pointerType:t}).then(()=>{o&&"touch"===w(e.originalEvent)&&"grabbable-object"!==o.captureMode&&"capture-when-engaged"!==o.defaultCaptureMode&&"primary"===o.role&&(1===this.interactiveHandleManager?.handleCount?this._handleCommand({action:"vertex-add"}):this.interactiveHandleManager?.releaseHandle())})):"start"===e.state?await this._updatingHandles.addPromise(o.noteDragStart(a,{...this.movementCommandContext,pointerType:t}).then(()=>{o&&"touch"===w(e.originalEvent)&&"grabbable-object"!==o.captureMode&&"capture-when-engaged"!==o.defaultCaptureMode&&!o.editSession?.lastPointAddedBySession&&this._handleCommand({action:"vertex-add"})})):await this._updatingHandles.addPromise(o?.moveTo(a,{...this.movementCommandContext,pointerType:w(e.originalEvent)})):"grabbable-object"===o?.captureMode&&(this.interactiveHandleManager?.releaseHandle(r),await this._updatingHandles.addPromise(o.moveTo(a,{...this.movementCommandContext,pointerType:t})))}async _handleVertexAddAtPointCommand(e){const t=this._updateLastScreenPosition(e),a=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t);this.editable&&a&&(this._before(e)||(_(e),await this._updatingHandles.addPromise(a.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:w(e.originalEvent)}).finally(()=>this._commitNext()))))}_makeKeyBindings(){const e=new V,t=(t,a)=>{e.addToggle(t,e=>this._handleCommand({action:a,originalEvent:e,enabled:"key-down"===e.type}))},a=(t,a)=>{e.add(t,e=>this._handleCommand({action:a,originalEvent:e}))};return t(E.preserveAspectRatio,"constraint-aspect"),t(U.center,"constraint-center"),a(D.toggleFollowManipulator,"toggle-manipulator-follow"),a(U.undo,"undo"),a(U.redo,"redo"),a(U.complete,"complete"),a(U.vertexAdd,"vertex-add"),a({key:L.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);const t=this._pluginContexts.get(e);t&&(t.destroy(),this._pluginContexts.delete(e))}_beforeResume(e,t){this.interactiveHandleManager?.replaceEditSessions(e,t)}_commitNext(){const a={stack:[],error:void 0,hasError:!1};try{const t=this.mostDownstreamPlugin;if(!t)return;let n=!1;const r=this.editGeometryOperations;e(a,r?i(r.on("vertex-add",()=>n=!0)):null,!1);t.completeStep?t.completeStep():this.complete(t),n&&this.tooltipManager?.unlockOnVertexPlacement()}catch(n){a.error=n,a.hasError=!0}finally{t(a)}}_suspendPlugin(e){this.lifecycleManager.suspend(e),this.measurementManager.suspendPlugin(e)}_resumePlugin(e){this.lifecycleManager.resume(e)}_updateLastScreenPosition(e){const t=u(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){const a=r(this._pluginContexts,e,()=>new C({drawTool:this,plugin:e,session:t}));return a.session=t,a}_before(e){if(!this.hasEventListener(`before-${e.action}`))return!1;const t=new CustomEvent(`before-${e.action}`,{detail:e,cancelable:!0});return this.emit(`before-${e.action}`,t),t.defaultPrevented}_guardCommand(e,t,a){return this._before(e)?a?.():t()}};a([m()],Z.prototype,"_snappingVisualizer",void 0),a([m()],Z.prototype,"_tooltipDependencies",null),a([m()],Z.prototype,"_editSessionManagerContext",null),a([m({constructOnly:!0,nonNullable:!0})],Z.prototype,"view",void 0),a([m()],Z.prototype,"automaticManipulatorSelection",void 0),a([m()],Z.prototype,"updating",null),a([m()],Z.prototype,"coordinateHelper",null),a([m()],Z.prototype,"editGeometry",null),a([m()],Z.prototype,"editGeometryOperations",null),a([m()],Z.prototype,"geometry",null),a([m()],Z.prototype,"snappingManager",void 0),a([m()],Z.prototype,"sketchOptions",void 0),a([m()],Z.prototype,"elevationInfo",void 0),a([m()],Z.prototype,"hasZ",void 0),a([m()],Z.prototype,"defaultZ",void 0),a([m()],Z.prototype,"directionOptions",void 0),a([m()],Z.prototype,"canUndo",null),a([m()],Z.prototype,"canRedo",null),a([m()],Z.prototype,"pluginStack",null),a([m()],Z.prototype,"mostDownstreamPlugin",null),a([m()],Z.prototype,"mostUpstreamPlugin",null),a([m()],Z.prototype,"lastScreenPosition",void 0),a([m()],Z.prototype,"positionOfLastUserInput",null),a([m()],Z.prototype,"tooltipManager",void 0),a([m()],Z.prototype,"measurementManager",void 0),a([m()],Z.prototype,"globalStateManager",void 0),a([m()],Z.prototype,"editSessionManager",void 0),a([m()],Z.prototype,"lifecycleManager",void 0),a([m()],Z.prototype,"surfaceManager",void 0),a([m()],Z.prototype,"interactiveHandleManager",void 0),a([m()],Z.prototype,"renderer",void 0),a([m()],Z.prototype,"movementCommandContext",null),a([m()],Z.prototype,"tooltip",null),a([m()],Z.prototype,"activeTooltipInfo",null),Z=a([v("esri.views.draw.DrawTool")],Z);export{Z as DrawTool};
2
+ import{__addDisposableResource as e,__disposeResources as t,__decorate as i}from"tslib";import{disposable as a}from"../../core/handleUtils.js";import n from"../../core/Logger.js";import{getOrCreateMapValue as r}from"../../core/MapUtils.js";import{destroyMaybe as o}from"../../core/maybe.js";import{when as s,initial as l,on as d,sync as p,watch as c}from"../../core/reactiveUtils.js";import{screenPointEqual as u,createScreenPoint as g}from"../../core/screenUtils.js";import{diff as h}from"../../core/accessorSupport/diffUtils.js";import{property as m}from"../../core/accessorSupport/decorators/property.js";import{subclass as v}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as y}from"../../core/support/UpdatingHandles.js";import f from"../../geometry/Polygon.js";import{i as M,e as _}from"../../chunks/simplifyOperator.js";import{isExtent as w}from"../../geometry/support/jsonTypeUtils.js";import{isPolygon as C}from"../../geometry/support/typeUtils.js";import{isCurvedGeometry as H}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as S}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{getMaxDeviationInPixels as P,getMinSegmentsPerCurve as x}from"../2d/layers/graphics/densificationConstants.js";import{createSnappingVisualizer as b}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as j,markHandled as T,getPointerType as k}from"./support/drawToolUtils.js";import{PluginContext as G}from"./support/PluginContext.js";import{viewEventToCommand as O}from"./support/input/drawToolInput.js";import{EditSessionManager as I}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as U}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as A}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as V}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as E}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as D}from"./support/managers/SurfaceManager.js";import{TooltipManager as R}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as L}from"../input/InputManager.js";import{createCoordinateHelper as Z}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as B}from"../interactive/InteractiveToolBase.js";import{KeyBindings as F,mediaKeys as z,sketchKeys as q,advancedSketchKeys as K,tooltipKeys as N}from"../interactive/keybindings.js";import{isInputModeAvailable as $}from"../interactive/tooltip/tooltipCommonUtils.js";const J=Symbol();let Q=class extends B{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._snappingVisualizer=null,this._updatingHandles=new y,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type="draw-2.0",this.automaticManipulatorSelection=!0,this.snappingManager=null,this.sketchOptions=null,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new V,this.globalStateManager=new U({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new I({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new E({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}initialize(){const{view:e}=this;this.interactiveHandleManager=new A({view:e,renderer:this.renderer}),this._override("manipulators",this.interactiveHandleManager.manipulators),this.tooltipManager=new R({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(s(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:"outputGeometry"}),t.addOrUpdateVisual(this._vertexVisualId,{role:"vertex"}),this._updatingHandles.addPromise(b(e,t).then(e=>this._snappingVisualizer=e))},l)),this.addHandles([s(()=>this.view,e=>{this.surfaceManager?.destroy(),this.surfaceManager=new D({spatialReference:this.coordinateHelper.spatialReference,excludedGraphicsLayer:null,defaultZ:this.defaultZ,hasZ:this.hasZ,view:e,elevationInfo:this.elevationInfo,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},l),s(()=>this.sketchOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),d(()=>this.editSessionManager,"cancelPlugin",({plugin:e})=>{this._suspendPlugin(e)},p),d(()=>this.editSessionManager,"restartPlugin",({restartInfo:e})=>{this._resumePlugin(e)},p),d(()=>this.editGeometryOperations,["vertex-add","vertex-update","vertex-remove"],e=>{const t=e.vertices.map(e=>({componentIndex:0,vertexIndex:e.index,coordinates:this.coordinateHelper.vectorToArray(e.pos)})),i=t.map(e=>e.coordinates);switch(e.type){case"vertex-add":this.emit(e.type,{...e,added:i,vertices:t});break;case"vertex-update":this.emit(e.type,{...e,updated:i,vertices:t});break;case"vertex-remove":this.emit(e.type,{...e,removed:i,vertices:t})}})])}destroy(){this.active&&this.onDeactivate(),this.editSessionManager.destroy(),this.lifecycleManager.destroy(),this.measurementManager.destroy(),this.globalStateManager.destroy();for(const e of this._pluginContexts.values())e.destroy();this._pluginContexts.clear(),this.surfaceManager=o(this.surfaceManager),this.interactiveHandleManager=o(this.interactiveHandleManager),this.tooltipManager=o(this.tooltipManager)}get _tooltipDependencies(){const{defaultZ:e,editGeometryOperations:t,sketchOptions:i,directionOptions:a,view:n}=this;return t&&i&&n?{defaultZ:e,directionOptions:a,editGeometryOperations:t,sketchOptions:i,view:n,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,getHelpMessageKey:()=>this.helpMessageKey,notifyTooltipsChanged:()=>{const{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}:null}get _editSessionManagerContext(){const{coordinateHelper:e,view:t}=this;return{coordinateHelper:e,viewingMode:"3d"===t?.type&&"global"===t.viewingMode?1:2}}get _densificationParameters(){const{view:e,coordinateHelper:t}=this,i=t.spatialReference,a=e?.spatialReference,n=e.resolution;if(!(i&&a&&n&&Number.isFinite(n)))return null;const r=a.metersPerUnit/i.metersPerUnit;return{maxDeviation:2**Math.round(Math.log2(n))*P()*r,minSegmentsPerCurve:x()}}get test(){return{densificationParameters:this._densificationParameters}}get updating(){return this._updatingHandles.updating||this.lifecycleManager.updating}get coordinateHelper(){return Z(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(){const e=this.editSessionManager.outputGeometry;if(e&&C(e))try{const t=this._densificationParameters,i=H(e)&&t?new f({...S(e,t)}):e;if(!M(i))return _(i)}catch(t){return e}return e}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(){return this.lastScreenPosition?this.view.toMap(this.lastScreenPosition):this.view.center}get movementCommandContext(){const{editGeometryOperations:e,tooltipManager:t,surfaceManager:i,snappingManager:a,interactiveHandleManager:n,_snappingVisualizer:r,defaultZ:o,hasZ:s,globalStateManager:{drawAtFixedElevation:l},view:d}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:i,interactiveHandleManager:n,snappingManager:a,snappingVisualizer:r,pointerType:"mouse",hasZ:s,defaultZ:o,view:d,drawAtFixedElevation:l}}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){this.active?(this.lifecycleManager.begin(e),this._pendingBeginRequest=null):this._pendingBeginRequest=e}complete(e){const t=this.lifecycleManager;e&&t.complete(e),0===t.pluginStack.length&&(this._finalizeAndSimplifyGeometryResult(),this.emit("complete",{geometry:this.finalGeometry,aborted:!1,type:"complete",vertices:[]}),this.view?.activeTool===this&&(this.view.activeTool=null))}cancelFirstUserLeafPlugin(){const e=this.pluginStack.toArray().findLast(e=>!0!==e.configuration?.hidden);e&&this.lifecycleManager.cancel(e)}replaceLeaf(e){const t=this.lifecycleManager;t.updating?n.getLogger(this).info("Ignoring command; arrived while updating:","replaceLeaf"):t.replaceLeaf(e)}finishPart(){const e=this.mostUpstreamPlugin,t=e?.configuration;if(this.editGeometryOperations&&t&&t.kind?.includes("multipart")){const e=this.pluginStack.at(1);e&&this.complete(e)}}undo(){this._guardCommand({action:"undo"},()=>this.editSessionManager.undo())}redo(){this._guardCommand({action:"redo"},()=>this.editSessionManager.redo())}executeCommand(e){return this._handleCommand(e)}addPromise(e){return this._updatingHandles.addPromise(e)}onActivate(){super.onActivate();const{view:e}=this;this.lastScreenPosition=e?.inputManager.latestPointerInfo?.location,this.renderer?.activate(),this._pendingBeginRequest&&(this.begin(this._pendingBeginRequest),this._pendingBeginRequest=null),this.addHandles([c(()=>this.unprocessedGeometry,e=>{this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?j(e):null})},l),c(()=>this.simplifiedGeometryPreview,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e})},l),s(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:u}),c(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{const i=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&i&&this.emit("cursor-update",{updated:i.pos,type:"vertex-update",operation:"apply",vertices:[{componentIndex:i.part.index,vertexIndex:i.index,coordinates:i.pos}]})},p),this._keybindings.register(e,L.TOOL),c(()=>e.viewpoint,(e,t)=>{e&&t&&h(e,t)&&this._handleCommand({action:"viewpoint-moved"})})],J)}onDeactivate(){super.onDeactivate(),this.removeHandles(J),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){const t=O(e);t&&this._handleCommand(t)}async _handleCommand(e){if(this.lifecycleManager.updating)n.getLogger(this).info("Ignoring command; arrived while updating:",e.action);else switch(e.action){case"view-drag":return await this._handleViewDragCommand(e);case"vertex-add":return this._guardCommand(e,()=>{T(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&&(T(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()&&T(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()=>{const t=this.tooltipManager?.tooltip;t&&$(t.info)&&(await t.enterInputMode(),T(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;const t=e.originalEvent,i=this.interactiveHandleManager?.capturingHandle;(!t||!("pointerType"in t)||"touch"!==t.pointerType||"capture-always"!==i?.captureMode&&"capture-when-engaged"!==i?.captureMode)&&"capture-when-engaged"!==this.interactiveHandleManager?.capturingHandle?.captureMode?this._before(e)&&T(e):T(e)}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(T(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){this.editable&&(await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:k(e.originalEvent)})),this.interactiveHandleManager?.updateAllScreenPositions())}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;const t=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&T(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(t,{...this.movementCommandContext,pointerType:k(e.originalEvent)}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;const t=k(e.originalEvent),i=this._updateLastScreenPosition(e),a=this.interactiveHandleManager?.findHandleByManipulator(i);"touch"===t&&a&&"start"===e.state&&this.interactiveHandleManager?.releaseHandle();const n=this.interactiveHandleManager?.findHandleDragging(),r=this.interactiveHandleManager?.capturingHandle,o=n??r??a;o&&!a&&T(e),"capture-when-engaged"===o?.captureMode||"capture-always"===o?.captureMode&&"touch"===t?"end"===e.state?await this._updatingHandles.addPromise(o.noteDragEnd(i,{...this.movementCommandContext,pointerType:t}).then(()=>{o&&"touch"===k(e.originalEvent)&&"grabbable-object"!==o.captureMode&&"capture-when-engaged"!==o.defaultCaptureMode&&"primary"===o.role&&(1===this.interactiveHandleManager?.handleCount?this._handleCommand({action:"vertex-add"}):this.interactiveHandleManager?.releaseHandle())})):"start"===e.state?await this._updatingHandles.addPromise(o.noteDragStart(i,{...this.movementCommandContext,pointerType:t}).then(()=>{o&&"touch"===k(e.originalEvent)&&"grabbable-object"!==o.captureMode&&"capture-when-engaged"!==o.defaultCaptureMode&&!o.editSession?.lastPointAddedBySession&&this._handleCommand({action:"vertex-add"})})):await this._updatingHandles.addPromise(o?.moveTo(i,{...this.movementCommandContext,pointerType:k(e.originalEvent)})):"grabbable-object"===o?.captureMode&&(this.interactiveHandleManager?.releaseHandle(r),await this._updatingHandles.addPromise(o.moveTo(i,{...this.movementCommandContext,pointerType:t})))}async _handleVertexAddAtPointCommand(e){const t=this._updateLastScreenPosition(e),i=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t);this.editable&&i&&(this._before(e)||(T(e),await this._updatingHandles.addPromise(i.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:k(e.originalEvent)}).finally(()=>this._commitNext()))))}_makeKeyBindings(){const e=new F,t=(t,i)=>{e.addToggle(t,e=>this._handleCommand({action:i,originalEvent:e,enabled:"key-down"===e.type}))},i=(t,i)=>{e.add(t,e=>this._handleCommand({action:i,originalEvent:e}))};return t(z.preserveAspectRatio,"constraint-aspect"),t(q.center,"constraint-center"),i(K.toggleFollowManipulator,"toggle-manipulator-follow"),i(q.undo,"undo"),i(q.redo,"redo"),i(q.complete,"complete"),i(q.vertexAdd,"vertex-add"),i({key:N.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);const t=this._pluginContexts.get(e);t&&(t.destroy(),this._pluginContexts.delete(e))}_beforeResume(e,t){this.interactiveHandleManager?.replaceEditSessions(e,t)}_commitNext(){const i={stack:[],error:void 0,hasError:!1};try{const t=this.mostDownstreamPlugin;if(!t)return;let n=!1;const r=this.editGeometryOperations;e(i,r?a(r.on("vertex-add",()=>n=!0)):null,!1);t.completeStep?t.completeStep():this.complete(t),n&&this.tooltipManager?.unlockOnVertexPlacement()}catch(n){i.error=n,i.hasError=!0}finally{t(i)}}_suspendPlugin(e){this.lifecycleManager.suspend(e),this.measurementManager.suspendPlugin(e)}_resumePlugin(e){this.lifecycleManager.resume(e)}_updateLastScreenPosition(e){const t=g(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){const i=r(this._pluginContexts,e,()=>new G({drawTool:this,plugin:e,session:t}));return i.session=t,i}_finalizeAndSimplifyGeometryResult(){const e=this.unprocessedGeometry;try{const t=e?_(e):e;t&&!w(t)?this.finalGeometry=t:this.finalGeometry=e}catch(t){n.getLogger(this).error("draw-tool:complete","geometry simplification failed",t)}}_before(e){if(!this.hasEventListener(`before-${e.action}`))return!1;const t=new CustomEvent(`before-${e.action}`,{detail:e,cancelable:!0});return this.emit(`before-${e.action}`,t),t.defaultPrevented}_guardCommand(e,t,i){return this._before(e)?i?.():t()}};i([m()],Q.prototype,"_snappingVisualizer",void 0),i([m()],Q.prototype,"_tooltipDependencies",null),i([m()],Q.prototype,"_editSessionManagerContext",null),i([m()],Q.prototype,"_densificationParameters",null),i([m({constructOnly:!0,nonNullable:!0})],Q.prototype,"view",void 0),i([m()],Q.prototype,"automaticManipulatorSelection",void 0),i([m()],Q.prototype,"updating",null),i([m()],Q.prototype,"coordinateHelper",null),i([m()],Q.prototype,"editGeometry",null),i([m()],Q.prototype,"editGeometryOperations",null),i([m()],Q.prototype,"unprocessedGeometry",null),i([m()],Q.prototype,"finalGeometry",void 0),i([m()],Q.prototype,"simplifiedGeometryPreview",null),i([m()],Q.prototype,"snappingManager",void 0),i([m()],Q.prototype,"sketchOptions",void 0),i([m()],Q.prototype,"elevationInfo",void 0),i([m()],Q.prototype,"hasZ",void 0),i([m()],Q.prototype,"defaultZ",void 0),i([m()],Q.prototype,"directionOptions",void 0),i([m()],Q.prototype,"canUndo",null),i([m()],Q.prototype,"canRedo",null),i([m()],Q.prototype,"pluginStack",null),i([m()],Q.prototype,"mostDownstreamPlugin",null),i([m()],Q.prototype,"mostUpstreamPlugin",null),i([m()],Q.prototype,"lastScreenPosition",void 0),i([m()],Q.prototype,"positionOfLastUserInput",null),i([m()],Q.prototype,"tooltipManager",void 0),i([m()],Q.prototype,"measurementManager",void 0),i([m()],Q.prototype,"globalStateManager",void 0),i([m()],Q.prototype,"editSessionManager",void 0),i([m()],Q.prototype,"lifecycleManager",void 0),i([m()],Q.prototype,"surfaceManager",void 0),i([m()],Q.prototype,"interactiveHandleManager",void 0),i([m()],Q.prototype,"renderer",void 0),i([m()],Q.prototype,"movementCommandContext",null),i([m()],Q.prototype,"tooltip",null),i([m()],Q.prototype,"activeTooltipInfo",null),i([m()],Q.prototype,"helpMessageKey",null),Q=i([v("esri.views.draw.DrawTool")],Q);export{Q as DrawTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{isSome as e}from"../../../core/arrayUtils.js";import o from"../../../core/Error.js";import{makeHandle as n}from"../../../core/handleUtils.js";import{watch as i,initial as r}from"../../../core/reactiveUtils.js";import{property as s,subclass as a}from"../../../core/accessorSupport/decorators.js";import p from"../../../geometry/Point.js";import l from"../../../geometry/Polyline.js";import{isBezierCurve as c}from"../../../geometry/support/curves/curveUtils.js";import{PluginBase as h}from"./PluginBase.js";const d=Symbol("left-vertex"),u=Symbol("right-vertex"),_=Symbol("cp1"),P=Symbol("cp2"),m=Symbol("endpoint"),f=Symbol("anchor");let y=class extends h{constructor(){super(...arguments),this._controlPoint1LineId=Symbol(),this._controlPoint2LineId=Symbol(),this._mirroredCp2VisualId=Symbol(),this.enableSplineBehavior=!0,this.state="placing-anchor"}get test(){return{computeCurve:this._computeCurve.bind(this),recomputeAndApply:this._recomputeAndApply.bind(this),cp1LineSymbol:this._controlPoint1LineId,cp2LineSymbol:this._controlPoint2LineId,controlPointId:this._mirroredCp2VisualId}}start(t,e){super.start(t,e);const o=t.session;o.preserveSharedRedoAfterOperation=!0,this.ownPlacedLeftAnchor=e?.ownPlacedLeftAnchor,this.leftAnchor=o.getInformationAboutPoint(-1,-1)?.point;let n=e?.state;if(!this.leftAnchor&&this.ownPlacedLeftAnchor?(this.leftAnchor=this.ownPlacedLeftAnchor,o.appendOrReplacePoint(d,this.leftAnchor),o?.groupGeometryChanges()):this.leftAnchor&&"placing-anchor"===e?.state&&(n="placing-control-point-1",this.ownPlacedLeftAnchor=null),this.state=this.leftAnchor?n??"placing-control-point-1":"placing-anchor",this.controlPoint1=e?.controlPoint1,this.endPoint=e?.endPoint,this.controlPoint2=e?.controlPoint2,this.enableSplineBehavior&&"placing-control-point-1"===this.state&&!n){const t=o.getInformationAboutPoint(-1,-1);if(t?.curveInfo&&c(t.curveInfo)){const[e,n]=t.curveInfo.b[2],{spatialReference:i}=t.point,r=new p({x:e,y:n,spatialReference:i}),s=g(t.point,r);this.controlPoint1=s,o?.pushUndoStep(this._captureState()),this.state="placing-endpoint",o?.pushUndoStep(this._captureState())}}this.addHandles([i(()=>this._anchorCursor?.outputMapPosition,t=>{t&&(this.leftAnchor=this.ownPlacedLeftAnchor=t,this._session?.appendOrReplacePoint(d,t))}),i(()=>this._cp1Cursor?.outputMapPosition,t=>{t&&(this.controlPoint1=t,this._recomputeAndApply())}),i(()=>this._endpointCursor?.outputMapPosition,t=>{t&&(this.endPoint=t,this._recomputeAndApply())}),i(()=>this._cp2Cursor?.outputMapPosition,t=>{t&&(this.controlPoint2=t,this._recomputeAndApply())})],this._ownHandlesKey),this._applyState(this.state),this._setupRendering(t)}completeStep(){if(this._isComplete)return;const t=this._session?.peekUndoStep();if(t){const e=this._captureState();t&&t.state===e?.state&&(t.controlPoint1=e.controlPoint1,t.controlPoint2=e.controlPoint2,t.endPoint=e.endPoint,t.leftAnchor=e.leftAnchor)}else this._session?.pushUndoStep(this._captureState());try{switch(this._session.preserveSharedRedoAfterOperation=!1,this.state){case"placing-anchor":this._applyState(this.state="placing-control-point-1");break;case"placing-control-point-1":this._applyState(this.state="placing-endpoint");break;case"placing-endpoint":this._applyState(this.state="placing-control-point-2");break;case"placing-control-point-2":this._context?.requestComplete()}}finally{this._session.preserveSharedRedoAfterOperation=!0}this._session?.pushUndoStep(this._captureState())}beforeAttachPlugin(t){return{useStandaloneSession:!0}}suspend(){return this._captureState()}_applyState(t){const e=this._session;if(!e)throw new o("drawTool:invalid-state","Bezier: attempted to apply state while context invalid");switch(e.automaticRestart=!1,this.removeHandles(_),this.removeHandles(m),this.removeHandles(P),this.removeHandles(f),t){case"placing-anchor":e.automaticRestart=!0,this._setupAnchorCursor();break;case"placing-control-point-1":{const{ownPlacedLeftAnchor:t}=this;e.automaticRestart=!t,t&&e.groupGeometryChanges(),this._setupCP1Cursor();break}case"placing-endpoint":this._setupCP1Cursor(),this._setupEndpointCursor();break;case"placing-control-point-2":this._setupCP1Cursor(),this._setupEndpointCursor(),this._setupCP2Cursor()}}_setupAnchorCursor(){this._anchorCursor=this._context.createInteractiveHandle({defaultCaptureMode:"capture-always",inputMapPosition:this._context.positionOfLastUserInput,role:"primary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(n(()=>{this._anchorCursor&&(this._context?.removeInteractiveHandle(this._anchorCursor),this._anchorCursor=null)}),f)}_setupCP1Cursor(){const t="placing-control-point-1"===this.state?"capture-always":"grabbable-object";this._cp1Cursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.controlPoint1,role:"secondary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(n(()=>{this._cp1Cursor&&(this._context?.removeInteractiveHandle(this._cp1Cursor),this._cp1Cursor=null)}),_)}_setupEndpointCursor(){const t="placing-endpoint"===this.state?"capture-always":"grabbable-object";this._endpointCursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.endPoint??this.controlPoint1,role:"primary",selfSnappingEnabled:!0,snappingEnabled:!0}),this.addHandles(n(()=>{this._endpointCursor&&(this._context?.removeInteractiveHandle(this._endpointCursor),this._endpointCursor=null)}),m)}_setupCP2Cursor(){const t="placing-control-point-2"===this.state?"capture-always":"grabbable-object";this._cp2Cursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.controlPoint2??this.endPoint??this._context.positionOfLastUserInput,role:"secondary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(n(()=>{this._cp2Cursor&&(this._context?.removeInteractiveHandle(this._cp2Cursor),this._cp2Cursor=null)}),P)}_computeCurve(){const{leftAnchor:t,controlPoint1:e,endPoint:o,controlPoint2:n,state:i}=this;return t?"placing-control-point-1"===i&&e?C(e,e,e):"placing-endpoint"===i&&e&&o?C(o,e,o):e&&o&&n?C(o,e,n,{flipControlPoint2:!0}):null:null}_recomputeAndApply(){const t=this._computeCurve();t&&this._session?.appendOrReplaceCurve(u,t)}_setupRendering(t){t.addOrUpdateVisual(this._controlPoint1LineId,{role:"constructionLine",state:"idle"}),t.addOrUpdateVisual(this._controlPoint2LineId,{role:"constructionLine",state:"idle"}),t.addOrUpdateVisual(this._mirroredCp2VisualId,{role:"controlPoint",state:"idle"}),this.addHandles([i(()=>[this.controlPoint1,this.controlPoint2,this.endPoint,this.leftAnchor],([e,o,n,i])=>{const{state:r}=this;if(i&&e&&"placing-control-point-1"!==r&&"placing-anchor"!==r){const o=new l({paths:[[[i.x,i.y],[e.x,e.y]]],spatialReference:i.spatialReference});t.addOrUpdateVisual(this._controlPoint1LineId,{geometry:o})}else t.addOrUpdateVisual(this._controlPoint1LineId,{geometry:null});if(o&&n&&i){const e=g(n,o),i=new l({paths:[[[o.x,o.y],[e.x,e.y]]],spatialReference:o.spatialReference});t.addOrUpdateVisual(this._controlPoint2LineId,{geometry:i}),t.addOrUpdateVisual(this._mirroredCp2VisualId,{geometry:e})}else t.addOrUpdateVisual(this._controlPoint2LineId,{geometry:null}),t.addOrUpdateVisual(this._mirroredCp2VisualId,{geometry:null})},r)],this._ownHandlesKey)}_captureState(){const{state:t,controlPoint1:e,controlPoint2:o,endPoint:n,leftAnchor:i,ownPlacedLeftAnchor:r}=this;return{state:t,controlPoint1:e,endPoint:n,controlPoint2:o,leftAnchor:i,ownPlacedLeftAnchor:r}}};function C(t,o,n,i){const r=[t.x,t.y,t.z,t.m].filter(e),s=i?.flipControlPoint2?g(t,n):n;return{b:[r,[o.x,o.y],[s.x,s.y]]}}function g(t,e){const{x:o,y:n,spatialReference:i}=t,{x:r,y:s}=e;return new p({x:o+(o-r),y:n+(n-s),spatialReference:i})}t([s()],y.prototype,"_anchorCursor",void 0),t([s()],y.prototype,"_cp1Cursor",void 0),t([s()],y.prototype,"_endpointCursor",void 0),t([s()],y.prototype,"_cp2Cursor",void 0),t([s()],y.prototype,"enableSplineBehavior",void 0),t([s()],y.prototype,"state",void 0),t([s()],y.prototype,"controlPoint1",void 0),t([s()],y.prototype,"controlPoint2",void 0),t([s()],y.prototype,"endPoint",void 0),t([s()],y.prototype,"leftAnchor",void 0),t([s()],y.prototype,"ownPlacedLeftAnchor",void 0),y=t([a("esri.views.draw.plugins.BezierSegmentPlugin")],y);export{y as BezierSegmentPlugin,C as createBezier,g as mirrorControlPoint};
2
+ import{__decorate as t}from"tslib";import{isSome as e}from"../../../core/arrayUtils.js";import o from"../../../core/Error.js";import{makeHandle as n}from"../../../core/handleUtils.js";import{watch as i,initial as r}from"../../../core/reactiveUtils.js";import{property as s,subclass as a}from"../../../core/accessorSupport/decorators.js";import p from"../../../geometry/Point.js";import l from"../../../geometry/Polyline.js";import{isBezierCurve as c}from"../../../geometry/support/curves/curveUtils.js";import{PluginBase as h}from"./PluginBase.js";const d=Symbol("left-vertex"),u=Symbol("right-vertex"),_=Symbol("cp1"),P=Symbol("cp2"),m=Symbol("endpoint"),f=Symbol("anchor");let y=class extends h{constructor(){super(...arguments),this._controlPoint1LineId=Symbol(),this._controlPoint2LineId=Symbol(),this._mirroredCp2VisualId=Symbol(),this.enableSplineBehavior=!0,this.state="placing-anchor"}get helpMessageKey(){switch(this.state){case"placing-control-point-1":return"curveBezierControlPoint1";case"placing-endpoint":return"curvePlaceEndPoint";case"placing-control-point-2":return"curveBezierControlPoint2";default:return"point"}}get test(){return{computeCurve:this._computeCurve.bind(this),recomputeAndApply:this._recomputeAndApply.bind(this),cp1LineSymbol:this._controlPoint1LineId,cp2LineSymbol:this._controlPoint2LineId,controlPointId:this._mirroredCp2VisualId}}start(t,e){super.start(t,e);const o=t.session;o.preserveSharedRedoAfterOperation=!0,this.ownPlacedLeftAnchor=e?.ownPlacedLeftAnchor,this.leftAnchor=o.getInformationAboutPoint(-1,-1)?.point;let n=e?.state;if(!this.leftAnchor&&this.ownPlacedLeftAnchor?(this.leftAnchor=this.ownPlacedLeftAnchor,o.appendOrReplacePoint(d,this.leftAnchor),o?.groupGeometryChanges()):this.leftAnchor&&"placing-anchor"===e?.state&&(n="placing-control-point-1",this.ownPlacedLeftAnchor=null),this.state=this.leftAnchor?n??"placing-control-point-1":"placing-anchor",this.controlPoint1=e?.controlPoint1,this.endPoint=e?.endPoint,this.controlPoint2=e?.controlPoint2,this.enableSplineBehavior&&"placing-control-point-1"===this.state&&!n){const t=o.getInformationAboutPoint(-1,-1);if(t?.curveInfo&&c(t.curveInfo)){const[e,n]=t.curveInfo.b[2],{spatialReference:i}=t.point,r=new p({x:e,y:n,spatialReference:i}),s=C(t.point,r);this.controlPoint1=s,o?.pushUndoStep(this._captureState()),this.state="placing-endpoint",o?.pushUndoStep(this._captureState())}}this.addHandles([i(()=>this._anchorCursor?.outputMapPosition,t=>{t&&(this.leftAnchor=this.ownPlacedLeftAnchor=t,this._session?.appendOrReplacePoint(d,t))}),i(()=>this._cp1Cursor?.outputMapPosition,t=>{t&&(this.controlPoint1=t,this._recomputeAndApply())}),i(()=>this._endpointCursor?.outputMapPosition,t=>{t&&(this.endPoint=t,this._recomputeAndApply())}),i(()=>this._cp2Cursor?.outputMapPosition,t=>{t&&(this.controlPoint2=t,this._recomputeAndApply())})],this._ownHandlesKey),this._applyState(this.state),this._setupRendering(t)}completeStep(){if(this._isComplete)return;const t=this._session?.peekUndoStep();if(t){const e=this._captureState();t&&t.state===e?.state&&(t.controlPoint1=e.controlPoint1,t.controlPoint2=e.controlPoint2,t.endPoint=e.endPoint,t.leftAnchor=e.leftAnchor)}else this._session?.pushUndoStep(this._captureState());try{switch(this._session.preserveSharedRedoAfterOperation=!1,this.state){case"placing-anchor":this._applyState(this.state="placing-control-point-1");break;case"placing-control-point-1":this._applyState(this.state="placing-endpoint");break;case"placing-endpoint":this._applyState(this.state="placing-control-point-2");break;case"placing-control-point-2":this._context?.requestComplete()}}finally{this._session.preserveSharedRedoAfterOperation=!0}this._session?.pushUndoStep(this._captureState())}beforeAttachPlugin(t){return{useStandaloneSession:!0}}suspend(){return this._captureState()}_applyState(t){const e=this._session;if(!e)throw new o("drawTool:invalid-state","Bezier: attempted to apply state while context invalid");switch(e.automaticRestart=!1,this.removeHandles(_),this.removeHandles(m),this.removeHandles(P),this.removeHandles(f),t){case"placing-anchor":e.automaticRestart=!0,this._setupAnchorCursor();break;case"placing-control-point-1":{const{ownPlacedLeftAnchor:t}=this;e.automaticRestart=!t,t&&e.groupGeometryChanges(),this._setupCP1Cursor();break}case"placing-endpoint":this._setupCP1Cursor(),this._setupEndpointCursor();break;case"placing-control-point-2":this._setupCP1Cursor(),this._setupEndpointCursor(),this._setupCP2Cursor()}}_setupAnchorCursor(){this._anchorCursor=this._context.createInteractiveHandle({defaultCaptureMode:"capture-always",inputMapPosition:this._context.positionOfLastUserInput,role:"primary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(n(()=>{this._anchorCursor&&(this._context?.removeInteractiveHandle(this._anchorCursor),this._anchorCursor=null)}),f)}_setupCP1Cursor(){const t="placing-control-point-1"===this.state?"capture-always":"grabbable-object";this._cp1Cursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.controlPoint1,role:"secondary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(n(()=>{this._cp1Cursor&&(this._context?.removeInteractiveHandle(this._cp1Cursor),this._cp1Cursor=null)}),_)}_setupEndpointCursor(){const t="placing-endpoint"===this.state?"capture-always":"grabbable-object";this._endpointCursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.endPoint??this.controlPoint1,role:"primary",selfSnappingEnabled:!0,snappingEnabled:!0}),this.addHandles(n(()=>{this._endpointCursor&&(this._context?.removeInteractiveHandle(this._endpointCursor),this._endpointCursor=null)}),m)}_setupCP2Cursor(){const t="placing-control-point-2"===this.state?"capture-always":"grabbable-object";this._cp2Cursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.controlPoint2??this.endPoint??this._context.positionOfLastUserInput,role:"secondary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(n(()=>{this._cp2Cursor&&(this._context?.removeInteractiveHandle(this._cp2Cursor),this._cp2Cursor=null)}),P)}_computeCurve(){const{leftAnchor:t,controlPoint1:e,endPoint:o,controlPoint2:n,state:i}=this;return t?"placing-control-point-1"===i&&e?g(e,e,e):"placing-endpoint"===i&&e&&o?g(o,e,o):e&&o&&n?g(o,e,n,{flipControlPoint2:!0}):null:null}_recomputeAndApply(){const t=this._computeCurve();t&&this._session?.appendOrReplaceCurve(u,t)}_setupRendering(t){t.addOrUpdateVisual(this._controlPoint1LineId,{role:"constructionLine",state:"idle"}),t.addOrUpdateVisual(this._controlPoint2LineId,{role:"constructionLine",state:"idle"}),t.addOrUpdateVisual(this._mirroredCp2VisualId,{role:"controlPoint",state:"idle"}),this.addHandles([i(()=>[this.controlPoint1,this.controlPoint2,this.endPoint,this.leftAnchor],([e,o,n,i])=>{const{state:r}=this;if(i&&e&&"placing-control-point-1"!==r&&"placing-anchor"!==r){const o=new l({paths:[[[i.x,i.y],[e.x,e.y]]],spatialReference:i.spatialReference});t.addOrUpdateVisual(this._controlPoint1LineId,{geometry:o})}else t.addOrUpdateVisual(this._controlPoint1LineId,{geometry:null});if(o&&n&&i){const e=C(n,o),i=new l({paths:[[[o.x,o.y],[e.x,e.y]]],spatialReference:o.spatialReference});t.addOrUpdateVisual(this._controlPoint2LineId,{geometry:i}),t.addOrUpdateVisual(this._mirroredCp2VisualId,{geometry:e})}else t.addOrUpdateVisual(this._controlPoint2LineId,{geometry:null}),t.addOrUpdateVisual(this._mirroredCp2VisualId,{geometry:null})},r)],this._ownHandlesKey)}_captureState(){const{state:t,controlPoint1:e,controlPoint2:o,endPoint:n,leftAnchor:i,ownPlacedLeftAnchor:r}=this;return{state:t,controlPoint1:e,endPoint:n,controlPoint2:o,leftAnchor:i,ownPlacedLeftAnchor:r}}};function g(t,o,n,i){const r=[t.x,t.y,t.z,t.m].filter(e),s=i?.flipControlPoint2?C(t,n):n;return{b:[r,[o.x,o.y],[s.x,s.y]]}}function C(t,e){const{x:o,y:n,spatialReference:i}=t,{x:r,y:s}=e;return new p({x:o+(o-r),y:n+(n-s),spatialReference:i})}t([s()],y.prototype,"_anchorCursor",void 0),t([s()],y.prototype,"_cp1Cursor",void 0),t([s()],y.prototype,"_endpointCursor",void 0),t([s()],y.prototype,"_cp2Cursor",void 0),t([s()],y.prototype,"enableSplineBehavior",void 0),t([s()],y.prototype,"state",void 0),t([s()],y.prototype,"helpMessageKey",null),t([s()],y.prototype,"controlPoint1",void 0),t([s()],y.prototype,"controlPoint2",void 0),t([s()],y.prototype,"endPoint",void 0),t([s()],y.prototype,"leftAnchor",void 0),t([s()],y.prototype,"ownPlacedLeftAnchor",void 0),y=t([a("esri.views.draw.plugins.BezierSegmentPlugin")],y);export{y as BezierSegmentPlugin,g as createBezier,C as mirrorControlPoint};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../core/Error.js";import{makeHandle as i}from"../../../core/handleUtils.js";import{watch as r}from"../../../core/reactiveUtils.js";import{property as o,subclass as n}from"../../../core/accessorSupport/decorators.js";import{geometryToCoordinates as s}from"../../../geometry/support/coordsUtils.js";import{PluginBase as a}from"./PluginBase.js";const p=Symbol("left-anchor-vertex"),c=Symbol("right-vertex"),h=Symbol("anchor"),l=Symbol("endpoint"),d=Symbol("interior-point");let u=class extends a{constructor(){super(...arguments),this.arcDrawingMode="interior-first",this.state="placing-anchor"}get test(){return{state:this.state,captureState:()=>this._captureState()}}start(t,e){super.start(t,e);const i=t.session;i.preserveSharedRedoAfterOperation=!0,this.ownPlacedLeftAnchor=e?.ownPlacedLeftAnchor,this.leftAnchor=i.getInformationAboutPoint(-1,-1)?.point;let o=e?.state;!this.leftAnchor&&this.ownPlacedLeftAnchor?(this.leftAnchor=this.ownPlacedLeftAnchor,i.appendOrReplacePoint(p,this.leftAnchor),i?.groupGeometryChanges()):this.leftAnchor&&"placing-anchor"===e?.state&&(o=this._getNextState("placing-anchor"),this.ownPlacedLeftAnchor=null),this.state=this.leftAnchor?o??this._getNextState("placing-anchor"):"placing-anchor",this.interiorPoint=e?.interiorPoint,this.endpoint=e?.endpoint,this.addHandles([r(()=>this._anchorCursor?.outputMapPosition,t=>{t&&(this.leftAnchor=this.ownPlacedLeftAnchor=t,this._session?.appendOrReplacePoint(p,t))}),r(()=>this._interiorPointCursor?.outputMapPosition,t=>{t&&(this.interiorPoint=t,this._recomputeAndApply())}),r(()=>this._endpointCursor?.outputMapPosition,t=>{t&&(this.endpoint=t,this._recomputeAndApply())})],this._ownHandlesKey),this._applyState(this.state)}async completeStep(){if(this._isComplete)return;const t=this._session?.peekUndoStep();if(t){const e=this._captureState();t&&t.state===e.state&&(t.leftAnchor=e.leftAnchor,t.interiorPoint=e.interiorPoint,t.endpoint=e.endpoint)}else this._session?.pushUndoStep(this._captureState());"placing-anchor"===this.state&&this.ownPlacedLeftAnchor&&this._session?.groupGeometryChanges();try{this._session.preserveSharedRedoAfterOperation=!1;const t=this._getNextState(this.state);null===t?this._context?.requestComplete():this._applyState(this.state=t)}finally{this._session.preserveSharedRedoAfterOperation=!0}this._session?.pushUndoStep(this._captureState())}beforeAttachPlugin(t){return{useStandaloneSession:!0}}suspend(){return this._captureState()}_applyState(t){const i=this._session;if(!i)throw new e("drawTool:invalid-state","Circular Arc: attempted to apply state while context invalid");this.removeHandles(h),this.removeHandles(l),this.removeHandles(d),i.automaticRestart=this._computeAutomaticRestart(),"placing-anchor"!==t?("placing-interior"!==t&&"interior-first"!==this.arcDrawingMode||this._setupInteriorPointCursor(),"placing-endpoint"!==t&&"end-first"!==this.arcDrawingMode||this._setupEndpointCursor()):this._setupAnchorCursor()}_setupAnchorCursor(){this._anchorCursor=this._context.createInteractiveHandle({defaultCaptureMode:"capture-always",inputMapPosition:this._context.positionOfLastUserInput,role:"primary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(i(()=>{this._anchorCursor&&(this._context?.removeInteractiveHandle(this._anchorCursor),this._anchorCursor=null)}),h)}_setupInteriorPointCursor(){const t="placing-interior"===this.state?"capture-always":"grabbable-object";this._interiorPointCursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.interiorPoint??this.endpoint,role:"secondary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(i(()=>{this._interiorPointCursor&&(this._context?.removeInteractiveHandle(this._interiorPointCursor),this._interiorPointCursor=null)}),d)}_setupEndpointCursor(){const t="placing-endpoint"===this.state?"capture-always":"grabbable-object";this._endpointCursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.endpoint??this.interiorPoint,role:"primary",selfSnappingEnabled:!0,snappingEnabled:!0}),this.addHandles(i(()=>{this._endpointCursor&&(this._context?.removeInteractiveHandle(this._endpointCursor),this._endpointCursor=null)}),l)}_captureState(){const{state:t,endpoint:e,interiorPoint:i,leftAnchor:r,ownPlacedLeftAnchor:o}=this;return{state:t,endpoint:e,interiorPoint:i,leftAnchor:r,ownPlacedLeftAnchor:o}}_computeAutomaticRestart(){return"placing-anchor"===this.state||("placing-interior"===this.state?"interior-first"===this.arcDrawingMode&&!this.ownPlacedLeftAnchor:"end-first"===this.arcDrawingMode&&!this.ownPlacedLeftAnchor)}_makeCurve(){const{interiorPoint:t,endpoint:e}=this;if(!t&&!e)return null;const i=e??t,r=s(t??e);return{c:[s(i),_(r)]}}_recomputeAndApply(){const t=this._makeCurve();t&&this._session?.appendOrReplaceCurve(c,t)}_getNextState(t){switch(t){case"placing-anchor":return"interior-first"===this.arcDrawingMode?"placing-interior":"placing-endpoint";case"placing-interior":return"interior-first"===this.arcDrawingMode?"placing-endpoint":null;case"placing-endpoint":return"end-first"===this.arcDrawingMode?"placing-interior":null}}};function _(t){return 2===t.length?t:[t[0]??0,t[1]??0]}t([o()],u.prototype,"_anchorCursor",void 0),t([o()],u.prototype,"_endpointCursor",void 0),t([o()],u.prototype,"_interiorPointCursor",void 0),t([o()],u.prototype,"arcDrawingMode",void 0),t([o()],u.prototype,"interiorPoint",void 0),t([o()],u.prototype,"endpoint",void 0),t([o()],u.prototype,"leftAnchor",void 0),t([o()],u.prototype,"ownPlacedLeftAnchor",void 0),t([o()],u.prototype,"state",void 0),u=t([n("esri.views.draw.plugins.CircularArcSegmentPlugin")],u);export{u as CircularArcSegmentPlugin};
2
+ import{__decorate as t}from"tslib";import e from"../../../core/Error.js";import{makeHandle as i}from"../../../core/handleUtils.js";import{watch as r}from"../../../core/reactiveUtils.js";import{property as n,subclass as o}from"../../../core/accessorSupport/decorators.js";import{geometryToCoordinates as s}from"../../../geometry/support/coordsUtils.js";import{PluginBase as a}from"./PluginBase.js";const p=Symbol("left-anchor-vertex"),c=Symbol("right-vertex"),h=Symbol("anchor"),l=Symbol("endpoint"),d=Symbol("interior-point");let u=class extends a{constructor(){super(...arguments),this.arcDrawingMode="interior-first",this.state="placing-anchor"}get helpMessageKey(){switch(this.state){case"placing-interior":return"curveInteriorPoint";case"placing-endpoint":return"curvePlaceEndPoint";default:return"point"}}get test(){return{state:this.state,captureState:()=>this._captureState()}}start(t,e){super.start(t,e);const i=t.session;i.preserveSharedRedoAfterOperation=!0,this.ownPlacedLeftAnchor=e?.ownPlacedLeftAnchor,this.leftAnchor=i.getInformationAboutPoint(-1,-1)?.point;let n=e?.state;!this.leftAnchor&&this.ownPlacedLeftAnchor?(this.leftAnchor=this.ownPlacedLeftAnchor,i.appendOrReplacePoint(p,this.leftAnchor),i?.groupGeometryChanges()):this.leftAnchor&&"placing-anchor"===e?.state&&(n=this._getNextState("placing-anchor"),this.ownPlacedLeftAnchor=null),this.state=this.leftAnchor?n??this._getNextState("placing-anchor"):"placing-anchor",this.interiorPoint=e?.interiorPoint,this.endpoint=e?.endpoint,this.addHandles([r(()=>this._anchorCursor?.outputMapPosition,t=>{t&&(this.leftAnchor=this.ownPlacedLeftAnchor=t,this._session?.appendOrReplacePoint(p,t))}),r(()=>this._interiorPointCursor?.outputMapPosition,t=>{t&&(this.interiorPoint=t,this._recomputeAndApply())}),r(()=>this._endpointCursor?.outputMapPosition,t=>{t&&(this.endpoint=t,this._recomputeAndApply())})],this._ownHandlesKey),this._applyState(this.state)}async completeStep(){if(this._isComplete)return;const t=this._session?.peekUndoStep();if(t){const e=this._captureState();t&&t.state===e.state&&(t.leftAnchor=e.leftAnchor,t.interiorPoint=e.interiorPoint,t.endpoint=e.endpoint)}else this._session?.pushUndoStep(this._captureState());"placing-anchor"===this.state&&this.ownPlacedLeftAnchor&&this._session?.groupGeometryChanges();try{this._session.preserveSharedRedoAfterOperation=!1;const t=this._getNextState(this.state);null===t?this._context?.requestComplete():this._applyState(this.state=t)}finally{this._session.preserveSharedRedoAfterOperation=!0}this._session?.pushUndoStep(this._captureState())}beforeAttachPlugin(t){return{useStandaloneSession:!0}}suspend(){return this._captureState()}_applyState(t){const i=this._session;if(!i)throw new e("drawTool:invalid-state","Circular Arc: attempted to apply state while context invalid");this.removeHandles(h),this.removeHandles(l),this.removeHandles(d),i.automaticRestart=this._computeAutomaticRestart(),"placing-anchor"!==t?("placing-interior"!==t&&"interior-first"!==this.arcDrawingMode||this._setupInteriorPointCursor(),"placing-endpoint"!==t&&"end-first"!==this.arcDrawingMode||this._setupEndpointCursor()):this._setupAnchorCursor()}_setupAnchorCursor(){this._anchorCursor=this._context.createInteractiveHandle({defaultCaptureMode:"capture-always",inputMapPosition:this._context.positionOfLastUserInput,role:"primary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(i(()=>{this._anchorCursor&&(this._context?.removeInteractiveHandle(this._anchorCursor),this._anchorCursor=null)}),h)}_setupInteriorPointCursor(){const t="placing-interior"===this.state?"capture-always":"grabbable-object";this._interiorPointCursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.interiorPoint??this.endpoint,role:"secondary",selfSnappingEnabled:!1,snappingEnabled:!0}),this.addHandles(i(()=>{this._interiorPointCursor&&(this._context?.removeInteractiveHandle(this._interiorPointCursor),this._interiorPointCursor=null)}),d)}_setupEndpointCursor(){const t="placing-endpoint"===this.state?"capture-always":"grabbable-object";this._endpointCursor=this._context.createInteractiveHandle({defaultCaptureMode:t,inputMapPosition:"capture-always"===t?void 0:this.endpoint??this.interiorPoint,role:"primary",selfSnappingEnabled:!0,snappingEnabled:!0}),this.addHandles(i(()=>{this._endpointCursor&&(this._context?.removeInteractiveHandle(this._endpointCursor),this._endpointCursor=null)}),l)}_captureState(){const{state:t,endpoint:e,interiorPoint:i,leftAnchor:r,ownPlacedLeftAnchor:n}=this;return{state:t,endpoint:e,interiorPoint:i,leftAnchor:r,ownPlacedLeftAnchor:n}}_computeAutomaticRestart(){return"placing-anchor"===this.state||("placing-interior"===this.state?"interior-first"===this.arcDrawingMode&&!this.ownPlacedLeftAnchor:"end-first"===this.arcDrawingMode&&!this.ownPlacedLeftAnchor)}_makeCurve(){const{interiorPoint:t,endpoint:e}=this;if(!t&&!e)return null;const i=e??t,r=s(t??e);return{c:[s(i),_(r)]}}_recomputeAndApply(){const t=this._makeCurve();t&&this._session?.appendOrReplaceCurve(c,t)}_getNextState(t){switch(t){case"placing-anchor":return"interior-first"===this.arcDrawingMode?"placing-interior":"placing-endpoint";case"placing-interior":return"interior-first"===this.arcDrawingMode?"placing-endpoint":null;case"placing-endpoint":return"end-first"===this.arcDrawingMode?"placing-interior":null}}};function _(t){return 2===t.length?t:[t[0]??0,t[1]??0]}t([n()],u.prototype,"_anchorCursor",void 0),t([n()],u.prototype,"_endpointCursor",void 0),t([n()],u.prototype,"_interiorPointCursor",void 0),t([n()],u.prototype,"arcDrawingMode",void 0),t([n()],u.prototype,"interiorPoint",void 0),t([n()],u.prototype,"endpoint",void 0),t([n()],u.prototype,"leftAnchor",void 0),t([n()],u.prototype,"ownPlacedLeftAnchor",void 0),t([n()],u.prototype,"state",void 0),t([n()],u.prototype,"helpMessageKey",null),u=t([o("esri.views.draw.plugins.CircularArcSegmentPlugin")],u);export{u as CircularArcSegmentPlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{watch as t,sync as i,syncAndInitial as n}from"../../../core/reactiveUtils.js";import{property as s,subclass as a}from"../../../core/accessorSupport/decorators.js";import{PluginBase as r}from"./PluginBase.js";const o=Symbol("primary-vertex");let p=class extends r{constructor(){super(...arguments),this.completeOnDragEnd=!0}start(e){super.start(e);const{session:s,positionOfLastUserInput:a}=e;a&&s.appendOrReplacePoint(o,a),this._interactiveHandle||(this._interactiveHandle=e.createInteractiveHandle({defaultCaptureMode:"capture-when-engaged",snappingEnabled:!1,selfSnappingEnabled:!1},{disableDefaultXYFields:!0}),this.addHandles([t(()=>this._interactiveHandle?.outputMapPosition,e=>{e&&!this._isComplete&&this._session?.appendOrReplacePoint(o,e,{forceAppend:!!this._interactiveHandle?.dragging})},i)],this._ownHandlesKey),this.completeOnDragEnd&&this.addHandles(t(()=>this._interactiveHandle?.dragging,(t,i)=>{!t&&i&&e.requestComplete()},n),this._ownHandlesKey))}};e([s()],p.prototype,"_interactiveHandle",void 0),e([s()],p.prototype,"completeOnDragEnd",void 0),p=e([a("esri.views.draw.plugins.FreehandSegmentPlugin")],p);export{p as FreehandSegmentPlugin};
2
+ import{__decorate as e}from"tslib";import{watch as t,sync as n,syncAndInitial as a}from"../../../core/reactiveUtils.js";import{property as i,subclass as s}from"../../../core/accessorSupport/decorators.js";import{PluginBase as r}from"./PluginBase.js";const o=Symbol("primary-vertex");let p=class extends r{constructor(){super(...arguments),this.completeOnDragEnd=!0}get helpMessageKey(){return this._interactiveHandle?.dragging?"freehandEnd":"freehandStart"}start(e){super.start(e);const{session:i,positionOfLastUserInput:s}=e;s&&i.appendOrReplacePoint(o,s),this._interactiveHandle||(this._interactiveHandle=e.createInteractiveHandle({defaultCaptureMode:"capture-when-engaged",snappingEnabled:!1,selfSnappingEnabled:!1},{disableDefaultXYFields:!0}),this.addHandles([t(()=>this._interactiveHandle?.outputMapPosition,e=>{e&&!this._isComplete&&this._session?.appendOrReplacePoint(o,e,{forceAppend:!!this._interactiveHandle?.dragging})},n)],this._ownHandlesKey),this.completeOnDragEnd&&this.addHandles(t(()=>this._interactiveHandle?.dragging,(t,n)=>{!t&&n&&e.requestComplete()},a),this._ownHandlesKey))}};e([i()],p.prototype,"_interactiveHandle",void 0),e([i()],p.prototype,"completeOnDragEnd",void 0),e([i()],p.prototype,"helpMessageKey",null),p=e([s("esri.views.draw.plugins.FreehandSegmentPlugin")],p);export{p as FreehandSegmentPlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{subclass as t}from"../../../core/accessorSupport/decorators.js";import{isPoint as o}from"../../../geometry/support/typeUtils.js";import{PluginBase as r}from"./PluginBase.js";let n=class extends r{start(e){super.start(e),e.session.appendOrReplacePart(null,[])}beforeAttachPlugin(e){return{useStandaloneSession:!0,geometryType:"point"}}detachPlugin(e,t){if("complete"!==t)return;const r=this._context?.getSession(e),n=this._session,s=r?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"point"});s&&o(s)&&n&&(n.appendOrReplacePoint(null,s),n.appendOrReplacePart(null,[]),n.automaticRestart=!1,n.groupGeometryChanges()),e.configuration&&this._context?.requestBeginDownstreamPlugin(e.configuration)}};n=e([t("esri.views.draw.plugins.MultipointPlugin")],n);export{n as MultipointPlugin};
2
+ import{__decorate as e}from"tslib";import{property as t,subclass as o}from"../../../core/accessorSupport/decorators.js";import{isPoint as r}from"../../../geometry/support/typeUtils.js";import{PluginBase as n}from"./PluginBase.js";let s=class extends n{get helpMessageKey(){return"multipoint"}start(e){super.start(e),e.session.appendOrReplacePart(null,[])}beforeAttachPlugin(e){return{useStandaloneSession:!0,geometryType:"point"}}detachPlugin(e,t){if("complete"!==t)return;const o=this._context?.getSession(e),n=this._session,s=o?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"point"});s&&r(s)&&n&&(n.appendOrReplacePoint(null,s),n.appendOrReplacePart(null,[]),n.automaticRestart=!1,n.groupGeometryChanges()),e.configuration&&this._context?.requestBeginDownstreamPlugin(e.configuration)}};e([t()],s.prototype,"helpMessageKey",null),s=e([o("esri.views.draw.plugins.MultipointPlugin")],s);export{s as MultipointPlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{watch as t,sync as s}from"../../../core/reactiveUtils.js";import{property as i,subclass as r}from"../../../core/accessorSupport/decorators.js";import{PluginBase as a}from"./PluginBase.js";const o=Symbol("primary-vertex");let n=class extends a{start(e){super.start(e);const{session:i,positionOfLastUserInput:r}=e;r&&i.appendOrReplacePoint(o,r),this._interactiveHandle||(this._interactiveHandle=e.createInteractiveHandle({defaultCaptureMode:"capture-always"}),this.addHandles([t(()=>this._interactiveHandle?.outputMapPosition,e=>{e&&!this._isComplete&&this._session?.appendOrReplacePoint(o,e)},s)],this._ownHandlesKey))}};e([i()],n.prototype,"_interactiveHandle",void 0),n=e([r("esri.views.draw.plugins.PointPlugin")],n);export{n as PointPlugin};
2
+ import{__decorate as e}from"tslib";import{watch as t,sync as s}from"../../../core/reactiveUtils.js";import{property as i,subclass as r}from"../../../core/accessorSupport/decorators.js";import{PluginBase as a}from"./PluginBase.js";const o=Symbol("primary-vertex");let n=class extends a{constructor(){super(...arguments),this.enableHelpMessages=!1}get helpMessageKey(){return this.enableHelpMessages?"point":null}start(e){super.start(e);const{session:i,positionOfLastUserInput:r}=e;r&&i.appendOrReplacePoint(o,r),this._interactiveHandle||(this._interactiveHandle=e.createInteractiveHandle({defaultCaptureMode:"capture-always"}),this.addHandles([t(()=>this._interactiveHandle?.outputMapPosition,e=>{e&&!this._isComplete&&this._session?.appendOrReplacePoint(o,e)},s)],this._ownHandlesKey))}};e([i()],n.prototype,"enableHelpMessages",void 0),e([i()],n.prototype,"helpMessageKey",null),e([i()],n.prototype,"_interactiveHandle",void 0),n=e([r("esri.views.draw.plugins.PointPlugin")],n);export{n as PointPlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{watch as e,initial as o}from"../../../core/reactiveUtils.js";import{property as n,subclass as i}from"../../../core/accessorSupport/decorators.js";import s from"../../../geometry/Polyline.js";import{isPolygon as r}from"../../../geometry/support/typeUtils.js";import{getPaths as a}from"../../../geometry/support/curves/curveUtils.js";import{pointEquals as l}from"../../../layers/graphics/dehydratedFeatureComparison.js";import{PolylinePlugin as d}from"./PolylinePlugin.js";import{knownFieldDisplayOrders as p}from"../support/types.js";import{screenDistance as u}from"../../interactive/snapping/snappingUtils.js";const c=5,m=Symbol("polygon-snap-to-close-constraint"),y=Symbol("polygon-area-measurement"),g=Symbol("polygon-area-field");let f=class extends d{constructor(){super(...arguments),this._autoCloseLineVisualId=Symbol("polygon-auto-close-on-commit"),this._defaultClosingLineVisualId=Symbol("polygon-default-close-on-cancel"),this.clickToCloseEnabled=!0}get _totalPreviewGeometry(){const{_session:t}=this;if(!t)return null;const e=t.lastPointAddedBySession?.partIndex,o=this._downstreamEditSession?.lastPointAddedBySession?.partIndex,n=e??o;if(!t||null==n)return null;const i=t?.getInformationAboutPoint(0,n),s=t?.getInformationAboutPoint(-1,n);return t?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon",firstIncludedPoint:i,lastIncludedPoint:s})}get test(){const{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}=this;return{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}}start(t){super.start(t),t.createConstraint(m,(t,e)=>this._snapToClosingVertex(t,e)),t.addOrUpdateVisual(this._autoCloseLineVisualId,{role:"outline",state:"active"}),t.addOrUpdateVisual(this._defaultClosingLineVisualId,{role:"outline",state:"idle"}),this.addHandles([e(()=>this._downstreamEditSession?.lastPointAddedBySession,t=>{if(!t||null==t.pointIndex)return this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null}),void this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null});const e=this._session?.getInformationAboutPoint(t.pointIndex-1,t.partIndex),o=this._session?.getInformationAboutPoint(0,t.partIndex);if(t.point&&o?.point){const e=[t.point.x,t.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:t.point.spatialReference,paths:[[e,n]]});this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null});if(e?.point&&o?.point){const t=[e.point.x,e.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:o.point.spatialReference,paths:[[t,n]]});this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null})},o)],this._ownHandlesKey)}detachPlugin(t,e){const{_session:o}=this,n=o?.lastPointAddedBySession;if(!n||null==n.pointIndex)return;"complete"===e&&this._context?.setGlobalState("drawAtFixedElevation",!0);const i=o.getInformationAboutPoint(0,n.partIndex),s=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex);if("complete"===e&&this.clickToCloseEnabled&&(n.pointIndex>2||2===n.pointIndex&&n.curveInfo)&&(l(i?.point,n.point)||l(s?.point,n.point))){!n.curveInfo&&o?.eraseLastOperation(),this._context?.requestComplete()}else"complete"===e&&this._context?.requestBeginDownstreamPlugin(t.configuration,{cancelExisting:!1})}afterUndoRedo(){const t=this._session?.lastPointAddedBySession;this._context?.setGlobalState("drawAtFixedElevation",!!t||void 0)}_getCommittedGeometry(){return this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon"})}_setupGeometrySpecificTooltip(){this._context&&(this._areaField??=this._context.createMeasuredField({id:g,preset:"area",getMeasurementInput:()=>this._totalPreviewGeometry,measure:async(t,e)=>{if(!t||!r(t))return null;const o=a(t)?.at(-1);if(!o||o.length<2||!t.curveRings&&o.length<3)return null;const n=e.inputUnitInfos.area.unit;return this._context?.measureArea(t,y,"tooltip",n)},fieldProperties:{readOnly:!0,displayOrder:p.ShapeMeasurements}}))}_snapToClosingVertex(t,e){const{_session:o}=this;if("primary"!==e.handle.role||!o)return t;if(!o?.sessionIsOperatingOnSameGeometry(e.editSession))return t;const n=e.editSession?.lastPointAddedBySession;if(!n||null==n.pointIndex||n.pointIndex<2)return t;const i=o.getInformationAboutPoint(0,n.partIndex);if(!t||!i?.point)return t;const s=e.toScreen(t);if(!s)return t;const r=e.toScreen(i.point);if(!r)return t;if(u(s,r)<=c)return i.point;const a=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex);if(!a?.point)return t;const l=e.toScreen(a.point);return l&&u(s,l)<=c?a.point:t}};t([n()],f.prototype,"_areaField",void 0),t([n()],f.prototype,"_totalPreviewGeometry",null),t([n()],f.prototype,"clickToCloseEnabled",void 0),f=t([i("esri.views.draw.plugins.PolygonPlugin")],f);export{f as PolygonPlugin};
2
+ import{__decorate as t}from"tslib";import{watch as e,initial as o}from"../../../core/reactiveUtils.js";import{property as n,subclass as i}from"../../../core/accessorSupport/decorators.js";import s from"../../../geometry/Polyline.js";import{isPolygon as r}from"../../../geometry/support/typeUtils.js";import{getPaths as l}from"../../../geometry/support/curves/curveUtils.js";import{pointEquals as a}from"../../../layers/graphics/dehydratedFeatureComparison.js";import{PolylinePlugin as d}from"./PolylinePlugin.js";import{knownFieldDisplayOrders as p}from"../support/types.js";import{screenDistance as u}from"../../interactive/snapping/snappingUtils.js";const c=5,m=Symbol("polygon-snap-to-close-constraint"),y=Symbol("polygon-area-measurement"),g=Symbol("polygon-area-field");let f=class extends d{constructor(){super(...arguments),this._autoCloseLineVisualId=Symbol("polygon-auto-close-on-commit"),this._defaultClosingLineVisualId=Symbol("polygon-default-close-on-cancel"),this.clickToCloseEnabled=!0}get _totalPreviewGeometry(){const{_session:t}=this;if(!t)return null;const e=t.lastPointAddedBySession?.partIndex,o=this._downstreamEditSession?.lastPointAddedBySession?.partIndex,n=e??o;if(!t||null==n)return null;const i=t?.getInformationAboutPoint(0,n),s=t?.getInformationAboutPoint(-1,n);return t?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon",firstIncludedPoint:i,lastIncludedPoint:s})}get helpMessageKey(){const t=this._session?.lastPointAddedBySession;return t?null!=t.pointIndex&&t.pointIndex>0?"polygonTwoVertices":"polygonOneVertex":"polygonZeroVertices"}get test(){const{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}=this;return{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}}start(t){super.start(t),t.createConstraint(m,(t,e)=>this._snapToClosingVertex(t,e)),t.addOrUpdateVisual(this._autoCloseLineVisualId,{role:"outline",state:"active"}),t.addOrUpdateVisual(this._defaultClosingLineVisualId,{role:"outline",state:"idle"}),this.addHandles([e(()=>this._downstreamEditSession?.lastPointAddedBySession,t=>{if(!t||null==t.pointIndex)return this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null}),void this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null});const e=this._session?.getInformationAboutPoint(t.pointIndex-1,t.partIndex),o=this._session?.getInformationAboutPoint(0,t.partIndex);if(t.point&&o?.point){const e=[t.point.x,t.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:t.point.spatialReference,paths:[[e,n]]});this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null});if(e?.point&&o?.point){const t=[e.point.x,e.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:o.point.spatialReference,paths:[[t,n]]});this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null})},o)],this._ownHandlesKey)}detachPlugin(t,e){const{_session:o}=this,n=o?.lastPointAddedBySession;if(!n||null==n.pointIndex)return;"complete"===e&&this._context?.setGlobalState("drawAtFixedElevation",!0);const i=o.getInformationAboutPoint(0,n.partIndex),s=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex);if("complete"===e&&this.clickToCloseEnabled&&(n.pointIndex>2||2===n.pointIndex&&n.curveInfo)&&(a(i?.point,n.point)||a(s?.point,n.point))){!n.curveInfo&&o?.eraseLastOperation(),this._context?.requestComplete()}else"complete"===e&&this._context?.requestBeginDownstreamPlugin(t.configuration,{cancelExisting:!1})}afterUndoRedo(){const t=this._session?.lastPointAddedBySession;this._context?.setGlobalState("drawAtFixedElevation",!!t||void 0)}_getCommittedGeometry(){return this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon"})}_setupGeometrySpecificTooltip(){this._context&&(this._areaField??=this._context.createMeasuredField({id:g,preset:"area",getMeasurementInput:()=>this._totalPreviewGeometry,measure:async(t,e)=>{if(!t||!r(t))return null;const o=l(t)?.at(-1);if(!o||o.length<2||!t.curveRings&&o.length<3)return null;const n=e.inputUnitInfos.area.unit;return this._context?.measureArea(t,y,"tooltip",n)},fieldProperties:{readOnly:!0,displayOrder:p.ShapeMeasurements}}))}_snapToClosingVertex(t,e){const{_session:o}=this;if("primary"!==e.handle.role||!o)return t;if(!o?.sessionIsOperatingOnSameGeometry(e.editSession))return t;const n=e.editSession?.lastPointAddedBySession;if(!n||null==n.pointIndex||n.pointIndex<2)return t;const i=o.getInformationAboutPoint(0,n.partIndex);if(!t||!i?.point)return t;const s=e.toScreen(t);if(!s)return t;const r=e.toScreen(i.point);if(!r)return t;if(u(s,r)<=c)return i.point;const l=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex);if(!l?.point)return t;const a=e.toScreen(l.point);return a&&u(s,a)<=c?l.point:t}};t([n()],f.prototype,"_areaField",void 0),t([n()],f.prototype,"_totalPreviewGeometry",null),t([n()],f.prototype,"clickToCloseEnabled",void 0),t([n()],f.prototype,"helpMessageKey",null),f=t([i("esri.views.draw.plugins.PolygonPlugin")],f);export{f as PolygonPlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{zeroDegreesGeographic as t,createLength as i}from"../../../core/quantity.js";import{watch as o,initial as s}from"../../../core/reactiveUtils.js";import{property as n,subclass as r}from"../../../core/accessorSupport/decorators.js";import{isPolyline as l}from"../../../geometry/support/typeUtils.js";import{PluginBase as a}from"./PluginBase.js";import{knownFieldDisplayOrders as d}from"../support/types.js";import{directionForVertices as p}from"../../support/angularMeasurementUtils.js";const m=Symbol("polyline-committed-length-measurement"),u=Symbol("polyline-staged-measurement"),c=Symbol("polyline-cursor-distance-measurement"),h=Symbol("polyline-distance-field"),_=Symbol("polyline-direction-field"),y=Symbol("polyline-total-length-field");let g=class extends a{constructor(){super(...arguments),this._lineVisualId=Symbol()}get _downstreamGeometry(){return this._downstreamEditSession?.generatePreviewGeometry({includeAutomaticConnection:!0,geometryType:"polyline"})}get _downstreamEditSession(){const{_downstreamPlugin:e,_context:t}=this;return e?t?.getSession(e):null}get _committed(){return this._getCommittedGeometry()}start(e){super.start(e);const{session:t}=e;t.automaticRestart=!1,e.addOrUpdateVisual(this._lineVisualId,{role:"outline",state:"active"}),this.addHandles([o(()=>this._downstreamEditSession?.lastPointAddedBySession,t=>{this._cursorVertex=t;const i=this._downstreamGeometry,o=this._session;t&&o?(this._lastVertex=null!=t.pointIndex&&t.pointIndex>0?o.getInformationAboutPoint(t.pointIndex-1,t.partIndex):null,this._secondToLastVertex=null!=t.pointIndex&&t.pointIndex>1?o.getInformationAboutPoint(t.pointIndex-2,t.partIndex):null):(this._lastVertex=null,this._secondToLastVertex=null),e.addOrUpdateVisual(this._lineVisualId,{geometry:i})},s)],this._ownHandlesKey),this._setupTooltips()}complete(){this._session?.complete(),this._isComplete=!0,this.removeHandles(this._ownHandlesKey),this.removeHandles(this._downstreamHandlesKey)}attachPlugin(e){this._downstreamPlugin=e,this.notifyChange("_downstreamEditSession")}detachPlugin(e,t){this.notifyChange("_committed"),"complete"===t&&e.configuration&&this._context?.requestBeginDownstreamPlugin(e.configuration)}_getCommittedGeometry(){return this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polyline"})}_setupTooltips(){this._context&&(this._distanceField??=this._context.createMeasuredField({id:h,preset:"distance",getMeasurementInput:()=>[this._lastVertex?.point,this._cursorVertex?.point],measure:async(e,t)=>{if(!e||!e[0]||!e[1])return null;const i=t.inputUnitInfos.length.unit;return this._context?.measureDistance([e[0],e[1]],c,"tooltip",i)},fieldProperties:{displayOrder:d.Coordinates+11},fieldFilters:{appliesToHandlesWithRole:"primary"}}),this._directionField??=this._context.createMeasuredField({id:_,preset:"direction",getMeasurementInput:()=>[this._lastVertex?.point,this._cursorVertex?.point],measure:async([e,i],o)=>{const s=o.sketchOptions.values.effectiveDirectionMode;if(e&&i){const o=p(this._secondToLastVertex?.point,e,i,s);return this._directionField&&(this._directionField.readOnly="absolute"===s?!e:!this._secondToLastVertex?.point),o??("absolute"===s||this._secondToLastVertex?t:null)}return null},fieldProperties:{displayOrder:d.Coordinates+10},fieldFilters:{appliesToHandlesWithRole:"primary"}}),this._setupGeometrySpecificTooltip())}_setupGeometrySpecificTooltip(){this._context&&(this._lengthField??=this._context.createMeasuredField({id:y,preset:"totalLength",getMeasurementInput:()=>[this._committed,this._downstreamGeometry],measure:async([e,t],o,s)=>{const n=o.inputUnitInfos.length.unit,r=t&&l(t)?await(this._context?.measureLength(t,u,"tooltip",n)):void 0,a=e&&e!==s?.[0]&&l(e)?await(this._context?.measureLength(e,m,"tooltip",n)):e?this._cachedCommittedLength:null;return this._cachedCommittedLength=a,(a||r)&&(e||0!==r?.value)?i((a?.value??0)+(r?.value??0),n):null},fieldProperties:{displayOrder:d.ShapeMeasurements}}))}};e([n()],g.prototype,"_downstreamPlugin",void 0),e([n()],g.prototype,"_lastVertex",void 0),e([n()],g.prototype,"_cursorVertex",void 0),e([n()],g.prototype,"_secondToLastVertex",void 0),e([n()],g.prototype,"_lengthField",void 0),e([n()],g.prototype,"_distanceField",void 0),e([n()],g.prototype,"_directionField",void 0),e([n()],g.prototype,"_downstreamGeometry",null),e([n()],g.prototype,"_downstreamEditSession",null),e([n()],g.prototype,"_committed",null),g=e([r("esri.views.draw.plugins.PolylinePlugin")],g);export{g as PolylinePlugin};
2
+ import{__decorate as e}from"tslib";import{zeroDegreesGeographic as t,createLength as i}from"../../../core/quantity.js";import{watch as o,initial as s}from"../../../core/reactiveUtils.js";import{property as n,subclass as r}from"../../../core/accessorSupport/decorators.js";import{isPolyline as l}from"../../../geometry/support/typeUtils.js";import{PluginBase as a}from"./PluginBase.js";import{knownFieldDisplayOrders as d}from"../support/types.js";import{directionForVertices as p}from"../../support/angularMeasurementUtils.js";const m=Symbol("polyline-committed-length-measurement"),u=Symbol("polyline-staged-measurement"),c=Symbol("polyline-cursor-distance-measurement"),h=Symbol("polyline-distance-field"),_=Symbol("polyline-direction-field"),y=Symbol("polyline-total-length-field");let g=class extends a{constructor(){super(...arguments),this._lineVisualId=Symbol()}get _downstreamGeometry(){return this._downstreamEditSession?.generatePreviewGeometry({includeAutomaticConnection:!0,geometryType:"polyline"})}get _downstreamEditSession(){const{_downstreamPlugin:e,_context:t}=this;return e?t?.getSession(e):null}get _committed(){return this._getCommittedGeometry()}get helpMessageKey(){return this._session?.lastPointAddedBySession?"polylineOneVertex":"polylineZeroVertices"}start(e){super.start(e);const{session:t}=e;t.automaticRestart=!1,e.addOrUpdateVisual(this._lineVisualId,{role:"outline",state:"active"}),this.addHandles([o(()=>this._downstreamEditSession?.lastPointAddedBySession,t=>{this._cursorVertex=t;const i=this._downstreamGeometry,o=this._session;t&&o?(this._lastVertex=null!=t.pointIndex&&t.pointIndex>0?o.getInformationAboutPoint(t.pointIndex-1,t.partIndex):null,this._secondToLastVertex=null!=t.pointIndex&&t.pointIndex>1?o.getInformationAboutPoint(t.pointIndex-2,t.partIndex):null):(this._lastVertex=null,this._secondToLastVertex=null),e.addOrUpdateVisual(this._lineVisualId,{geometry:i})},s)],this._ownHandlesKey),this._setupTooltips()}complete(){this._session?.complete(),this._isComplete=!0,this.removeHandles(this._ownHandlesKey),this.removeHandles(this._downstreamHandlesKey)}attachPlugin(e){this._downstreamPlugin=e,this.notifyChange("_downstreamEditSession")}detachPlugin(e,t){this.notifyChange("_committed"),"complete"===t&&e.configuration&&this._context?.requestBeginDownstreamPlugin(e.configuration)}_getCommittedGeometry(){return this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polyline"})}_setupTooltips(){this._context&&(this._distanceField??=this._context.createMeasuredField({id:h,preset:"distance",getMeasurementInput:()=>[this._lastVertex?.point,this._cursorVertex?.point],measure:async(e,t)=>{if(!e||!e[0]||!e[1])return null;const i=t.inputUnitInfos.length.unit;return this._context?.measureDistance([e[0],e[1]],c,"tooltip",i)},fieldProperties:{displayOrder:d.Coordinates+11},fieldFilters:{appliesToHandlesWithRole:"primary"}}),this._directionField??=this._context.createMeasuredField({id:_,preset:"direction",getMeasurementInput:()=>[this._lastVertex?.point,this._cursorVertex?.point],measure:async([e,i],o)=>{const s=o.sketchOptions.values.effectiveDirectionMode;if(e&&i){const o=p(this._secondToLastVertex?.point,e,i,s);return this._directionField&&(this._directionField.readOnly="absolute"===s?!e:!this._secondToLastVertex?.point),o??("absolute"===s||this._secondToLastVertex?t:null)}return null},fieldProperties:{displayOrder:d.Coordinates+10},fieldFilters:{appliesToHandlesWithRole:"primary"}}),this._setupGeometrySpecificTooltip())}_setupGeometrySpecificTooltip(){this._context&&(this._lengthField??=this._context.createMeasuredField({id:y,preset:"totalLength",getMeasurementInput:()=>[this._committed,this._downstreamGeometry],measure:async([e,t],o,s)=>{const n=o.inputUnitInfos.length.unit,r=t&&l(t)?await(this._context?.measureLength(t,u,"tooltip",n)):void 0,a=e&&e!==s?.[0]&&l(e)?await(this._context?.measureLength(e,m,"tooltip",n)):e?this._cachedCommittedLength:null;return this._cachedCommittedLength=a,(a||r)&&(e||0!==r?.value)?i((a?.value??0)+(r?.value??0),n):null},fieldProperties:{displayOrder:d.ShapeMeasurements}}))}};e([n()],g.prototype,"_downstreamPlugin",void 0),e([n()],g.prototype,"_lastVertex",void 0),e([n()],g.prototype,"_cursorVertex",void 0),e([n()],g.prototype,"_secondToLastVertex",void 0),e([n()],g.prototype,"_lengthField",void 0),e([n()],g.prototype,"_distanceField",void 0),e([n()],g.prototype,"_directionField",void 0),e([n()],g.prototype,"_downstreamGeometry",null),e([n()],g.prototype,"_downstreamEditSession",null),e([n()],g.prototype,"_committed",null),e([n()],g.prototype,"helpMessageKey",null),g=e([r("esri.views.draw.plugins.PolylinePlugin")],g);export{g as PolylinePlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{watch as t,syncAndInitial as i,sync as s}from"../../../core/reactiveUtils.js";import{property as r,subclass as a}from"../../../core/accessorSupport/decorators.js";import{PluginBase as n}from"./PluginBase.js";import{createSquare as o,createCircle as l,createEllipse as d,createRectangle as p}from"../support/createUtils.js";import{knownFieldDisplayOrders as u}from"../support/types.js";const h=Symbol("own-shape"),c=Symbol("shape-area-measurement"),m=Symbol("shape-size-measurement-x"),f=Symbol("shape-size-measurement-y"),y=Symbol("shape-area-field"),_=Symbol("shape-x-size-field"),g=Symbol("shape-y-size-field"),S=Symbol("shape-radius-field");let v=class extends n{constructor(){super(...arguments),this.shapeType="rectangle",this.defaultCentered=!1,this.defaultUniform=!1}get _globalModifierState(){return this._context?.getGlobalState()}get effectiveUniform(){return this.defaultUniform!==!!this._globalModifierState?.preserveAspectRatio}get effectiveCentered(){return this.defaultCentered!==this._globalModifierState?.centered}set shapeResult(e){this._set("shapeResult",e),e?"center"in e?(this._radiusField?.show(),this._xSizeField?.hide(),this._ySizeField?.hide(),this._areaField?.show()):"midpoints"in e&&e.midpoints&&(this._radiusField?.hide(),this._xSizeField?.show(),this._ySizeField?.show(),this._areaField?.show()):(this._xSizeField?.hide(),this._ySizeField?.hide(),this._radiusField?.hide(),this._areaField?.hide());const t=e?.geometry,i=this._session;if(i&&t){const e=t.curveRings??t.rings,s=e?.at(0);s&&i.appendOrReplacePart(h,s)}}start(e){super.start(e),this._interactiveHandle??=e.createInteractiveHandle({defaultCaptureMode:"capture-when-engaged",selfSnappingEnabled:!1},{disableDefaultXYFields:!0}),this.addHandles([t(()=>[this._interactiveHandle?.outputMapPosition,this.effectiveCentered,this.effectiveUniform],([e,t,i])=>{if(!e||this._isComplete)return;const s=this._interactiveHandle?.outputMapPositionOfDragStart??e,r=s===e?null:e;this.shapeResult=this._generateShape(s,r,t,i)},i),t(()=>this._interactiveHandle?.dragging,(t,i)=>{t&&e.setGlobalState("drawAtFixedElevation",!0),!t&&i&&"grabbable-object"!==this._interactiveHandle?.captureMode&&e.requestComplete()},s)],this._ownHandlesKey),this._areaField??=this._context?.createMeasuredField({id:y,preset:"area",getMeasurementInput:()=>this.shapeResult?.geometry,measure:async(e,t)=>{if(!e)return null;const i=t.inputUnitInfos.area.unit;return this._context?.measureArea(e,c,"tooltip",i)},fieldProperties:{displayOrder:u.ShapeMeasurements}});const r=Symbol("Size-group");this._xSizeField??=this._context?.createMeasuredField({id:_,preset:"generic-length",getMeasurementInput:()=>this.shapeResult,measure:async(e,t)=>e&&"midpoints"in e&&e.midpoints?this._context?.measureDistance([e.midpoints?.left,e.midpoints?.right],m,"tooltip",t.inputUnitInfos.length.unit):null,fieldProperties:{displayOrder:u.Middle+1,displayGroup:r,title:e=>e.messages.sketch.size,readOnly:!0}}),this._ySizeField??=this._context?.createMeasuredField({id:g,preset:"generic-length",getMeasurementInput:()=>this.shapeResult,measure:async(e,t)=>e&&"midpoints"in e&&e.midpoints?this._context?.measureDistance([e.midpoints?.bottom,e.midpoints?.top],f,"tooltip",t.inputUnitInfos.length.unit):null,fieldProperties:{displayOrder:u.Middle+2,displayGroup:r,title:e=>e.messages.sketch.size,readOnly:!0}}),this._radiusField??=this._context?.createMeasuredField({id:S,preset:"radius",getMeasurementInput:()=>this.shapeResult,measure:async(e,t)=>{if(e&&"center"in e&&null!=e.center)return this._context?.measureDistance([e.center,e.edge],f,"tooltip",t.inputUnitInfos.length.unit)},fieldProperties:{displayOrder:u.Middle+1,readOnly:!0}})}_generateShape(e,t,i,s){const{shapeType:r}=this,{resolution:a}=this._context?.getViewInformation()??{},n=this._context?.getViewAlignedSurfaceCoordinateSystem(e);if(!n||null==a)return null;const u=[e.x,e.y],h=t&&[t.x,t.y];if(!h){const e=[[u,n.makeMapPoint(u[0]+48*a,u[1])],n,!0];return"rectangle"===r?o(...e):l(...e,void 0)}const c=[[u,h],n,i];return s?"circle"===r?l(...c,void 0):o(...c):"circle"===r?d(...c):p(...c)}};e([r()],v.prototype,"_interactiveHandle",void 0),e([r()],v.prototype,"_areaField",void 0),e([r()],v.prototype,"_xSizeField",void 0),e([r()],v.prototype,"_ySizeField",void 0),e([r()],v.prototype,"_radiusField",void 0),e([r()],v.prototype,"_globalModifierState",null),e([r()],v.prototype,"shapeType",void 0),e([r()],v.prototype,"defaultCentered",void 0),e([r()],v.prototype,"defaultUniform",void 0),e([r()],v.prototype,"effectiveUniform",null),e([r()],v.prototype,"effectiveCentered",null),e([r()],v.prototype,"shapeResult",null),v=e([a("esri.views.draw.plugins.ShapePlugin")],v);export{v as ShapePlugin};
2
+ import{__decorate as e}from"tslib";import{watch as t,syncAndInitial as i,sync as s}from"../../../core/reactiveUtils.js";import{property as r,subclass as a}from"../../../core/accessorSupport/decorators.js";import{PluginBase as n}from"./PluginBase.js";import{createSquare as o,createCircle as l,createEllipse as d,createRectangle as p}from"../support/createUtils.js";import{knownFieldDisplayOrders as h}from"../support/types.js";const u=Symbol("own-shape"),c=Symbol("shape-area-measurement"),m=Symbol("shape-size-measurement-x"),f=Symbol("shape-size-measurement-y"),y=Symbol("shape-area-field"),g=Symbol("shape-x-size-field"),_=Symbol("shape-y-size-field"),S=Symbol("shape-radius-field");let v=class extends n{constructor(){super(...arguments),this.shapeType="rectangle",this.defaultCentered=!1,this.defaultUniform=!1}get _globalModifierState(){return this._context?.getGlobalState()}get helpMessageKey(){return this._interactiveHandle?.dragging?"shapeEndHybrid":"shapeStartHybrid"}get effectiveUniform(){return this.defaultUniform!==!!this._globalModifierState?.preserveAspectRatio}get effectiveCentered(){return this.defaultCentered!==this._globalModifierState?.centered}set shapeResult(e){this._set("shapeResult",e),e?"center"in e?(this._radiusField?.show(),this._xSizeField?.hide(),this._ySizeField?.hide(),this._areaField?.show()):"midpoints"in e&&e.midpoints&&(this._radiusField?.hide(),this._xSizeField?.show(),this._ySizeField?.show(),this._areaField?.show()):(this._xSizeField?.hide(),this._ySizeField?.hide(),this._radiusField?.hide(),this._areaField?.hide());const t=e?.geometry,i=this._session;if(i&&t){const e=t.curveRings??t.rings,s=e?.at(0);s&&i.appendOrReplacePart(u,s)}}start(e){super.start(e),this._interactiveHandle??=e.createInteractiveHandle({defaultCaptureMode:"capture-when-engaged",selfSnappingEnabled:!1},{disableDefaultXYFields:!0}),this.addHandles([t(()=>[this._interactiveHandle?.outputMapPosition,this.effectiveCentered,this.effectiveUniform],([e,t,i])=>{if(!e||this._isComplete)return;const s=this._interactiveHandle?.outputMapPositionOfDragStart??e,r=s===e?null:e;this.shapeResult=this._generateShape(s,r,t,i)},i),t(()=>this._interactiveHandle?.dragging,(t,i)=>{t&&e.setGlobalState("drawAtFixedElevation",!0),!t&&i&&"grabbable-object"!==this._interactiveHandle?.captureMode&&e.requestComplete()},s)],this._ownHandlesKey),this._areaField??=this._context?.createMeasuredField({id:y,preset:"area",getMeasurementInput:()=>this.shapeResult?.geometry,measure:async(e,t)=>{if(!e)return null;const i=t.inputUnitInfos.area.unit;return this._context?.measureArea(e,c,"tooltip",i)},fieldProperties:{displayOrder:h.ShapeMeasurements}});const r=Symbol("Size-group");this._xSizeField??=this._context?.createMeasuredField({id:g,preset:"generic-length",getMeasurementInput:()=>this.shapeResult,measure:async(e,t)=>e&&"midpoints"in e&&e.midpoints?this._context?.measureDistance([e.midpoints?.left,e.midpoints?.right],m,"tooltip",t.inputUnitInfos.length.unit):null,fieldProperties:{displayOrder:h.Middle+1,displayGroup:r,title:e=>e.messages.sketch.size,readOnly:!0}}),this._ySizeField??=this._context?.createMeasuredField({id:_,preset:"generic-length",getMeasurementInput:()=>this.shapeResult,measure:async(e,t)=>e&&"midpoints"in e&&e.midpoints?this._context?.measureDistance([e.midpoints?.bottom,e.midpoints?.top],f,"tooltip",t.inputUnitInfos.length.unit):null,fieldProperties:{displayOrder:h.Middle+2,displayGroup:r,title:e=>e.messages.sketch.size,readOnly:!0}}),this._radiusField??=this._context?.createMeasuredField({id:S,preset:"radius",getMeasurementInput:()=>this.shapeResult,measure:async(e,t)=>{if(e&&"center"in e&&null!=e.center)return this._context?.measureDistance([e.center,e.edge],f,"tooltip",t.inputUnitInfos.length.unit)},fieldProperties:{displayOrder:h.Middle+1,readOnly:!0}})}_generateShape(e,t,i,s){const{shapeType:r}=this,{resolution:a}=this._context?.getViewInformation()??{},n=this._context?.getViewAlignedSurfaceCoordinateSystem(e);if(!n||null==a)return null;const h=[e.x,e.y],u=t&&[t.x,t.y];if(!u){const e=[[h,n.makeMapPoint(h[0]+48*a,h[1])],n,!0];return"rectangle"===r?o(...e):l(...e,void 0)}const c=[[h,u],n,i];return s?"circle"===r?l(...c,void 0):o(...c):"circle"===r?d(...c):p(...c)}};e([r()],v.prototype,"_interactiveHandle",void 0),e([r()],v.prototype,"_areaField",void 0),e([r()],v.prototype,"_xSizeField",void 0),e([r()],v.prototype,"_ySizeField",void 0),e([r()],v.prototype,"_radiusField",void 0),e([r()],v.prototype,"_globalModifierState",null),e([r()],v.prototype,"shapeType",void 0),e([r()],v.prototype,"defaultCentered",void 0),e([r()],v.prototype,"defaultUniform",void 0),e([r()],v.prototype,"helpMessageKey",null),e([r()],v.prototype,"effectiveUniform",null),e([r()],v.prototype,"effectiveCentered",null),e([r()],v.prototype,"shapeResult",null),v=e([a("esri.views.draw.plugins.ShapePlugin")],v);export{v as ShapePlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import{createTask as o}from"../../../../core/asyncUtils.js";import i from"../../../../core/Error.js";import{getOrCreateMapValue as n}from"../../../../core/MapUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import s from"../../../../core/ReactiveMap.js";import{watch as l,syncAndInitial as a,initial as p}from"../../../../core/reactiveUtils.js";import{property as d}from"../../../../core/accessorSupport/decorators.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import{isLoaded as m,load as f}from"../../../../geometry/coordinateFormatter.js";import{absoluteHeightElevationInfo as h}from"../../../../support/elevationInfoUtils.js";import{ManagedTooltipField as g}from"../ManagedTooltipField.js";import{getConstraintContext as v}from"../../../interactive/sketch/constraintUtils.js";import{makeTooltip as y}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{makeScalarField as _,makeOrientationField as F,makeAreaField as H,makeLengthField as T,makeRadiusField as I,makeTotalLengthField as w,makeSizeField as k,makeScaleField as x,makeYField as j,makeXField as A,makeLongitudeField as M,makeLatitudeField as b,makeElevationField as E,makeDistanceField as C,makeDirectionField as O}from"../../../interactive/tooltip/fields/fields.js";import{TooltipField as L}from"../../../interactive/tooltip/fields/TooltipField.js";import{DynamicTooltipInfo as P}from"../../../interactive/tooltip/infos/DynamicTooltipInfo.js";let R=class extends e{constructor(t){super(t),this._pluginTooltipFieldRegistry=new s,this._updatingHandles=new u,this._coordinateFormatterLoadTask=null,this.constraintsEnabled=!0,this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled=!1}initialize(){this.addHandles([l(()=>[this.effectiveEnabled,this.context?.view,this.context?.sketchOptions],([t,e,o])=>{const{context:i}=this;t&&e&&o?(this._tooltipInfo??=new P({sketchOptions:o,getAllFields:()=>this.allFields,getActiveHandle:()=>this.effectiveActiveHandle,viewType:e.type}),this._tooltip||this._setupTooltip(i)):(this._tooltip=r(this._tooltip),this._tooltipInfo=r(this._tooltipInfo),this.inputModeHandle=null)},a)])}destroy(){this._tooltip=r(this._tooltip),this._tooltipInfo=r(this._tooltipInfo)}get context(){return this.getDependencies?.()}get focusedHandle(){return this.context?.getActiveHandle?.()}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 this.getConstraints(this.focusedHandle)?.elevation}get allFields(){return Array.from(this._pluginTooltipFieldRegistry.values()).flatMap(t=>Array.from(t.values()))}get effectiveEnabled(){return this.context?.sketchOptions.tooltips.effectiveEnabled||this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled}getConstraints(t){const{tooltipInfo:e,context:o}=this,{view:i,editGeometryOperations:n,elevationInfo:r,sketchOptions:s}=o??{},l=this.getLastScreenPosition?.();if(!(l&&i&&e&&n&&s))return null;const{coordinateHelper:a,spatialReference:p}=n.data,d=i.toMap(l);if(!d)return null;const c=v(d,i,p,r??h,a.hasZ(),s.values.effectiveDirectionMode),u=e.getConstraintFieldsForHandle(t),m={context:c};for(const f of u)switch(f.name){case"direction":case"distance":case"elevation":m[f.name]=f.committed;break;case"x":m[f.name]=D(f.committed),m.longitude=U(f.committed);break;case"y":m[f.name]=D(f.committed),m.latitude=U(f.committed)}return m}unlockOnVertexPlacement(){this.tooltipInfo?.allFields.forEach(t=>{t.unlockOnVertexPlacement&&(t.committed=null)})}unregisterPluginFields(t){const e=this._pluginTooltipFieldRegistry.get(t);e?.forEach(t=>t.destroy()),e?.clear(),this._pluginTooltipFieldRegistry.delete(t)}createMeasuredField(t,{id:e,preset:o,getMeasurementInput:i,measure:n,fieldProperties:r,fieldFilters:s}){const a=this._getOrCreateField(t,e,o,r,s);return a.registerMeasurement(i,n,()=>this.tooltipInfo?.renderContext),a.addHandles(l(()=>this.tooltipInfo?.isEffectiveVisibleField(a.field),t=>a.enabled=!!t,p)),a}createCustomField(t,{id:e,preset:o,fieldProperties:i,fieldFilters:n}){return this._getOrCreateField(t,e,o,i,n)}_setupTooltip(t){const e=this._tooltip=y(()=>({view:t.view,options:t.sketchOptions.tooltips,info:this.tooltipInfo}));e.addHandles([l(()=>this.focusedHandle,t=>{!t||e.isInInputMode&&null!=this.inputModeHandle||(this.inputModeHandle=t)},a),l(()=>this.focusedHandle?.screenPosition,t=>{t?(e.position=t,e.hidden=!1):e.hidden=!0},a),e.on("commit",()=>{this.context?.notifyTooltipsChanged()})]),this._coordinateFormatterLoadTask||m()||(this._coordinateFormatterLoadTask=o(()=>f()),this.addHandles(this._coordinateFormatterLoadTask),this._updatingHandles.addPromise(this._coordinateFormatterLoadTask.promise))}_getOrCreateField(t,e,o,i,r){const l=n(this._pluginTooltipFieldRegistry,t,()=>new s);if(l.has(e))return l.get(e);const a=new g({field:G(o,i),displayGroup:i?.displayGroup,...r});return l.set(e,a),a}};function U(t){return null!=t&&"unit"in t&&"rotationType"in t?t:null}function D(t){return null==t||"rotationType"in t?null:t}function G(t,e){const o=e?{...e}:{};switch(delete o.displayGroup,t){case"area":return H({...o,name:"area"});case"direction":return O({...o,name:"direction"});case"distance":return C({...o,name:"distance"});case"elevation":{const t=E({...o,name:"elevation"});return t.showAsZ=!0,t}case"latitude":return b({...o,name:"y"});case"longitude":return M({...o,name:"x"});case"x":return A({...o,name:"x"});case"y":return j({...o,name:"y"});case"orientation":return F({...o,name:"orientation"});case"scale":return x({...o,name:"scale"});case"size":return k({...o,name:"size"});case"totalLength":return w({...o,name:"totalLength"});case"radius":return I({...o,name:"radius"});case"generic-length":return T({...o,name:null});case"generic-area":return H({...o,name:null});case"generic-angle":return F({...o,name:null});case"generic-scalar":return _({...o,name:null});default:if(!o)throw new i("draw-tool:tooltips:invalid-field-config","Attempted to create a tooltip without a preset definition and without tooltip configuration.");return new L(o)}}t([d()],R.prototype,"_updatingHandles",void 0),t([d()],R.prototype,"_tooltip",void 0),t([d()],R.prototype,"_tooltipInfo",void 0),t([d()],R.prototype,"_coordinateFormatterLoadTask",void 0),t([d()],R.prototype,"getDependencies",void 0),t([d()],R.prototype,"getLastScreenPosition",void 0),t([d()],R.prototype,"context",null),t([d()],R.prototype,"inputModeHandle",void 0),t([d()],R.prototype,"focusedHandle",null),t([d()],R.prototype,"effectiveActiveHandle",null),t([d()],R.prototype,"updating",null),t([d()],R.prototype,"tooltip",null),t([d()],R.prototype,"tooltipInfo",null),t([d()],R.prototype,"constraintsEnabled",void 0),t([d()],R.prototype,"elevationConstraint",null),t([d()],R.prototype,"allFields",null),t([d()],R.prototype,"keepTooltipAliveEvenWhenTooltipsAreNotEnabled",void 0),t([d()],R.prototype,"effectiveEnabled",null),R=t([c("esri.views.draw.support.managers.TooltipManager")],R);export{R as TooltipManager};
2
+ import{__decorate as t}from"tslib";import e from"../../../../core/Accessor.js";import{createTask as o}from"../../../../core/asyncUtils.js";import i from"../../../../core/Error.js";import{getOrCreateMapValue as n}from"../../../../core/MapUtils.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import s from"../../../../core/ReactiveMap.js";import{watch as l,syncAndInitial as a,initial as p}from"../../../../core/reactiveUtils.js";import{property as d}from"../../../../core/accessorSupport/decorators.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as u}from"../../../../core/support/UpdatingHandles.js";import{isLoaded as m,load as f}from"../../../../geometry/coordinateFormatter.js";import{absoluteHeightElevationInfo as h}from"../../../../support/elevationInfoUtils.js";import{ManagedTooltipField as g}from"../ManagedTooltipField.js";import{getConstraintContext as v}from"../../../interactive/sketch/constraintUtils.js";import{makeTooltip as y}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{makeScalarField as _,makeOrientationField as F,makeAreaField as H,makeLengthField as T,makeRadiusField as I,makeTotalLengthField as w,makeSizeField as x,makeScaleField as k,makeYField as M,makeXField as j,makeLongitudeField as A,makeLatitudeField as b,makeElevationField as E,makeDistanceField as C,makeDirectionField as O}from"../../../interactive/tooltip/fields/fields.js";import{TooltipField as L}from"../../../interactive/tooltip/fields/TooltipField.js";import{DynamicTooltipInfo as P}from"../../../interactive/tooltip/infos/DynamicTooltipInfo.js";let R=class extends e{constructor(t){super(t),this._pluginTooltipFieldRegistry=new s,this._updatingHandles=new u,this._coordinateFormatterLoadTask=null,this.constraintsEnabled=!0,this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled=!1}initialize(){this.addHandles([l(()=>[this.effectiveEnabled,this.context?.view,this.context?.sketchOptions],([t,e,o])=>{const{context:i}=this;t&&e&&o?(this._tooltipInfo??=new P({sketchOptions:o,getAllFields:()=>this.allFields,getActiveHandle:()=>this.effectiveActiveHandle,getHelpMessageKey:()=>this.context?.getHelpMessageKey(),viewType:e.type}),this._tooltip||this._setupTooltip(i)):(this._tooltip=r(this._tooltip),this._tooltipInfo=r(this._tooltipInfo),this.inputModeHandle=null)},a)])}destroy(){this._tooltip=r(this._tooltip),this._tooltipInfo=r(this._tooltipInfo)}get context(){return this.getDependencies?.()}get focusedHandle(){return this.context?.getActiveHandle?.()}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 this.getConstraints(this.focusedHandle)?.elevation}get allFields(){return Array.from(this._pluginTooltipFieldRegistry.values()).flatMap(t=>Array.from(t.values()))}get effectiveEnabled(){return this.context?.sketchOptions.tooltips.effectiveEnabled||this.keepTooltipAliveEvenWhenTooltipsAreNotEnabled}getConstraints(t){const{tooltipInfo:e,context:o}=this,{view:i,editGeometryOperations:n,elevationInfo:r,sketchOptions:s}=o??{},l=this.getLastScreenPosition?.();if(!(l&&i&&e&&n&&s))return null;const{coordinateHelper:a,spatialReference:p}=n.data,d=i.toMap(l);if(!d)return null;const c=v(d,i,p,r??h,a.hasZ(),s.values.effectiveDirectionMode),u=e.getConstraintFieldsForHandle(t),m={context:c};for(const f of u)switch(f.name){case"direction":case"distance":case"elevation":m[f.name]=f.committed;break;case"x":m[f.name]=D(f.committed),m.longitude=U(f.committed);break;case"y":m[f.name]=D(f.committed),m.latitude=U(f.committed)}return m}unlockOnVertexPlacement(){this.tooltipInfo?.allFields.forEach(t=>{t.unlockOnVertexPlacement&&(t.committed=null)})}unregisterPluginFields(t){const e=this._pluginTooltipFieldRegistry.get(t);e?.forEach(t=>t.destroy()),e?.clear(),this._pluginTooltipFieldRegistry.delete(t)}createMeasuredField(t,{id:e,preset:o,getMeasurementInput:i,measure:n,fieldProperties:r,fieldFilters:s}){const a=this._getOrCreateField(t,e,o,r,s);return a.registerMeasurement(i,n,()=>this.tooltipInfo?.renderContext),a.addHandles(l(()=>this.tooltipInfo?.isEffectiveVisibleField(a.field),t=>a.enabled=!!t,p)),a}createCustomField(t,{id:e,preset:o,fieldProperties:i,fieldFilters:n}){return this._getOrCreateField(t,e,o,i,n)}_setupTooltip(t){const e=this._tooltip=y(()=>({view:t.view,options:t.sketchOptions.tooltips,info:this.tooltipInfo}));e.addHandles([l(()=>this.focusedHandle,t=>{!t||e.isInInputMode&&null!=this.inputModeHandle||(this.inputModeHandle=t)},a),l(()=>this.focusedHandle?.screenPosition,t=>{t?(e.position=t,e.hidden=!1):e.hidden=!0},a),e.on("commit",()=>{this.context?.notifyTooltipsChanged()})]),this._coordinateFormatterLoadTask||m()||(this._coordinateFormatterLoadTask=o(()=>f()),this.addHandles(this._coordinateFormatterLoadTask),this._updatingHandles.addPromise(this._coordinateFormatterLoadTask.promise))}_getOrCreateField(t,e,o,i,r){const l=n(this._pluginTooltipFieldRegistry,t,()=>new s);if(l.has(e))return l.get(e);const a=new g({field:G(o,i),displayGroup:i?.displayGroup,...r});return l.set(e,a),a}};function U(t){return null!=t&&"unit"in t&&"rotationType"in t?t:null}function D(t){return null==t||"rotationType"in t?null:t}function G(t,e){const o=e?{...e}:{};switch(delete o.displayGroup,t){case"area":return H({...o,name:"area"});case"direction":return O({...o,name:"direction"});case"distance":return C({...o,name:"distance"});case"elevation":{const t=E({...o,name:"elevation"});return t.showAsZ=!0,t}case"latitude":return b({...o,name:"y"});case"longitude":return A({...o,name:"x"});case"x":return j({...o,name:"x"});case"y":return M({...o,name:"y"});case"orientation":return F({...o,name:"orientation"});case"scale":return k({...o,name:"scale"});case"size":return x({...o,name:"size"});case"totalLength":return w({...o,name:"totalLength"});case"radius":return I({...o,name:"radius"});case"generic-length":return T({...o,name:null});case"generic-area":return H({...o,name:null});case"generic-angle":return F({...o,name:null});case"generic-scalar":return _({...o,name:null});default:if(!o)throw new i("draw-tool:tooltips:invalid-field-config","Attempted to create a tooltip without a preset definition and without tooltip configuration.");return new L(o)}}t([d()],R.prototype,"_updatingHandles",void 0),t([d()],R.prototype,"_tooltip",void 0),t([d()],R.prototype,"_tooltipInfo",void 0),t([d()],R.prototype,"_coordinateFormatterLoadTask",void 0),t([d()],R.prototype,"getDependencies",void 0),t([d()],R.prototype,"getLastScreenPosition",void 0),t([d()],R.prototype,"context",null),t([d()],R.prototype,"inputModeHandle",void 0),t([d()],R.prototype,"focusedHandle",null),t([d()],R.prototype,"effectiveActiveHandle",null),t([d()],R.prototype,"updating",null),t([d()],R.prototype,"tooltip",null),t([d()],R.prototype,"tooltipInfo",null),t([d()],R.prototype,"constraintsEnabled",void 0),t([d()],R.prototype,"elevationConstraint",null),t([d()],R.prototype,"allFields",null),t([d()],R.prototype,"keepTooltipAliveEvenWhenTooltipsAreNotEnabled",void 0),t([d()],R.prototype,"effectiveEnabled",null),R=t([c("esri.views.draw.support.managers.TooltipManager")],R);export{R as TooltipManager};
@@ -7,7 +7,7 @@ export interface SketchLabelOptionsProperties extends Partial<Pick<SketchLabelOp
7
7
  * segment of a graphic while sketching and editing. The labels display each segment's
8
8
  * horizontal length and are not shown for non-planar polygons and polylines.
9
9
  *
10
- * [![sketch-3d](https://developers.arcgis.com/javascript/latest/assets/images/apiref/views/interactive/sketch/sketchlabels.png)](https://developers.arcgis.com/javascript/latest/sample-code/sketch-3d/)
10
+ * [![sketch-3d](https://developers.arcgis.com/javascript/latest/assets/references/core/views/interactive/sketch/sketchlabels.png)](https://developers.arcgis.com/javascript/latest/sample-code/sketch-3d/)
11
11
  *
12
12
  * How the segment lengths are computed depends on the view's spatial reference. In geographic coordinate systems (GCS)
13
13
  * and in Web Mercator, the lengths are computed geodetically. In projected coordinate systems (PCS),
@@ -15,7 +15,7 @@ export interface SketchTooltipOptionsProperties extends Partial<Pick<SketchToolt
15
15
  * To enter the tooltip UI's [input mode](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/sketch/SketchTooltipOptions/#inputEnabled),
16
16
  * press the `Tab` key while drawing a new feature, or when editing a point, mesh, or a selected vertex.
17
17
  *
18
- * [![sketch-3d-with-constraints](https://developers.arcgis.com/javascript/latest/assets/images/apiref/widgets/editor/editing-constraints.gif)](https://developers.arcgis.com/javascript/latest/sample-code/sketch-3d/)
18
+ * [![sketch-3d-with-constraints](https://developers.arcgis.com/javascript/latest/assets/references/core/widgets/editor/editing-constraints.gif)](https://developers.arcgis.com/javascript/latest/sample-code/sketch-3d/)
19
19
  *
20
20
  * #### Available tooltip inputs and constraints
21
21
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{cyclical2PI as e}from"../../../core/Cyclical.js";import{createAngle as t,valueInUnit as r}from"../../../core/quantity.js";import{subtract as i,dot as n,squaredLength as s,scaleAndAdd as o}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{scaleAndAdd as c,subtract as p,set as g}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as h}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{absoluteHeightElevationInfo as l}from"../../../support/elevationInfoUtils.js";import{VerticalHalfPlaneConstraint as m}from"../sketch/constraints.js";import{fromAnyMapPoint as f,asVec2 as d,markAsTarget as u,fromValues as x,fromVec3 as S}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as v}from"./SnappingAlgorithm.js";import{isLine as V,squaredScreenDistance as j}from"./snappingUtils.js";import{RightAngleSnappingCandidate as k}from"./candidates/RightAngleSnappingCandidate.js";import{vectorToScreenPoint as C}from"../support/viewUtils.js";import{radiansGeographicBetweenVec as _,pointFromDistanceAlongAzimuth as w}from"../../support/angularMeasurementUtils.js";class y extends v{constructor(e,t,r){super(e,t),this._geodesicLengthMeasurementUtils=r}snapNewVertex(e,t){const r=t.editGeometryOperations.data.parts.at(-1),i=[];if(!r||r.vertices.length<2)return i;const{view:n}=this,s=C(e,t.spatialReference,l,n),o=r.vertices.at(-1);V(o.leftSegment)&&this._checkForSnappingCandidate(1,i,o.leftSegment,o,o.leftSegment.leftVertex,e,s,t);const a=r.vertices[0];return V(a.rightSegment)&&this._checkForSnappingCandidate(2,i,a.rightSegment,a,a.rightSegment.rightVertex,e,s,t),i}snapExistingVertex(e,t){const r=[],i=t.vertexHandle,{part:n}=i;if(n.vertices.length<3)return r;const{view:s}=this,o=C(e,t.spatialReference,l,s),a=i.leftSegment,c=i.rightSegment;if(V(a?.leftVertex.leftSegment)){const i=a.leftVertex.leftSegment;this._checkForSnappingCandidate(3,r,i,i.rightVertex,i.leftVertex,e,o,t)}if(V(c)&&V(c.rightVertex.rightSegment)){const i=c.rightVertex.rightSegment;this._checkForSnappingCandidate(3,r,i,i.leftVertex,i.rightVertex,e,o,t)}return r}_checkForSnappingCandidate(e,t,r,i,n,s,o,a){if(!V(r)||!this.edgeExceedsShortLineThreshold(r,a))return;const c=this.view,p=f(i.pos,c,a),g=f(n.pos,c,a);F(P,g,p,s,a,this._geodesicLengthMeasurementUtils),this._checkForSnappingCandidateAlongProjectedRay(e,t,g,p,P,s,o,a)}_checkForSnappingCandidateAlongProjectedRay(e,t,r,a,p,g,f,v){const{spatialReference:V,pointer:_}=v,w=i(M,d(g),d(a)),y=n(p,w)/s(p),F=o(M,d(a),p,y),R=u(x(F[0],F[1],g[2]));if(j(f,C(R,V,l,this.view))>this.squaredProximityThreshold(_)||this.isVertical(R,a,v)||this.isVertical(a,r,v))return;const A=c(h(),a,p,Math.sign(y));t.push(new k({targetPoint:R,constraint:new m(a,S(A)),previousVertex:r,otherVertex:a,otherVertexType:1,selfSnappingType:e,isDraped:"on-the-ground"===v.elevationInfo?.mode}))}}function F(e,t,r,i,n,s){R(e,t,r,i,n,s)||A(e,t,r)}function R(i,n,s,o,{spatialReference:a},c){const g=_(n,s,a,a);if(null==g)return!1;const l=_(s,o,a,a);if(null==l)return!1;const m=Math.sign(e.shortestSignedDiff(g,l))*Math.PI*.5,f=t(g+m,"radians","geographic"),d=h(),u=c.geodesicDistance(s,o,a);return null!=u&&(w(d,s,a,r(u,"meters"),f,"geodesic"),p(i,d,s),!0)}function A(e,t,r){const n=i(M,d(r),d(t));g(e,n[1],-n[0],0)}const M=a(),P=h();export{y as RightAngleSnapper};
2
+ import{cyclical2PI as e}from"../../../core/Cyclical.js";import{createAngle as t,valueInUnit as r}from"../../../core/quantity.js";import{subtract as i,dot as n,squaredLength as s,scaleAndAdd as o}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{scaleAndAdd as c,subtract as g,set as p}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as h}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{absoluteHeightElevationInfo as l}from"../../../support/elevationInfoUtils.js";import{VerticalHalfPlaneConstraint as m}from"../sketch/constraints.js";import{fromAnyMapPoint as f,asVec2 as d,markAsTarget as u,fromValues as x,fromVec3 as S}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as V}from"./SnappingAlgorithm.js";import{isLine as v,squaredScreenDistance as j}from"./snappingUtils.js";import{RightAngleSnappingCandidate as k}from"./candidates/RightAngleSnappingCandidate.js";import{vectorToScreenPoint as C}from"../support/viewUtils.js";import{radiansGeographicBetweenVec as _,pointFromDistanceAlongAzimuth as F}from"../../support/angularMeasurementUtils.js";class w extends V{constructor(e,t,r){super(e,t),this._geodesicLengthMeasurementUtils=r}snapNewVertex(e,t){const r=t.editGeometryOperations.data.parts.at(-1),i=[];if(!r||r.vertices.length<2)return i;const{view:n}=this,s=C(e,t.spatialReference,l,n),o=r.vertices.at(-1);v(o.leftSegment)&&this._checkForSnappingCandidate(1,i,o.leftSegment,o,o.leftSegment.leftVertex,e,s,t);const a=r.vertices[0];return v(a.rightSegment)&&this._checkForSnappingCandidate(2,i,a.rightSegment,a,a.rightSegment.rightVertex,e,s,t),i}snapExistingVertex(e,t){const r=[],i=t.vertexHandle,{part:n}=i;if(n.vertices.length<3)return r;const{view:s}=this,o=C(e,t.spatialReference,l,s),a=i.leftSegment,c=i.rightSegment;if(v(a?.leftVertex.leftSegment)){const i=a.leftVertex.leftSegment;this._checkForSnappingCandidate(3,r,i,i.rightVertex,i.leftVertex,e,o,t)}if(v(c)&&v(c.rightVertex.rightSegment)){const i=c.rightVertex.rightSegment;this._checkForSnappingCandidate(3,r,i,i.leftVertex,i.rightVertex,e,o,t)}const g=n.getFirstVertex()?.rightSegment;return!c&&v(g)&&this._checkForSnappingCandidate(3,r,g,g.leftVertex,g.rightVertex,e,o,t),r}_checkForSnappingCandidate(e,t,r,i,n,s,o,a){if(!v(r)||!this.edgeExceedsShortLineThreshold(r,a))return;const c=this.view,g=f(i.pos,c,a),p=f(n.pos,c,a);y(P,p,g,s,a,this._geodesicLengthMeasurementUtils),this._checkForSnappingCandidateAlongProjectedRay(e,t,p,g,P,s,o,a)}_checkForSnappingCandidateAlongProjectedRay(e,t,r,a,g,p,f,V){const{spatialReference:v,pointer:_}=V,F=i(M,d(p),d(a)),w=n(g,F)/s(g),y=o(M,d(a),g,w),R=u(x(y[0],y[1],p[2]));if(j(f,C(R,v,l,this.view))>this.squaredProximityThreshold(_)||this.isVertical(R,a,V)||this.isVertical(a,r,V))return;const A=c(h(),a,g,Math.sign(w));t.push(new k({targetPoint:R,constraint:new m(a,S(A)),previousVertex:r,otherVertex:a,otherVertexType:1,selfSnappingType:e,isDraped:"on-the-ground"===V.elevationInfo?.mode}))}}function y(e,t,r,i,n,s){R(e,t,r,i,n,s)||A(e,t,r)}function R(i,n,s,o,{spatialReference:a},c){const p=_(n,s,a,a);if(null==p)return!1;const l=_(s,o,a,a);if(null==l)return!1;const m=Math.sign(e.shortestSignedDiff(p,l))*Math.PI*.5,f=t(p+m,"radians","geographic"),d=h(),u=c.geodesicDistance(s,o,a);return null!=u&&(F(d,s,a,r(u,"meters"),f,"geodesic"),g(i,d,s),!0)}function A(e,t,r){const n=i(M,d(r),d(t));p(e,n[1],-n[0],0)}const M=a(),P=h();export{w as RightAngleSnapper};