@arcgis/core 5.2.0-next.87 → 5.2.0-next.88

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 (632) hide show
  1. package/arcade/Dictionary.js +1 -1
  2. package/arcade/Feature.js +1 -1
  3. package/arcade/ImmutablePointArray.js +1 -1
  4. package/arcade/arcadeAsyncRuntime.js +1 -1
  5. package/arcade/arcadeCompiler.js +1 -1
  6. package/arcade/arcadeRuntime.js +1 -1
  7. package/arcade/containerUtils.js +1 -1
  8. package/arcade/debug.js +1 -1
  9. package/arcade/deepClone.js +1 -1
  10. package/arcade/featureset/actions/SpatialFilter.js +1 -1
  11. package/arcade/featureset/support/FeatureSet.js +1 -1
  12. package/arcade/functions/centroid.js +1 -1
  13. package/arcade/functions/date.js +1 -1
  14. package/arcade/functions/feature.js +1 -1
  15. package/arcade/functions/featuresetbase.js +1 -1
  16. package/arcade/functions/featuresetgeom.js +1 -1
  17. package/arcade/functions/featuresetstats.js +1 -1
  18. package/arcade/functions/featuresetstring.js +1 -1
  19. package/arcade/functions/fieldStats.js +1 -1
  20. package/arcade/functions/geomasync.js +1 -1
  21. package/arcade/functions/geometry.js +1 -1
  22. package/arcade/functions/geomsync.js +1 -1
  23. package/arcade/functions/knowledgegraph.js +1 -1
  24. package/arcade/functions/maths.js +1 -1
  25. package/arcade/functions/stats.js +1 -1
  26. package/arcade/functions/string.js +1 -1
  27. package/arcade/functions/track.js +1 -1
  28. package/arcade/geometry/adapters/accessor.js +2 -0
  29. package/arcade/geometry/adapters/dehydrated.js +2 -0
  30. package/arcade/geometry/adapters/gx.js +2 -0
  31. package/arcade/geometry/adapters/json.js +2 -0
  32. package/arcade/geometry/adapters/optimized.js +2 -0
  33. package/arcade/geometry/adapters/tuple.js +2 -0
  34. package/arcade/geometry/adapters/utils.js +2 -0
  35. package/arcade/geometry/arrayOfPointsConversions.js +2 -0
  36. package/arcade/geometry/constructors.js +1 -1
  37. package/arcade/geometry/functions.js +1 -1
  38. package/arcade/geometry/isSelfIntersecting.js +2 -0
  39. package/arcade/geometry/nearestCoordinate.js +2 -0
  40. package/arcade/geometry/nearestVertex.js +1 -1
  41. package/arcade/geometry/operators.js +1 -1
  42. package/arcade/geometry/operatorsWorker.js +1 -1
  43. package/arcade/geometry/rotate.js +1 -1
  44. package/arcade/geometry.js +2 -0
  45. package/arcade/languageUtils.js +1 -1
  46. package/arcade.js +1 -1
  47. package/arcgisGlobal.d.ts +1 -0
  48. package/assets/esri/core/workers/RemoteClient.js +1 -1
  49. package/assets/esri/core/workers/chunks/{0b8c9657975388f1e4c8.js → 00181785a180e934bf7c.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{01e648b258efa6408070.js → 0336f4f8498a22347720.js} +1 -1
  51. package/assets/esri/core/workers/chunks/0439d4f4dfd6e78be97e.js +1 -0
  52. package/assets/esri/core/workers/chunks/05393b23ab24126d4236.js +1 -0
  53. package/assets/esri/core/workers/chunks/08263c07d92c48806834.js +1 -0
  54. package/assets/esri/core/workers/chunks/09e01fd1c199be0c8e03.js +1 -0
  55. package/assets/esri/core/workers/chunks/{12d6d73ca1fa55640a4f.js → 0b4a7209b99227a842ad.js} +1 -1
  56. package/assets/esri/core/workers/chunks/{073224c6ac77dc9e97af.js → 0b7860a3f18d252b774a.js} +1 -1
  57. package/assets/esri/core/workers/chunks/0d95f72e1c07ab867d21.js +1 -0
  58. package/assets/esri/core/workers/chunks/0dbbac7a2378728571a7.js +1 -0
  59. package/assets/esri/core/workers/chunks/0f15468ffefd3e9a17b8.js +29 -0
  60. package/assets/esri/core/workers/chunks/13e92f6a9573a2818fb7.js +1 -0
  61. package/assets/esri/core/workers/chunks/19aa4072764937743bd8.js +1 -0
  62. package/assets/esri/core/workers/chunks/19e93d4d37018e3ee849.js +1 -0
  63. package/assets/esri/core/workers/chunks/{911f3a1b8dd4bc5c9782.js → 1bf5c0a4bc5a960a3fa2.js} +1 -1
  64. package/assets/esri/core/workers/chunks/1c378d489c5402888f76.js +1 -0
  65. package/assets/esri/core/workers/chunks/1d1e8d8b1fcf2d9f3dfc.js +1 -0
  66. package/assets/esri/core/workers/chunks/{e5c8f9fef88ca33624e9.js → 1e087fb13b7b0a5d6fec.js} +1 -1
  67. package/assets/esri/core/workers/chunks/1e192ac0533a5c0b5a7a.js +1 -0
  68. package/assets/esri/core/workers/chunks/1f9d6180a96d557838e9.js +1 -0
  69. package/assets/esri/core/workers/chunks/1fe077f57a087c0e9119.js +1 -0
  70. package/assets/esri/core/workers/chunks/212222b64039d436b9a6.js +1 -0
  71. package/assets/esri/core/workers/chunks/22c94f9a69b2157f8dbd.js +1 -0
  72. package/assets/esri/core/workers/chunks/25a2e02677a74834c8b5.js +1 -0
  73. package/assets/esri/core/workers/chunks/26ecc841396e5e719b6a.js +1 -0
  74. package/assets/esri/core/workers/chunks/{fcf7299e2ee904ab9882.js → 2724900f7992a79fc442.js} +1 -1
  75. package/assets/esri/core/workers/chunks/27c0bed59626c7f64125.js +1 -0
  76. package/assets/esri/core/workers/chunks/2bc3e7f394386fa75447.js +1 -0
  77. package/assets/esri/core/workers/chunks/2c9783e3b44986e86797.js +1 -0
  78. package/assets/esri/core/workers/chunks/2ceb07b125c84b51f02a.js +1 -0
  79. package/assets/esri/core/workers/chunks/2cf2f2842c19be84ab4d.js +1 -0
  80. package/assets/esri/core/workers/chunks/2d07d5a9ec67c39ef10c.js +1 -0
  81. package/assets/esri/core/workers/chunks/{a7c715648a07ed70b122.js → 2ec44ebc48beeba11201.js} +1 -1
  82. package/assets/esri/core/workers/chunks/2f2d699b072472fa710e.js +1 -0
  83. package/assets/esri/core/workers/chunks/2f3bbc1f7d4abbbeec2f.js +1 -0
  84. package/assets/esri/core/workers/chunks/304a36e862947fdb05c0.js +1 -0
  85. package/assets/esri/core/workers/chunks/30af0f7c4cfa541c9efd.js +1 -0
  86. package/assets/esri/core/workers/chunks/32f11b4aeae1ef00e466.js +1 -0
  87. package/assets/esri/core/workers/chunks/35d3e60d15294f268992.js +1 -0
  88. package/assets/esri/core/workers/chunks/37a2be4380796f14fe4e.js +1 -0
  89. package/assets/esri/core/workers/chunks/37adb55d9f83faad1712.js +1 -0
  90. package/assets/esri/core/workers/chunks/3869dca884d7ca6488f5.js +1 -0
  91. package/assets/esri/core/workers/chunks/3a9c6f58a1a065c14017.js +1 -0
  92. package/assets/esri/core/workers/chunks/3b552afffaa78bf4fe18.js +1 -0
  93. package/assets/esri/core/workers/chunks/{fe06cc2f90b2d551e4c1.js → 3bbd2d4a19c3b7ad82e4.js} +1 -1
  94. package/assets/esri/core/workers/chunks/3de07326da4c47cd2aab.js +1 -0
  95. package/assets/esri/core/workers/chunks/3f5234120d3a14186c1c.js +1 -0
  96. package/assets/esri/core/workers/chunks/{dbd6bbd3e834ff9d220e.js → 41cf6163758d28fb1968.js} +1 -1
  97. package/assets/esri/core/workers/chunks/466bb1b69aabaeabad6a.js +1 -0
  98. package/assets/esri/core/workers/chunks/47e60b2acec18ef37b6c.js +1 -0
  99. package/assets/esri/core/workers/chunks/4849849fc8330d05a8e6.js +1 -0
  100. package/assets/esri/core/workers/chunks/497c5a9c95e9a89ac217.js +1 -0
  101. package/assets/esri/core/workers/chunks/49d36e54644dc2966128.js +1 -0
  102. package/assets/esri/core/workers/chunks/4aefe6fd4d725a107758.js +1 -0
  103. package/assets/esri/core/workers/chunks/4b6f433022a6822706cb.js +1 -0
  104. package/assets/esri/core/workers/chunks/4d4ebb4e4d83c1123b63.js +1 -0
  105. package/assets/esri/core/workers/chunks/4ee99e654dad6f09abee.js +1 -0
  106. package/assets/esri/core/workers/chunks/4f0804429d8989aa4c51.js +1 -0
  107. package/assets/esri/core/workers/chunks/50525b617ef78086d3c7.js +1 -0
  108. package/assets/esri/core/workers/chunks/5235b9c21ac4156c2375.js +1 -0
  109. package/assets/esri/core/workers/chunks/52422500ca3d6cf2e596.js +1 -0
  110. package/assets/esri/core/workers/chunks/527b87fddf33bb5d519e.js +1 -0
  111. package/assets/esri/core/workers/chunks/55572cefc752b755cf0a.js +1 -0
  112. package/assets/esri/core/workers/chunks/{a4bae2396fae48b57047.js → 595edbc1e9bba47d5676.js} +1 -1
  113. package/assets/esri/core/workers/chunks/59cf23cc8f91b5bea31a.js +1 -0
  114. package/assets/esri/core/workers/chunks/5af16937904c06fb06f6.js +1 -0
  115. package/assets/esri/core/workers/chunks/5d7a5aa608ed6192b016.js +1 -0
  116. package/assets/esri/core/workers/chunks/5d9c92c4e60a4696fdad.js +1 -0
  117. package/assets/esri/core/workers/chunks/5ed7bc9e6cb7cdee92e2.js +1 -0
  118. package/assets/esri/core/workers/chunks/{272c8ccdbd3dcc14e99b.js → 5ed89c862eee1345e3af.js} +1 -1
  119. package/assets/esri/core/workers/chunks/5fbd7d8d8896a224fff3.js +1 -0
  120. package/assets/esri/core/workers/chunks/64ce2d060ae7cdd412cf.js +1 -0
  121. package/assets/esri/core/workers/chunks/65f4ca7201e7267bfc81.js +1 -0
  122. package/assets/esri/core/workers/chunks/67efdd296007a809586c.js +1 -0
  123. package/assets/esri/core/workers/chunks/691434d4c6a38e63d819.js +1 -0
  124. package/assets/esri/core/workers/chunks/{ba67aaa08e4f11e1140a.js → 696cb3bf167327d5b0b9.js} +1 -1
  125. package/assets/esri/core/workers/chunks/69700ed16727ed0c4e3a.js +1 -0
  126. package/assets/esri/core/workers/chunks/6a2d890640b2cd6c5ccb.js +1 -0
  127. package/assets/esri/core/workers/chunks/6a4f007f87d9f2a6fbc4.js +1 -0
  128. package/assets/esri/core/workers/chunks/{7343a44a2382a1d68497.js → 6b9dbf43c0659e55c539.js} +1 -1
  129. package/assets/esri/core/workers/chunks/6de5c6af62776e1b9776.js +1 -0
  130. package/assets/esri/core/workers/chunks/70dc25f721c0ac5f3660.js +1 -0
  131. package/assets/esri/core/workers/chunks/71308dca3fd05687e7bd.js +1 -0
  132. package/assets/esri/core/workers/chunks/75bddfe2be64379db8fd.js +1 -0
  133. package/assets/esri/core/workers/chunks/78085f804969c9282700.js +1 -0
  134. package/assets/esri/core/workers/chunks/7aa9b61ca9b66f30449f.js +1 -0
  135. package/assets/esri/core/workers/chunks/7c1f989ee3d13dfe7ebd.js +1 -0
  136. package/assets/esri/core/workers/chunks/7c56446184abcd14678b.js +1 -0
  137. package/assets/esri/core/workers/chunks/7ce9c84f90e9dd1deb38.js +1 -0
  138. package/assets/esri/core/workers/chunks/7f55a150e4da02786311.js +1 -0
  139. package/assets/esri/core/workers/chunks/7fc3231768ce79e375ae.js +1 -0
  140. package/assets/esri/core/workers/chunks/7febb434f2de2436435f.js +1 -0
  141. package/assets/esri/core/workers/chunks/847b02d188ece9b563ad.js +1 -0
  142. package/assets/esri/core/workers/chunks/903c7bd079888f65fef1.js +1 -0
  143. package/assets/esri/core/workers/chunks/{bdafd4f03585351cecc3.js → 909a85cb6e0e9a3c8567.js} +1 -1
  144. package/assets/esri/core/workers/chunks/9226205850e35b7fc610.js +1 -0
  145. package/assets/esri/core/workers/chunks/922c24b9bb68f4201b03.js +1 -0
  146. package/assets/esri/core/workers/chunks/9474c913e53f69679197.js +1 -0
  147. package/assets/esri/core/workers/chunks/94ddfe165ac25aef8229.js +1 -0
  148. package/assets/esri/core/workers/chunks/{75a2c43311f5f9058f62.js → 94f62ff81cc6fb83e73f.js} +1 -1
  149. package/assets/esri/core/workers/chunks/95ccac3734ac70387b03.js +1 -0
  150. package/assets/esri/core/workers/chunks/97c7dfd29ad4c2966cb4.js +1 -0
  151. package/assets/esri/core/workers/chunks/{1354b8442c2c501238f1.js → 986c5024f22bbfc49aba.js} +1 -1
  152. package/assets/esri/core/workers/chunks/9b81bd62a2c72f592db1.js +1 -0
  153. package/assets/esri/core/workers/chunks/{62596065747abce1964d.js → 9b8e33985310f281f084.js} +1 -1
  154. package/assets/esri/core/workers/chunks/9e2b3754a76e0dd4a94a.js +1 -0
  155. package/assets/esri/core/workers/chunks/9eb3e6800f5034f1593f.js +1 -0
  156. package/assets/esri/core/workers/chunks/a0300fac6a06e7d89a52.js +1 -0
  157. package/assets/esri/core/workers/chunks/a03e7333e3328036f478.js +1 -0
  158. package/assets/esri/core/workers/chunks/a0565137027c83108953.js +1 -0
  159. package/assets/esri/core/workers/chunks/a3b403f8acb90af19adb.js +1 -0
  160. package/assets/esri/core/workers/chunks/a4596f028758649da099.js +1 -0
  161. package/assets/esri/core/workers/chunks/a46ac0be9aabc4cfedc7.js +1 -0
  162. package/assets/esri/core/workers/chunks/a4a22149077c7780481c.js +1 -0
  163. package/assets/esri/core/workers/chunks/a6ab627e965fe7e5bd52.js +1 -0
  164. package/assets/esri/core/workers/chunks/a7954ad55a241af9064f.js +1 -0
  165. package/assets/esri/core/workers/chunks/a8b878c12cb1a6ea012b.js +1 -0
  166. package/assets/esri/core/workers/chunks/{ec0803cfa5051c4d300d.js → aa0ef4493a7e9bed159f.js} +1 -1
  167. package/assets/esri/core/workers/chunks/aa8ab28e0c1ae3b55ac0.js +1 -0
  168. package/assets/esri/core/workers/chunks/ab9927a32350063cb5f0.js +1 -0
  169. package/assets/esri/core/workers/chunks/adc2620cbe735532004d.js +1 -0
  170. package/assets/esri/core/workers/chunks/add834f867900a7091d2.js +1 -0
  171. package/assets/esri/core/workers/chunks/{bbf4c2ee4d56bb0f1a81.js → afa6b74d9ca9ed0154af.js} +1 -1
  172. package/assets/esri/core/workers/chunks/b0e25ccb5a1e57a82628.js +1 -0
  173. package/assets/esri/core/workers/chunks/b17a9853250ab626d58d.js +1 -0
  174. package/assets/esri/core/workers/chunks/b19cff0e43fab2632660.js +1 -0
  175. package/assets/esri/core/workers/chunks/b2e2234fdf8e05bc3312.js +1 -0
  176. package/assets/esri/core/workers/chunks/b6063d1755def00d4889.js +1 -0
  177. package/assets/esri/core/workers/chunks/{39c0a3eb6a870953d530.js → b6f67302d0d5d57add66.js} +1 -1
  178. package/assets/esri/core/workers/chunks/bb56ab53c5a10c9518a6.js +1 -0
  179. package/assets/esri/core/workers/chunks/bd2602195e265f8fdb15.js +1 -0
  180. package/assets/esri/core/workers/chunks/{f762f0f6c83748d8e328.js → bee411f08e2a9499f8f5.js} +1 -1
  181. package/assets/esri/core/workers/chunks/bf357afbabaa8dec4d75.js +1 -0
  182. package/assets/esri/core/workers/chunks/bf7875fda48b15271a10.js +1 -0
  183. package/assets/esri/core/workers/chunks/bfa59005a9b191d18546.js +1 -0
  184. package/assets/esri/core/workers/chunks/bfb8fc6b940bd5510e29.js +1 -0
  185. package/assets/esri/core/workers/chunks/{b311658b8a223efe35d6.js → c0e073a77484b0dfd383.js} +1 -1
  186. package/assets/esri/core/workers/chunks/c13aa45ccd5efb662f88.js +1 -0
  187. package/assets/esri/core/workers/chunks/c176df477bbbbc9c6922.js +1 -0
  188. package/assets/esri/core/workers/chunks/c35553d07ad169910742.js +1 -0
  189. package/assets/esri/core/workers/chunks/c4f582dec07895d3bb93.js +1 -0
  190. package/assets/esri/core/workers/chunks/c4fef90cf08bbe4f0bb5.js +1 -0
  191. package/assets/esri/core/workers/chunks/c5c2fed38e0ccf84f1fa.js +1 -0
  192. package/assets/esri/core/workers/chunks/c80277a313205853a857.js +1 -0
  193. package/assets/esri/core/workers/chunks/c91042f8bf886056a29c.js +1 -0
  194. package/assets/esri/core/workers/chunks/ca204c110438f7315790.js +1 -0
  195. package/assets/esri/core/workers/chunks/ca36d85a47179d95f2fc.js +1 -0
  196. package/assets/esri/core/workers/chunks/cb6fb04fe5c8d90d4196.js +1 -0
  197. package/assets/esri/core/workers/chunks/ccaeabc3be07f3c96f50.js +1 -0
  198. package/assets/esri/core/workers/chunks/{85f459297b0214141d43.js → cd02a6078443b8f63927.js} +1 -1
  199. package/assets/esri/core/workers/chunks/{e64ccdb8328eb6514e59.js → cd8b3c2fc27c239f9954.js} +1 -1
  200. package/assets/esri/core/workers/chunks/{3a36c132ceddef3d15c8.js → cdbcc4cd9145dd93db49.js} +1 -1
  201. package/assets/esri/core/workers/chunks/{e90feee1756a2209f93f.js → ce9fe1a89b474f9e7ee7.js} +1 -1
  202. package/assets/esri/core/workers/chunks/d04a01dc1b4947478264.js +1 -0
  203. package/assets/esri/core/workers/chunks/d0cf9ff48f051adbd455.js +1 -0
  204. package/assets/esri/core/workers/chunks/d119671a32a050517cca.js +1 -0
  205. package/assets/esri/core/workers/chunks/d26be8313526ecea9c68.js +1 -0
  206. package/assets/esri/core/workers/chunks/d270b49c037085503016.js +1 -0
  207. package/assets/esri/core/workers/chunks/{f5eee6e548bb24b5a003.js → d30a7fc8dab4ebb8893b.js} +1 -1
  208. package/assets/esri/core/workers/chunks/d344c3fd9f6b113bbcd7.js +1 -0
  209. package/assets/esri/core/workers/chunks/d36bbda9b7261534568f.js +1 -0
  210. package/assets/esri/core/workers/chunks/d4b0012ae1d3b8a9ba01.js +1 -0
  211. package/assets/esri/core/workers/chunks/d6b87134e0d120c68d2f.js +1 -0
  212. package/assets/esri/core/workers/chunks/d6f7aa280f1bd201d4ef.js +1 -0
  213. package/assets/esri/core/workers/chunks/da9aacdb0b4a04f42fb8.js +1 -0
  214. package/assets/esri/core/workers/chunks/daf7b647bd960d8bad56.js +1 -0
  215. package/assets/esri/core/workers/chunks/{10ac92dcd3738ec23dfb.js → db04c1bad40d068306ba.js} +1 -1
  216. package/assets/esri/core/workers/chunks/{3427f0c026301bcf7272.js → db180f8d25471cfa48af.js} +1 -1
  217. package/assets/esri/core/workers/chunks/db4c9a9103e979292948.js +1 -0
  218. package/assets/esri/core/workers/chunks/dceaa6b68eee090073b1.js +1 -0
  219. package/assets/esri/core/workers/chunks/ddf284648a73b6993737.js +1 -0
  220. package/assets/esri/core/workers/chunks/dfbe0efe453587ec5eb2.js +1 -0
  221. package/assets/esri/core/workers/chunks/e1682e94cc714197ebb4.js +1 -0
  222. package/assets/esri/core/workers/chunks/e2576c37cf13dc421f69.js +1 -0
  223. package/assets/esri/core/workers/chunks/e32a14770e036fce79d9.js +1 -0
  224. package/assets/esri/core/workers/chunks/e370a3337b3c90240e73.js +1 -0
  225. package/assets/esri/core/workers/chunks/e39bccc000c768120a32.js +1 -0
  226. package/assets/esri/core/workers/chunks/e40e08029325f43452d0.js +1 -0
  227. package/assets/esri/core/workers/chunks/{0d7d54e74b5639a0be6e.js → e707534a700a2de687ca.js} +1 -1
  228. package/assets/esri/core/workers/chunks/e823c9ccb7bc348d8824.js +1 -0
  229. package/assets/esri/core/workers/chunks/e88eee4c2fc4229c2a8b.js +1 -0
  230. package/assets/esri/core/workers/chunks/e9f29019aa78f07ace66.js +1 -0
  231. package/assets/esri/core/workers/chunks/ea75c23c44452f45a949.js +1 -0
  232. package/assets/esri/core/workers/chunks/ea91c57a0b31f3f65ee5.js +1 -0
  233. package/assets/esri/core/workers/chunks/eacf216dcd6397c7bd7f.js +1 -0
  234. package/assets/esri/core/workers/chunks/ee77999df3785468b2b6.js +1 -0
  235. package/assets/esri/core/workers/chunks/ef851a2cff76fd211c07.js +1 -0
  236. package/assets/esri/core/workers/chunks/eff359210893239ecec3.js +1 -0
  237. package/assets/esri/core/workers/chunks/f106cc7f559856f69b9f.js +1 -0
  238. package/assets/esri/core/workers/chunks/f210cd8afb86b6eaf7a2.js +1 -0
  239. package/assets/esri/core/workers/chunks/f247f3c5148fa0237a7c.js +1 -0
  240. package/assets/esri/core/workers/chunks/f250a7aa571889c5ad4b.js +1 -0
  241. package/assets/esri/core/workers/chunks/{a26dc2647a15b830390e.js → f253875feb11883deb84.js} +1 -1
  242. package/assets/esri/core/workers/chunks/f31330d628d7e741bf5b.js +1 -0
  243. package/assets/esri/core/workers/chunks/f3d57c5b9dffd12e45b4.js +1 -0
  244. package/assets/esri/core/workers/chunks/f43ae1c2f89e1c4396cc.js +1 -0
  245. package/assets/esri/core/workers/chunks/f60ed579981913d44675.js +1 -0
  246. package/assets/esri/core/workers/chunks/{147d1e7e2852a4197e5f.js → f665fb4c5633e0a459d8.js} +1 -1
  247. package/assets/esri/core/workers/chunks/f66e597e524b26e61cd3.js +1 -0
  248. package/assets/esri/core/workers/chunks/{bec140a69cfdb0519680.js → f74c7cbe4bd12f73ae90.js} +1 -1
  249. package/assets/esri/core/workers/chunks/{e6f6b38eda34708d61c5.js → f7f2102b16d201e5f531.js} +1 -1
  250. package/assets/esri/core/workers/chunks/f82ae237452b97cfc024.js +1 -0
  251. package/assets/esri/core/workers/chunks/f8f7b86bbd62106bc3d4.js +1 -0
  252. package/assets/esri/core/workers/chunks/f9a4387f850d85c44ca5.js +1 -0
  253. package/assets/esri/core/workers/chunks/fbc7576ed12964059da6.js +1 -0
  254. package/assets/esri/core/workers/chunks/fc4a5996fc03f6c32030.js +1 -0
  255. package/assets/esri/core/workers/chunks/fdd0e6d9927d3c43b0d3.js +1 -0
  256. package/assets/esri/core/workers/chunks/fddcb8be714ad18ad0c8.js +1 -0
  257. package/assets/esri/core/workers/chunks/{baa46edd87e97f922128.js → ffe749d790320dddfa74.js} +1 -1
  258. package/chunks/Bufferer-CclWhXVb.js +1 -1
  259. package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
  260. package/chunks/Envelope.js +1 -1
  261. package/chunks/GeodeticDistanceCalculator-zRp89-dW.js +1 -1
  262. package/chunks/GeodeticUtils.js +1 -1
  263. package/chunks/GeographicTransformation.js +1 -1
  264. package/chunks/Geometry.js +1 -1
  265. package/chunks/GlowComposite.glsl.js +9 -7
  266. package/chunks/MultiPathImpl.js +1 -1
  267. package/chunks/OperatorCentroid2D.js +1 -1
  268. package/chunks/OperatorContains.js +2 -0
  269. package/chunks/OperatorCrosses.js +1 -1
  270. package/chunks/OperatorCut.js +1 -1
  271. package/chunks/OperatorDisjoint.js +2 -0
  272. package/chunks/OperatorDistance.js +2 -0
  273. package/chunks/OperatorEquals.js +2 -0
  274. package/chunks/OperatorGeodesicBuffer.js +1 -1
  275. package/chunks/OperatorGeodeticArea.js +1 -1
  276. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  277. package/chunks/OperatorGeodeticLength.js +1 -1
  278. package/chunks/OperatorGraphicBuffer.js +1 -1
  279. package/chunks/OperatorIntegrate.js +1 -1
  280. package/chunks/OperatorIntersects.js +1 -1
  281. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  282. package/chunks/OperatorOverlaps.js +1 -1
  283. package/chunks/OperatorProximity.js +1 -1
  284. package/chunks/OperatorProximityGeodesic.js +1 -1
  285. package/chunks/OperatorRelate.js +2 -0
  286. package/chunks/OperatorShapePreservingLength.js +1 -1
  287. package/chunks/OperatorShapePreservingProject.js +1 -1
  288. package/chunks/OperatorSimplifyOGC.js +1 -1
  289. package/chunks/OperatorTouches.js +1 -1
  290. package/chunks/OperatorWithin.js +1 -1
  291. package/chunks/Point2D.js +1 -1
  292. package/chunks/ProjectionTransformation.js +1 -1
  293. package/chunks/SideCalculator2D-DX0718xq.js +1 -1
  294. package/chunks/UnitFactory.js +1 -1
  295. package/chunks/aiServices.js +1 -1
  296. package/chunks/array.js +1 -1
  297. package/chunks/languageUtils.js +1 -1
  298. package/config.js +1 -1
  299. package/core/sql/TimeOnly.js +1 -1
  300. package/core/units.js +1 -1
  301. package/editing/sharedTemplates/executor/builders/bufferLineToPolygon.js +1 -1
  302. package/editing/sharedTemplates/executor/builders/bufferPointToPolygon.js +1 -1
  303. package/editing/sharedTemplates/executor/builders/bufferPolygonToPolygon.js +1 -1
  304. package/editing/sharedTemplates/executor/builders/pointAtIntersectionVerticesOfLine.js +1 -1
  305. package/editing/sharedTemplates/executor/builders/support/offsetUtils.js +1 -1
  306. package/form/elements/inputs/inputUtils.js +1 -1
  307. package/geometry/operators/areaOperator.js +1 -1
  308. package/geometry/operators/bufferOperator.js +1 -1
  309. package/geometry/operators/centroidOperator.js +1 -1
  310. package/geometry/operators/clipOperator.js +1 -1
  311. package/geometry/operators/containsOperator.js +1 -1
  312. package/geometry/operators/convexHullOperator.js +1 -1
  313. package/geometry/operators/crossesOperator.js +1 -1
  314. package/geometry/operators/cutOperator.js +1 -1
  315. package/geometry/operators/densifyOperator.js +1 -1
  316. package/geometry/operators/differenceOperator.js +1 -1
  317. package/geometry/operators/disjointOperator.js +1 -1
  318. package/geometry/operators/distanceOperator.js +1 -1
  319. package/geometry/operators/equalsOperator.js +1 -1
  320. package/geometry/operators/generalizeOperator.js +1 -1
  321. package/geometry/operators/geodesicBufferOperator.js +1 -1
  322. package/geometry/operators/geodeticAreaOperator.js +1 -1
  323. package/geometry/operators/geodeticDensifyOperator.js +1 -1
  324. package/geometry/operators/geodeticDistanceOperator.js +1 -1
  325. package/geometry/operators/geodeticLengthOperator.js +1 -1
  326. package/geometry/operators/gx/operatorAutoComplete.js +1 -1
  327. package/geometry/operators/gx/operatorBuffer.js +1 -1
  328. package/geometry/operators/gx/operatorDifference.js +1 -1
  329. package/geometry/operators/gx/operatorIntersection.js +1 -1
  330. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  331. package/geometry/operators/gx/operatorLinesToPolygons.js +1 -1
  332. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  333. package/geometry/operators/gx/operatorSimplify.js +1 -1
  334. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  335. package/geometry/operators/gx/operatorUnion.js +1 -1
  336. package/geometry/operators/intersectionOperator.js +1 -1
  337. package/geometry/operators/intersectsOperator.js +1 -1
  338. package/geometry/operators/json/containsOperator.js +1 -1
  339. package/geometry/operators/json/crossesOperator.js +1 -1
  340. package/geometry/operators/json/disjointOperator.js +1 -1
  341. package/geometry/operators/json/intersectsOperator.js +1 -1
  342. package/geometry/operators/json/overlapsOperator.js +1 -1
  343. package/geometry/operators/json/touchesOperator.js +1 -1
  344. package/geometry/operators/json/unionOperator.js +1 -1
  345. package/geometry/operators/json/withinOperator.js +1 -1
  346. package/geometry/operators/labelPointOperator.js +1 -1
  347. package/geometry/operators/lengthOperator.js +1 -1
  348. package/geometry/operators/multiPartToSinglePartOperator.js +1 -1
  349. package/geometry/operators/offsetOperator.js +1 -1
  350. package/geometry/operators/overlapsOperator.js +1 -1
  351. package/geometry/operators/proximityOperator.js +1 -1
  352. package/geometry/operators/relateOperator.js +1 -1
  353. package/geometry/operators/reshapeOperator.js +1 -1
  354. package/geometry/operators/simplifyOGCOperator.js +1 -1
  355. package/geometry/operators/simplifyOperator.js +1 -1
  356. package/geometry/operators/support/apiConverter.js +1 -1
  357. package/geometry/operators/support/jsonConverter.js +1 -1
  358. package/geometry/operators/support/projectionTransformation.js +1 -1
  359. package/geometry/operators/symmetricDifferenceOperator.js +1 -1
  360. package/geometry/operators/touchesOperator.js +1 -1
  361. package/geometry/operators/unionOperator.js +1 -1
  362. package/geometry/operators/withinOperator.js +1 -1
  363. package/geometry/support/curves/circleUtils.js +1 -1
  364. package/geometry/support/curves/ellipticArc7Utils.js +1 -1
  365. package/geometry/support/webMercatorUtils.js +1 -1
  366. package/kernel.js +1 -1
  367. package/layers/VectorTileLayer.js +1 -1
  368. package/layers/graphics/hydratedFeatures.js +1 -1
  369. package/layers/mixins/DataSeriesLayer.js +1 -1
  370. package/layers/support/csvUtils.js +1 -1
  371. package/layers/support/fieldUtils.js +1 -1
  372. package/layers/video/VideoController.js +1 -1
  373. package/package.json +3 -3
  374. package/support/ArcadeExpression.js +1 -1
  375. package/support/arcadeUtils.js +1 -1
  376. package/support/loadArcade.js +1 -1
  377. package/support/revision.js +1 -1
  378. package/support/tests/serviceMockDependencies.js +1 -1
  379. package/views/2d/analysis/AreaMeasurement/AreaMeasurementController.js +1 -1
  380. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementController.js +1 -1
  381. package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
  382. package/views/2d/layers/support/RouteLayerWaypointVisualization.js +1 -1
  383. package/views/3d/analysis/LineOfSight/LineOfSightConfiguration.js +1 -1
  384. package/views/3d/analysis/LineOfSight/LineOfSightManipulators.js +1 -1
  385. package/views/3d/analysis/LineOfSight/LineOfSightVisualization.js +1 -1
  386. package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
  387. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementController.js +1 -1
  388. package/views/3d/input/SceneInputManager.js +1 -1
  389. package/views/3d/input/handlers/RopePullNavigation.js +2 -0
  390. package/views/3d/layers/TiledLayerView3D.js +1 -1
  391. package/views/3d/layers/graphics/featureExpressionInfoUtils.js +1 -1
  392. package/views/3d/layers/i3s/I3SNode.js +1 -1
  393. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  394. package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
  395. package/views/3d/state/controllers/RopePullController.js +2 -0
  396. package/views/3d/state/utils/ropePullUtils.js +1 -1
  397. package/views/3d/support/ElevationAgnosticVisibility.js +1 -1
  398. package/views/3d/support/sphericalTileUtils.js +1 -1
  399. package/views/3d/terrain/PlanarPatch.js +1 -1
  400. package/views/3d/terrain/SphericalPatch.js +1 -1
  401. package/views/3d/terrain/Tile.js +1 -1
  402. package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
  403. package/views/SelectionManager.js +1 -1
  404. package/views/draw/DrawTool.js +1 -1
  405. package/views/draw/support/createUtils.js +1 -1
  406. package/views/support/GeometryWorker.js +1 -1
  407. package/views/support/selectionUtils.js +1 -1
  408. package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
  409. package/widgets/BatchAttributeForm/expressions/ArcadeExecutorProvider.js +1 -1
  410. package/widgets/BatchAttributeForm/templates/FieldElementTemplate.js +1 -1
  411. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  412. package/widgets/BatchAttributeForm/templates/support/hashElementTemplate.js +1 -1
  413. package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
  414. package/widgets/OrientedImageryViewer/adapters/view/MapViewAdapter.js +1 -1
  415. package/widgets/OrientedImageryViewer/components/ImageViewerViewModel.js +1 -1
  416. package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
  417. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  418. package/widgets/OrientedImageryViewer/support/panConstraint.js +1 -1
  419. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  420. package/widgets/OrientedImageryViewer/videoViewerUtils.js +1 -1
  421. package/widgets/UtilityNetworkTrace/support/GeometryHandler.js +1 -1
  422. package/widgets/support/SelectionList/selectionListUtils.d.ts +58 -0
  423. package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
  424. package/widgets/support/Selector2D/selectorUtils.js +1 -1
  425. package/arcade/kernel.js +0 -2
  426. package/assets/esri/core/workers/chunks/01b7babaefe6500fd6eb.js +0 -1
  427. package/assets/esri/core/workers/chunks/06e109e92de7fa0956e3.js +0 -1
  428. package/assets/esri/core/workers/chunks/0775d1e3034d5e7ef7bc.js +0 -1
  429. package/assets/esri/core/workers/chunks/0993e51d3a9701ed2198.js +0 -1
  430. package/assets/esri/core/workers/chunks/09a0a1e794ddff65aa08.js +0 -1
  431. package/assets/esri/core/workers/chunks/0e57d33bd202d0972207.js +0 -1
  432. package/assets/esri/core/workers/chunks/114ba901fd319ce87dc6.js +0 -1
  433. package/assets/esri/core/workers/chunks/151bac9e519a3b821baf.js +0 -1
  434. package/assets/esri/core/workers/chunks/156f85ac1885464f0072.js +0 -1
  435. package/assets/esri/core/workers/chunks/180eebd8b7badc2840c9.js +0 -1
  436. package/assets/esri/core/workers/chunks/19cb8963d5ec2246357b.js +0 -1
  437. package/assets/esri/core/workers/chunks/19d4ecee1c161ac0f33c.js +0 -1
  438. package/assets/esri/core/workers/chunks/19ece9f5313f53384cac.js +0 -1
  439. package/assets/esri/core/workers/chunks/1d770e8f0fe57d937daa.js +0 -1
  440. package/assets/esri/core/workers/chunks/1dd22b8df6a52277c64b.js +0 -1
  441. package/assets/esri/core/workers/chunks/1ede298ab815e9ad625c.js +0 -1
  442. package/assets/esri/core/workers/chunks/208bc524bd1e0d3aab79.js +0 -1
  443. package/assets/esri/core/workers/chunks/20a4ae83542c7d39cf0f.js +0 -1
  444. package/assets/esri/core/workers/chunks/21071ab3d7b2771406ae.js +0 -1
  445. package/assets/esri/core/workers/chunks/21bfa89363104f041101.js +0 -1
  446. package/assets/esri/core/workers/chunks/21d0a4d6639d32278f11.js +0 -1
  447. package/assets/esri/core/workers/chunks/22a75fdc6ba60213a870.js +0 -1
  448. package/assets/esri/core/workers/chunks/22e004ed97e06536ecef.js +0 -1
  449. package/assets/esri/core/workers/chunks/23942712a3f6290e0fdb.js +0 -1
  450. package/assets/esri/core/workers/chunks/242287de82586d42f0a4.js +0 -1
  451. package/assets/esri/core/workers/chunks/25cb5086eaa412f6820b.js +0 -1
  452. package/assets/esri/core/workers/chunks/26c8ed0aef59ed6d5267.js +0 -1
  453. package/assets/esri/core/workers/chunks/2742d62fceaf0736aef0.js +0 -1
  454. package/assets/esri/core/workers/chunks/276eba546dc8774076ee.js +0 -1
  455. package/assets/esri/core/workers/chunks/28e02b213da9e682d3dc.js +0 -29
  456. package/assets/esri/core/workers/chunks/2d8195231cb16247f198.js +0 -1
  457. package/assets/esri/core/workers/chunks/2db1227ecd421728630d.js +0 -1
  458. package/assets/esri/core/workers/chunks/2ddc9c9ff6ec243d85e2.js +0 -1
  459. package/assets/esri/core/workers/chunks/2e712154ebb895d96ba1.js +0 -1
  460. package/assets/esri/core/workers/chunks/2f2df51d4976ae65edae.js +0 -1
  461. package/assets/esri/core/workers/chunks/32d31fd4cffdf5a80acb.js +0 -1
  462. package/assets/esri/core/workers/chunks/33aaa5a49e396a0aca47.js +0 -1
  463. package/assets/esri/core/workers/chunks/35622088727e120c93b9.js +0 -1
  464. package/assets/esri/core/workers/chunks/3714cc26f446c4d9cc2c.js +0 -1
  465. package/assets/esri/core/workers/chunks/3722d40d161d60370936.js +0 -1
  466. package/assets/esri/core/workers/chunks/3ac4cfeb1af12a9dc27d.js +0 -1
  467. package/assets/esri/core/workers/chunks/3b009c05eaec5a7048a8.js +0 -1
  468. package/assets/esri/core/workers/chunks/3b376318df4ff8519370.js +0 -1
  469. package/assets/esri/core/workers/chunks/3bf37fd3280f4891c76b.js +0 -1
  470. package/assets/esri/core/workers/chunks/3d18a10a1ecfabe92db3.js +0 -1
  471. package/assets/esri/core/workers/chunks/3de20165796fa4f76728.js +0 -1
  472. package/assets/esri/core/workers/chunks/3fbd4c7e25440c4713f2.js +0 -1
  473. package/assets/esri/core/workers/chunks/407dba2be21255eb47fc.js +0 -1
  474. package/assets/esri/core/workers/chunks/44b1a4e8a65221ad3808.js +0 -1
  475. package/assets/esri/core/workers/chunks/48b31b8534e7bfe42976.js +0 -1
  476. package/assets/esri/core/workers/chunks/48f6af09436723f2d861.js +0 -1
  477. package/assets/esri/core/workers/chunks/49e37f653b81f9e4f7cc.js +0 -1
  478. package/assets/esri/core/workers/chunks/4b4221a869b3f0d517fa.js +0 -1
  479. package/assets/esri/core/workers/chunks/4b86bcde5992eb752ab0.js +0 -1
  480. package/assets/esri/core/workers/chunks/4b9095e2bd060efd47c4.js +0 -1
  481. package/assets/esri/core/workers/chunks/5084de4d0d4961b63ab7.js +0 -1
  482. package/assets/esri/core/workers/chunks/51a8a47aac1d8d22ba9d.js +0 -1
  483. package/assets/esri/core/workers/chunks/5324e4feb78203204c0c.js +0 -1
  484. package/assets/esri/core/workers/chunks/5536cee0dfc183584a9b.js +0 -1
  485. package/assets/esri/core/workers/chunks/58d10928959ae1e2e8d9.js +0 -1
  486. package/assets/esri/core/workers/chunks/597a8e3d9e458298fdd3.js +0 -1
  487. package/assets/esri/core/workers/chunks/5a006ff759fad9fc25cb.js +0 -1
  488. package/assets/esri/core/workers/chunks/60be6de19c5659091d8f.js +0 -1
  489. package/assets/esri/core/workers/chunks/61a38237e163b39520e5.js +0 -1
  490. package/assets/esri/core/workers/chunks/61fcdba6f2097378dce5.js +0 -1
  491. package/assets/esri/core/workers/chunks/6561c01c67db1f4c546e.js +0 -1
  492. package/assets/esri/core/workers/chunks/65eff0ae773505495f21.js +0 -1
  493. package/assets/esri/core/workers/chunks/67452ba9e87962b9e01e.js +0 -1
  494. package/assets/esri/core/workers/chunks/68195277046861ed39a7.js +0 -1
  495. package/assets/esri/core/workers/chunks/68705692335d57522030.js +0 -1
  496. package/assets/esri/core/workers/chunks/6a2a4da3a1cd64ff576f.js +0 -1
  497. package/assets/esri/core/workers/chunks/6af1680771fd8ae8c7dc.js +0 -1
  498. package/assets/esri/core/workers/chunks/6c367de583e0e657ca3a.js +0 -1
  499. package/assets/esri/core/workers/chunks/6d2021a0f0c9a3c6a0e6.js +0 -1
  500. package/assets/esri/core/workers/chunks/6db4a4f9a9ce7cc738d0.js +0 -1
  501. package/assets/esri/core/workers/chunks/6f2a9259240769c7cd6e.js +0 -1
  502. package/assets/esri/core/workers/chunks/724260e36efea90585f4.js +0 -1
  503. package/assets/esri/core/workers/chunks/74ae1222787389d5fcaa.js +0 -1
  504. package/assets/esri/core/workers/chunks/74bfaa98da6c5d375f05.js +0 -1
  505. package/assets/esri/core/workers/chunks/7a68a16f7fea712b9fd6.js +0 -1
  506. package/assets/esri/core/workers/chunks/7b2174b19d06c16715f0.js +0 -1
  507. package/assets/esri/core/workers/chunks/7d8e59ad438fb34b476d.js +0 -1
  508. package/assets/esri/core/workers/chunks/7eb94fc75926bc739233.js +0 -1
  509. package/assets/esri/core/workers/chunks/80795118467fb31ea4ed.js +0 -1
  510. package/assets/esri/core/workers/chunks/820c530b8765ecb1f36e.js +0 -1
  511. package/assets/esri/core/workers/chunks/830daaca32352da6eebe.js +0 -1
  512. package/assets/esri/core/workers/chunks/852649460d664b0a1a1d.js +0 -1
  513. package/assets/esri/core/workers/chunks/85c538bf1209f0da1f8e.js +0 -1
  514. package/assets/esri/core/workers/chunks/8c2921081ca3e7fd0385.js +0 -1
  515. package/assets/esri/core/workers/chunks/8db3fd97e8eccd3ba1db.js +0 -1
  516. package/assets/esri/core/workers/chunks/8e225dd0319672103561.js +0 -1
  517. package/assets/esri/core/workers/chunks/8e79a84e224d05204e7d.js +0 -1
  518. package/assets/esri/core/workers/chunks/8e9aff66a2d4e2cc102b.js +0 -1
  519. package/assets/esri/core/workers/chunks/917318f8e186f466dc52.js +0 -1
  520. package/assets/esri/core/workers/chunks/9267f6a65c2245696eac.js +0 -1
  521. package/assets/esri/core/workers/chunks/958e161634b5bfd50625.js +0 -1
  522. package/assets/esri/core/workers/chunks/9658b46a7111cda53b0d.js +0 -1
  523. package/assets/esri/core/workers/chunks/974bcaf2a059b8cfb153.js +0 -1
  524. package/assets/esri/core/workers/chunks/99881d0a6c2490a16268.js +0 -1
  525. package/assets/esri/core/workers/chunks/99980c944acb8ff88d6a.js +0 -1
  526. package/assets/esri/core/workers/chunks/9c227785f4454d3966ea.js +0 -1
  527. package/assets/esri/core/workers/chunks/9d61d9136f3d00aab530.js +0 -1
  528. package/assets/esri/core/workers/chunks/9df2685583393a87df2d.js +0 -1
  529. package/assets/esri/core/workers/chunks/9e840a71906c4deef776.js +0 -1
  530. package/assets/esri/core/workers/chunks/9ee6e8a6b9bfda758c21.js +0 -1
  531. package/assets/esri/core/workers/chunks/a03f4605bde69bfb6d41.js +0 -1
  532. package/assets/esri/core/workers/chunks/a327843cee2057ee76c0.js +0 -1
  533. package/assets/esri/core/workers/chunks/a557347fb313df6fcc79.js +0 -1
  534. package/assets/esri/core/workers/chunks/a8da0728a12fc46dca23.js +0 -1
  535. package/assets/esri/core/workers/chunks/a9ea28e0f22cfe3ccf92.js +0 -1
  536. package/assets/esri/core/workers/chunks/aae92f23b38ae22dd8bf.js +0 -1
  537. package/assets/esri/core/workers/chunks/ad3714da9c90d7471385.js +0 -1
  538. package/assets/esri/core/workers/chunks/b047f9e9ba26037657ed.js +0 -1
  539. package/assets/esri/core/workers/chunks/b1323800119bd5c1759b.js +0 -1
  540. package/assets/esri/core/workers/chunks/b18c35f25da18a3219d7.js +0 -1
  541. package/assets/esri/core/workers/chunks/b1f68ee65cce457d7b5b.js +0 -1
  542. package/assets/esri/core/workers/chunks/b2d6fd436981c890152f.js +0 -1
  543. package/assets/esri/core/workers/chunks/b3c518ca8679fbe16ece.js +0 -1
  544. package/assets/esri/core/workers/chunks/b4b4fe06364bea9b0750.js +0 -1
  545. package/assets/esri/core/workers/chunks/b61b7005edd9ced925e9.js +0 -1
  546. package/assets/esri/core/workers/chunks/b661aae7e3ce955a783e.js +0 -1
  547. package/assets/esri/core/workers/chunks/b66ebe53bd879aa9de57.js +0 -1
  548. package/assets/esri/core/workers/chunks/b8ca80134abfcc692244.js +0 -1
  549. package/assets/esri/core/workers/chunks/bbdf10d76d852072c878.js +0 -1
  550. package/assets/esri/core/workers/chunks/bbeb61d9302323bae9fb.js +0 -1
  551. package/assets/esri/core/workers/chunks/bbfd2b4af8e498b61af9.js +0 -1
  552. package/assets/esri/core/workers/chunks/bddd5aa7a14cd45ff91c.js +0 -1
  553. package/assets/esri/core/workers/chunks/be31c2cb97f664a54306.js +0 -1
  554. package/assets/esri/core/workers/chunks/be4319827db91aa71bf5.js +0 -1
  555. package/assets/esri/core/workers/chunks/bef32acf368b4d5aba37.js +0 -1
  556. package/assets/esri/core/workers/chunks/c1568bcd3f04014152e1.js +0 -1
  557. package/assets/esri/core/workers/chunks/c1a7c475ce0c59ffa75a.js +0 -1
  558. package/assets/esri/core/workers/chunks/c229a4eedda468c914a9.js +0 -1
  559. package/assets/esri/core/workers/chunks/c2b2942456f1b10d0e96.js +0 -1
  560. package/assets/esri/core/workers/chunks/c308d8f419ba63c583e6.js +0 -1
  561. package/assets/esri/core/workers/chunks/c5dc2743c7116d0bc0d8.js +0 -1
  562. package/assets/esri/core/workers/chunks/c68cc3b9c170b8de22dc.js +0 -1
  563. package/assets/esri/core/workers/chunks/c6ef0636073e28350c91.js +0 -1
  564. package/assets/esri/core/workers/chunks/c71368cd64f240da1743.js +0 -1
  565. package/assets/esri/core/workers/chunks/cb2f27e5d465124b9868.js +0 -1
  566. package/assets/esri/core/workers/chunks/cee2f7f3b3f84688e49d.js +0 -1
  567. package/assets/esri/core/workers/chunks/d0942860a53b02371e94.js +0 -1
  568. package/assets/esri/core/workers/chunks/d13eeff678972a245d5d.js +0 -1
  569. package/assets/esri/core/workers/chunks/d3d7b4cd28a0dc2720d4.js +0 -1
  570. package/assets/esri/core/workers/chunks/d3ea7ac6fe71c95faa75.js +0 -1
  571. package/assets/esri/core/workers/chunks/d41e4498aaf4970f48b0.js +0 -1
  572. package/assets/esri/core/workers/chunks/d56603e1d0031f3c5f3b.js +0 -1
  573. package/assets/esri/core/workers/chunks/d7c8725ffb175cec5f8a.js +0 -1
  574. package/assets/esri/core/workers/chunks/d96fa373dcb621c2a869.js +0 -1
  575. package/assets/esri/core/workers/chunks/da233362b06b6db375f1.js +0 -1
  576. package/assets/esri/core/workers/chunks/dbc8f15a6be835f4897d.js +0 -1
  577. package/assets/esri/core/workers/chunks/e00d0036974aaec7d876.js +0 -1
  578. package/assets/esri/core/workers/chunks/e0c75ae3a211a8da10f7.js +0 -1
  579. package/assets/esri/core/workers/chunks/e474106292834633e7d4.js +0 -1
  580. package/assets/esri/core/workers/chunks/e557043f90c051e93925.js +0 -1
  581. package/assets/esri/core/workers/chunks/e5cbed6f19c743915c8e.js +0 -1
  582. package/assets/esri/core/workers/chunks/e5ecd93bd32e99bc99d1.js +0 -1
  583. package/assets/esri/core/workers/chunks/eb8c4f194bb66a27d418.js +0 -1
  584. package/assets/esri/core/workers/chunks/ebd8c77df5df63bd3efe.js +0 -1
  585. package/assets/esri/core/workers/chunks/f14347f5d63f5d102617.js +0 -1
  586. package/assets/esri/core/workers/chunks/f3c0280b6c87f2383a60.js +0 -1
  587. package/assets/esri/core/workers/chunks/f42c4dcb8f413ca1c6fd.js +0 -1
  588. package/assets/esri/core/workers/chunks/f5773321487ec248fa3b.js +0 -1
  589. package/assets/esri/core/workers/chunks/f76911f71540b058a881.js +0 -1
  590. package/assets/esri/core/workers/chunks/f988d5a6dcc15fe34797.js +0 -1
  591. package/assets/esri/core/workers/chunks/fa29b5064d6626cfc019.js +0 -1
  592. package/assets/esri/core/workers/chunks/fa882d0f4a9826533421.js +0 -1
  593. package/assets/esri/core/workers/chunks/fb2d43608006f588e3cb.js +0 -1
  594. package/assets/esri/core/workers/chunks/fbd02e8277fe2252ecd2.js +0 -1
  595. package/assets/esri/core/workers/chunks/fc1aeea22f8c9d63864a.js +0 -1
  596. package/assets/esri/core/workers/chunks/fc3c03cfa3d6bf3b37dc.js +0 -1
  597. package/assets/esri/core/workers/chunks/ff07d351553deb70b889.js +0 -1
  598. package/assets/esri/core/workers/chunks/ffee66699f5d26569baf.js +0 -1
  599. package/chunks/OperatorDefinitions.js +0 -2
  600. package/chunks/areaOperator.js +0 -2
  601. package/chunks/bufferOperator.js +0 -2
  602. package/chunks/centroidOperator.js +0 -2
  603. package/chunks/clipOperator.js +0 -2
  604. package/chunks/containsOperator.js +0 -2
  605. package/chunks/convexHullOperator.js +0 -2
  606. package/chunks/crossesOperator.js +0 -2
  607. package/chunks/cutOperator.js +0 -2
  608. package/chunks/densifyOperator.js +0 -2
  609. package/chunks/differenceOperator.js +0 -2
  610. package/chunks/disjointOperator.js +0 -2
  611. package/chunks/distanceOperator.js +0 -2
  612. package/chunks/equalsOperator.js +0 -2
  613. package/chunks/generalizeOperator.js +0 -2
  614. package/chunks/geodesicBufferOperator.js +0 -2
  615. package/chunks/geodeticAreaOperator.js +0 -2
  616. package/chunks/geodeticDensifyOperator.js +0 -2
  617. package/chunks/geodeticDistanceOperator.js +0 -2
  618. package/chunks/geodeticLengthOperator.js +0 -2
  619. package/chunks/intersectionOperator.js +0 -2
  620. package/chunks/intersectsOperator.js +0 -2
  621. package/chunks/labelPointOperator.js +0 -2
  622. package/chunks/lengthOperator.js +0 -2
  623. package/chunks/multiPartToSinglePartOperator.js +0 -2
  624. package/chunks/offsetOperator.js +0 -2
  625. package/chunks/overlapsOperator.js +0 -2
  626. package/chunks/proximityOperator.js +0 -2
  627. package/chunks/relateOperator.js +0 -2
  628. package/chunks/simplifyOperator.js +0 -2
  629. package/chunks/symmetricDifferenceOperator.js +0 -2
  630. package/chunks/touchesOperator.js +0 -2
  631. package/chunks/unionOperator.js +0 -2
  632. package/chunks/withinOperator.js +0 -2
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__addDisposableResource as e,__disposeResources as t,__decorate as i}from"tslib";import{createTask as n}from"../../core/asyncUtils.js";import{makeHandle as a,disposable as s}from"../../core/handleUtils.js";import r from"../../core/Logger.js";import{getOrCreateMapValue as o}from"../../core/MapUtils.js";import{destroyMaybe as l,abortMaybe as d}from"../../core/maybe.js";import{ignoreAbortErrors as p}from"../../core/promiseUtils.js";import{when as u,initial as c,watch as h,syncAndInitial as g,on as m,sync as v}from"../../core/reactiveUtils.js";import{screenPointEqual as y,createScreenPoint as f}from"../../core/screenUtils.js";import{diff as M}from"../../core/accessorSupport/diffUtils.js";import{property as _}from"../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as w}from"../../core/support/UpdatingHandles.js";import S from"../../geometry/Polygon.js";import{i as C,e as P}from"../../chunks/simplifyOperator.js";import{isPolygon as H}from"../../geometry/support/typeUtils.js";import{isCurvedGeometry as x}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as I}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{getEffectiveElevationInfo as L}from"../../support/elevationInfoUtils.js";import{getMaxDeviationInPixels as O,getMinSegmentsPerCurve as k}from"../2d/layers/graphics/densificationConstants.js";import{createSnappingVisualizer as T}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as V,markHandled as G,getPointerType as j,getPointerId as E}from"./support/drawToolUtils.js";import{PluginContext as D}from"./support/PluginContext.js";import{viewEventToCommand as U}from"./support/input/drawToolInput.js";import{EditSessionManager as A}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as F}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as R}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as Z}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as B}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as q}from"./support/managers/SurfaceManager.js";import{TooltipManager as z}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as K}from"../input/InputManager.js";import{createCoordinateHelper as N}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as Q}from"../interactive/InteractiveToolBase.js";import{KeyBindings as W,mediaKeys as $,sketchKeys as J,advancedSketchKeys as X,tooltipKeys as Y}from"../interactive/keybindings.js";import{isInputModeAvailable as ee}from"../interactive/tooltip/tooltipCommonUtils.js";const te=Symbol();let ie=class extends Q{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._queuedFeedbackEvents=[],this._flushingQueuedFeedbackEvents=!1,this._commandsSuspended=!1,this._snappingVisualizer=null,this._segmentLabels=null,this._segmentLabelsImportTask=null,this._updatingHandles=new w,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type="draw-2.0",this.automaticManipulatorSelection=!0,this.snappingManager=null,this.toolOptions=null,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new Z,this.globalStateManager=new F({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new A({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new B({getContext:this._getContextForPlugin.bind(this),editSessionManager:this.editSessionManager,afterAttach:this._afterAttach.bind(this),afterDetach:this._afterDetach.bind(this),beforeResume:this._beforeResume.bind(this)}),this.surfaceManager=null,this.interactiveHandleManager=null,this.renderer=null,this.readPluginSetting=null,this.enableVertexVisuals=!0}initialize(){const{view:e}=this;this.interactiveHandleManager=new R({view:e,renderer:this.renderer}),this._override("manipulators",this.interactiveHandleManager.manipulators),this.tooltipManager=new z({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(u(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:"outputGeometry"}),t.addOrUpdateVisual(this._vertexVisualId,{role:"vertex"}),this._updatingHandles.addPromise(T(e,t).then(e=>this._snappingVisualizer=e))},c)),this.addHandles([h(()=>[this.view,this.coordinateHelper.spatialReference,this.defaultZ,this.hasZ,this.elevationInfo],([e,t,i,n,a])=>{this.surfaceManager?.destroy(),this.surfaceManager=new q({spatialReference:t,excludedGraphicsLayer:null,defaultZ:i,hasZ:n,view:e,elevationInfo:a,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},g),u(()=>this.toolOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),h(()=>[this.editGeometryOperations,this.toolOptions?.labels.enabled,this.globalStateManager.segmentLabelsDisabled],()=>{this._updatingHandles.addPromise(this._setupSegmentLabels())},c),m(()=>this.editSessionManager,"cancelPlugin",({plugin:e})=>{this._suspendPlugin(e)},v),m(()=>this.editSessionManager,"restartPlugin",({restartInfo:e})=>{this._resumePlugin(e)},v),h(()=>this.lifecycleManager.updating,e=>{e||this._emitQueuedFeedbackEvents()},v),m(()=>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._emitWhenReady(e.type,{...e,added:i,vertices:t});break;case"vertex-update":this._emitWhenReady(e.type,{...e,updated:i,vertices:t});break;case"vertex-remove":this._emitWhenReady(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=l(this.surfaceManager),this.interactiveHandleManager=l(this.interactiveHandleManager),this._segmentLabelsImportTask=d(this._segmentLabelsImportTask),this._segmentLabels=l(this._segmentLabels),this.tooltipManager=l(this.tooltipManager)}get _zOfLastUserInput(){const e=this.mostDownstreamPlugin&&this.editSessionManager.getSession(this.mostDownstreamPlugin),t=e?.firstPointAddedBySession?.point;return t?.hasZ?t.z:null}get _tooltipDependencies(){const{defaultZ:e,editGeometryOperations:t,toolOptions:i,directionOptions:n,elevationInfo:a,view:s}=this;return t&&i&&s?{defaultZ:e,directionOptions:n,elevationInfo:a,editGeometryOperations:t,toolOptions:i,view:s,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,getAllHandles:()=>this.interactiveHandleManager?.allhandles,getHelpMessageKey:()=>this.helpMessageKey,notifyTooltipsChanged:()=>{const{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}:null}get _editSessionManagerContext(){const{coordinateHelper:e,view:t}=this;if(!t)return null;return{coordinateHelper:e,viewingMode:"3d"===t.type&&"global"===t.viewingMode?1:2}}get _densificationParameters(){const{view:e,coordinateHelper:t}=this,i=t.spatialReference,n=e?.spatialReference,a=e.resolution;if(!(i&&n&&a&&Number.isFinite(a)))return null;const s=n.metersPerUnit/i.metersPerUnit;return{maxDeviation:2**Math.round(Math.log2(a))*O()*s,minSegmentsPerCurve:k()}}get test(){return{densificationParameters:this._densificationParameters,segmentLabels:this._segmentLabels}}get updating(){return this._updatingHandles.updating||this.snappingManager?.updating||this.lifecycleManager.updating||!!this._segmentLabels?.updating}get coordinateHelper(){return N(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&&H(e))try{const t=this._densificationParameters,i=x(e)&&t?new S({...I(e,t)}):e;if(!C(i))return P(i)}catch(t){return e}return e}get _suppressCoincidentPointOverlaysIn3D(){return"3d"===this.view.type&&"point"===this.unprocessedGeometry?.type&&!!this.interactiveHandleManager?.allhandles?.find(e=>"primary"===e.role)?.outputMapPosition}get _shapeVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.simplifiedGeometryPreview}get _vertexVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.unprocessedGeometry}get canUndo(){return this.editSessionManager.canUndo}get canRedo(){return this.editSessionManager.canRedo}get pluginStack(){return this.lifecycleManager.pluginStack}get mostDownstreamPlugin(){return this.pluginStack.at(-1)}get mostUpstreamPlugin(){return this.pluginStack.at(0)}get positionOfLastUserInput(){const e=this.lastScreenPosition;return e?this.surfaceManager?.screenToMap(e,{firstPointZ:this._zOfLastUserInput})??this.view.toMap(e):this.view.center}get movementCommandContext(){const{editGeometryOperations:e,tooltipManager:t,surfaceManager:i,snappingManager:n,interactiveHandleManager:a,_snappingVisualizer:s,defaultZ:r,hasZ:o,globalStateManager:{drawAtFixedElevation:l},view:d}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:i,interactiveHandleManager:a,snappingManager:n,snappingVisualizer:s,pointerType:"mouse",hasZ:o,defaultZ:r,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;if(e&&t.complete(e),0===t.pluginStack.length){const e=this.unprocessedGeometry,t=!e||"mesh"===e.type||C(e);this.emit("complete",{geometry:e,isSimple:t,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)}getVertexSnappingCandidates(){return"secondary"===this.interactiveHandleManager?.capturingHandle?.role?[]:this.snappingManager?.getVertexCandidates()??[]}replaceLeaf(e){const t=this.lifecycleManager;t.updating?r.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._handleCommand({action:"undo"})}redo(){this._handleCommand({action:"redo"})}executeCommand(e){return this._handleCommand(e)}suspendCommands(){return this._commandsSuspended=!0,a(()=>{this._commandsSuspended=!1;const e=this.view?.inputManager.latestPointerInfo;if(e){const{x:t,y:i}=e.location;this._handleCommand({action:"manipulator-move-to",x:t,y:i})}})}addPromise(e){return this._updatingHandles.addPromise(e)}readPluginSettingValue(e,t){return this.readPluginSetting?.(e,t)}getGeometryIfCompleted(){const e=this.lifecycleManager.gatherCompletablePlugins();return this.editSessionManager?.generatePreviewGeometryForPlugins(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.enableVertexVisuals&&this.addHandles(h(()=>this._vertexVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?V(e):null})},c)),this.addHandles([h(()=>this._shapeVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e})},c),u(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:y}),h(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{const i=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&i&&this._emitWhenReady("cursor-update",{updated:i.pos,type:"vertex-update",operation:"apply",vertices:[{componentIndex:i.part.index,vertexIndex:i.index,coordinates:i.pos}]})},v),this._keybindings.register(e,K.TOOL),h(()=>e.viewpoint,(e,t)=>{e&&t&&M(e,t)&&this._handleCommand({action:"viewpoint-moved"})})],te)}onDeactivate(){super.onDeactivate(),this.removeHandles(te),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){"pointer-down"===e.type?this.interactiveHandleManager?.notePointerDown(e.pointerId,e.pointerType):"pointer-up"!==e.type&&"pointer-leave"!==e.type||this.interactiveHandleManager?.notePointerUp(e.pointerId,e.pointerType);const t=U(e);t&&this._handleCommand(t)}forceAddVertex(){this._commitNext()}_emitWhenReady(e,t){if(this.destroyed)return;const i=()=>{this.emit(e,t)};this.lifecycleManager.updating||this._flushingQueuedFeedbackEvents?this._queuedFeedbackEvents.push(i):i()}_emitQueuedFeedbackEvents(){if(!(this.destroyed||this._flushingQueuedFeedbackEvents||this.lifecycleManager.updating||0===this._queuedFeedbackEvents.length)){this._flushingQueuedFeedbackEvents=!0;try{for(;!this.destroyed&&!this.lifecycleManager.updating&&this._queuedFeedbackEvents.length>0;)this._queuedFeedbackEvents.shift()?.()}finally{this._flushingQueuedFeedbackEvents=!1}}}async _handleCommand(e){if(!this._commandsSuspended)if(this.lifecycleManager.updating)r.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,()=>{G(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&&(G(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()&&G(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&&ee(t.info)&&(await t.enterInputMode(),G(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)&&G(e):G(e)}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(G(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){if(!this.editable)return;const t=j(e.originalEvent),i=E(e.originalEvent);await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:t,pointerId:i})),this.interactiveHandleManager?.updateAllScreenPositions(this.movementCommandContext.surfaceManager)}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;const t=j(e.originalEvent),i=E(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(i,t))return;const n=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&G(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(n,{...this.movementCommandContext,pointerType:t,pointerId:i}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;const t=j(e.originalEvent),i=E(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(i,t))return;const n=this._updateLastScreenPosition(e),a=this.interactiveHandleManager?.findHandleByManipulator(n,t);"touch"===t&&a&&"start"===e.state&&this.interactiveHandleManager?.releaseHandle();const s=this.interactiveHandleManager?.findHandleDragging(),r=this.interactiveHandleManager?.capturingHandle,o=s??r??a;o&&!a&&G(e),"capture-when-engaged"===o?.captureMode||"capture-always"===o?.captureMode&&"touch"===t?"end"===e.state?await this._updatingHandles.addPromise(o.noteDragEnd(n,{...this.movementCommandContext,pointerType:t,pointerId:i}).then(()=>{o&&"touch"===j(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(n,{...this.movementCommandContext,pointerType:t,pointerId:i}).then(()=>{o&&"touch"===j(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(n,{...this.movementCommandContext,pointerType:t,pointerId:i})):"grabbable-object"===o?.captureMode&&(this.interactiveHandleManager?.releaseHandle(r),await this._updatingHandles.addPromise(o.moveTo(n,{...this.movementCommandContext,pointerType:t,pointerId:i})))}async _handleVertexAddAtPointCommand(e){const t=this._updateLastScreenPosition(e),i=j(e.originalEvent),n=E(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,i))return;const a=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t,i);this.editable&&a&&(this._before(e)||(G(e),await this._updatingHandles.addPromise(a.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:i,pointerId:n}).finally(()=>this._commitNext()))))}_makeKeyBindings(){const e=new W,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($.preserveAspectRatio,"constraint-aspect"),t(J.center,"constraint-center"),i(X.toggleFollowManipulator,"toggle-manipulator-follow"),i(J.undo,"undo"),i(J.redo,"redo"),i(J.complete,"complete"),i(J.vertexAdd,"vertex-add"),i({key:Y.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;this.tooltipManager?.storeConstraintSnapshot();let n=!1;const a=this.editGeometryOperations;e(i,a?s(a.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=f(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){const i=o(this._pluginContexts,e,()=>new D({drawTool:this,plugin:e,session:t}));return i.session=t,i}_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()}async _setupSegmentLabels(){const e=this.editGeometryOperations,t=this.toolOptions?.labels,i=!!t?.enabled,n=this.globalStateManager.segmentLabelsDisabled;if(!e||!t||!i)return void(this._segmentLabels=l(this._segmentLabels));if(n)return void(this._segmentLabels&&(this._segmentLabels.visible=!1));if(this._segmentLabels?.context?.editGeometryOperations===e&&this._segmentLabels.context.labelOptions===t)return void(this._segmentLabels.visible=!0);const a=await this._createSegmentLabels(e,t);a&&(this._segmentLabels=l(this._segmentLabels),this._segmentLabels=a)}async _createSegmentLabels(e,t){this._segmentLabelsImportTask?.abort();const i=this._segmentLabelsImportTask=n(async i=>{if("3d"===this.view.type){const n=import("../3d/interactive/SegmentLabels3D.js"),{SegmentLabels3D:a}=await this._updatingHandles.addPromise(n);return this._isSegmentLabelsSetupStale(i,e,t)?null:new a({context:{view:this.view,editGeometryOperations:e,elevationInfo:L(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})}const n=import("../2d/interactive/SegmentLabels2D.js"),{SegmentLabels2D:a}=await this._updatingHandles.addPromise(n);return this._isSegmentLabelsSetupStale(i,e,t)?null:new a({context:{view:this.view,editGeometryOperations:e,elevationInfo:L(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})});return p(i.promise)}_isSegmentLabelsSetupStale(e,t,i){return e.aborted||this.editGeometryOperations!==t||this.toolOptions?.labels!==i||!i.enabled||this.globalStateManager.segmentLabelsDisabled}};i([_()],ie.prototype,"_commandsSuspended",void 0),i([_()],ie.prototype,"_zOfLastUserInput",null),i([_()],ie.prototype,"_snappingVisualizer",void 0),i([_()],ie.prototype,"_segmentLabels",void 0),i([_()],ie.prototype,"_segmentLabelsImportTask",void 0),i([_()],ie.prototype,"_tooltipDependencies",null),i([_()],ie.prototype,"_editSessionManagerContext",null),i([_()],ie.prototype,"_densificationParameters",null),i([_({constructOnly:!0,nonNullable:!0})],ie.prototype,"view",void 0),i([_()],ie.prototype,"automaticManipulatorSelection",void 0),i([_()],ie.prototype,"updating",null),i([_()],ie.prototype,"coordinateHelper",null),i([_()],ie.prototype,"editGeometry",null),i([_()],ie.prototype,"editGeometryOperations",null),i([_()],ie.prototype,"unprocessedGeometry",null),i([_()],ie.prototype,"simplifiedGeometryPreview",null),i([_()],ie.prototype,"_suppressCoincidentPointOverlaysIn3D",null),i([_()],ie.prototype,"_shapeVisualGeometry",null),i([_()],ie.prototype,"_vertexVisualGeometry",null),i([_()],ie.prototype,"snappingManager",void 0),i([_()],ie.prototype,"toolOptions",void 0),i([_()],ie.prototype,"elevationInfo",void 0),i([_()],ie.prototype,"hasZ",void 0),i([_()],ie.prototype,"defaultZ",void 0),i([_()],ie.prototype,"directionOptions",void 0),i([_()],ie.prototype,"canUndo",null),i([_()],ie.prototype,"canRedo",null),i([_()],ie.prototype,"pluginStack",null),i([_()],ie.prototype,"mostDownstreamPlugin",null),i([_()],ie.prototype,"mostUpstreamPlugin",null),i([_()],ie.prototype,"lastScreenPosition",void 0),i([_()],ie.prototype,"positionOfLastUserInput",null),i([_()],ie.prototype,"tooltipManager",void 0),i([_()],ie.prototype,"measurementManager",void 0),i([_()],ie.prototype,"globalStateManager",void 0),i([_()],ie.prototype,"editSessionManager",void 0),i([_()],ie.prototype,"lifecycleManager",void 0),i([_()],ie.prototype,"surfaceManager",void 0),i([_()],ie.prototype,"interactiveHandleManager",void 0),i([_()],ie.prototype,"renderer",void 0),i([_()],ie.prototype,"readPluginSetting",void 0),i([_()],ie.prototype,"movementCommandContext",null),i([_()],ie.prototype,"tooltip",null),i([_()],ie.prototype,"activeTooltipInfo",null),i([_()],ie.prototype,"helpMessageKey",null),i([_({constructOnly:!0})],ie.prototype,"enableVertexVisuals",void 0),ie=i([b("esri.views.draw.DrawTool")],ie);export{ie as DrawTool};
2
+ import{__addDisposableResource as e,__disposeResources as t,__decorate as i}from"tslib";import{createTask as n}from"../../core/asyncUtils.js";import{makeHandle as a,disposable as s}from"../../core/handleUtils.js";import r from"../../core/Logger.js";import{getOrCreateMapValue as o}from"../../core/MapUtils.js";import{destroyMaybe as l,abortMaybe as d}from"../../core/maybe.js";import{ignoreAbortErrors as p}from"../../core/promiseUtils.js";import{when as u,initial as c,watch as g,syncAndInitial as h,on as m,sync as v}from"../../core/reactiveUtils.js";import{screenPointEqual as y,createScreenPoint as f}from"../../core/screenUtils.js";import{diff as M}from"../../core/accessorSupport/diffUtils.js";import{property as _}from"../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as w}from"../../core/support/UpdatingHandles.js";import S from"../../geometry/Polygon.js";import{isSimple as C,execute as P}from"../../geometry/operators/simplifyOperator.js";import{isPolygon as H}from"../../geometry/support/typeUtils.js";import{isCurvedGeometry as x}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as I}from"../../geometry/support/curves/densifyCurvedGeometry.js";import{getEffectiveElevationInfo as L}from"../../support/elevationInfoUtils.js";import{getMaxDeviationInPixels as O,getMinSegmentsPerCurve as k}from"../2d/layers/graphics/densificationConstants.js";import{createSnappingVisualizer as T}from"./support/createSnappingVisualizer.js";import{multipointFromGeometry as V,markHandled as G,getPointerType as j,getPointerId as E}from"./support/drawToolUtils.js";import{PluginContext as D}from"./support/PluginContext.js";import{viewEventToCommand as U}from"./support/input/drawToolInput.js";import{EditSessionManager as A}from"./support/managers/EditSessionManager.js";import{GlobalStateManager as F}from"./support/managers/GlobalStateManager.js";import{InteractiveHandleManager as R}from"./support/managers/InteractiveHandleManager.js";import{MeasurementManager as Z}from"./support/managers/MeasurementManager.js";import{PluginLifecycleManager as B}from"./support/managers/PluginLifecycleManager.js";import{SurfaceManager as q}from"./support/managers/SurfaceManager.js";import{TooltipManager as z}from"./support/managers/TooltipManager.js";import{ViewEventPriorities as K}from"../input/InputManager.js";import{createCoordinateHelper as N}from"../interactive/coordinateHelper.js";import{InteractiveToolBase as Q}from"../interactive/InteractiveToolBase.js";import{KeyBindings as W,mediaKeys as $,sketchKeys as J,advancedSketchKeys as X,tooltipKeys as Y}from"../interactive/keybindings.js";import{isInputModeAvailable as ee}from"../interactive/tooltip/tooltipCommonUtils.js";const te=Symbol();let ie=class extends Q{constructor(e){super(e),this._shapeVisualId=Symbol(),this._vertexVisualId=Symbol(),this._pluginContexts=new Map,this._queuedFeedbackEvents=[],this._flushingQueuedFeedbackEvents=!1,this._commandsSuspended=!1,this._snappingVisualizer=null,this._segmentLabels=null,this._segmentLabelsImportTask=null,this._updatingHandles=new w,this._keybindings=this._makeKeyBindings(),this._pendingBeginRequest=null,this.type="draw-2.0",this.automaticManipulatorSelection=!0,this.snappingManager=null,this.toolOptions=null,this.elevationInfo=null,this.hasZ=!1,this.defaultZ=0,this.lastScreenPosition=null,this.measurementManager=new Z,this.globalStateManager=new F({getPluginStack:()=>this.pluginStack}),this.editSessionManager=new A({getContext:()=>this._editSessionManagerContext}),this.lifecycleManager=new B({getContext:this._getContextForPlugin.bind(this),editSessionManager:this.editSessionManager,afterAttach:this._afterAttach.bind(this),afterDetach:this._afterDetach.bind(this),beforeResume:this._beforeResume.bind(this)}),this.surfaceManager=null,this.interactiveHandleManager=null,this.renderer=null,this.readPluginSetting=null,this.enableVertexVisuals=!0}initialize(){const{view:e}=this;this.interactiveHandleManager=new R({view:e,renderer:this.renderer}),this._override("manipulators",this.interactiveHandleManager.manipulators),this.tooltipManager=new z({getDependencies:()=>this._tooltipDependencies,getLastScreenPosition:()=>this.lastScreenPosition}),this.addHandles(u(()=>this.renderer,t=>{t.addOrUpdateVisual(this._shapeVisualId,{role:"outputGeometry"}),t.addOrUpdateVisual(this._vertexVisualId,{role:"vertex"}),this._updatingHandles.addPromise(T(e,t).then(e=>this._snappingVisualizer=e))},c)),this.addHandles([g(()=>[this.view,this.coordinateHelper.spatialReference,this.defaultZ,this.hasZ,this.elevationInfo],([e,t,i,n,a])=>{this.surfaceManager?.destroy(),this.surfaceManager=new q({spatialReference:t,excludedGraphicsLayer:null,defaultZ:i,hasZ:n,view:e,elevationInfo:a,getContext:()=>({drawAtFixedElevation:this.globalStateManager.drawAtFixedElevation,elevationConstraint:this.tooltipManager?.elevationConstraint,constraintsEnabled:this.tooltipManager?.constraintsEnabled??!1})})},h),u(()=>this.toolOptions?.tooltips.effectiveEnabled,()=>this.measurementManager.preloadMeasurementUtils(),{once:!0,initial:!0}),g(()=>[this.editGeometryOperations,this.toolOptions?.labels.enabled,this.globalStateManager.segmentLabelsDisabled],()=>{this._updatingHandles.addPromise(this._setupSegmentLabels())},c),m(()=>this.editSessionManager,"cancelPlugin",({plugin:e})=>{this._suspendPlugin(e)},v),m(()=>this.editSessionManager,"restartPlugin",({restartInfo:e})=>{this._resumePlugin(e)},v),g(()=>this.lifecycleManager.updating,e=>{e||this._emitQueuedFeedbackEvents()},v),m(()=>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._emitWhenReady(e.type,{...e,added:i,vertices:t});break;case"vertex-update":this._emitWhenReady(e.type,{...e,updated:i,vertices:t});break;case"vertex-remove":this._emitWhenReady(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=l(this.surfaceManager),this.interactiveHandleManager=l(this.interactiveHandleManager),this._segmentLabelsImportTask=d(this._segmentLabelsImportTask),this._segmentLabels=l(this._segmentLabels),this.tooltipManager=l(this.tooltipManager)}get _zOfLastUserInput(){const e=this.mostDownstreamPlugin&&this.editSessionManager.getSession(this.mostDownstreamPlugin),t=e?.firstPointAddedBySession?.point;return t?.hasZ?t.z:null}get _tooltipDependencies(){const{defaultZ:e,editGeometryOperations:t,toolOptions:i,directionOptions:n,elevationInfo:a,view:s}=this;return t&&i&&s?{defaultZ:e,directionOptions:n,elevationInfo:a,editGeometryOperations:t,toolOptions:i,view:s,getActiveHandle:()=>this.interactiveHandleManager?.focusedHandle,getAllHandles:()=>this.interactiveHandleManager?.allhandles,getHelpMessageKey:()=>this.helpMessageKey,notifyTooltipsChanged:()=>{const{interactiveHandleManager:e,movementCommandContext:t}=this;e&&t&&e.reapplyPositions(t)}}:null}get _editSessionManagerContext(){const{coordinateHelper:e,view:t}=this;if(!t)return null;return{coordinateHelper:e,viewingMode:"3d"===t.type&&"global"===t.viewingMode?1:2}}get _densificationParameters(){const{view:e,coordinateHelper:t}=this,i=t.spatialReference,n=e?.spatialReference,a=e.resolution;if(!(i&&n&&a&&Number.isFinite(a)))return null;const s=n.metersPerUnit/i.metersPerUnit;return{maxDeviation:2**Math.round(Math.log2(a))*O()*s,minSegmentsPerCurve:k()}}get test(){return{densificationParameters:this._densificationParameters,segmentLabels:this._segmentLabels}}get updating(){return this._updatingHandles.updating||this.snappingManager?.updating||this.lifecycleManager.updating||!!this._segmentLabels?.updating}get coordinateHelper(){return N(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&&H(e))try{const t=this._densificationParameters,i=x(e)&&t?new S({...I(e,t)}):e;if(!C(i))return P(i)}catch(t){return e}return e}get _suppressCoincidentPointOverlaysIn3D(){return"3d"===this.view.type&&"point"===this.unprocessedGeometry?.type&&!!this.interactiveHandleManager?.allhandles?.find(e=>"primary"===e.role)?.outputMapPosition}get _shapeVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.simplifiedGeometryPreview}get _vertexVisualGeometry(){return this._suppressCoincidentPointOverlaysIn3D?null:this.unprocessedGeometry}get canUndo(){return this.editSessionManager.canUndo}get canRedo(){return this.editSessionManager.canRedo}get pluginStack(){return this.lifecycleManager.pluginStack}get mostDownstreamPlugin(){return this.pluginStack.at(-1)}get mostUpstreamPlugin(){return this.pluginStack.at(0)}get positionOfLastUserInput(){const e=this.lastScreenPosition;return e?this.surfaceManager?.screenToMap(e,{firstPointZ:this._zOfLastUserInput})??this.view.toMap(e):this.view.center}get movementCommandContext(){const{editGeometryOperations:e,tooltipManager:t,surfaceManager:i,snappingManager:n,interactiveHandleManager:a,_snappingVisualizer:s,defaultZ:r,hasZ:o,globalStateManager:{drawAtFixedElevation:l},view:d}=this;return{tooltipManager:t,editGeometryOperations:e,surfaceManager:i,interactiveHandleManager:a,snappingManager:n,snappingVisualizer:s,pointerType:"mouse",hasZ:o,defaultZ:r,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;if(e&&t.complete(e),0===t.pluginStack.length){const e=this.unprocessedGeometry,t=!e||"mesh"===e.type||C(e);this.emit("complete",{geometry:e,isSimple:t,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)}getVertexSnappingCandidates(){return"secondary"===this.interactiveHandleManager?.capturingHandle?.role?[]:this.snappingManager?.getVertexCandidates()??[]}replaceLeaf(e){const t=this.lifecycleManager;t.updating?r.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._handleCommand({action:"undo"})}redo(){this._handleCommand({action:"redo"})}executeCommand(e){return this._handleCommand(e)}suspendCommands(){return this._commandsSuspended=!0,a(()=>{this._commandsSuspended=!1;const e=this.view?.inputManager.latestPointerInfo;if(e){const{x:t,y:i}=e.location;this._handleCommand({action:"manipulator-move-to",x:t,y:i})}})}addPromise(e){return this._updatingHandles.addPromise(e)}readPluginSettingValue(e,t){return this.readPluginSetting?.(e,t)}getGeometryIfCompleted(){const e=this.lifecycleManager.gatherCompletablePlugins();return this.editSessionManager?.generatePreviewGeometryForPlugins(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.enableVertexVisuals&&this.addHandles(g(()=>this._vertexVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._vertexVisualId,{geometry:e?V(e):null})},c)),this.addHandles([g(()=>this._shapeVisualGeometry,e=>{this.renderer?.addOrUpdateVisual(this._shapeVisualId,{geometry:e})},c),u(()=>this.interactiveHandleManager?.capturingHandle?.screenPosition,e=>this.lastScreenPosition=e,{initial:!0,equals:y}),g(()=>this.interactiveHandleManager?.capturingHandle?.outputMapPosition,(e,t)=>{const i=this.interactiveHandleManager?.capturingHandle?.editSession?.endVertex;e&&t&&i&&this._emitWhenReady("cursor-update",{updated:i.pos,type:"vertex-update",operation:"apply",vertices:[{componentIndex:i.part.index,vertexIndex:i.index,coordinates:i.pos}]})},v),this._keybindings.register(e,K.TOOL),g(()=>e.viewpoint,(e,t)=>{e&&t&&M(e,t)&&this._handleCommand({action:"viewpoint-moved"})})],te)}onDeactivate(){super.onDeactivate(),this.removeHandles(te),this.renderer?.deactivate(),this.snappingManager?.doneSnapping(),this.lifecycleManager.cancelAll(),this._pendingBeginRequest=null}onInputEvent(e){"pointer-down"===e.type?this.interactiveHandleManager?.notePointerDown(e.pointerId,e.pointerType):"pointer-up"!==e.type&&"pointer-leave"!==e.type||this.interactiveHandleManager?.notePointerUp(e.pointerId,e.pointerType);const t=U(e);t&&this._handleCommand(t)}forceAddVertex(){this._commitNext()}_emitWhenReady(e,t){if(this.destroyed)return;const i=()=>{this.emit(e,t)};this.lifecycleManager.updating||this._flushingQueuedFeedbackEvents?this._queuedFeedbackEvents.push(i):i()}_emitQueuedFeedbackEvents(){if(!(this.destroyed||this._flushingQueuedFeedbackEvents||this.lifecycleManager.updating||0===this._queuedFeedbackEvents.length)){this._flushingQueuedFeedbackEvents=!0;try{for(;!this.destroyed&&!this.lifecycleManager.updating&&this._queuedFeedbackEvents.length>0;)this._queuedFeedbackEvents.shift()?.()}finally{this._flushingQueuedFeedbackEvents=!1}}}async _handleCommand(e){if(!this._commandsSuspended)if(this.lifecycleManager.updating)r.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,()=>{G(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&&(G(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()&&G(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&&ee(t.info)&&(await t.enterInputMode(),G(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)&&G(e):G(e)}_handleVertexAddAndFinishPartCommand(e){this._before(e)||(G(e),this._commitNext(),this.finishPart())}async _handleViewpointMovedCommand(e){if(!this.editable)return;const t=j(e.originalEvent),i=E(e.originalEvent);await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(null,{...this.movementCommandContext,pointerType:t,pointerId:i})),this.interactiveHandleManager?.updateAllScreenPositions(this.movementCommandContext.surfaceManager)}async _handleManipulatorMoveToCommand(e){if(!this.editable)return;const t=j(e.originalEvent),i=E(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(i,t))return;const n=this._updateLastScreenPosition(e);this.interactiveHandleManager?.capturingHandle&&G(e),await this._updatingHandles.addPromise(this.interactiveHandleManager?.capturingHandle?.moveTo(n,{...this.movementCommandContext,pointerType:t,pointerId:i}))}async _handleManipulatorDragToCommand(e){if(!this.editable)return;const t=j(e.originalEvent),i=E(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(i,t))return;const n=this._updateLastScreenPosition(e),a=this.interactiveHandleManager?.findHandleByManipulator(n,t);"touch"===t&&a&&"start"===e.state&&this.interactiveHandleManager?.releaseHandle();const s=this.interactiveHandleManager?.findHandleDragging(),r=this.interactiveHandleManager?.capturingHandle,o=s??r??a;o&&!a&&G(e),"capture-when-engaged"===o?.captureMode||"capture-always"===o?.captureMode&&"touch"===t?"end"===e.state?await this._updatingHandles.addPromise(o.noteDragEnd(n,{...this.movementCommandContext,pointerType:t,pointerId:i}).then(()=>{o&&"touch"===j(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(n,{...this.movementCommandContext,pointerType:t,pointerId:i}).then(()=>{o&&"touch"===j(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(n,{...this.movementCommandContext,pointerType:t,pointerId:i})):"grabbable-object"===o?.captureMode&&(this.interactiveHandleManager?.releaseHandle(r),await this._updatingHandles.addPromise(o.moveTo(n,{...this.movementCommandContext,pointerType:t,pointerId:i})))}async _handleVertexAddAtPointCommand(e){const t=this._updateLastScreenPosition(e),i=j(e.originalEvent),n=E(e.originalEvent);if(!this.interactiveHandleManager?.shouldCaptureInput(n,i))return;const a=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t,i);this.editable&&a&&(this._before(e)||(G(e),await this._updatingHandles.addPromise(a.moveTo(t,{...this.movementCommandContext,skipSnapping:!0,pointerType:i,pointerId:n}).finally(()=>this._commitNext()))))}_makeKeyBindings(){const e=new W,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($.preserveAspectRatio,"constraint-aspect"),t(J.center,"constraint-center"),i(X.toggleFollowManipulator,"toggle-manipulator-follow"),i(J.undo,"undo"),i(J.redo,"redo"),i(J.complete,"complete"),i(J.vertexAdd,"vertex-add"),i({key:Y.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;this.tooltipManager?.storeConstraintSnapshot();let n=!1;const a=this.editGeometryOperations;e(i,a?s(a.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=f(e.x,e.y);return this.lastScreenPosition=t,t}_getContextForPlugin(e,t){const i=o(this._pluginContexts,e,()=>new D({drawTool:this,plugin:e,session:t}));return i.session=t,i}_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()}async _setupSegmentLabels(){const e=this.editGeometryOperations,t=this.toolOptions?.labels,i=!!t?.enabled,n=this.globalStateManager.segmentLabelsDisabled;if(!e||!t||!i)return void(this._segmentLabels=l(this._segmentLabels));if(n)return void(this._segmentLabels&&(this._segmentLabels.visible=!1));if(this._segmentLabels?.context?.editGeometryOperations===e&&this._segmentLabels.context.labelOptions===t)return void(this._segmentLabels.visible=!0);const a=await this._createSegmentLabels(e,t);a&&(this._segmentLabels=l(this._segmentLabels),this._segmentLabels=a)}async _createSegmentLabels(e,t){this._segmentLabelsImportTask?.abort();const i=this._segmentLabelsImportTask=n(async i=>{if("3d"===this.view.type){const n=import("../3d/interactive/SegmentLabels3D.js"),{SegmentLabels3D:a}=await this._updatingHandles.addPromise(n);return this._isSegmentLabelsSetupStale(i,e,t)?null:new a({context:{view:this.view,editGeometryOperations:e,elevationInfo:L(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})}const n=import("../2d/interactive/SegmentLabels2D.js"),{SegmentLabels2D:a}=await this._updatingHandles.addPromise(n);return this._isSegmentLabelsSetupStale(i,e,t)?null:new a({context:{view:this.view,editGeometryOperations:e,elevationInfo:L(this.hasZ,this.elevationInfo),labelOptions:t},visible:!0})});return p(i.promise)}_isSegmentLabelsSetupStale(e,t,i){return e.aborted||this.editGeometryOperations!==t||this.toolOptions?.labels!==i||!i.enabled||this.globalStateManager.segmentLabelsDisabled}};i([_()],ie.prototype,"_commandsSuspended",void 0),i([_()],ie.prototype,"_zOfLastUserInput",null),i([_()],ie.prototype,"_snappingVisualizer",void 0),i([_()],ie.prototype,"_segmentLabels",void 0),i([_()],ie.prototype,"_segmentLabelsImportTask",void 0),i([_()],ie.prototype,"_tooltipDependencies",null),i([_()],ie.prototype,"_editSessionManagerContext",null),i([_()],ie.prototype,"_densificationParameters",null),i([_({constructOnly:!0,nonNullable:!0})],ie.prototype,"view",void 0),i([_()],ie.prototype,"automaticManipulatorSelection",void 0),i([_()],ie.prototype,"updating",null),i([_()],ie.prototype,"coordinateHelper",null),i([_()],ie.prototype,"editGeometry",null),i([_()],ie.prototype,"editGeometryOperations",null),i([_()],ie.prototype,"unprocessedGeometry",null),i([_()],ie.prototype,"simplifiedGeometryPreview",null),i([_()],ie.prototype,"_suppressCoincidentPointOverlaysIn3D",null),i([_()],ie.prototype,"_shapeVisualGeometry",null),i([_()],ie.prototype,"_vertexVisualGeometry",null),i([_()],ie.prototype,"snappingManager",void 0),i([_()],ie.prototype,"toolOptions",void 0),i([_()],ie.prototype,"elevationInfo",void 0),i([_()],ie.prototype,"hasZ",void 0),i([_()],ie.prototype,"defaultZ",void 0),i([_()],ie.prototype,"directionOptions",void 0),i([_()],ie.prototype,"canUndo",null),i([_()],ie.prototype,"canRedo",null),i([_()],ie.prototype,"pluginStack",null),i([_()],ie.prototype,"mostDownstreamPlugin",null),i([_()],ie.prototype,"mostUpstreamPlugin",null),i([_()],ie.prototype,"lastScreenPosition",void 0),i([_()],ie.prototype,"positionOfLastUserInput",null),i([_()],ie.prototype,"tooltipManager",void 0),i([_()],ie.prototype,"measurementManager",void 0),i([_()],ie.prototype,"globalStateManager",void 0),i([_()],ie.prototype,"editSessionManager",void 0),i([_()],ie.prototype,"lifecycleManager",void 0),i([_()],ie.prototype,"surfaceManager",void 0),i([_()],ie.prototype,"interactiveHandleManager",void 0),i([_()],ie.prototype,"renderer",void 0),i([_()],ie.prototype,"readPluginSetting",void 0),i([_()],ie.prototype,"movementCommandContext",null),i([_()],ie.prototype,"tooltip",null),i([_()],ie.prototype,"activeTooltipInfo",null),i([_()],ie.prototype,"helpMessageKey",null),i([_({constructOnly:!0})],ie.prototype,"enableVertexVisuals",void 0),ie=i([b("esri.views.draw.DrawTool")],ie);export{ie as DrawTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isSome as t,equals as e}from"../../../core/arrayUtils.js";import{clone as o}from"../../../core/lang.js";import{getMetersPerUnitForSR as n}from"../../../core/units.js";import{lerp as r}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import l from"../../../geometry/Circle.js";import s from"../../../geometry/Multipoint.js";import i from"../../../geometry/Point.js";import c from"../../../geometry/Polygon.js";import p from"../../../geometry/Polyline.js";import{e as y}from"../../../chunks/distanceOperator.js";import{i as u,e as m}from"../../../chunks/simplifyOperator.js";import{isClockwise as f}from"../../../geometry/support/coordsUtils.js";import{isValid as x}from"../../../geometry/support/spatialReferenceUtils.js";import{makeSurfacePoint as h}from"./surfaceCoordinateSystems.js";import{unnormalize as M}from"../../support/unnormalizationUtils.js";function g(t,e){const o=new i({x:t[0],y:t[1],spatialReference:e});return t.length>2&&(o.z=t[2]),o}function d(t,e){return new s({points:t,spatialReference:e})}function R(t,e,o){const n=new p({paths:t,spatialReference:e});return o&&M(n,n.spatialReference),n}function j(t,n,r,a=!0){const l=o(t);l.forEach(t=>{const o=t[0],n=t[t.length-1];e(o,n)&&1!==t.length||t.push(t[0])});let s=new c({rings:l,spatialReference:n});return s.rings.forEach(t=>{f(t)||t.reverse()}),r&&M(s,s.spatialReference),a&&!u(s)&&x(n)&&(s=m(s)||s),s}function T(e,o,n){const r=o.mapToLocalMultiple(e),a=[],l={x:r[0].x,y:r[0].y},s={x:r[1].x,y:r[1].y},i=Math.round(s.x-l.x),c=Math.round(s.y-l.y),p=Math.max(Math.abs(i),Math.abs(c));if(n){const t={x:l.x+p,y:l.y+p},e={x:l.x-p,y:l.y-p};a.push(h(t.x,e.y),h(e.x,e.y),h(e.x,t.y),h(t.x,t.y))}else{const t={x:i>0?l.x+p:l.x-p,y:c>0?l.y+p:l.y-p};a.push(h(l.x,l.y),h(t.x,l.y),h(t.x,t.y),h(l.x,t.y))}return U(j([a.map(t=>o.localToMap(t)).filter(t)],o.spatialReference,o.doUnnormalization,!0),a,o)}function b(e,o,n){let r=o.mapToLocalMultiple(e);if(1===r.length){const t=48,e=r[0];r=[h(e.x-t,e.y+t),h(e.x+t,e.y-t),h(e.x+t,e.y-t),h(e.x-t,e.y+t)]}const a=[],l={x:r[0].x,y:r[0].y},s={x:r[1].x,y:r[1].y};if(n){const t=Math.round(s.x-l.x),e=Math.round(s.y-l.y);a.push(h(l.x-t,l.y-e),h(s.x,l.y-e),h(s.x,s.y),h(l.x-t,s.y))}else a.push(h(l.x,l.y),h(s.x,l.y),h(s.x,s.y),h(l.x,s.y));return U(j([a.map(t=>o.localToMap(t)).filter(t)],o.spatialReference,o.doUnnormalization,!0),a,o)}function U(t,e,o){const n=z(e[3],e[2],o),r=z(e[1],e[2],o),a=z(e[0],e[1],o),l=z(e[0],e[3],o);return{geometry:t,midpoints:null!=n&&null!=r&&null!=a&&null!=l?{top:n,right:r,bottom:a,left:l}:null}}function z(t,e,o){w[0]=t.x,w[1]=t.y,w[2]=0,I[0]=e.x,I[1]=e.y,I[2]=0,r(w,w,I,.5),P.x=w[0],P.y=I[1],P.z=I[2];const n=o.localToMap(P);return null!=n?g(n,o.spatialReference):null}const P=h(0,0,0),w=a(),I=a();function L(t,e,o,r){const a=e.mapToLocalMultiple(t);let s=null,i=null;if(o)s=a[0],i=a[1];else{const t=a[0],e=a[1],o=Math.round(e.x-t.x),n=Math.round(e.y-t.y),r=Math.max(Math.abs(o),Math.abs(n));s=h(o>0?t.x+r/2:t.x-r/2,n>0?t.y+r/2:t.y-r/2),i=h(Math.abs(o)>Math.abs(n)?s.x-r/2:s.x,Math.abs(o)>Math.abs(n)?s.y:s.y-r/2)}const c=e.localToMap(s),p=e.localToMap(i);if(null==c||null==p)return null;e.doUnnormalization&&M([[c,p]],e.spatialReference);const u=g(c,e.spatialReference),m=g(p,e.spatialReference),f=n(e.spatialReference);let d=0;if(x(e.spatialReference))d=f*y(u,m);else{const t=s.x-i.x,e=s.y-i.y;d=f*Math.sqrt(t*t+e*e)*(r||1)}const R=new l({center:u,radius:d,radiusUnit:"meters",spatialReference:e.spatialReference});return{geometry:j(R.rings,R.spatialReference,!1),center:u,edge:m}}function v(e,o,n){const r=o.mapToLocalMultiple(e),a=r[0],l=r[1],s=Math.round(l.x-a.x),i=Math.round(l.y-a.y),c=h(n?a.x:a.x+s/2,n?a.y:a.y+i/2),p=n?s:s/2,y=n?i:i/2,u=60,m=[],f=2*Math.PI/u;function x(t){const e=Math.cos(t),o=Math.sin(t);return h(p*e+c.x,y*o+c.y)}for(let t=0;t<u;t++)m.push(x(t*f));m.push(m[0]);const{spatialReference:M,doUnnormalization:d}=o,R=j([m.map(t=>o.localToMap(t)).filter(t)],M,d,!1),T=o.localToMap(x(Math.PI/2)),b=o.localToMap(x(0)),U=o.localToMap(x(-Math.PI/2)),z=o.localToMap(x(Math.PI));return{geometry:R,midpoints:null!=T&&null!=b&&null!=U&&null!=z?{top:g(T,M),right:g(b,M),bottom:g(U,M),left:g(z,M)}:null}}export{L as createCircle,v as createEllipse,d as createMultipoint,g as createPoint,j as createPolygon,R as createPolyline,b as createRectangle,T as createSquare};
2
+ import{isSome as t,equals as e}from"../../../core/arrayUtils.js";import{clone as o}from"../../../core/lang.js";import{getMetersPerUnitForSR as r}from"../../../core/units.js";import{lerp as n}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import l from"../../../geometry/Circle.js";import s from"../../../geometry/Multipoint.js";import i from"../../../geometry/Point.js";import c from"../../../geometry/Polygon.js";import p from"../../../geometry/Polyline.js";import{execute as y}from"../../../geometry/operators/distanceOperator.js";import{isSimple as u,execute as m}from"../../../geometry/operators/simplifyOperator.js";import{isClockwise as f}from"../../../geometry/support/coordsUtils.js";import{isValid as x}from"../../../geometry/support/spatialReferenceUtils.js";import{makeSurfacePoint as h}from"./surfaceCoordinateSystems.js";import{unnormalize as M}from"../../support/unnormalizationUtils.js";function g(t,e){const o=new i({x:t[0],y:t[1],spatialReference:e});return t.length>2&&(o.z=t[2]),o}function d(t,e){return new s({points:t,spatialReference:e})}function R(t,e,o){const r=new p({paths:t,spatialReference:e});return o&&M(r,r.spatialReference),r}function j(t,r,n,a=!0){const l=o(t);l.forEach(t=>{const o=t[0],r=t[t.length-1];e(o,r)&&1!==t.length||t.push(t[0])});let s=new c({rings:l,spatialReference:r});return s.rings.forEach(t=>{f(t)||t.reverse()}),n&&M(s,s.spatialReference),a&&!u(s)&&x(r)&&(s=m(s)||s),s}function T(e,o,r){const n=o.mapToLocalMultiple(e),a=[],l={x:n[0].x,y:n[0].y},s={x:n[1].x,y:n[1].y},i=Math.round(s.x-l.x),c=Math.round(s.y-l.y),p=Math.max(Math.abs(i),Math.abs(c));if(r){const t={x:l.x+p,y:l.y+p},e={x:l.x-p,y:l.y-p};a.push(h(t.x,e.y),h(e.x,e.y),h(e.x,t.y),h(t.x,t.y))}else{const t={x:i>0?l.x+p:l.x-p,y:c>0?l.y+p:l.y-p};a.push(h(l.x,l.y),h(t.x,l.y),h(t.x,t.y),h(l.x,t.y))}return U(j([a.map(t=>o.localToMap(t)).filter(t)],o.spatialReference,o.doUnnormalization,!0),a,o)}function b(e,o,r){let n=o.mapToLocalMultiple(e);if(1===n.length){const t=48,e=n[0];n=[h(e.x-t,e.y+t),h(e.x+t,e.y-t),h(e.x+t,e.y-t),h(e.x-t,e.y+t)]}const a=[],l={x:n[0].x,y:n[0].y},s={x:n[1].x,y:n[1].y};if(r){const t=Math.round(s.x-l.x),e=Math.round(s.y-l.y);a.push(h(l.x-t,l.y-e),h(s.x,l.y-e),h(s.x,s.y),h(l.x-t,s.y))}else a.push(h(l.x,l.y),h(s.x,l.y),h(s.x,s.y),h(l.x,s.y));return U(j([a.map(t=>o.localToMap(t)).filter(t)],o.spatialReference,o.doUnnormalization,!0),a,o)}function U(t,e,o){const r=z(e[3],e[2],o),n=z(e[1],e[2],o),a=z(e[0],e[1],o),l=z(e[0],e[3],o);return{geometry:t,midpoints:null!=r&&null!=n&&null!=a&&null!=l?{top:r,right:n,bottom:a,left:l}:null}}function z(t,e,o){w[0]=t.x,w[1]=t.y,w[2]=0,I[0]=e.x,I[1]=e.y,I[2]=0,n(w,w,I,.5),P.x=w[0],P.y=I[1],P.z=I[2];const r=o.localToMap(P);return null!=r?g(r,o.spatialReference):null}const P=h(0,0,0),w=a(),I=a();function L(t,e,o,n){const a=e.mapToLocalMultiple(t);let s=null,i=null;if(o)s=a[0],i=a[1];else{const t=a[0],e=a[1],o=Math.round(e.x-t.x),r=Math.round(e.y-t.y),n=Math.max(Math.abs(o),Math.abs(r));s=h(o>0?t.x+n/2:t.x-n/2,r>0?t.y+n/2:t.y-n/2),i=h(Math.abs(o)>Math.abs(r)?s.x-n/2:s.x,Math.abs(o)>Math.abs(r)?s.y:s.y-n/2)}const c=e.localToMap(s),p=e.localToMap(i);if(null==c||null==p)return null;e.doUnnormalization&&M([[c,p]],e.spatialReference);const u=g(c,e.spatialReference),m=g(p,e.spatialReference),f=r(e.spatialReference);let d=0;if(x(e.spatialReference))d=f*y(u,m);else{const t=s.x-i.x,e=s.y-i.y;d=f*Math.sqrt(t*t+e*e)*(n||1)}const R=new l({center:u,radius:d,radiusUnit:"meters",spatialReference:e.spatialReference});return{geometry:j(R.rings,R.spatialReference,!1),center:u,edge:m}}function v(e,o,r){const n=o.mapToLocalMultiple(e),a=n[0],l=n[1],s=Math.round(l.x-a.x),i=Math.round(l.y-a.y),c=h(r?a.x:a.x+s/2,r?a.y:a.y+i/2),p=r?s:s/2,y=r?i:i/2,u=60,m=[],f=2*Math.PI/u;function x(t){const e=Math.cos(t),o=Math.sin(t);return h(p*e+c.x,y*o+c.y)}for(let t=0;t<u;t++)m.push(x(t*f));m.push(m[0]);const{spatialReference:M,doUnnormalization:d}=o,R=j([m.map(t=>o.localToMap(t)).filter(t)],M,d,!1),T=o.localToMap(x(Math.PI/2)),b=o.localToMap(x(0)),U=o.localToMap(x(-Math.PI/2)),z=o.localToMap(x(Math.PI));return{geometry:R,midpoints:null!=T&&null!=b&&null!=U&&null!=z?{top:g(T,M),right:g(b,M),bottom:g(U,M),left:g(z,M)}:null}}export{L as createCircle,v as createEllipse,d as createMultipoint,g as createPoint,j as createPolygon,R as createPolyline,b as createRectangle,T as createSquare};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{max as t,createLength as e,createArea as o}from"../../core/quantity.js";import{deriveLengthUnitFromAreaUnit as r}from"../../core/units.js";import{set as n,scale as i,normalize as s,cross as a,subtract as c,dot as m,add as f}from"../../core/libs/gl-matrix-2/math/vec3.js";import{create as u}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isEarth as p,isSphericalECEF as l}from"../../geometry/ellipsoidUtils.js";import g from"../../geometry/Multipoint.js";import y from"../../geometry/Point.js";import O from"../../geometry/Polygon.js";import h from"../../geometry/Polyline.js";import{projectWithoutEngine as S}from"../../geometry/projectionUtils.js";import J from"../../geometry/SpatialReference.js";import{WGS84ECEFSpatialReference as N,getSphericalPCPF as d,SphericalECEFSpatialReference as j}from"../../geometry/spatialReferenceEllipsoidUtils.js";import{e as R}from"../../chunks/areaOperator.js";import{e as w}from"../../chunks/centroidOperator.js";import{e as k}from"../../chunks/distanceOperator.js";import{l as v,e as P}from"../../chunks/geodeticAreaOperator.js";import{l as U,e as L}from"../../chunks/geodeticDistanceOperator.js";import{l as M,e as b}from"../../chunks/geodeticLengthOperator.js";import{e as x}from"../../chunks/lengthOperator.js";import{e as C}from"../../chunks/simplifyOperator.js";import{projectDirection as E}from"../../geometry/projection/projectDirection.js";import{fromJSON as q}from"../../geometry/support/jsonUtils.js";import{isWGS84 as z,isWebMercator as Z,isCGCS2000 as D,equals as W}from"../../geometry/support/spatialReferenceUtils.js";import{makeOrthonormal as $}from"../3d/support/mathUtils.js";import{autoMeasurementMode as A}from"./measurementWorkerUtils.js";async function I({geometryJSON:t,options:e}){await Promise.allSettled([v(),e?.returnLength?M():void 0]);const n=F(t,e),i=e?.unit??"square-meters",s=C(n)??n,a=P(s,{unit:i,...e}),c=o(a,i),m=e?.lengthUnit??r(i);return{area:c,centroid:e?.returnCentroid?G(s).toJSON():void 0,length:e?.returnLength?await H(s,{unit:m}):void 0}}function B(){v(),M(),U()}function F(t,e){const o="rings"in t?O.fromJSON(t):h.fromJSON(t);if(e?.stagedPoint){const t=y.fromJSON(e.stagedPoint),r=("rings"in o?o.rings:o.paths).at(-1);if(r){const{x:e,y:n,z:i,m:s}=t,a=o.hasZ&&o.hasM?[e,n,i??0,s??0]:o.hasZ?[e,n,i??0]:o.hasM?[e,n,s??0]:[e,n];r.push(a)}}return o}function G(t){return w(t)}async function H(t,o){await M();const r=o?.unit??"meters";return e(b(t,{...o,unit:r}),r)}function K({geometryJSON:t,options:e}){return H(F(t,e),e)}async function Q({geometry1JSON:t,geometry2JSON:o,options:r}){await U();const n=y.fromJSON(t),i=y.fromJSON(o),s=r?.unit??"meters";return e(L(n,i,{...r,unit:s}),s)}async function T({geometry1JSON:t,geometry2JSON:o,options:r}){await U();const n=g.fromJSON(t),i=g.fromJSON(o);if(n.points.length!==i.points.length)throw new Error("Input multipoints must have the same number of points.");const s=n.points.length,a=r?.unit??"meters",c=[],m={...r,unit:a};for(let f=0;f<s;f++){const t=n.getPoint(f),o=i.getPoint(f);c.push(null!=t&&null!=o?e(L(t,o,m),a):null)}return c}function V({geometryJSON:t,options:e}){return X(F(t,e),e)}function X(t,e){const n=e?.unit??"square-meters",i=e?.lengthUnit??r(n),s=C(t)??t,a=R(s,{unit:n,...e});return{area:o(a,n),centroid:e?.returnCentroid?G(s).toJSON():void 0,length:e?.returnLength?Y(s,{unit:i}):void 0}}function Y(t,o){const r=o?.unit??"meters";return e(x(t,{...o,unit:r}),r)}function _({geometryJSON:t,options:e}){return Y(F(t,e),e)}function tt({geometry1JSON:t,geometry2JSON:o,options:r}){const n=y.fromJSON(t),i=y.fromJSON(o),s=r?.unit??"meters";return e(k(n,i,{...r,unit:s}),s)}async function et(t){return it(t.geometryJSON.spatialReference,I,V)(t)}async function ot(t){return it(t.geometryJSON.spatialReference,K,_)(t)}async function rt(t){return it(t.geometry1JSON.spatialReference,Q,tt)(t)}async function nt(e){const o=it(e.topLeftJSON.spatialReference,Q,tt),{topLeftJSON:r,topRightJSON:n,bottomRightJSON:i,bottomLeftJSON:s,options:a}=e,[c,m,f,u]=await Promise.all([o({geometry1JSON:s,geometry2JSON:i,options:a}),o({geometry1JSON:r,geometry2JSON:n,options:a}),o({geometry1JSON:i,geometry2JSON:n,options:a}),o({geometry1JSON:s,geometry2JSON:r,options:a})]);return{width:t(c,m),height:t(u,f)}}function it(t,e,o){switch(A(t)){case 0:return e;case 1:return o}}function st(t){const{geometryJSON:e}=t,o=ut(e.spatialReference);if(!o)throw new Error("Cannot compute horizontal area without a valid spatial reference.");switch(o.mode){case 0:return V(t);case 1:return ct(o,t)}}function at({geometryJSON:t}){const e=q(t);if(!e)return null;const o=C(e);return o?o.toJSON():null}function ct(t,{geometryJSON:e,options:o}){const r=F(e,o),n=gt,i=pt,s=lt,a=W(r.spatialReference,t.spatialReference)?r.clone():S(r,r.spatialReference,t.spatialReference);if(!a)throw new Error(`Cannot project geometry from ${r.spatialReference?.wkid??"unknown"} to ${t.spatialReference.wkid}.`);ft(a,n,i,s);const{area:c,centroid:m,length:f}=X(a,o);return{area:c,centroid:mt(m,n,i,s,t.spatialReference,r.spatialReference),length:f}}function mt(t,e,o,r,n,s){if(!t)return t;i(o,o,t.x),i(r,r,t.y);const a=yt;return f(a,o,r),f(a,a,e),t.x=a[0],t.y=a[1],t.z=a[2],t.spatialReference=n,S(t,t.spatialReference,s)?.toJSON()??void 0}function ft(t,e,o,r){let f=0;n(e,0,0,0);for(const n of t.rings)for(const t of n)e[0]+=t[0],e[1]+=t[1],e[2]+=t[2],f++;i(e,e,1/f);const u=Ot;s(u,e);const p=ht,l=Math.atan2(u[1],u[0]);n(p,-Math.sin(l),Math.cos(l),0),W(t.spatialReference,N)&&(E(e,u,j,u,t.spatialReference),E(e,p,j,p,t.spatialReference)),$(p,u,o),a(r,o,u);const g=yt;for(const i of t.rings)for(const t of i){n(g,t[0],t[1],t[2]),c(g,g,e);const i=m(o,g),s=m(r,g);t[0]=i,t[1]=s}t.hasZ=!1,t.spatialReference=J.WebMercator}function ut(t){return t?p(t)?z(t)||Z(t)||D(t)||l(t)||W(t,N)?{mode:1,spatialReference:N}:{mode:0,spatialReference:t}:{mode:1,spatialReference:d(t)}:null}const pt=u(),lt=u(),gt=u(),yt=u(),Ot=u(),ht=u();export{V as area2D,st as areaHorizontal,et as autoArea2D,rt as autoDistance2DBetweenPoints,ot as autoLength2D,nt as autoSize2D,tt as distance2DBetweenPoints,I as geodeticArea,Q as geodeticDistanceBetweenPoints,T as geodeticDistanceBetweenPointsMany,K as geodeticLength,_ as length2D,B as preloadGeodetic,at as simplify};
2
+ import{max as e,createLength as t,createArea as o}from"../../core/quantity.js";import{deriveLengthUnitFromAreaUnit as r}from"../../core/units.js";import{set as n,scale as i,normalize as s,cross as a,subtract as m,dot as c,add as f}from"../../core/libs/gl-matrix-2/math/vec3.js";import{create as p}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isEarth as u,isSphericalECEF as l}from"../../geometry/ellipsoidUtils.js";import g from"../../geometry/Multipoint.js";import y from"../../geometry/Point.js";import O from"../../geometry/Polygon.js";import S from"../../geometry/Polyline.js";import{projectWithoutEngine as J}from"../../geometry/projectionUtils.js";import N from"../../geometry/SpatialReference.js";import{WGS84ECEFSpatialReference as h,getSphericalPCPF as d,SphericalECEFSpatialReference as j}from"../../geometry/spatialReferenceEllipsoidUtils.js";import{execute as R}from"../../geometry/operators/areaOperator.js";import{execute as w}from"../../geometry/operators/centroidOperator.js";import{execute as x}from"../../geometry/operators/distanceOperator.js";import{load as v,execute as P}from"../../geometry/operators/geodeticAreaOperator.js";import{load as U,execute as L}from"../../geometry/operators/geodeticDistanceOperator.js";import{load as M,execute as b}from"../../geometry/operators/geodeticLengthOperator.js";import{execute as k}from"../../geometry/operators/lengthOperator.js";import{execute as C}from"../../geometry/operators/simplifyOperator.js";import{projectDirection as E}from"../../geometry/projection/projectDirection.js";import{fromJSON as q}from"../../geometry/support/jsonUtils.js";import{isWGS84 as z,isWebMercator as Z,isCGCS2000 as D,equals as W}from"../../geometry/support/spatialReferenceUtils.js";import{makeOrthonormal as $}from"../3d/support/mathUtils.js";import{autoMeasurementMode as A}from"./measurementWorkerUtils.js";async function I({geometryJSON:e,options:t}){await Promise.allSettled([v(),t?.returnLength?M():void 0]);const n=F(e,t),i=t?.unit??"square-meters",s=C(n)??n,a=P(s,{unit:i,...t}),m=o(a,i),c=t?.lengthUnit??r(i);return{area:m,centroid:t?.returnCentroid?G(s).toJSON():void 0,length:t?.returnLength?await H(s,{unit:c}):void 0}}function B(){v(),M(),U()}function F(e,t){const o="rings"in e?O.fromJSON(e):S.fromJSON(e);if(t?.stagedPoint){const e=y.fromJSON(t.stagedPoint),r=("rings"in o?o.rings:o.paths).at(-1);if(r){const{x:t,y:n,z:i,m:s}=e,a=o.hasZ&&o.hasM?[t,n,i??0,s??0]:o.hasZ?[t,n,i??0]:o.hasM?[t,n,s??0]:[t,n];r.push(a)}}return o}function G(e){return w(e)}async function H(e,o){await M();const r=o?.unit??"meters";return t(b(e,{...o,unit:r}),r)}function K({geometryJSON:e,options:t}){return H(F(e,t),t)}async function Q({geometry1JSON:e,geometry2JSON:o,options:r}){await U();const n=y.fromJSON(e),i=y.fromJSON(o),s=r?.unit??"meters";return t(L(n,i,{...r,unit:s}),s)}async function T({geometry1JSON:e,geometry2JSON:o,options:r}){await U();const n=g.fromJSON(e),i=g.fromJSON(o);if(n.points.length!==i.points.length)throw new Error("Input multipoints must have the same number of points.");const s=n.points.length,a=r?.unit??"meters",m=[],c={...r,unit:a};for(let f=0;f<s;f++){const e=n.getPoint(f),o=i.getPoint(f);m.push(null!=e&&null!=o?t(L(e,o,c),a):null)}return m}function V({geometryJSON:e,options:t}){return X(F(e,t),t)}function X(e,t){const n=t?.unit??"square-meters",i=t?.lengthUnit??r(n),s=C(e)??e,a=R(s,{unit:n,...t});return{area:o(a,n),centroid:t?.returnCentroid?G(s).toJSON():void 0,length:t?.returnLength?Y(s,{unit:i}):void 0}}function Y(e,o){const r=o?.unit??"meters";return t(k(e,{...o,unit:r}),r)}function _({geometryJSON:e,options:t}){return Y(F(e,t),t)}function ee({geometry1JSON:e,geometry2JSON:o,options:r}){const n=y.fromJSON(e),i=y.fromJSON(o),s=r?.unit??"meters";return t(x(n,i,{...r,unit:s}),s)}async function te(e){return ie(e.geometryJSON.spatialReference,I,V)(e)}async function oe(e){return ie(e.geometryJSON.spatialReference,K,_)(e)}async function re(e){return ie(e.geometry1JSON.spatialReference,Q,ee)(e)}async function ne(t){const o=ie(t.topLeftJSON.spatialReference,Q,ee),{topLeftJSON:r,topRightJSON:n,bottomRightJSON:i,bottomLeftJSON:s,options:a}=t,[m,c,f,p]=await Promise.all([o({geometry1JSON:s,geometry2JSON:i,options:a}),o({geometry1JSON:r,geometry2JSON:n,options:a}),o({geometry1JSON:i,geometry2JSON:n,options:a}),o({geometry1JSON:s,geometry2JSON:r,options:a})]);return{width:e(m,c),height:e(p,f)}}function ie(e,t,o){switch(A(e)){case 0:return t;case 1:return o}}function se(e){const{geometryJSON:t}=e,o=pe(t.spatialReference);if(!o)throw new Error("Cannot compute horizontal area without a valid spatial reference.");switch(o.mode){case 0:return V(e);case 1:return me(o,e)}}function ae({geometryJSON:e}){const t=q(e);if(!t)return null;const o=C(t);return o?o.toJSON():null}function me(e,{geometryJSON:t,options:o}){const r=F(t,o),n=ge,i=ue,s=le,a=W(r.spatialReference,e.spatialReference)?r.clone():J(r,r.spatialReference,e.spatialReference);if(!a)throw new Error(`Cannot project geometry from ${r.spatialReference?.wkid??"unknown"} to ${e.spatialReference.wkid}.`);fe(a,n,i,s);const{area:m,centroid:c,length:f}=X(a,o);return{area:m,centroid:ce(c,n,i,s,e.spatialReference,r.spatialReference),length:f}}function ce(e,t,o,r,n,s){if(!e)return e;i(o,o,e.x),i(r,r,e.y);const a=ye;return f(a,o,r),f(a,a,t),e.x=a[0],e.y=a[1],e.z=a[2],e.spatialReference=n,J(e,e.spatialReference,s)?.toJSON()??void 0}function fe(e,t,o,r){let f=0;n(t,0,0,0);for(const n of e.rings)for(const e of n)t[0]+=e[0],t[1]+=e[1],t[2]+=e[2],f++;i(t,t,1/f);const p=Oe;s(p,t);const u=Se,l=Math.atan2(p[1],p[0]);n(u,-Math.sin(l),Math.cos(l),0),W(e.spatialReference,h)&&(E(t,p,j,p,e.spatialReference),E(t,u,j,u,e.spatialReference)),$(u,p,o),a(r,o,p);const g=ye;for(const i of e.rings)for(const e of i){n(g,e[0],e[1],e[2]),m(g,g,t);const i=c(o,g),s=c(r,g);e[0]=i,e[1]=s}e.hasZ=!1,e.spatialReference=N.WebMercator}function pe(e){return e?u(e)?z(e)||Z(e)||D(e)||l(e)||W(e,h)?{mode:1,spatialReference:h}:{mode:0,spatialReference:e}:{mode:1,spatialReference:d(e)}:null}const ue=p(),le=p(),ge=p(),ye=p(),Oe=p(),Se=p();export{V as area2D,se as areaHorizontal,te as autoArea2D,re as autoDistance2DBetweenPoints,oe as autoLength2D,ne as autoSize2D,ee as distance2DBetweenPoints,I as geodeticArea,Q as geodeticDistanceBetweenPoints,T as geodeticDistanceBetweenPointsMany,K as geodeticLength,_ as length2D,B as preloadGeodetic,ae as simplify};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- function e(e){return!(null==e||"object"!=typeof e||!("id"in e)||!("type"in e))}function n(n){return!!(e(n)&&"on"in n&&n.on)}function r(n){return!!(e(n)&&"graphics"in n&&n.graphics)}function i(n){return!!(e(n)&&"fields"in n&&"fieldsIndex"in n&&"objectIdField"in n&&"createQuery"in n&&n.createQuery&&"queryFeatures"in n&&n.queryFeatures)}function t(e){return i(e)||r(e)}function u(n){return!!(null!=n&&"object"==typeof n&&"layer"in n&&n.layer&&e(n.layer)&&"view"in n)}function c(e){return!(!u(e)||!("queryGraphics"in e))}function o(e){return!!(u(e)&&"highlight"in e&&e.highlight)}function a(e){return!!(u(e)&&"createQuery"in e&&e.createQuery&&"queryFeatures"in e&&e.queryFeatures)}function f(e){return a(e)||c(e)}function l(e){return!(null==e||"object"!=typeof e||!("isTable"in e)||!e.isTable)}export{t as isSelectableLayer,e as isSelectableLayerBase,n as isSelectableLayerBaseWithEditing,f as isSelectableLayerView,u as isSelectableLayerViewBase,c as isSelectableLayerViewWithGraphics,o as isSelectableLayerViewWithHighlights,a as isSelectableLayerViewWithObjectIds,r as isSelectableLayerWithGraphics,i as isSelectableLayerWithObjectIds,l as isTableLayer};
2
+ function e(e){return!(null==e||"object"!=typeof e||!("id"in e)||!("type"in e))}function n(n){return!!(e(n)&&"on"in n&&n.on)}function r(n){return!!(e(n)&&"graphics"in n&&n.graphics)}function i(n){return!!(e(n)&&"fields"in n&&"fieldsIndex"in n&&"objectIdField"in n&&"createQuery"in n&&n.createQuery&&"queryFeatures"in n&&n.queryFeatures)}function t(e){return i(e)||r(e)}function u(n){return!!(null!=n&&"object"==typeof n&&"layer"in n&&n.layer&&e(n.layer)&&"view"in n)}function c(e){return!(!u(e)||!("queryGraphics"in e))}function o(e){return!!(u(e)&&"highlight"in e&&e.highlight)}function l(e){return!!(u(e)&&"createQuery"in e&&e.createQuery&&"queryFeatures"in e&&e.queryFeatures)}function a(e){return l(e)||c(e)}function f(e,n){return!(null==e||"object"!=typeof e||!("isTable"in e)||!e.isTable)||!!n?.map?.allTables.includes(e)}export{t as isSelectableLayer,e as isSelectableLayerBase,n as isSelectableLayerBaseWithEditing,a as isSelectableLayerView,u as isSelectableLayerViewBase,c as isSelectableLayerViewWithGraphics,o as isSelectableLayerViewWithHighlights,l as isSelectableLayerViewWithObjectIds,r as isSelectableLayerWithGraphics,i as isSelectableLayerWithObjectIds,f as isTableLayer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{fetchMessageBundle as r,onLocaleChange as i}from"../../intl.js";import{multiplyOpacity as s,getContrast as a}from"../../core/colorUtils.js";import{destroyMaybe as n}from"../../core/maybe.js";import{watch as o,initial as m}from"../../core/reactiveUtils.js";import{formatDecimal as l,formatImperialArea as p,formatMetricArea as c,formatImperialLength as h,formatMetricLength as u}from"../../core/unitFormatUtils.js";import{convertUnit as d,deriveLengthUnitFromAreaUnit as v}from"../../core/units.js";import{property as y,subclass as g}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as f}from"../../core/support/UpdatingHandles.js";import{isSupported as _,geodesicDensify as w,geodesicLengths as b,geodesicAreas as L}from"../../geometry/geodesicUtils.js";import j from"../../geometry/Point.js";import S from"../../geometry/Polygon.js";import A from"../../geometry/Polyline.js";import{e as k}from"../../chunks/areaOperator.js";import{e as G,l as x}from"../../chunks/geodeticAreaOperator.js";import{e as M,l as O}from"../../chunks/geodeticDensifyOperator.js";import{e as C,l as H}from"../../chunks/geodeticLengthOperator.js";import{e as R}from"../../chunks/lengthOperator.js";import{e as T}from"../../chunks/simplifyOperator.js";import{polygonCentroidPoint as U}from"../../geometry/support/centroid.js";import q from"../../layers/GraphicsLayer.js";import z from"../../symbols/Font.js";import D from"../../symbols/SimpleFillSymbol.js";import P from"../../symbols/SimpleLineSymbol.js";import E from"../../symbols/SimpleMarkerSymbol.js";import V from"../../symbols/TextSymbol.js";import{SnappingVisualizer2D as F}from"../../views/2d/interactive/SnappingVisualizer2D.js";import W from"../../views/draw/Draw.js";import{createCoordinateHelper as I}from"../../views/interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as B,screenToMap as J,dragManipulatedObject as N}from"../../views/interactive/dragEventPipeline.js";import{GraphicManipulator as K}from"../../views/interactive/GraphicManipulator.js";import{InteractiveToolBase as Q}from"../../views/interactive/InteractiveToolBase.js";import{EditGeometry as X}from"../../views/interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as Y}from"../../views/interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as Z}from"../../views/interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as $}from"../../views/interactive/snapping/SnappingDragPipelineStep.js";import{setupSnappingToggleHandles as ee}from"../../views/interactive/snapping/snappingUtils.js";const te=1e5;let re=class extends Q{constructor(e){super(e),this._measurementLayer=new q({internal:!0,listMode:"hide",visible:!1,title:"Area measurement layer"}),this._manipulatorLayer=new q({internal:!0,listMode:"hide",visible:!1,title:"Area measurement manipulator layer"}),this._snappingLayer=new q({internal:!0,listMode:"hide",visible:!1,title:"Area measurement snapping layer"}),this._updatingHandles=new f,this._vertices=[],this._drawActive=!1,this.measurement=null,this.measurementLabel=null}initialize(){r("esri/core/t9n/Units").then(e=>{this.messages=e});const e=this.view;this._draw=new W({view:e}),e.map.addMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),e.focus(),this.addHandles([i(async()=>{this.messages=await r("esri/core/t9n/Units")}),o(()=>[this.unit,this.messages],()=>{this._updateGraphics()},m),o(()=>[this.view.effectiveTheme.accentColor,this.view.effectiveTheme.textColor],()=>{if(!this._vertices.length)return;const e=this._vertices.map(({coord:e})=>e);for(const{handle:t}of this._vertices)t.remove();this._vertices=[],this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this.manipulators.removeAll(),this._updateSketch(e)})]),ee(this)}destroy(){const{map:e}=this.view;this._draw.view=null,this._draw=n(this._draw),e.removeMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._measurementLayer=n(this._measurementLayer),this._manipulatorLayer=n(this._manipulatorLayer),this._snappingLayer=n(this._snappingLayer),this._updatingHandles=n(this._updatingHandles),this._resetVertices()}get cursor(){return this._drawActive?"crosshair":null}set editable(e){this._set("editable",e),e||this._draw.reset()}get snappingOptions(){return this.snappingManager.options}get updating(){return this._updatingHandles.updating||this.snappingManager.updating}onActivate(){this._drawActive||0!==this._vertices.length||this._startSketch()}onShow(){this._measurementLayer.visible=!0,this._manipulatorLayer.visible=!0,this._snappingLayer.visible=!0}onHide(){this._measurementLayer.visible=!1,this._manipulatorLayer.visible=!1,this._snappingLayer.visible=!1}reset(){this.manipulators.removeAll(),this._resetVertices(),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._draw.reset(),this._drawActive=!1}_getSnappingContext(e){return new Z({elevationInfo:{mode:"on-the-ground",offset:0},pointer:e,editGeometryOperations:new Y(new X("point",I(!1,!1,this.view.spatialReference)),2),visualizer:new F(this._snappingLayer)})}_resetVertices(){for(const{handle:e}of this._vertices)e.remove();this._vertices=[]}_startSketch(){this._drawActive=!0;const{snappingManager:e}=this;this._draw.create("polyline",{mode:"click",snappingManager:e}).on(["draw-complete","vertex-add","vertex-update","vertex-remove","cursor-update","undo","redo"],e=>{this._updateSketch(e.vertices),"draw-complete"===e.type&&this._stopSketch()})}_stopSketch(){if(this._vertices.length<3)return this.reset(),void this._startSketch();this.manipulators.forEach(({manipulator:e})=>{e.interactive=!0}),this._drawActive=!1,this.finishToolCreation()}_updateSketch(e){const{spatialReference:t}=this.view;for(;this._vertices.length>e.length;){const{handle:e,manipulator:t}=this._vertices.pop();e.remove(),this.manipulators.remove(t)}for(let r=this._vertices.length;r<e.length;r++){const[i,s]=e[r],a=new j({x:i,y:s,spatialReference:t}),n=ie(a,this.view,this._manipulatorLayer);this.manipulators.add(n);const o=Y.fromGeometry(a,2);o.on("vertex-update",e=>{const t=e.vertices.at(0);t&&(this._vertices[r].coord=[t.pos[0],t.pos[1]],this._updateGraphics())});const m=B(n,(e,t,r,i)=>{const s=this._getSnappingContext(i),{snappingManager:a}=this,n=this._updatingHandles,{snappingStep:m}=$({snappingContext:s,snappingManager:a,updatingHandles:n});t.next(J(this.view)).next(t=>{if("start"===t.action){const r=new j(t.mapStart);e.graphic.geometry=r,o.trySetGeometry(r)}return t}).next(...m).next(N({operations:o})).next(()=>{e.graphic.geometry=o.data.geometry})});this._vertices.push({manipulator:n,coord:[i,s],handle:m})}if(this._vertices.length){const r=this._vertices.length-1,i=this._vertices[r],[s,a]=e[r];i.coord[0]===s&&i.coord[1]===a||(i.coord=[s,a],i.manipulator.graphic.geometry=new j({x:s,y:a,spatialReference:t}));const n=this._drawActive?this._vertices[r].manipulator:null;this.manipulators.forEach(({manipulator:e})=>{e.interactive=null==n||e!==n})}this._updateGraphics()}_updateGraphics(){if(this._vertices.length<2)return void this._measurementLayer.removeAll();const e=se(this._vertices.map(({coord:e})=>e),this.view.spatialReference);if(!e)return;const{measurement:r,fillGeometry:i,outlineGeometry:n}=e;this._set("measurement",r);const o=r?oe(this.messages,r,this.unit):null;if(this._set("measurementLabel",o),!i&&!n)return;let m,l,p;const{graphics:c}=this._measurementLayer,h=3===c.length,{effectiveTheme:u}=this.view;h?(m=c.at(0),l=c.at(1),p=c.at(2)):(m=new t({symbol:new D({color:s(u.accentColor,.3),outline:null})}),l=new t({symbol:new P({color:u.accentColor,width:2})}),p=new t({symbol:new V({color:u.textColor,font:new z({size:14,family:"sans-serif"}),haloColor:s(a(u.textColor,160),.5),haloSize:2})}),c.removeAll(),c.addMany([m,l,p])),m.geometry=i,l.geometry=n;const d=i?U(i):null,v=d?j.fromJSON(d):null;p.geometry=v,p.symbol.text=o?.area??""}};function ie(e,r,i){const a=8,n={style:"circle",color:s(r.effectiveTheme.accentColor,.5),outline:{type:"simple-line",width:0}},o=new E({...n,size:a}),m=new E({...n,size:1.5*a}),l=new t({geometry:e,symbol:o});return new K({view:r,layer:i,graphic:l,focusedSymbol:m,consumesClicks:!1})}function se(e,t){if(2===e.length){const r=new A({paths:[e],spatialReference:t});let i;return i=t.isGeographic?_(t)?w(r,te):M(r,te,{unit:"meters"}):t.isWebMercator?M(r,te,{unit:"meters"}):r,{measurement:null,fillGeometry:null,outlineGeometry:i}}e.push(e[0]);const r=new A({paths:[e],spatialReference:t}),i=new S({rings:[e],spatialReference:t});let s,a,n=null,o=null;if(t.isGeographic)if(_(t)){if(n=w(r,te),o=w(i,te),o=T(o),!o)return null;s=b([r],"meters")[0],a=L([o],"square-meters")[0]}else{if(n=M(r,te,{unit:"meters"}),o=M(i,te,{unit:"meters"}),o=T(o),!o)return null;s=C(r,{unit:"meters"}),a=G(o,{unit:"square-meters"})}else if(t.isWebMercator){if(n=M(r,te,{unit:"meters"}),o=M(i,te,{unit:"meters"}),!o||!n)return null;if(o=T(o),!o)return null;s=C(r,{unit:"meters"}),a=G(o,{unit:"square-meters"})}else{if(n=r,o=T(i),!o)return null;s=R(r,{unit:"meters"}),a=k(o,{unit:"square-meters"})}return{measurement:{geometry:o,area:a,perimeter:s},fillGeometry:o,outlineGeometry:n}}function ae(e){return null!=e}async function ne(e){(e?.isGeographic&&!_(e)||e?.isWebMercator)&&await Promise.all([x(),O(),H()])}function oe(e,t,r){if(!t||!e)return null;const i={area:null,perimeter:null},{area:s,perimeter:a}=t;switch(r){case"metric":i.area=c(e,s,"square-meters");break;case"imperial":i.area=p(e,s,"square-meters");break;default:{const t=d(s,"square-meters",r);i.area=l(e,t,r);break}}const n=v(r);if(n)switch(n){case"metric":i.perimeter=u(e,a,"meters");break;case"imperial":i.perimeter=h(e,a,"meters");break;default:{const t=d(a,"meters",n);i.perimeter=l(e,t,n);break}}else i.perimeter="";return i}e([y()],re.prototype,"_drawActive",void 0),e([y({readOnly:!0})],re.prototype,"cursor",null),e([y({value:!0})],re.prototype,"editable",null),e([y({readOnly:!0})],re.prototype,"measurement",void 0),e([y({readOnly:!0})],re.prototype,"measurementLabel",void 0),e([y()],re.prototype,"messages",void 0),e([y({constructOnly:!0})],re.prototype,"snappingManager",void 0),e([y()],re.prototype,"unit",void 0),e([y()],re.prototype,"updating",null),e([y({constructOnly:!0})],re.prototype,"view",void 0),re=e([g("esri.widgets.AreaMeasurement2D.AreaMeasurement2DTool")],re);export{re as AreaMeasurement2DTool,se as createAreaMeasurementInfo2D,oe as createAreaMeasurementLabel,ae as isSupported,ne as loadGeometryOperators};
2
+ import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{fetchMessageBundle as r,onLocaleChange as i}from"../../intl.js";import{multiplyOpacity as s,getContrast as a}from"../../core/colorUtils.js";import{destroyMaybe as o}from"../../core/maybe.js";import{watch as n,initial as m}from"../../core/reactiveUtils.js";import{formatDecimal as l,formatImperialArea as p,formatMetricArea as c,formatImperialLength as u,formatMetricLength as h}from"../../core/unitFormatUtils.js";import{convertUnit as d,deriveLengthUnitFromAreaUnit as y}from"../../core/units.js";import{property as v,subclass as g}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as f}from"../../core/support/UpdatingHandles.js";import{isSupported as _,geodesicDensify as w,geodesicLengths as b,geodesicAreas as L}from"../../geometry/geodesicUtils.js";import j from"../../geometry/Point.js";import S from"../../geometry/Polygon.js";import x from"../../geometry/Polyline.js";import{execute as A}from"../../geometry/operators/areaOperator.js";import{execute as G,load as M}from"../../geometry/operators/geodeticAreaOperator.js";import{execute as k,load as O}from"../../geometry/operators/geodeticDensifyOperator.js";import{execute as C,load as H}from"../../geometry/operators/geodeticLengthOperator.js";import{execute as R}from"../../geometry/operators/lengthOperator.js";import{execute as T}from"../../geometry/operators/simplifyOperator.js";import{polygonCentroidPoint as U}from"../../geometry/support/centroid.js";import q from"../../layers/GraphicsLayer.js";import z from"../../symbols/Font.js";import D from"../../symbols/SimpleFillSymbol.js";import P from"../../symbols/SimpleLineSymbol.js";import E from"../../symbols/SimpleMarkerSymbol.js";import V from"../../symbols/TextSymbol.js";import{SnappingVisualizer2D as F}from"../../views/2d/interactive/SnappingVisualizer2D.js";import W from"../../views/draw/Draw.js";import{createCoordinateHelper as I}from"../../views/interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as B,screenToMap as J,dragManipulatedObject as N}from"../../views/interactive/dragEventPipeline.js";import{GraphicManipulator as K}from"../../views/interactive/GraphicManipulator.js";import{InteractiveToolBase as Q}from"../../views/interactive/InteractiveToolBase.js";import{EditGeometry as X}from"../../views/interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as Y}from"../../views/interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as Z}from"../../views/interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as $}from"../../views/interactive/snapping/SnappingDragPipelineStep.js";import{setupSnappingToggleHandles as ee}from"../../views/interactive/snapping/snappingUtils.js";const te=1e5;let re=class extends Q{constructor(e){super(e),this._measurementLayer=new q({internal:!0,listMode:"hide",visible:!1,title:"Area measurement layer"}),this._manipulatorLayer=new q({internal:!0,listMode:"hide",visible:!1,title:"Area measurement manipulator layer"}),this._snappingLayer=new q({internal:!0,listMode:"hide",visible:!1,title:"Area measurement snapping layer"}),this._updatingHandles=new f,this._vertices=[],this._drawActive=!1,this.measurement=null,this.measurementLabel=null}initialize(){r("esri/core/t9n/Units").then(e=>{this.messages=e});const e=this.view;this._draw=new W({view:e}),e.map.addMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),e.focus(),this.addHandles([i(async()=>{this.messages=await r("esri/core/t9n/Units")}),n(()=>[this.unit,this.messages],()=>{this._updateGraphics()},m),n(()=>[this.view.effectiveTheme.accentColor,this.view.effectiveTheme.textColor],()=>{if(!this._vertices.length)return;const e=this._vertices.map(({coord:e})=>e);for(const{handle:t}of this._vertices)t.remove();this._vertices=[],this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this.manipulators.removeAll(),this._updateSketch(e)})]),ee(this)}destroy(){const{map:e}=this.view;this._draw.view=null,this._draw=o(this._draw),e.removeMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._measurementLayer=o(this._measurementLayer),this._manipulatorLayer=o(this._manipulatorLayer),this._snappingLayer=o(this._snappingLayer),this._updatingHandles=o(this._updatingHandles),this._resetVertices()}get cursor(){return this._drawActive?"crosshair":null}set editable(e){this._set("editable",e),e||this._draw.reset()}get snappingOptions(){return this.snappingManager.options}get updating(){return this._updatingHandles.updating||this.snappingManager.updating}onActivate(){this._drawActive||0!==this._vertices.length||this._startSketch()}onShow(){this._measurementLayer.visible=!0,this._manipulatorLayer.visible=!0,this._snappingLayer.visible=!0}onHide(){this._measurementLayer.visible=!1,this._manipulatorLayer.visible=!1,this._snappingLayer.visible=!1}reset(){this.manipulators.removeAll(),this._resetVertices(),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._draw.reset(),this._drawActive=!1}_getSnappingContext(e){return new Z({elevationInfo:{mode:"on-the-ground",offset:0},pointer:e,editGeometryOperations:new Y(new X("point",I(!1,!1,this.view.spatialReference)),2),visualizer:new F(this._snappingLayer)})}_resetVertices(){for(const{handle:e}of this._vertices)e.remove();this._vertices=[]}_startSketch(){this._drawActive=!0;const{snappingManager:e}=this;this._draw.create("polyline",{mode:"click",snappingManager:e}).on(["draw-complete","vertex-add","vertex-update","vertex-remove","cursor-update","undo","redo"],e=>{this._updateSketch(e.vertices),"draw-complete"===e.type&&this._stopSketch()})}_stopSketch(){if(this._vertices.length<3)return this.reset(),void this._startSketch();this.manipulators.forEach(({manipulator:e})=>{e.interactive=!0}),this._drawActive=!1,this.finishToolCreation()}_updateSketch(e){const{spatialReference:t}=this.view;for(;this._vertices.length>e.length;){const{handle:e,manipulator:t}=this._vertices.pop();e.remove(),this.manipulators.remove(t)}for(let r=this._vertices.length;r<e.length;r++){const[i,s]=e[r],a=new j({x:i,y:s,spatialReference:t}),o=ie(a,this.view,this._manipulatorLayer);this.manipulators.add(o);const n=Y.fromGeometry(a,2);n.on("vertex-update",e=>{const t=e.vertices.at(0);t&&(this._vertices[r].coord=[t.pos[0],t.pos[1]],this._updateGraphics())});const m=B(o,(e,t,r,i)=>{const s=this._getSnappingContext(i),{snappingManager:a}=this,o=this._updatingHandles,{snappingStep:m}=$({snappingContext:s,snappingManager:a,updatingHandles:o});t.next(J(this.view)).next(t=>{if("start"===t.action){const r=new j(t.mapStart);e.graphic.geometry=r,n.trySetGeometry(r)}return t}).next(...m).next(N({operations:n})).next(()=>{e.graphic.geometry=n.data.geometry})});this._vertices.push({manipulator:o,coord:[i,s],handle:m})}if(this._vertices.length){const r=this._vertices.length-1,i=this._vertices[r],[s,a]=e[r];i.coord[0]===s&&i.coord[1]===a||(i.coord=[s,a],i.manipulator.graphic.geometry=new j({x:s,y:a,spatialReference:t}));const o=this._drawActive?this._vertices[r].manipulator:null;this.manipulators.forEach(({manipulator:e})=>{e.interactive=null==o||e!==o})}this._updateGraphics()}_updateGraphics(){if(this._vertices.length<2)return void this._measurementLayer.removeAll();const e=se(this._vertices.map(({coord:e})=>e),this.view.spatialReference);if(!e)return;const{measurement:r,fillGeometry:i,outlineGeometry:o}=e;this._set("measurement",r);const n=r?ne(this.messages,r,this.unit):null;if(this._set("measurementLabel",n),!i&&!o)return;let m,l,p;const{graphics:c}=this._measurementLayer,u=3===c.length,{effectiveTheme:h}=this.view;u?(m=c.at(0),l=c.at(1),p=c.at(2)):(m=new t({symbol:new D({color:s(h.accentColor,.3),outline:null})}),l=new t({symbol:new P({color:h.accentColor,width:2})}),p=new t({symbol:new V({color:h.textColor,font:new z({size:14,family:"sans-serif"}),haloColor:s(a(h.textColor,160),.5),haloSize:2})}),c.removeAll(),c.addMany([m,l,p])),m.geometry=i,l.geometry=o;const d=i?U(i):null,y=d?j.fromJSON(d):null;p.geometry=y,p.symbol.text=n?.area??""}};function ie(e,r,i){const a=8,o={style:"circle",color:s(r.effectiveTheme.accentColor,.5),outline:{type:"simple-line",width:0}},n=new E({...o,size:a}),m=new E({...o,size:1.5*a}),l=new t({geometry:e,symbol:n});return new K({view:r,layer:i,graphic:l,focusedSymbol:m,consumesClicks:!1})}function se(e,t){if(2===e.length){const r=new x({paths:[e],spatialReference:t});let i;return i=t.isGeographic?_(t)?w(r,te):k(r,te,{unit:"meters"}):t.isWebMercator?k(r,te,{unit:"meters"}):r,{measurement:null,fillGeometry:null,outlineGeometry:i}}e.push(e[0]);const r=new x({paths:[e],spatialReference:t}),i=new S({rings:[e],spatialReference:t});let s,a,o=null,n=null;if(t.isGeographic)if(_(t)){if(o=w(r,te),n=w(i,te),n=T(n),!n)return null;s=b([r],"meters")[0],a=L([n],"square-meters")[0]}else{if(o=k(r,te,{unit:"meters"}),n=k(i,te,{unit:"meters"}),n=T(n),!n)return null;s=C(r,{unit:"meters"}),a=G(n,{unit:"square-meters"})}else if(t.isWebMercator){if(o=k(r,te,{unit:"meters"}),n=k(i,te,{unit:"meters"}),!n||!o)return null;if(n=T(n),!n)return null;s=C(r,{unit:"meters"}),a=G(n,{unit:"square-meters"})}else{if(o=r,n=T(i),!n)return null;s=R(r,{unit:"meters"}),a=A(n,{unit:"square-meters"})}return{measurement:{geometry:n,area:a,perimeter:s},fillGeometry:n,outlineGeometry:o}}function ae(e){return null!=e}async function oe(e){(e?.isGeographic&&!_(e)||e?.isWebMercator)&&await Promise.all([M(),O(),H()])}function ne(e,t,r){if(!t||!e)return null;const i={area:null,perimeter:null},{area:s,perimeter:a}=t;switch(r){case"metric":i.area=c(e,s,"square-meters");break;case"imperial":i.area=p(e,s,"square-meters");break;default:{const t=d(s,"square-meters",r);i.area=l(e,t,r);break}}const o=y(r);if(o)switch(o){case"metric":i.perimeter=h(e,a,"meters");break;case"imperial":i.perimeter=u(e,a,"meters");break;default:{const t=d(a,"meters",o);i.perimeter=l(e,t,o);break}}else i.perimeter="";return i}e([v()],re.prototype,"_drawActive",void 0),e([v({readOnly:!0})],re.prototype,"cursor",null),e([v({value:!0})],re.prototype,"editable",null),e([v({readOnly:!0})],re.prototype,"measurement",void 0),e([v({readOnly:!0})],re.prototype,"measurementLabel",void 0),e([v()],re.prototype,"messages",void 0),e([v({constructOnly:!0})],re.prototype,"snappingManager",void 0),e([v()],re.prototype,"unit",void 0),e([v()],re.prototype,"updating",null),e([v({constructOnly:!0})],re.prototype,"view",void 0),re=e([g("esri.widgets.AreaMeasurement2D.AreaMeasurement2DTool")],re);export{re as AreaMeasurement2DTool,se as createAreaMeasurementInfo2D,ne as createAreaMeasurementLabel,ae as isSupported,oe as loadGeometryOperators};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{createArcadeProfile as e,createArcadeExecutor as t}from"../../../arcade.js";import r from"../../../core/Logger.js";const s=()=>r.getLogger("esri.widgets.BatchAttributeForm.expressions.ExpressionsManager"),o=e("form-calculation");class c{constructor(){this._executors=new Map,this._executorPromises=new Map}async getArcadeExecutor(e){return this._executors.has(e)?this._executors.get(e):this._executorPromises.has(e)?this._executorPromises.get(e):this._createExecutor(e)}async _createExecutor(e){try{const r=t(e,o);this._executorPromises.set(e,r);const s=await r;return this._executors.set(e,s),s}catch(r){return void s().error("Arcade expression failed to compile.",r,{expression:e})}finally{this._executorPromises.delete(e)}}}export{c as ArcadeExecutorProvider};
2
+ import{createArcadeProfile as e,createArcadeExecutor as r}from"../../../arcade.js";import t from"../../../core/Logger.js";const s=()=>t.getLogger("esri.widgets.BatchAttributeForm.expressions.ExpressionsManager"),o=e("form-calculation");class c{constructor(){this._executors=new Map,this._executorPromises=new Map}async getArcadeExecutor(e){return this._getArcadeExecutor(e)}async _getArcadeExecutor(e){if(this._executors.has(e))return this._executors.get(e);if(this._executorPromises.has(e))return this._executorPromises.get(e);const r=this._createExecutor(e);return this._executorPromises.set(e,r),r}async _createExecutor(e){try{const t=await r(e,o);return this._executors.set(e,t),t}catch(t){return void s().error("Arcade expression failed to compile.",t,{expression:e})}finally{this._executorPromises.delete(e)}}}export{c as ArcadeExecutorProvider};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{property as t,subclass as o}from"../../../core/accessorSupport/decorators.js";import{ElementTemplateBase as r}from"./ElementTemplateBase.js";let l=class extends r{constructor(e){super(e),this.domain=null,this.group=null,this.hint=null,this.input=null,this.type="field"}get fieldName(){return this.field.name}get hasValueCalculations(){for(const e of this.layers){const t=this.getExpressionExecutorsForLayer(e);if(t?.valueExpression)return!0}return!1}};e([t({clonable:"reference"})],l.prototype,"domain",void 0),e([t({clonable:"reference",constructOnly:!0})],l.prototype,"field",void 0),e([t()],l.prototype,"fieldName",null),e([t({clonable:!1})],l.prototype,"group",void 0),e([t()],l.prototype,"hint",void 0),e([t()],l.prototype,"input",void 0),e([t()],l.prototype,"type",void 0),e([t()],l.prototype,"hasValueCalculations",null),l=e([o("esri.widgets.BatchAttributeForm.templates.FieldElementTemplate")],l);export{l as FieldElementTemplate};
2
+ import{__decorate as e}from"tslib";import o from"../../../core/ReactiveMap.js";import{property as t,subclass as r}from"../../../core/accessorSupport/decorators.js";import{ElementTemplateBase as s}from"./ElementTemplateBase.js";let i=class extends s{constructor(e){super(e),this.domain=null,this.group=null,this.hint=null,this.input=null,this.type="field",this._choiceExpressionExecutorsByLayer=new o}get fieldName(){return this.field.name}addLayer(e,o=null,t){super.addLayer(e,o),t&&this._choiceExpressionExecutorsByLayer.set(e,t)}foldIn(e){for(const o of e.layers)this.addLayer(o,e.getExpressionExecutorsForLayer(o),e.getChoiceExpressionExecutorForLayer(o)??void 0)}getChoiceExpressionExecutorForLayer(e){return this._choiceExpressionExecutorsByLayer.get(e)??null}get hasValueCalculations(){for(const e of this.layers){const o=this.getExpressionExecutorsForLayer(e);if(o?.valueExpression)return!0}return!1}};e([t({clonable:"reference"})],i.prototype,"domain",void 0),e([t({clonable:"reference",constructOnly:!0})],i.prototype,"field",void 0),e([t()],i.prototype,"fieldName",null),e([t({clonable:!1})],i.prototype,"group",void 0),e([t()],i.prototype,"hint",void 0),e([t()],i.prototype,"input",void 0),e([t()],i.prototype,"type",void 0),e([t({clonable:e=>new o(Array.from(e))})],i.prototype,"_choiceExpressionExecutorsByLayer",void 0),e([t()],i.prototype,"hasValueCalculations",null),i=e([r("esri.widgets.BatchAttributeForm.templates.FieldElementTemplate")],i);export{i as FieldElementTemplate};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{createArcadeProfile as e,createArcadeExecutor as t}from"../../../../arcade.js";import{isSome as r}from"../../../../core/arrayUtils.js";import n from"../../../../core/Error.js";import o from"../../../../core/Logger.js";import{getEffectiveFieldAlias as i}from"../../../../editing/fieldUtils.js";import s from"../../../../form/ExpressionInfo.js";import a from"../../../../form/elements/AttachmentElement.js";import{isMultipleChoiceInput as m}from"../../../../form/elements/inputs/inputUtils.js";import l from"../../../../form/elements/inputs/attachments/AttachmentInput.js";import p from"../../../../form/elements/inputs/attachments/AudioInput.js";import c from"../../../../form/elements/inputs/attachments/DocumentInput.js";import d from"../../../../form/elements/inputs/attachments/ImageInput.js";import f from"../../../../form/elements/inputs/attachments/VideoInput.js";import{isAttachmentElement as u,isFieldElement as x,isGroupElement as y,isRelationshipElement as h,isTextElement as w,isUtilityNetworkAssociationsElement as E}from"../../../../form/support/formUtils.js";import{getLowerCaseEditTrackingFields as T,isFieldVisibleByDefault as I}from"../../../../layers/support/fieldUtils.js";import{isNumber as v}from"../../../../support/guards.js";import{layerSupportsAttachments as b,getLayerTimeZone as j}from"../../batchAttributeFormUtils.js";import{makeExpressionInfosMap as P,makeExecutorSetForFormElement as g}from"../../expressions/expressionUtils.js";import{AttachmentElementTemplate as Z}from"../AttachmentElementTemplate.js";import A from"../BatchFormTemplate.js";import{FieldElementTemplate as F}from"../FieldElementTemplate.js";import{GroupElementTemplate as U}from"../GroupElementTemplate.js";import{RelationshipElementTemplate as C}from"../RelationshipElementTemplate.js";import{TextElementTemplate as L}from"../TextElementTemplate.js";import{UtilityNetworkAssociationsElementTemplate as B}from"../UtilityNetworkAssociationsElementTemplate.js";import{isGroupElementTemplate as H}from"./templateUtils.js";import{compileTextElementMarkdownToHTML as N}from"./textElementTemplateUtils.js";const V="expression/dea57012-47ca4b55a000-8df62742ed0c",R=e("form-attachment-filename-calculation"),S=()=>o.getLogger("esri.widgets.BatchAttributeForm.templates.templateUtils");async function W(e,t,r=e.formTemplate){return await e.load(),r?.elements&&r.elements.length>0?D(r,e,t):k(e,t)}async function k(e,{arcadeExecutorProvider:t,attachmentsEnabled:r,formTimeZone:n}){const o=new Set(T(e)),i={arcadeExecutorProvider:t,formTimeZone:n,layer:e},s=[];for(const m of e.fields)Y(m,e,o)&&s.push(X(m,i));const a=await Promise.all(s);return r&&await O(a,{arcadeExecutorProvider:t,expressionInfos:P(void 0),layer:e}),new A({elements:a,title:e.formTemplate?.title,preserveFieldValuesWhenHidden:!0})}function K(e,t){for(const r of e??[])if("group"!==r.type){if("field"===r.type&&!1===r.editable&&!r.editableExpression)return!0}else if(K(r.elements??[]))return!0;return!1}async function O(e,{arcadeExecutorProvider:t,expressionInfos:r,layer:n}){if(!b(n))return;const o=await G(new a({displayFilename:!0,input:new l({attachmentAssociationType:"any",inputTypes:[new d,new c,new f,new p]})}),{arcadeExecutorProvider:t,expressionInfos:r,layer:n});e.push(o)}async function D(e,t,r){let n=null;K(e.elements??[])&&(n=new s({title:"",name:V,expression:"false"}));const o=P(n?[...e.expressionInfos??[],n]:e.expressionInfos),i={description:e.description,elements:new Array,title:e.title,preserveFieldValuesWhenHidden:e.preserveFieldValuesWhenHidden,supportsAttachmentElements:e.supportsAttachmentElements},{elements:a}=e;if(!a)return new A(i);let m=!1;const{arcadeExecutorProvider:l,formTimeZone:p}=r;for(const s of a){const e=await $(s,{arcadeExecutorProvider:l,expressionInfos:o,layer:t,formTimeZone:p});if(e){if(i.elements.push(e),m)continue;"attachment"===e.type&&(m=!0),H(e)&&e.elements.some(e=>("attachment"===e.type&&(m=!0),m))}}return e.supportsAttachmentElements||!r.attachmentsEnabled||m||await O(i.elements,{arcadeExecutorProvider:l,expressionInfos:o,layer:t}),new A(i)}async function G(e,{arcadeExecutorProvider:r,expressionInfos:n,layer:o}){let i=null;if(e.filenameExpression)try{i=await t(e.filenameExpression,R)}catch(m){S().error("Failed to compile attachment filename expression",m)}const s=new Z({allowUserRename:e.allowUserRename,attachmentKeyword:e.attachmentKeyword,description:e.description,displayFilename:e.displayFilename,filenameExpressionExecutor:i,input:e.input,label:e.label,maxAttachmentCount:e.maxAttachmentCount,minAttachmentCount:e.minAttachmentCount,useOriginalFilename:e.useOriginalFilename}),a=await g({element:e,expressionInfos:n,provider:r});return s.addLayer(o,a),s}async function $(e,t){return u(e)?G(e,{arcadeExecutorProvider:t.arcadeExecutorProvider,expressionInfos:t.expressionInfos,layer:t.layer}):x(e)?q(e,t):y(e)?z(e,t):h(e)?J(e,t):w(e)?M(e,t):E(e)?Q(e,t):null}async function q(e,{arcadeExecutorProvider:t,expressionInfos:r,layer:o,formTimeZone:i}){const{fieldsIndex:s}=o,{description:a,domain:l,fieldName:p,hint:c,input:d,label:f}=e;if(null==p||!s.has(p))return S().warn(new n("batch-attribute-form:invalid-form-element-field",`Field element with label '${f}' does not refer to a valid field`)),null;if(!1!==e.editable||e.editableExpression||((e=e.clone()).editableExpression=V),d&&m(d)&&d.otherChoice){const e=d.otherChoice.fieldName,t=s.get(e);t&&t.name!==e&&(d.otherChoice=d.otherChoice.clone(),d.otherChoice.fieldName=t.name)}const u=new F({description:a,domain:l,field:s.get(p),hint:c,input:d,formTimeZone:i,layerTimeZone:j(o),label:f}),x=await g({element:e,expressionInfos:r,provider:t});return u.addLayer(o,x),u}async function z(e,t){const{arcadeExecutorProvider:r,expressionInfos:n,layer:o}=t,{description:i,label:s,initialState:a}=e,m=[];for(const c of e.elements){const e=await $(c,t);e&&m.push(e)}const l=new U({description:i,elements:m,label:s,initialState:a??"expanded"}),p=await g({element:e,expressionInfos:n,provider:r});return l.addLayer(o,p),l}async function J(e,t){const{description:r,label:n,displayCount:o,displayType:i,orderByFields:s,relationshipId:a}=e,{arcadeExecutorProvider:m,expressionInfos:l,layer:p,formTimeZone:c}=t,d=new C({description:r,...v(o)&&{displayCount:o},displayType:i,formTimeZone:c,label:n,layerTimeZone:j(p),orderByFields:s,relationshipId:a}),f=await g({element:e,expressionInfos:l,provider:m});return d.addLayer(p,f),d}async function M(e,{arcadeExecutorProvider:t,expressionInfos:n,layer:o,formTimeZone:i}){const{description:s,label:a,text:m,textFormat:l}=e,{fieldsIndex:p}=o,c=m&&"markdown"===l?await N(m):m,d=new L({compiledText:c,description:s,fieldsIndex:p,formTimeZone:i,label:a,layerTimeZone:j(o)}),f=await g({element:e,expressionInfos:n,provider:t}),{expressionParts:u}=d;if(u.length){const e=await Promise.all(u.map(e=>{const r=n.get(e)?.expression??e;return t.getArcadeExecutor(r)}));f.textExpressions=e.filter(r)}return d.addLayer(o,f),d}async function Q(e,t){const{associationTypes:r,description:n,label:o}=e,{arcadeExecutorProvider:i,expressionInfos:s,formTimeZone:a,layer:m}=t,l=new B({associationTypes:r,description:n,formTimeZone:a,label:o,layerTimeZone:j(m)}),p=await g({element:e,expressionInfos:s,provider:i});return l.addLayer(m,p),l}async function X(e,{arcadeExecutorProvider:t,layer:r,formTimeZone:n}){const o=i(e,r)||e.name,s=new F({field:e,formTimeZone:n,label:o,layerTimeZone:j(r)}),a={};return e.editable&&r.userHasUpdateItemPrivileges&&(a.editableExpression=await t.getArcadeExecutor("true")),s.addLayer(r,a),s}function Y(e,t,r){return!r.has(e.name.toLowerCase())&&I(e,t)}export{W as createBatchFormTemplate,k as createBatchFormTemplateFromFields};
2
+ import{createArcadeProfile as e,createArcadeExecutor as t}from"../../../../arcade.js";import{isSome as r}from"../../../../core/arrayUtils.js";import n from"../../../../core/Error.js";import o from"../../../../core/Logger.js";import{getEffectiveFieldAlias as i}from"../../../../editing/fieldUtils.js";import s from"../../../../form/ExpressionInfo.js";import a from"../../../../form/elements/AttachmentElement.js";import{isMultipleChoiceInput as m,isDynamicChoiceInput as l}from"../../../../form/elements/inputs/inputUtils.js";import p from"../../../../form/elements/inputs/attachments/AttachmentInput.js";import c from"../../../../form/elements/inputs/attachments/AudioInput.js";import d from"../../../../form/elements/inputs/attachments/DocumentInput.js";import f from"../../../../form/elements/inputs/attachments/ImageInput.js";import u from"../../../../form/elements/inputs/attachments/VideoInput.js";import{isAttachmentElement as x,isFieldElement as y,isGroupElement as h,isRelationshipElement as w,isTextElement as E,isUtilityNetworkAssociationsElement as T}from"../../../../form/support/formUtils.js";import{getLowerCaseEditTrackingFields as I,isFieldVisibleByDefault as v}from"../../../../layers/support/fieldUtils.js";import{isNumber as b}from"../../../../support/guards.js";import{layerSupportsAttachments as j,getLayerTimeZone as g}from"../../batchAttributeFormUtils.js";import{makeExpressionInfosMap as P,makeExecutorSetForFormElement as A}from"../../expressions/expressionUtils.js";import{AttachmentElementTemplate as Z}from"../AttachmentElementTemplate.js";import F from"../BatchFormTemplate.js";import{FieldElementTemplate as U}from"../FieldElementTemplate.js";import{GroupElementTemplate as C}from"../GroupElementTemplate.js";import{RelationshipElementTemplate as L}from"../RelationshipElementTemplate.js";import{TextElementTemplate as B}from"../TextElementTemplate.js";import{UtilityNetworkAssociationsElementTemplate as H}from"../UtilityNetworkAssociationsElementTemplate.js";import{isGroupElementTemplate as N}from"./templateUtils.js";import{compileTextElementMarkdownToHTML as V}from"./textElementTemplateUtils.js";const R="expression/dea57012-47ca4b55a000-8df62742ed0c",S=e("form-attachment-filename-calculation"),W=()=>o.getLogger("esri.widgets.BatchAttributeForm.templates.templateUtils");async function k(e,t,r=e.formTemplate){return await e.load(),r?.elements&&r.elements.length>0?G(r,e,t):K(e,t)}async function K(e,{arcadeExecutorProvider:t,attachmentsEnabled:r,formTimeZone:n}){const o=new Set(I(e)),i={arcadeExecutorProvider:t,formTimeZone:n,layer:e},s=[];for(const m of e.fields)_(m,e,o)&&s.push(Y(m,i));const a=await Promise.all(s);return r&&await D(a,{arcadeExecutorProvider:t,expressionInfos:P(void 0),layer:e}),new F({elements:a,title:e.formTemplate?.title,preserveFieldValuesWhenHidden:!0})}function O(e,t){for(const r of e??[])if("group"!==r.type){if("field"===r.type&&!1===r.editable&&!r.editableExpression)return!0}else if(O(r.elements??[]))return!0;return!1}async function D(e,{arcadeExecutorProvider:t,expressionInfos:r,layer:n}){if(!j(n))return;const o=await $(new a({displayFilename:!0,input:new p({attachmentAssociationType:"any",inputTypes:[new f,new d,new u,new c]})}),{arcadeExecutorProvider:t,expressionInfos:r,layer:n});e.push(o)}async function G(e,t,r){let n=null;O(e.elements??[])&&(n=new s({title:"",name:R,expression:"false"}));const o=P(n?[...e.expressionInfos??[],n]:e.expressionInfos),i={description:e.description,elements:new Array,title:e.title,preserveFieldValuesWhenHidden:e.preserveFieldValuesWhenHidden,supportsAttachmentElements:e.supportsAttachmentElements},{elements:a}=e;if(!a)return new F(i);let m=!1;const{arcadeExecutorProvider:l,formTimeZone:p}=r;for(const s of a){const e=await q(s,{arcadeExecutorProvider:l,expressionInfos:o,layer:t,formTimeZone:p});if(e){if(i.elements.push(e),m)continue;"attachment"===e.type&&(m=!0),N(e)&&e.elements.some(e=>("attachment"===e.type&&(m=!0),m))}}return e.supportsAttachmentElements||!r.attachmentsEnabled||m||await D(i.elements,{arcadeExecutorProvider:l,expressionInfos:o,layer:t}),new F(i)}async function $(e,{arcadeExecutorProvider:r,expressionInfos:n,layer:o}){let i=null;if(e.filenameExpression)try{i=await t(e.filenameExpression,S)}catch(m){W().error("Failed to compile attachment filename expression",m)}const s=new Z({allowUserRename:e.allowUserRename,attachmentKeyword:e.attachmentKeyword,description:e.description,displayFilename:e.displayFilename,filenameExpressionExecutor:i,input:e.input,label:e.label,maxAttachmentCount:e.maxAttachmentCount,minAttachmentCount:e.minAttachmentCount,useOriginalFilename:e.useOriginalFilename}),a=await A({element:e,expressionInfos:n,provider:r});return s.addLayer(o,a),s}async function q(e,t){return x(e)?$(e,{arcadeExecutorProvider:t.arcadeExecutorProvider,expressionInfos:t.expressionInfos,layer:t.layer}):y(e)?z(e,t):h(e)?J(e,t):w(e)?M(e,t):E(e)?Q(e,t):T(e)?X(e,t):null}async function z(e,{arcadeExecutorProvider:t,expressionInfos:r,layer:o,formTimeZone:i}){const{fieldsIndex:s}=o,{description:a,domain:p,fieldName:c,hint:d,input:f,label:u}=e;if(null==c||!s.has(c))return W().warn(new n("batch-attribute-form:invalid-form-element-field",`Field element with label '${u}' does not refer to a valid field`)),null;if(!1!==e.editable||e.editableExpression||((e=e.clone()).editableExpression=R),f&&m(f)&&f.otherChoice){const e=f.otherChoice.fieldName,t=s.get(e);t&&t.name!==e&&(f.otherChoice=f.otherChoice.clone(),f.otherChoice.fieldName=t.name)}const x=new U({description:a,domain:p,field:s.get(c),hint:d,input:f,formTimeZone:i,layerTimeZone:g(o),label:u}),y=await A({element:e,expressionInfos:r,provider:t});let h;if(f&&l(f)&&f.choiceExpression){const e=r.get(f.choiceExpression);h=e?await t.getArcadeExecutor(e.expression):void 0}return x.addLayer(o,y,h),x}async function J(e,t){const{arcadeExecutorProvider:r,expressionInfos:n,layer:o}=t,{description:i,label:s,initialState:a}=e,m=[];for(const c of e.elements){const e=await q(c,t);e&&m.push(e)}const l=new C({description:i,elements:m,label:s,initialState:a??"expanded"}),p=await A({element:e,expressionInfos:n,provider:r});return l.addLayer(o,p),l}async function M(e,t){const{description:r,label:n,displayCount:o,displayType:i,orderByFields:s,relationshipId:a}=e,{arcadeExecutorProvider:m,expressionInfos:l,layer:p,formTimeZone:c}=t,d=new L({description:r,...b(o)&&{displayCount:o},displayType:i,formTimeZone:c,label:n,layerTimeZone:g(p),orderByFields:s,relationshipId:a}),f=await A({element:e,expressionInfos:l,provider:m});return d.addLayer(p,f),d}async function Q(e,{arcadeExecutorProvider:t,expressionInfos:n,layer:o,formTimeZone:i}){const{description:s,label:a,text:m,textFormat:l}=e,{fieldsIndex:p}=o,c=m&&"markdown"===l?await V(m):m,d=new B({compiledText:c,description:s,fieldsIndex:p,formTimeZone:i,label:a,layerTimeZone:g(o)}),f=await A({element:e,expressionInfos:n,provider:t}),{expressionParts:u}=d;if(u.length){const e=await Promise.all(u.map(e=>{const r=n.get(e)?.expression??e;return t.getArcadeExecutor(r)}));f.textExpressions=e.filter(r)}return d.addLayer(o,f),d}async function X(e,t){const{associationTypes:r,description:n,label:o}=e,{arcadeExecutorProvider:i,expressionInfos:s,formTimeZone:a,layer:m}=t,l=new H({associationTypes:r,description:n,formTimeZone:a,label:o,layerTimeZone:g(m)}),p=await A({element:e,expressionInfos:s,provider:i});return l.addLayer(m,p),l}async function Y(e,{arcadeExecutorProvider:t,layer:r,formTimeZone:n}){const o=i(e,r)||e.name,s=new U({field:e,formTimeZone:n,label:o,layerTimeZone:g(r)}),a={};return e.editable&&r.userHasUpdateItemPrivileges&&(a.editableExpression=await t.getArcadeExecutor("true")),s.addLayer(r,a),s}function _(e,t,r){return!r.has(e.name.toLowerCase())&&v(e,t)}export{k as createBatchFormTemplate,K as createBatchFormTemplateFromFields};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{numericHash as t}from"../../../../core/string.js";import{isBarcodeScannerInput as n,isComboBoxInput as e,isRadioButtonsInput as i,isDatePickerInput as r,isDateTimePickerInput as o,isDateTimeOffsetPickerInput as $,isSwitchInput as u,isTextAreaInput as c,isTextBoxInput as s,isTimePickerInput as l,isMultipleChoiceInput as m}from"../../../../form/elements/inputs/inputUtils.js";import{isFieldElementTemplate as a,isGroupElementTemplate as f,isRelationshipElementTemplate as p,isTextElementTemplate as g,isAttachmentElementTemplate as d,isUtilityNetworkAssociationsElementTemplate as S,isExcludedFromSharedForm as h}from"./templateUtils.js";const y="",O="num:";function x(n){return a(n)?t(C(n)).toString():f(n)?t(N(n)).toString():p(n)?t(j(n)).toString():g(n)?t(J(n)).toString():d(n)?t(V(n)).toString():S(n)?t(v(n)).toString():t(JSON.stringify(n)).toString()}function C(t){return`${w(t)}.${D(t.field)}.${I(t.domain)}.${t.hint??y}.${A(t.input)}`}function N(t){const n=T(t);let e=y;for(const i of t.elements)h(i)||(e+="."+x(i).toString());return`${n}${e}`}function b(n){return t(T(n)).toString()}function T(t){return w(t)+`.${t.initialState}`}function j(t){const{displayCount:n,displayType:e,relationshipId:i}=t;return`${w(t)}.${n}.${e}.${i}.${U(t.orderByFields??[])}`}function J(t){const n=w(t),{compiledText:e}=t;return`${n}.${e??y}`}function V(t){return`${w(t)}.${t.allowUserRename}.${t.attachmentKeyword??y}.${t.displayFilename}.${F(t.input)}.${t.maxAttachmentCount??y}.${t.minAttachmentCount??y}.${t.useOriginalFilename}`}function v(t){return`${w(t)}.${L(t.associationTypes)}`}function w(t){return`${t.label??y}.${t.description??y}.${t.layerTimeZone??y}`}function A(t){if(!t)return y;const{type:a}=t;if(n(t))return a??y;if(e(t)||i(t)){const{showNoValueOption:n}=t;return`${a}.${n}.${t.noValueOptionLabel??y}`}if(r(t))return`${a}.${R(t)}`;if(o(t)){const n=t.min?.getTime(),e=t.max?.getTime(),{includeTime:i}=t;return`${a}.${n}.${e}.${i}`}if($(t)){const n=R(t),{includeTimeOffset:e,timeResolution:i}=t;return`${a}.${n}.${e}.${i}`}if(u(t)){const{offValue:n,onValue:e}=t;return`${a}.${Z(n)}.${Z(e)}`}if(c(t)||s(t)){return`${a}.${t.minLength?.toString()??y}.${t.maxLength?.toString()??y}`}if(l(t)){const n=R(t),{timeResolution:e}=t;return`${a}.${n}.${e}`}if(m(t)){return`${a}.${R({min:t.minimumChoices?.toString(),max:t.maximumChoices?.toString()})}.${t.choiceDelimiter??y}.${t.includeSelectAllChoices}.${t.otherChoice?.fieldName??y}.${t.otherChoice?.label??y}.${t.otherChoice?.hint??y}.${B(t)}`}return JSON.stringify(t)}function F(t){return t?JSON.stringify(t.toJSON()):y}function L(t){return t.map(t=>JSON.stringify(t.toJSON())).sort().join(".")}function R(t){return`${t.min??y}.${t.max??y}`}function U(t){return t.map(({field:t,order:n})=>`${t}.${n}`).sort().join(".")}function B(t){return(t.choices??[]).map(({label:t,value:n})=>`${t}.${n}`).sort().join(".")}function D(t){const n=t.name,e=t.alias??y;return`${n}.${e===n?y:e}.${t.nullable}.${t.type}.${t.length??y}.${t.description??y}.${t.editable}.${t.visible}`}function I(t){return t?"coded-value"===t.type?K(t):"range"===t.type?k(t):JSON.stringify(t):y}function K(t){const{type:n}=t;return`${n}.${t.codedValues.map(({code:t,name:n})=>`${Z(t)}.${n}`).sort().join(".")}`}function Z(t){return"number"==typeof t?`${O}${t}`:t}function k(t){const{maxValue:n,minValue:e,type:i}=t;return`${i}.${e}.${n}`}export{x as hashElementTemplate,b as hashGroupElementTemplateWithoutChildren};
2
+ import{numericHash as t}from"../../../../core/string.js";import{isBarcodeScannerInput as n,isDynamicChoiceInput as e,isComboBoxInput as i,isRadioButtonsInput as o,isDatePickerInput as r,isDateTimePickerInput as $,isDateTimeOffsetPickerInput as u,isSwitchInput as c,isTextAreaInput as l,isTextBoxInput as s,isTimePickerInput as a,isMultipleChoiceInput as m}from"../../../../form/elements/inputs/inputUtils.js";import{isFieldElementTemplate as f,isGroupElementTemplate as p,isRelationshipElementTemplate as g,isTextElementTemplate as d,isAttachmentElementTemplate as h,isUtilityNetworkAssociationsElementTemplate as S,isExcludedFromSharedForm as y}from"./templateUtils.js";const O="",N="num:";function b(n){return f(n)?t(x(n)).toString():p(n)?t(C(n)).toString():g(n)?t(j(n)).toString():d(n)?t(J(n)).toString():h(n)?t(w(n)).toString():S(n)?t(L(n)).toString():t(JSON.stringify(n)).toString()}function x(t){return`${v(t)}.${I(t.field)}.${K(t.domain)}.${t.hint??O}.${A(t.input)}`}function C(t){const n=T(t);let e=O;for(const i of t.elements)y(i)||(e+="."+b(i).toString());return`${n}${e}`}function V(n){return t(T(n)).toString()}function T(t){return v(t)+`.${t.initialState}`}function j(t){const{displayCount:n,displayType:e,relationshipId:i}=t;return`${v(t)}.${n}.${e}.${i}.${B(t.orderByFields??[])}`}function J(t){const n=v(t),{compiledText:e}=t;return`${n}.${e??O}`}function w(t){return`${v(t)}.${t.allowUserRename}.${t.attachmentKeyword??O}.${t.displayFilename}.${F(t.input)}.${t.maxAttachmentCount??O}.${t.minAttachmentCount??O}.${t.useOriginalFilename}`}function L(t){return`${v(t)}.${R(t.associationTypes)}`}function v(t){return`${t.label??O}.${t.description??O}.${t.layerTimeZone??O}`}function A(t){if(!t)return O;const{type:f}=t;if(n(t))return f??O;if(e(t)){const{showNoValueOption:n}=t;return`${f}.${n}.${t.noValueOptionLabel??O}`}if(i(t)||o(t)){const{showNoValueOption:n}=t;return`${f}.${n}.${t.noValueOptionLabel??O}`}if(r(t))return`${f}.${U(t)}`;if($(t)){const n=t.min?.getTime(),e=t.max?.getTime(),{includeTime:i}=t;return`${f}.${n}.${e}.${i}`}if(u(t)){const n=U(t),{includeTimeOffset:e,timeResolution:i}=t;return`${f}.${n}.${e}.${i}`}if(c(t)){const{offValue:n,onValue:e}=t;return`${f}.${k(n)}.${k(e)}`}if(l(t)||s(t)){return`${f}.${t.minLength?.toString()??O}.${t.maxLength?.toString()??O}`}if(a(t)){const n=U(t),{timeResolution:e}=t;return`${f}.${n}.${e}`}if(m(t)){return`${f}.${U({min:t.minimumChoices?.toString(),max:t.maximumChoices?.toString()})}.${t.choiceDelimiter??O}.${t.includeSelectAllChoices}.${t.otherChoice?.fieldName??O}.${t.otherChoice?.label??O}.${t.otherChoice?.hint??O}.${D(t)}`}return JSON.stringify(t)}function F(t){return t?JSON.stringify(t.toJSON()):O}function R(t){return t.map(t=>JSON.stringify(t.toJSON())).sort().join(".")}function U(t){return`${t.min??O}.${t.max??O}`}function B(t){return t.map(({field:t,order:n})=>`${t}.${n}`).sort().join(".")}function D(t){return(t.choices??[]).map(({label:t,value:n})=>`${t}.${n}`).sort().join(".")}function I(t){const n=t.name,e=t.alias??O;return`${n}.${e===n?O:e}.${t.nullable}.${t.type}.${t.length??O}.${t.description??O}.${t.editable}.${t.visible}`}function K(t){return t?"coded-value"===t.type?Z(t):"range"===t.type?q(t):JSON.stringify(t):O}function Z(t){const{type:n}=t;return`${n}.${t.codedValues.map(({code:t,name:n})=>`${k(t)}.${n}`).sort().join(".")}`}function k(t){return"number"==typeof t?`${N}${t}`:t}function q(t){const{maxValue:n,minValue:e,type:i}=t;return`${i}.${e}.${n}`}export{b as hashElementTemplate,V as hashGroupElementTemplateWithoutChildren};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{fetchMessageBundle as i,onLocaleChange as r}from"../../intl.js";import{getContrast as s,multiplyOpacity as n}from"../../core/colorUtils.js";import{handlesGroup as o}from"../../core/handleUtils.js";import{destroyMaybe as a}from"../../core/maybe.js";import{watch as l,initial as p}from"../../core/reactiveUtils.js";import{formatDecimal as m,formatImperialLength as c,formatMetricLength as h}from"../../core/unitFormatUtils.js";import{convertUnit as u}from"../../core/units.js";import{property as d,subclass as y}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as v}from"../../core/support/UpdatingHandles.js";import{isSupported as g,geodesicLengths as _,geodesicDensify as f}from"../../geometry/geodesicUtils.js";import w from"../../geometry/Point.js";import L from"../../geometry/Polyline.js";import{e as b,l as S}from"../../chunks/geodeticDensifyOperator.js";import{e as j,l as M}from"../../chunks/geodeticLengthOperator.js";import{e as x}from"../../chunks/lengthOperator.js";import C from"../../layers/GraphicsLayer.js";import A from"../../symbols/CIMSymbol.js";import D from"../../symbols/Font.js";import k from"../../symbols/SimpleMarkerSymbol.js";import G from"../../symbols/TextSymbol.js";import{SnappingVisualizer2D as T}from"../../views/2d/interactive/SnappingVisualizer2D.js";import O from"../../views/draw/Draw.js";import{createCoordinateHelper as H}from"../../views/interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as P,screenToMap as R,dragManipulatedObject as U}from"../../views/interactive/dragEventPipeline.js";import{GraphicManipulator as E}from"../../views/interactive/GraphicManipulator.js";import{InteractiveToolBase as I}from"../../views/interactive/InteractiveToolBase.js";import{EditGeometry as z}from"../../views/interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as B}from"../../views/interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as F}from"../../views/interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as V}from"../../views/interactive/snapping/SnappingDragPipelineStep.js";import{setupSnappingToggleHandles as W}from"../../views/interactive/snapping/snappingUtils.js";const N=1e5;let q=class extends I{constructor(e){super(e),this._measurementLayer=new C({internal:!0,listMode:"hide",visible:!1,title:"DistanceMeasurement2DTool measurement layer"}),this._manipulatorLayer=new C({internal:!0,listMode:"hide",visible:!1,title:"DistanceMeasurement2DTool manipulator layer"}),this._snappingLayer=new C({internal:!0,listMode:"hide",visible:!1,title:"DistanceMeasurement2DTool snapping layer"}),this._updatingHandles=new v,this._vertices=[],this._drawActive=!1,this.measurement=null,this.measurementLabel=null}initialize(){i("esri/core/t9n/Units").then(e=>{this.messages=e});const e=this.view;this._draw=new O({view:e}),e.map.addMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),e.focus(),this.addHandles([r(async()=>{this.messages=await i("esri/core/t9n/Units")}),l(()=>[this.unit,this.messages],()=>{this._updatePolylines()},p),l(()=>[this.view.effectiveTheme.accentColor,this.view.effectiveTheme.textColor],()=>{if(!this._vertices.length)return;const e=this._vertices.map(({coord:e})=>e);for(const{handle:t}of this._vertices)t.remove();this._vertices=[],this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this.manipulators.removeAll(),this._updateSketch(e)})]),W(this)}destroy(){const{map:e}=this.view;this._draw.view=null,this._draw=a(this._draw),e.removeMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._measurementLayer=a(this._measurementLayer),this._manipulatorLayer=a(this._manipulatorLayer),this._snappingLayer=a(this._snappingLayer),this._updatingHandles=a(this._updatingHandles),this._resetVertices()}get cursor(){return this._drawActive?"crosshair":null}set editable(e){this._set("editable",e),e||this._draw.reset()}get snappingOptions(){return this.snappingManager.options}get updating(){return this._updatingHandles.updating||this.snappingManager.updating}onActivate(){this._drawActive||0!==this._vertices.length||this._startSketch()}onShow(){this._measurementLayer.visible=!0,this._manipulatorLayer.visible=!0,this._snappingLayer.visible=!0}onHide(){this._measurementLayer.visible=!1,this._manipulatorLayer.visible=!1,this._snappingLayer.visible=!1}_getSnappingContext(e){return new F({elevationInfo:{mode:"on-the-ground",offset:0},pointer:e,editGeometryOperations:new B(new z("point",H(!1,!1,this.view.spatialReference)),2),visualizer:new T(this._snappingLayer)})}_resetVertices(){for(const{handle:e}of this._vertices)e.remove();this._vertices=[]}_startSketch(){this._drawActive=!0;const{snappingManager:e}=this;this._draw.create("polyline",{mode:"click",snappingManager:e}).on(["draw-complete","vertex-add","vertex-update","vertex-remove","cursor-update","undo","redo"],e=>{this._updateSketch(e.vertices),"draw-complete"===e.type&&this._stopSketch()})}_stopSketch(){this.manipulators.forEach(({manipulator:e})=>{e.interactive=!0}),this._drawActive=!1,this.finishToolCreation()}_updateSketch(e){const{spatialReference:t}=this.view;for(;this._vertices.length>e.length;){const{handle:e,manipulator:t}=this._vertices.pop();e.remove(),this.manipulators.remove(t)}for(let l=this._vertices.length;l<e.length;l++){const[i,r]=e[l],s=new w({x:i,y:r,spatialReference:t}),n=J(s,this.view,this._manipulatorLayer);this.manipulators.add(n);const a=B.fromGeometry(s,2),p=[a.on("vertex-update",e=>{const t=e.vertices.at(0);t&&(this._vertices[l].coord=[t.pos[0],t.pos[1]],this._updatePolylines())}),P(n,(e,t,i,r)=>{const s=this._getSnappingContext(r),{snappingManager:n}=this,o=this._updatingHandles,{snappingStep:l}=V({snappingContext:s,snappingManager:n,updatingHandles:o});t.next(R(this.view)).next(t=>{if("start"===t.action){const i=new w(t.mapStart);e.graphic.geometry=i,a.trySetGeometry(i)}return t}).next(...l).next(U({operations:a})).next(()=>{e.graphic.geometry=a.data.geometry})})];this._vertices.push({manipulator:n,coord:[i,r],handle:o(p)})}const i=this._vertices.length-1,r=this._vertices[i],[s,n]=e[i];r.coord[0]===s&&r.coord[1]===n||(r.coord=[s,n],r.manipulator.graphic.geometry=new w({x:s,y:n,spatialReference:t}));const a=this._drawActive?this._vertices[i].manipulator:null;this.manipulators.forEach(({manipulator:e})=>{e.interactive=null==a||e!==a}),this._updatePolylines()}_updatePolylines(){if(this._vertices.length<2)return void this._measurementLayer.removeAll();const e=K(this._vertices.map(({coord:e})=>e),this.view.spatialReference);if(!e)return;const{measurement:i,drawing:r,original:o}=e;this._set("measurement",i);const a=Y(this.messages,i,this.unit);let l,p;this._set("measurementLabel",a);const{graphics:m}=this._measurementLayer,c=2===m.length,{effectiveTheme:h}=this.view;c?(l=m.at(0),p=m.at(1)):(l=new t({symbol:new A({data:{type:"CIMSymbolReference",symbol:{type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",effects:[{type:"CIMGeometricEffectDashes",dashTemplate:[14,12],lineDashEnding:"FullGap",controlPointEnding:"NoConstraint"}],enable:!0,capStyle:"Butt",joinStyle:"Round",width:3.5,color:s(h.accentColor).toArray()},{type:"CIMSolidStroke",enable:!0,capStyle:"Butt",joinStyle:"Round",width:5,color:h.accentColor.toArray()}]}}})}),p=new t({symbol:new G({color:h.textColor,haloColor:n(s(h.textColor,160),.5),haloSize:2,font:new D({size:14,family:"sans-serif"})})}),m.removeAll(),m.addMany([l,p])),l.geometry=r,p.geometry=o.extent?.center,p.symbol.text=a}};function J(e,i,r){const s=n(i.effectiveTheme.accentColor,.5),o={type:"simple-line",width:0},a=8,l=new k({style:"circle",color:s,size:a,outline:o}),p=new k({style:"circle",color:s,size:1.5*a,outline:o}),m=new t({geometry:e,symbol:l});return new E({view:i,layer:r,graphic:m,focusedSymbol:p,consumesClicks:!1})}function K(e,t){const i=new L({paths:[e],spatialReference:t});let r,s;return t.isGeographic?g(t)?(r=_([i],"meters")[0],s=f(i,N)):(r=j(i,{unit:"meters"}),s=b(i,N,{unit:"meters"})):t.isWebMercator?(r=j(i,{unit:"meters"}),s=b(i,N,{unit:"meters"})):(r=x(i,{unit:"meters"}),s=i),{measurement:{geometry:s,length:r},original:i,drawing:s}}function Q(e){return null!=e}async function X(e){(e?.isGeographic&&!g(e)||e?.isWebMercator)&&await Promise.all([S(),M()])}function Y(e,t,i){if(!t||!e)return"";switch(i){case"metric":return h(e,t.length,"meters");case"imperial":return c(e,t.length,"meters");default:return m(e,u(t.length,"meters",i),i)}}e([d()],q.prototype,"_drawActive",void 0),e([d({readOnly:!0})],q.prototype,"cursor",null),e([d({value:!0})],q.prototype,"editable",null),e([d({readOnly:!0})],q.prototype,"measurement",void 0),e([d({readOnly:!0})],q.prototype,"measurementLabel",void 0),e([d()],q.prototype,"messages",void 0),e([d({constructOnly:!0})],q.prototype,"snappingManager",void 0),e([d()],q.prototype,"unit",void 0),e([d()],q.prototype,"updating",null),e([d({constructOnly:!0})],q.prototype,"view",void 0),q=e([y("esri.widgets.DistanceMeasurement2D.DistanceMeasurement2DTool")],q);export{q as DistanceMeasurement2DTool,K as createDistanceMeasurementInfo2D,Y as createDistanceMeasurementLabel,Q as isSupported,X as loadGeometryOperators};
2
+ import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{fetchMessageBundle as i,onLocaleChange as r}from"../../intl.js";import{getContrast as s,multiplyOpacity as o}from"../../core/colorUtils.js";import{handlesGroup as n}from"../../core/handleUtils.js";import{destroyMaybe as a}from"../../core/maybe.js";import{watch as l,initial as p}from"../../core/reactiveUtils.js";import{formatDecimal as m,formatImperialLength as c,formatMetricLength as h}from"../../core/unitFormatUtils.js";import{convertUnit as u}from"../../core/units.js";import{property as d,subclass as y}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as v}from"../../core/support/UpdatingHandles.js";import{isSupported as g,geodesicLengths as _,geodesicDensify as f}from"../../geometry/geodesicUtils.js";import w from"../../geometry/Point.js";import L from"../../geometry/Polyline.js";import{execute as b,load as S}from"../../geometry/operators/geodeticDensifyOperator.js";import{execute as j,load as M}from"../../geometry/operators/geodeticLengthOperator.js";import{execute as x}from"../../geometry/operators/lengthOperator.js";import C from"../../layers/GraphicsLayer.js";import A from"../../symbols/CIMSymbol.js";import D from"../../symbols/Font.js";import G from"../../symbols/SimpleMarkerSymbol.js";import k from"../../symbols/TextSymbol.js";import{SnappingVisualizer2D as T}from"../../views/2d/interactive/SnappingVisualizer2D.js";import O from"../../views/draw/Draw.js";import{createCoordinateHelper as H}from"../../views/interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as P,screenToMap as R,dragManipulatedObject as U}from"../../views/interactive/dragEventPipeline.js";import{GraphicManipulator as E}from"../../views/interactive/GraphicManipulator.js";import{InteractiveToolBase as I}from"../../views/interactive/InteractiveToolBase.js";import{EditGeometry as z}from"../../views/interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as B}from"../../views/interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as F}from"../../views/interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as V}from"../../views/interactive/snapping/SnappingDragPipelineStep.js";import{setupSnappingToggleHandles as W}from"../../views/interactive/snapping/snappingUtils.js";const N=1e5;let q=class extends I{constructor(e){super(e),this._measurementLayer=new C({internal:!0,listMode:"hide",visible:!1,title:"DistanceMeasurement2DTool measurement layer"}),this._manipulatorLayer=new C({internal:!0,listMode:"hide",visible:!1,title:"DistanceMeasurement2DTool manipulator layer"}),this._snappingLayer=new C({internal:!0,listMode:"hide",visible:!1,title:"DistanceMeasurement2DTool snapping layer"}),this._updatingHandles=new v,this._vertices=[],this._drawActive=!1,this.measurement=null,this.measurementLabel=null}initialize(){i("esri/core/t9n/Units").then(e=>{this.messages=e});const e=this.view;this._draw=new O({view:e}),e.map.addMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),e.focus(),this.addHandles([r(async()=>{this.messages=await i("esri/core/t9n/Units")}),l(()=>[this.unit,this.messages],()=>{this._updatePolylines()},p),l(()=>[this.view.effectiveTheme.accentColor,this.view.effectiveTheme.textColor],()=>{if(!this._vertices.length)return;const e=this._vertices.map(({coord:e})=>e);for(const{handle:t}of this._vertices)t.remove();this._vertices=[],this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this.manipulators.removeAll(),this._updateSketch(e)})]),W(this)}destroy(){const{map:e}=this.view;this._draw.view=null,this._draw=a(this._draw),e.removeMany([this._measurementLayer,this._manipulatorLayer,this._snappingLayer]),this._measurementLayer.removeAll(),this._manipulatorLayer.removeAll(),this._snappingLayer.removeAll(),this._set("measurement",null),this._set("measurementLabel",null),this._measurementLayer=a(this._measurementLayer),this._manipulatorLayer=a(this._manipulatorLayer),this._snappingLayer=a(this._snappingLayer),this._updatingHandles=a(this._updatingHandles),this._resetVertices()}get cursor(){return this._drawActive?"crosshair":null}set editable(e){this._set("editable",e),e||this._draw.reset()}get snappingOptions(){return this.snappingManager.options}get updating(){return this._updatingHandles.updating||this.snappingManager.updating}onActivate(){this._drawActive||0!==this._vertices.length||this._startSketch()}onShow(){this._measurementLayer.visible=!0,this._manipulatorLayer.visible=!0,this._snappingLayer.visible=!0}onHide(){this._measurementLayer.visible=!1,this._manipulatorLayer.visible=!1,this._snappingLayer.visible=!1}_getSnappingContext(e){return new F({elevationInfo:{mode:"on-the-ground",offset:0},pointer:e,editGeometryOperations:new B(new z("point",H(!1,!1,this.view.spatialReference)),2),visualizer:new T(this._snappingLayer)})}_resetVertices(){for(const{handle:e}of this._vertices)e.remove();this._vertices=[]}_startSketch(){this._drawActive=!0;const{snappingManager:e}=this;this._draw.create("polyline",{mode:"click",snappingManager:e}).on(["draw-complete","vertex-add","vertex-update","vertex-remove","cursor-update","undo","redo"],e=>{this._updateSketch(e.vertices),"draw-complete"===e.type&&this._stopSketch()})}_stopSketch(){this.manipulators.forEach(({manipulator:e})=>{e.interactive=!0}),this._drawActive=!1,this.finishToolCreation()}_updateSketch(e){const{spatialReference:t}=this.view;for(;this._vertices.length>e.length;){const{handle:e,manipulator:t}=this._vertices.pop();e.remove(),this.manipulators.remove(t)}for(let l=this._vertices.length;l<e.length;l++){const[i,r]=e[l],s=new w({x:i,y:r,spatialReference:t}),o=J(s,this.view,this._manipulatorLayer);this.manipulators.add(o);const a=B.fromGeometry(s,2),p=[a.on("vertex-update",e=>{const t=e.vertices.at(0);t&&(this._vertices[l].coord=[t.pos[0],t.pos[1]],this._updatePolylines())}),P(o,(e,t,i,r)=>{const s=this._getSnappingContext(r),{snappingManager:o}=this,n=this._updatingHandles,{snappingStep:l}=V({snappingContext:s,snappingManager:o,updatingHandles:n});t.next(R(this.view)).next(t=>{if("start"===t.action){const i=new w(t.mapStart);e.graphic.geometry=i,a.trySetGeometry(i)}return t}).next(...l).next(U({operations:a})).next(()=>{e.graphic.geometry=a.data.geometry})})];this._vertices.push({manipulator:o,coord:[i,r],handle:n(p)})}const i=this._vertices.length-1,r=this._vertices[i],[s,o]=e[i];r.coord[0]===s&&r.coord[1]===o||(r.coord=[s,o],r.manipulator.graphic.geometry=new w({x:s,y:o,spatialReference:t}));const a=this._drawActive?this._vertices[i].manipulator:null;this.manipulators.forEach(({manipulator:e})=>{e.interactive=null==a||e!==a}),this._updatePolylines()}_updatePolylines(){if(this._vertices.length<2)return void this._measurementLayer.removeAll();const e=K(this._vertices.map(({coord:e})=>e),this.view.spatialReference);if(!e)return;const{measurement:i,drawing:r,original:n}=e;this._set("measurement",i);const a=Y(this.messages,i,this.unit);let l,p;this._set("measurementLabel",a);const{graphics:m}=this._measurementLayer,c=2===m.length,{effectiveTheme:h}=this.view;c?(l=m.at(0),p=m.at(1)):(l=new t({symbol:new A({data:{type:"CIMSymbolReference",symbol:{type:"CIMLineSymbol",symbolLayers:[{type:"CIMSolidStroke",effects:[{type:"CIMGeometricEffectDashes",dashTemplate:[14,12],lineDashEnding:"FullGap",controlPointEnding:"NoConstraint"}],enable:!0,capStyle:"Butt",joinStyle:"Round",width:3.5,color:s(h.accentColor).toArray()},{type:"CIMSolidStroke",enable:!0,capStyle:"Butt",joinStyle:"Round",width:5,color:h.accentColor.toArray()}]}}})}),p=new t({symbol:new k({color:h.textColor,haloColor:o(s(h.textColor,160),.5),haloSize:2,font:new D({size:14,family:"sans-serif"})})}),m.removeAll(),m.addMany([l,p])),l.geometry=r,p.geometry=n.extent?.center,p.symbol.text=a}};function J(e,i,r){const s=o(i.effectiveTheme.accentColor,.5),n={type:"simple-line",width:0},a=8,l=new G({style:"circle",color:s,size:a,outline:n}),p=new G({style:"circle",color:s,size:1.5*a,outline:n}),m=new t({geometry:e,symbol:l});return new E({view:i,layer:r,graphic:m,focusedSymbol:p,consumesClicks:!1})}function K(e,t){const i=new L({paths:[e],spatialReference:t});let r,s;return t.isGeographic?g(t)?(r=_([i],"meters")[0],s=f(i,N)):(r=j(i,{unit:"meters"}),s=b(i,N,{unit:"meters"})):t.isWebMercator?(r=j(i,{unit:"meters"}),s=b(i,N,{unit:"meters"})):(r=x(i,{unit:"meters"}),s=i),{measurement:{geometry:s,length:r},original:i,drawing:s}}function Q(e){return null!=e}async function X(e){(e?.isGeographic&&!g(e)||e?.isWebMercator)&&await Promise.all([S(),M()])}function Y(e,t,i){if(!t||!e)return"";switch(i){case"metric":return h(e,t.length,"meters");case"imperial":return c(e,t.length,"meters");default:return m(e,u(t.length,"meters",i),i)}}e([d()],q.prototype,"_drawActive",void 0),e([d({readOnly:!0})],q.prototype,"cursor",null),e([d({value:!0})],q.prototype,"editable",null),e([d({readOnly:!0})],q.prototype,"measurement",void 0),e([d({readOnly:!0})],q.prototype,"measurementLabel",void 0),e([d()],q.prototype,"messages",void 0),e([d({constructOnly:!0})],q.prototype,"snappingManager",void 0),e([d()],q.prototype,"unit",void 0),e([d()],q.prototype,"updating",null),e([d({constructOnly:!0})],q.prototype,"view",void 0),q=e([y("esri.widgets.DistanceMeasurement2D.DistanceMeasurement2DTool")],q);export{q as DistanceMeasurement2DTool,K as createDistanceMeasurementInfo2D,Y as createDistanceMeasurementLabel,Q as isSupported,X as loadGeometryOperators};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../../Graphic.js";import{isSome as t}from"../../../../core/arrayUtils.js";import i from"../../../../core/Logger.js";import{waitTick as o,throwIfAborted as r,isAbortError as a}from"../../../../core/promiseUtils.js";import s from"../../../../geometry/Polygon.js";import{projectAsync as n}from"../../../../geometry/projectionUtils.js";import{e as l}from"../../../../chunks/centroidOperator.js";import{adjustHorizonAngles as c,convertOrientationToPixelLocation as p}from"../../../../layers/orientedImagery/transformations/utils.js";import{fixedImageSize as u}from"../../constants.js";import{activePolygonSymbol as d,polygonSymbol as m}from"../../symbols.js";import{extractHorizonAnglesFromMedia as g}from"../../utils.js";class v{constructor(v){this.viewModel=v,this.createFootprints=async t=>{await o(t);const{coveragePolygons:i,currentBestFeature:r,isAdditionalCoverageVisible:a}=this.viewModel;for(const o of i)o?.imageID===r.attributes.objectId?this.viewModel.bestFeatureFootprint=new e({attributes:{imageID:o?.imageID},geometry:o,symbol:d,visible:!1}):this.viewModel.additionalFootprints.push(new e({attributes:{imageID:o?.imageID},geometry:o,symbol:m.clone(),visible:a}))},this.updateFootprint=async(o,l,c)=>{const{activeViewer:p,mode:m,currentBestFeature:g,currentCoverageVisible:v,footprintExtent:f}=this.viewModel,w=l??g;if(g&&("video"===m?u:p?.imageSize)&&f&&w)try{const i=await this.viewModel.getMapPoint(o);r(c);const a=i.filter(t);if(!a.length)return;const l=[a.map(({x:e,y:t})=>[e,t,1])];l[0].push(l[0][0]);const p=new s({rings:l,spatialReference:a[0].spatialReference}),u=this.viewModel.view?.spatialReference.equals(p.spatialReference)?p:await n(p,this.viewModel.view.spatialReference,c);this.viewModel.updateCurrentCoveragePolygon(new e({geometry:u,attributes:{imageID:w.attributes.objectId},symbol:d,visible:v}))}catch(h){a(h)||i.getLogger(this.viewModel).error("update-footprint",h)}else this.viewModel.updateCurrentCoveragePolygon(null)},this.updateVideoFootprint=async o=>{const{points:c,feature:p,scale:m,options:g}=o,{activeViewer:v,mode:f,currentBestFeature:w,currentCoverageVisible:h,footprintExtent:y}=this.viewModel,M="video"===f?u:v?.imageSize,b=p??w;if(w&&M&&y&&b&&"none"!==f)try{const i={feature:b,mode:f,imageSize:M,footprintExtent:y},o=await this.viewModel.getMapPointForFeature(c,i,g);r(g);const a=o.filter(t);if(!a.length)return;const p=[a.map(({x:e,y:t})=>[e,t,1])];p[0].push(p[0][0]);let u=new s({rings:p,spatialReference:a[0].spatialReference});if(m){const e=u.spatialReference,t=l(u),i=u.rings.map(e=>e.map(([e,i])=>[t.x+(e-t.x)*m,t.y+(i-t.y)*m]));u=new s({rings:i,spatialReference:e})}const v=this.viewModel.view?.spatialReference.equals(u.spatialReference)?u:await n(u,this.viewModel.view.spatialReference,g);this.viewModel.updateCurrentCoveragePolygon(new e({geometry:v,attributes:{imageID:b.attributes.objectId},symbol:d,visible:h}))}catch(C){a(C)||i.getLogger(this.viewModel).error("update-footprint",C)}else this.viewModel.updateCurrentCoveragePolygon(null)},this.updateFootprintPanorama=async(t,i)=>{const{horizontalFieldOfView:o,pitch:a,verticalFieldOfView:l,yaw:m,feature:v,horizonAngles:f}=t,{activeViewer:w,currentBestFeature:h,currentCoverageVisible:y,footprintExtent:M,mode:b}=this.viewModel,C="video"===b||"panoramic-video"===b?u:w?.imageSize,F=v??h;if(!F||!C||!M||"none"===b)return void this.viewModel.updateCurrentCoveragePolygon(null);const{cameraPitch:j,objectId:P}=F.attributes;if(a+j-l/2>180)return void this.viewModel.updateCurrentCoveragePolygon(null);const R=[],I=l/2,x=o/2,V=a-I,D=a+I;if(V>90)return void this.viewModel.updateCurrentCoveragePolygon(null);const z=V<0,E=[-x,I],S=[x,I],B=[x,-I],q=[-x,-I];if(V<90&&D>90){R.push(z?B:q);const e=Math.floor(o/5),t=o/e;for(let i=0;i<=e;i++)R.push([i*t-x,90-a]);R.push(z?q:B)}D<90&&(R.push(E,S),z?R.push(q,B):R.push(B,q));const L=f??g(w?.media),O=R.map(([e,t])=>{const i=a+t,o=m+e,r=L?c(o,i,L):[o,i];return{...p(r[0],r[1],C[0],C[1]),heading:o,pitch:i}}),U={feature:F,mode:b,imageSize:C,footprintExtent:M},A=v?await this.viewModel.getMapPointForFeature(O,U,i):await this.viewModel.getMapPoint(O,i);r(i);const k=[A.map(({x:e,y:t})=>[e,t,1])];k[0].push(k[0][0]);const G=new s({rings:k,spatialReference:A[0].spatialReference}),H=this.viewModel.view?.spatialReference;if(!H)return;const J=H.equals(G.spatialReference)?G:await n(G,H,i);this.viewModel.updateCurrentCoveragePolygon(new e({geometry:J,attributes:{imageID:P},symbol:d.clone(),visible:y}))}}}export{v as default};
2
+ import e from"../../../../Graphic.js";import{isSome as t}from"../../../../core/arrayUtils.js";import i from"../../../../core/Logger.js";import{waitTick as o,throwIfAborted as r,isAbortError as a}from"../../../../core/promiseUtils.js";import s from"../../../../geometry/Polygon.js";import{projectAsync as n}from"../../../../geometry/projectionUtils.js";import{execute as l}from"../../../../geometry/operators/centroidOperator.js";import{adjustHorizonAngles as p,convertOrientationToPixelLocation as c}from"../../../../layers/orientedImagery/transformations/utils.js";import{fixedImageSize as u}from"../../constants.js";import{activePolygonSymbol as d,polygonSymbol as m}from"../../symbols.js";import{extractHorizonAnglesFromMedia as g}from"../../utils.js";class v{constructor(v){this.viewModel=v,this.createFootprints=async t=>{await o(t);const{coveragePolygons:i,currentBestFeature:r,isAdditionalCoverageVisible:a}=this.viewModel;for(const o of i)o?.imageID===r.attributes.objectId?this.viewModel.bestFeatureFootprint=new e({attributes:{imageID:o?.imageID},geometry:o,symbol:d,visible:!1}):this.viewModel.additionalFootprints.push(new e({attributes:{imageID:o?.imageID},geometry:o,symbol:m.clone(),visible:a}))},this.updateFootprint=async(o,l,p)=>{const{activeViewer:c,mode:m,currentBestFeature:g,currentCoverageVisible:v,footprintExtent:f}=this.viewModel,w=l??g;if(g&&("video"===m?u:c?.imageSize)&&f&&w)try{const i=await this.viewModel.getMapPoint(o);r(p);const a=i.filter(t);if(!a.length)return;const l=[a.map(({x:e,y:t})=>[e,t,1])];l[0].push(l[0][0]);const c=new s({rings:l,spatialReference:a[0].spatialReference}),u=this.viewModel.view?.spatialReference.equals(c.spatialReference)?c:await n(c,this.viewModel.view.spatialReference,p);this.viewModel.updateCurrentCoveragePolygon(new e({geometry:u,attributes:{imageID:w.attributes.objectId},symbol:d,visible:v}))}catch(h){a(h)||i.getLogger(this.viewModel).error("update-footprint",h)}else this.viewModel.updateCurrentCoveragePolygon(null)},this.updateVideoFootprint=async o=>{const{points:p,feature:c,scale:m,options:g}=o,{activeViewer:v,mode:f,currentBestFeature:w,currentCoverageVisible:h,footprintExtent:y}=this.viewModel,M="video"===f?u:v?.imageSize,b=c??w;if(w&&M&&y&&b&&"none"!==f)try{const i={feature:b,mode:f,imageSize:M,footprintExtent:y},o=await this.viewModel.getMapPointForFeature(p,i,g);r(g);const a=o.filter(t);if(!a.length)return;const c=[a.map(({x:e,y:t})=>[e,t,1])];c[0].push(c[0][0]);let u=new s({rings:c,spatialReference:a[0].spatialReference});if(m){const e=u.spatialReference,t=l(u),i=u.rings.map(e=>e.map(([e,i])=>[t.x+(e-t.x)*m,t.y+(i-t.y)*m]));u=new s({rings:i,spatialReference:e})}const v=this.viewModel.view?.spatialReference.equals(u.spatialReference)?u:await n(u,this.viewModel.view.spatialReference,g);this.viewModel.updateCurrentCoveragePolygon(new e({geometry:v,attributes:{imageID:b.attributes.objectId},symbol:d,visible:h}))}catch(C){a(C)||i.getLogger(this.viewModel).error("update-footprint",C)}else this.viewModel.updateCurrentCoveragePolygon(null)},this.updateFootprintPanorama=async(t,i)=>{const{horizontalFieldOfView:o,pitch:a,verticalFieldOfView:l,yaw:m,feature:v,horizonAngles:f}=t,{activeViewer:w,currentBestFeature:h,currentCoverageVisible:y,footprintExtent:M,mode:b}=this.viewModel,C="video"===b||"panoramic-video"===b?u:w?.imageSize,F=v??h;if(!F||!C||!M||"none"===b)return void this.viewModel.updateCurrentCoveragePolygon(null);const{cameraPitch:j,objectId:P}=F.attributes;if(a+j-l/2>180)return void this.viewModel.updateCurrentCoveragePolygon(null);const R=[],I=l/2,x=o/2,V=a-I,D=a+I;if(V>90)return void this.viewModel.updateCurrentCoveragePolygon(null);const z=V<0,E=[-x,I],S=[x,I],B=[x,-I],q=[-x,-I];if(V<90&&D>90){R.push(z?B:q);const e=Math.floor(o/5),t=o/e;for(let i=0;i<=e;i++)R.push([i*t-x,90-a]);R.push(z?q:B)}D<90&&(R.push(E,S),z?R.push(q,B):R.push(B,q));const L=f??g(w?.media),O=R.map(([e,t])=>{const i=a+t,o=m+e,r=L?p(o,i,L):[o,i];return{...c(r[0],r[1],C[0],C[1]),heading:o,pitch:i}}),U={feature:F,mode:b,imageSize:C,footprintExtent:M},A=v?await this.viewModel.getMapPointForFeature(O,U,i):await this.viewModel.getMapPoint(O,i);r(i);const G=[A.map(({x:e,y:t})=>[e,t,1])];G[0].push(G[0][0]);const k=new s({rings:G,spatialReference:A[0].spatialReference}),H=this.viewModel.view?.spatialReference;if(!H)return;const J=H.equals(k.spatialReference)?k:await n(k,H,i);this.viewModel.updateCurrentCoveragePolygon(new e({geometry:J,attributes:{imageID:P},symbol:d.clone(),visible:y}))}}}export{v as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../Map.js";import i from"../../../core/Error.js";import{EventedAccessor as r}from"../../../core/Evented.js";import a from"../../../core/Logger.js";import{clamp as s}from"../../../core/mathUtils.js";import{abortMaybe as o}from"../../../core/maybe.js";import{throwIfAborted as n,isAbortError as l}from"../../../core/promiseUtils.js";import{watch as h,syncAndInitial as m,when as d,initial as p}from"../../../core/reactiveUtils.js";import{property as c,subclass as g}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../core/support/UpdatingHandles.js";import y from"../../../geometry/Point.js";import _ from"../../../geometry/Polygon.js";import f from"../../../geometry/SpatialReference.js";import{e as v}from"../../../chunks/intersectionOperator.js";import R from"../../../layers/GraphicsLayer.js";import w from"../../../layers/support/RasterFunction.js";import{convolutionKernel as x}from"../../../layers/support/rasterFunctionConstants.js";import C from"../../../layers/support/TileInfo.js";import b from"../../../views/MapView.js";import{getResolutionToScaleFactor as I}from"../../../views/2d/viewpointUtils.js";import j from"../support/NonPanoramicMedia.js";import{rotate as P,constrainViewpoint as H}from"../support/panConstraint.js";const M={click:"click-handle",enhancements:"enhancements-handle"};let L=class extends r{constructor(e){super(e),this._imageChanged=!1,this._panConstraint=null,this._image=null,this._loadController=null,this._overlays=new R({blendMode:"source-atop"}),this._map=new t,this.autoLoad=!1,this.clickAction="none",this.error=null,this.imageRotation=0,this.state="ready",this.updatingHandles=new u,this._cancelLoadWithController=()=>{this._loadController=o(this._loadController)},this._createImageHandles=()=>{this.removeHandles(M.enhancements),this.addHandles(h(()=>[this.brightness,this.contrast,this.sharpness],([e,t,i])=>{this.image?.loaded&&(this.image.effect=`contrast(${10*(t+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(this.image,i))},m))},this._createPanConstraint=()=>{const{image:e,imageRenderer:t}=this,i=i=>{const{constraints:r,height:a,width:s,rotation:o}=t,{targetGeometry:n}=i;return"point"===n?.type&&e?.serviceRasterInfo?(H({constraints:r,containerHeight:a,containerWidth:s,imageExtent:e.serviceRasterInfo.extent,rotation:o,viewpoint:i,viewportExtent:t.extent}),i):i};return{constrain:i,applyPanConstraint:i}},this._createResizeHandles=e=>{e.removeHandles("resize"),e.addHandles(h(()=>{if(!this.imageRenderer.ready)return;const{extent:t}=e.serviceRasterInfo,{width:i,height:r,rotation:a}=this.imageRenderer,{extent:s}=P(_.fromExtent(t),a,t.center.x,t.center.y),{width:o,height:n}=s;return Math.max(o/i,n/r)},e=>{if(!this.imageRenderer||null==e)return;const{constraints:t,scale:i,spatialReference:r}=this.imageRenderer,a=t.minScale,s=I(r),o=.25*s,n=s*e;let l=n;const h=[];for(;l>o;)h.push(l),l/=2;h.push(l);const{lods:m}=C.create({scales:h});if(t.set({minScale:n,lods:m}),this._imageChanged)return this.imageRenderer.scale=n,void(this._imageChanged=!1);this.imageRenderer.scale=Math.abs(i-a)<=1e-6?n:i},m),"resize")},this._loadMediaInternal=async(e,t)=>{if(this.state="image-loading",this.clearImage(),this.error=null,this._imageChanged=!0,!e)throw new Error("No media to load");try{const{layer:i}=await e.load(t);n(t),this._image=i,this._updatePanConstraint(),this._createResizeHandles(this._image),this._map.add(this._image),this.imageRotation=e.rotation??0,this.media=e,this.state="image-loaded"}catch(i){if(!l(i))throw this.state="image-load-error",this.error=i,a.getLogger(this).error(`error occurred while loading image ${this._image?.url}`,i),this._image=null,i;this.state="image-load-aborted"}return this._image},this._loadWithController=()=>{this._cancelLoadWithController(),this.media&&(this._loadController=new AbortController,this._loadMediaInternal(this.media,this._loadController))},this._updatePanConstraint=()=>{this._panConstraint&&this.imageRenderer.constraints.customConstraints.remove(this._panConstraint),this._panConstraint=this._createPanConstraint(),this.imageRenderer.constraints.customConstraints.add(this._panConstraint)},this.addGraphic=(e,t)=>{this._overlays.graphics.add(e,t)},this.addManyGraphics=e=>{this._overlays.addMany(e)},this.clearGraphics=()=>{this._overlays.graphics.removeAll()},this.clearImage=()=>{this.image&&this._map.layers.remove(this.image),this._image=null},this.removeGraphic=e=>{this._overlays.remove(e)},this.removeManyGraphics=e=>{this._overlays.removeMany(e)},this._imageRenderer=new b({constraints:{snapToZoom:!0,rotationEnabled:!1},map:this._map,popupEnabled:!1,spatialReference:f.WebMercator,attributionVisible:!1})}destroy(){this.clearImage(),this.media=null,this._imageRenderer.destroy()}initialize(){this.state="initialized",this.addHandles([d(()=>null!=this.media&&this.autoLoad,this._loadWithController,m),h(()=>this.image?.loaded,()=>{this._createImageHandles()}),h(()=>this.imageRotation,()=>{this._rotateImage()}),h(()=>this.imageRenderer.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},p),h(()=>this.imageRenderer.map.allLayers.length,e=>{e&&this.imageRenderer.map.layers.reorder(this._overlays,e-1)},m),h(()=>this.clickAction,e=>{this.removeHandles(M.click),"none"!==e&&this.addHandles(this.imageRenderer.on("click",t=>{if(this.image?.loaded&&this.imageRenderer.ready)switch(e){case"emit":t.stopPropagation(),this.emit("click",t);break;case"hittest":t.stopPropagation(),t.defer(async()=>{const e=await this.imageRenderer.hitTest(t.screenPoint,{include:this._overlays});e.results=e.results.filter(e=>"graphic"===e.type),this.emit("hittest-response",e)});break;case"pixel-location":{if(t.stopPropagation(),!this.image?.serviceRasterInfo||!t.mapPoint)return void this.emit("pixel-location",null);const{extent:e,pixelSize:i}=this.image.serviceRasterInfo,r=(t.mapPoint.x-e.xmin)*i.x,a=(e.ymax-t.mapPoint.y)*i.y,s=new y({x:r,y:a,spatialReference:e.spatialReference});this.emit("pixel-location",s);break}}}))},m)])}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",s(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",s(e,-10,10))}get image(){return this._image}get imagePointsInView(){const{extent:e,ready:t}=this.imageRenderer,i=this.imageRotation,r=this.image?.fullExtent,a=this.image?.serviceRasterInfo,s=!0===this._imageRenderer.allLayerViews.find(({layer:e})=>e===this.image)?.attached;if(!(t&&e&&r&&a&&s))return null;const o=P(_.fromExtent(e),i,e.center.x,e.center.y),n=_.fromExtent(r),l=v(o,n);if(!l)return null;const{rings:h}=l;return h.flat().map(([e,t])=>({x:(e-a.extent.xmin)*a.pixelSize.x,y:(a.extent.ymax-t)*a.pixelSize.y}))}get imageSize(){const{image:e}=this;if(!e?.raster)return null;const{width:t,height:i}=e.raster.rasterInfo;return[t,i]}get imageRenderer(){return this._imageRenderer}get imageView(){return this.imageRenderer.allLayerViews.find(e=>e.layer===this.image)}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",s(e,0,1))}get updating(){return this.updatingHandles.updating}_rotateImage(){this.imageRenderer.constraints.rotationEnabled=!0,this.imageRenderer.rotation=this.imageRotation,this.imageRenderer.constraints.rotationEnabled=!1}sharpenImage(e,t){if(!t)return void(e.rasterFunction=null);const i=[0,-1*t,0,-1*t,4*t+1,-1*t,0,-1*t,0],r=new w({functionName:"Convolution",functionArguments:{type:x.userDefined,cols:3,rows:3,kernel:i,convolutionType:x.userDefined}});e.rasterFunction=r}async loadMedia(e,t){this.state="image-loading";const i=this.autoLoad;this.autoLoad=!1;return await this._loadMediaInternal(e,t).finally(()=>{this.autoLoad=i})}};e([c()],L.prototype,"_image",void 0),e([c()],L.prototype,"_imageRenderer",void 0),e([c()],L.prototype,"_loadController",void 0),e([c()],L.prototype,"_overlays",void 0),e([c()],L.prototype,"_map",void 0),e([c({type:Boolean})],L.prototype,"autoLoad",void 0),e([c({type:Number})],L.prototype,"brightness",null),e([c()],L.prototype,"clickAction",void 0),e([c({type:Number})],L.prototype,"contrast",null),e([c({type:Object})],L.prototype,"customParameters",void 0),e([c({type:i})],L.prototype,"error",void 0),e([c({readOnly:!0})],L.prototype,"image",null),e([c({readOnly:!0})],L.prototype,"imagePointsInView",null),e([c({readOnly:!0})],L.prototype,"imageSize",null),e([c({readOnly:!0})],L.prototype,"imageRenderer",null),e([c({type:Number})],L.prototype,"imageRotation",void 0),e([c()],L.prototype,"imageView",null),e([c({type:j})],L.prototype,"media",void 0),e([c({type:Number})],L.prototype,"sharpness",null),e([c()],L.prototype,"state",void 0),e([c()],L.prototype,"updatingHandles",void 0),e([c()],L.prototype,"updating",null),L=e([g("esri.widgets.OrientedImageryViewer.components.ImageViewerViewModel")],L);const k=L;export{k as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../Map.js";import i from"../../../core/Error.js";import{EventedAccessor as r}from"../../../core/Evented.js";import a from"../../../core/Logger.js";import{clamp as s}from"../../../core/mathUtils.js";import{abortMaybe as o}from"../../../core/maybe.js";import{throwIfAborted as n,isAbortError as l}from"../../../core/promiseUtils.js";import{watch as h,syncAndInitial as m,when as d,initial as p}from"../../../core/reactiveUtils.js";import{property as c,subclass as g}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as u}from"../../../core/support/UpdatingHandles.js";import y from"../../../geometry/Point.js";import _ from"../../../geometry/Polygon.js";import f from"../../../geometry/SpatialReference.js";import{execute as v}from"../../../geometry/operators/intersectionOperator.js";import R from"../../../layers/GraphicsLayer.js";import w from"../../../layers/support/RasterFunction.js";import{convolutionKernel as x}from"../../../layers/support/rasterFunctionConstants.js";import C from"../../../layers/support/TileInfo.js";import b from"../../../views/MapView.js";import{getResolutionToScaleFactor as I}from"../../../views/2d/viewpointUtils.js";import j from"../support/NonPanoramicMedia.js";import{rotate as P,constrainViewpoint as H}from"../support/panConstraint.js";const M={click:"click-handle",enhancements:"enhancements-handle"};let L=class extends r{constructor(e){super(e),this._imageChanged=!1,this._panConstraint=null,this._image=null,this._loadController=null,this._overlays=new R({blendMode:"source-atop"}),this._map=new t,this.autoLoad=!1,this.clickAction="none",this.error=null,this.imageRotation=0,this.state="ready",this.updatingHandles=new u,this._cancelLoadWithController=()=>{this._loadController=o(this._loadController)},this._createImageHandles=()=>{this.removeHandles(M.enhancements),this.addHandles(h(()=>[this.brightness,this.contrast,this.sharpness],([e,t,i])=>{this.image?.loaded&&(this.image.effect=`contrast(${10*(t+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(this.image,i))},m))},this._createPanConstraint=()=>{const{image:e,imageRenderer:t}=this,i=i=>{const{constraints:r,height:a,width:s,rotation:o}=t,{targetGeometry:n}=i;return"point"===n?.type&&e?.serviceRasterInfo?(H({constraints:r,containerHeight:a,containerWidth:s,imageExtent:e.serviceRasterInfo.extent,rotation:o,viewpoint:i,viewportExtent:t.extent}),i):i};return{constrain:i,applyPanConstraint:i}},this._createResizeHandles=e=>{e.removeHandles("resize"),e.addHandles(h(()=>{if(!this.imageRenderer.ready)return;const{extent:t}=e.serviceRasterInfo,{width:i,height:r,rotation:a}=this.imageRenderer,{extent:s}=P(_.fromExtent(t),a,t.center.x,t.center.y),{width:o,height:n}=s;return Math.max(o/i,n/r)},e=>{if(!this.imageRenderer||null==e)return;const{constraints:t,scale:i,spatialReference:r}=this.imageRenderer,a=t.minScale,s=I(r),o=.25*s,n=s*e;let l=n;const h=[];for(;l>o;)h.push(l),l/=2;h.push(l);const{lods:m}=C.create({scales:h});if(t.set({minScale:n,lods:m}),this._imageChanged)return this.imageRenderer.scale=n,void(this._imageChanged=!1);this.imageRenderer.scale=Math.abs(i-a)<=1e-6?n:i},m),"resize")},this._loadMediaInternal=async(e,t)=>{if(this.state="image-loading",this.clearImage(),this.error=null,this._imageChanged=!0,!e)throw new Error("No media to load");try{const{layer:i}=await e.load(t);n(t),this._image=i,this._updatePanConstraint(),this._createResizeHandles(this._image),this._map.add(this._image),this.imageRotation=e.rotation??0,this.media=e,this.state="image-loaded"}catch(i){if(!l(i))throw this.state="image-load-error",this.error=i,a.getLogger(this).error(`error occurred while loading image ${this._image?.url}`,i),this._image=null,i;this.state="image-load-aborted"}return this._image},this._loadWithController=()=>{this._cancelLoadWithController(),this.media&&(this._loadController=new AbortController,this._loadMediaInternal(this.media,this._loadController))},this._updatePanConstraint=()=>{this._panConstraint&&this.imageRenderer.constraints.customConstraints.remove(this._panConstraint),this._panConstraint=this._createPanConstraint(),this.imageRenderer.constraints.customConstraints.add(this._panConstraint)},this.addGraphic=(e,t)=>{this._overlays.graphics.add(e,t)},this.addManyGraphics=e=>{this._overlays.addMany(e)},this.clearGraphics=()=>{this._overlays.graphics.removeAll()},this.clearImage=()=>{this.image&&this._map.layers.remove(this.image),this._image=null},this.removeGraphic=e=>{this._overlays.remove(e)},this.removeManyGraphics=e=>{this._overlays.removeMany(e)},this._imageRenderer=new b({constraints:{snapToZoom:!0,rotationEnabled:!1},map:this._map,popupEnabled:!1,spatialReference:f.WebMercator,attributionVisible:!1})}destroy(){this.clearImage(),this.media=null,this._imageRenderer.destroy()}initialize(){this.state="initialized",this.addHandles([d(()=>null!=this.media&&this.autoLoad,this._loadWithController,m),h(()=>this.image?.loaded,()=>{this._createImageHandles()}),h(()=>this.imageRotation,()=>{this._rotateImage()}),h(()=>this.imageRenderer.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},p),h(()=>this.imageRenderer.map.allLayers.length,e=>{e&&this.imageRenderer.map.layers.reorder(this._overlays,e-1)},m),h(()=>this.clickAction,e=>{this.removeHandles(M.click),"none"!==e&&this.addHandles(this.imageRenderer.on("click",t=>{if(this.image?.loaded&&this.imageRenderer.ready)switch(e){case"emit":t.stopPropagation(),this.emit("click",t);break;case"hittest":t.stopPropagation(),t.defer(async()=>{const e=await this.imageRenderer.hitTest(t.screenPoint,{include:this._overlays});e.results=e.results.filter(e=>"graphic"===e.type),this.emit("hittest-response",e)});break;case"pixel-location":{if(t.stopPropagation(),!this.image?.serviceRasterInfo||!t.mapPoint)return void this.emit("pixel-location",null);const{extent:e,pixelSize:i}=this.image.serviceRasterInfo,r=(t.mapPoint.x-e.xmin)*i.x,a=(e.ymax-t.mapPoint.y)*i.y,s=new y({x:r,y:a,spatialReference:e.spatialReference});this.emit("pixel-location",s);break}}}))},m)])}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",s(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",s(e,-10,10))}get image(){return this._image}get imagePointsInView(){const{extent:e,ready:t}=this.imageRenderer,i=this.imageRotation,r=this.image?.fullExtent,a=this.image?.serviceRasterInfo,s=!0===this._imageRenderer.allLayerViews.find(({layer:e})=>e===this.image)?.attached;if(!(t&&e&&r&&a&&s))return null;const o=P(_.fromExtent(e),i,e.center.x,e.center.y),n=_.fromExtent(r),l=v(o,n);if(!l)return null;const{rings:h}=l;return h.flat().map(([e,t])=>({x:(e-a.extent.xmin)*a.pixelSize.x,y:(a.extent.ymax-t)*a.pixelSize.y}))}get imageSize(){const{image:e}=this;if(!e?.raster)return null;const{width:t,height:i}=e.raster.rasterInfo;return[t,i]}get imageRenderer(){return this._imageRenderer}get imageView(){return this.imageRenderer.allLayerViews.find(e=>e.layer===this.image)}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",s(e,0,1))}get updating(){return this.updatingHandles.updating}_rotateImage(){this.imageRenderer.constraints.rotationEnabled=!0,this.imageRenderer.rotation=this.imageRotation,this.imageRenderer.constraints.rotationEnabled=!1}sharpenImage(e,t){if(!t)return void(e.rasterFunction=null);const i=[0,-1*t,0,-1*t,4*t+1,-1*t,0,-1*t,0],r=new w({functionName:"Convolution",functionArguments:{type:x.userDefined,cols:3,rows:3,kernel:i,convolutionType:x.userDefined}});e.rasterFunction=r}async loadMedia(e,t){this.state="image-loading";const i=this.autoLoad;this.autoLoad=!1;return await this._loadMediaInternal(e,t).finally(()=>{this.autoLoad=i})}};e([c()],L.prototype,"_image",void 0),e([c()],L.prototype,"_imageRenderer",void 0),e([c()],L.prototype,"_loadController",void 0),e([c()],L.prototype,"_overlays",void 0),e([c()],L.prototype,"_map",void 0),e([c({type:Boolean})],L.prototype,"autoLoad",void 0),e([c({type:Number})],L.prototype,"brightness",null),e([c()],L.prototype,"clickAction",void 0),e([c({type:Number})],L.prototype,"contrast",null),e([c({type:Object})],L.prototype,"customParameters",void 0),e([c({type:i})],L.prototype,"error",void 0),e([c({readOnly:!0})],L.prototype,"image",null),e([c({readOnly:!0})],L.prototype,"imagePointsInView",null),e([c({readOnly:!0})],L.prototype,"imageSize",null),e([c({readOnly:!0})],L.prototype,"imageRenderer",null),e([c({type:Number})],L.prototype,"imageRotation",void 0),e([c()],L.prototype,"imageView",null),e([c({type:j})],L.prototype,"media",void 0),e([c({type:Number})],L.prototype,"sharpness",null),e([c()],L.prototype,"state",void 0),e([c()],L.prototype,"updatingHandles",void 0),e([c()],L.prototype,"updating",null),L=e([g("esri.widgets.OrientedImageryViewer.components.ImageViewerViewModel")],L);const E=L;export{E as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import i from"../../../core/Accessor.js";import{createTask as o}from"../../../core/asyncUtils.js";import r from"../../../core/Logger.js";import{throwIfAborted as n,isAbortError as s}from"../../../core/promiseUtils.js";import{watch as a,syncAndInitial as d}from"../../../core/reactiveUtils.js";import{property as l,subclass as c}from"../../../core/accessorSupport/decorators.js";import p from"../../../geometry/Extent.js";import h from"../../../geometry/Multipoint.js";import u from"../../../geometry/Polygon.js";import m from"../../../geometry/Polyline.js";import{projectAsync as V}from"../../../geometry/projectionUtils.js";import{e as v}from"../../../chunks/clipOperator.js";import{e as f}from"../../../chunks/intersectionOperator.js";import{createCoveragePolygon as y}from"../../../layers/orientedImagery/core/coverageUtils.js";import{getResolutionToScaleFactor as w}from"../../../views/2d/viewpointUtils.js";import{fixedImageSize as g,videoSpatialReference as M,sampleExtent as P,videoFitScaleTolerance as O}from"../constants.js";import{diamondSymbol as _,crossSymbol as F}from"../symbols.js";import{registryKeys as S}from"../types.js";import{imageGeometryToVideoMapGeometry as x,pixelToVideoMapPoint as R,geoToPixel as E}from"../videoViewerUtils.js";import{coordinateToPoints as L}from"../support/geometryUtils.js";const[j,C]=g,b=new p({...P,spatialReference:M});function G({x:e,y:t}){return[P.xmin+e/j*(P.xmax-P.xmin),P.ymax-t/C*(P.ymax-P.ymin)]}function I(e){if(e.length<2)return[];const t=new m({paths:[e.map(e=>G(e))],spatialReference:M}),i=v(t,b);return"polyline"===i?.type?i.paths:[]}async function T(e,t,i){let o=y(t.attributes).polygon;e.spatialReference.equals(o.spatialReference)||(o=await V(o,e.spatialReference,i),n(i));const r=f(e,o);return"polyline"===r?.type?r:null}async function H(e,t,i){let o=y(t.attributes).polygon;e.spatialReference.equals(o.spatialReference)||(o=await V(o,e.spatialReference,i),n(i));const r=f(e,o);return"polygon"===r?.type?r:null}let A=class extends i{constructor(e){super(e),this.closestFeature=null,this.currentTime=0,this.videoBrightness=0,this.videoContrast=0,this.videoDuration=void 0,this.videoPaused=null,this.videoScale=void 0,this.videoMuted=null,this._referencePointOnVideo=null,this._selectedPointOnVideo=null,this.enableAudio=()=>{const{videoElement:e}=this.oiViewModel;e?.content&&(e.content.muted=!1,this.videoMuted=!1)},this.playVideoHandler=()=>{const e=this.oiViewModel.videoElement?.content;e&&(e.paused?e.play().catch(e=>{r.getLogger(this).error("error playing video",e)}):e.pause())},this.rewindVideoHandler=()=>{const e=this.oiViewModel.videoElement?.content;e&&(e.currentTime=0,e.play().catch(e=>{r.getLogger(this).error("error playing video",e)}))},this.resetVideoHandler=()=>{const{videoElement:e,videoMapView:t,videoLayer:i}=this.oiViewModel;this.removeHandles(S.videoImageClick),this.closestFeature=null,this.clearReferencePointOnVideo(),this.clearOverlayGraphics(),e?.content&&i&&t&&(e.content.pause(),t.map.layers.remove(i),i.destroy(),this.oiViewModel.videoElement=null)},this.resetVideoEnhancementTools=()=>{this.oiViewModel?.videoLayer&&(this.videoBrightness=0,this.videoContrast=0,this._updateVideoEffect())},this.resetVideoScale=()=>{this.videoScale&&(this.oiViewModel.videoMapView.scale=this.videoScale)},this.toggleAudio=()=>{const{videoElement:e}=this.oiViewModel;if(e?.content){const t=e.content.muted;e.content.muted=!t,this.videoMuted=!t}}}initialize(){this.addHandles([a(()=>this.oiViewModel.videoElement?.content,e=>{if(e instanceof HTMLVideoElement){this._startVideo();const t=async()=>{this.currentTime=Number(e.currentTime.toFixed(2)),e.currentTime&&await this._updateVidFootprint(e.currentTime)};e.addEventListener("timeupdate",t),e.addEventListener("play",()=>this._updateVideoIcon(e.paused)),e.addEventListener("pause",()=>this._pauseVideoHandler(e))}},d),a(()=>this._videoMinResolutionForCurrentView,e=>{null!=e&&this._updateVideoScaleForResize(e)},d),a(()=>this.oiViewModel.layer,(e,t)=>{t&&e&&e.uid!==t.uid&&this.oiViewModel.resetVideo()},d)])}destroy(){this.resetVideoHandler()}_pauseVideoHandler(e){this._updateVideoIcon(e.paused),e.paused&&this.oiViewModel.transformAndPlotSelectedLocation()}get _videoMinResolutionForCurrentView(){const{mode:e,videoMapView:t}=this.oiViewModel;if("video"!==e||!t.ready)return;const{width:i,height:o}=t;return i&&o?Math.max(b.width/i,b.height/o):void 0}_updateVideoScaleForResize(e){const{videoMapView:t}=this.oiViewModel,{constraints:i,scale:o,spatialReference:r}=t,n=i.minScale,s=Math.abs(o-n)<=O,a=w(r)*e;i.set({minScale:a}),this.videoScale=a,t.scale=s?a:o,s&&requestAnimationFrame(()=>{const{extent:e,scale:i,constraints:o}=t;e&&Math.abs(i-o.minScale)<=O&&(this.oiViewModel.initialVideoMapViewExtent=e.clone())})}_setVideoInfo(){const{videoElement:e,videoMapView:t}=this.oiViewModel;e?.content&&(this.videoDuration=e.content.duration,this.videoScale=t.scale)}_startVideo(){try{this.enableAudio(),this._setVideoInfo();const e=this.oiViewModel.currentBestFeature;e&&this.playVideoFromSelectedLocation(e)}catch(e){r.getLogger(this).error("oriented-imagery-viewer:video-load",e)}}async _updateVideoFootprintWithGivenFeature(e,t,i){const{activeViewer:o,mode:a,footprintExtent:d}=this.oiViewModel;if(t&&("video"===a?g:o?.imageSize)&&d)try{const o={points:e,feature:t,undefined:void 0,options:i};await this.oiViewModel.updateVideoFootprint(o),n(i)}catch(l){s(l)||r.getLogger(this).error("update-footprint",l)}else this.oiViewModel.updateCurrentCoveragePolygon(null)}async _updateVidFootprint(e){const t=this.oiViewModel.featureCache.find(t=>t.attributes.offsetFromStart===Math.floor(e));null!=t?.attributes.offsetFromStart&&this.closestFeature!==t&&(this.closestFeature=t,await this._updateVideoFootprintWithGivenFeature(this.oiViewModel.videoExtentPoints,t))}_updateVideoIcon(e){this.videoPaused=!!e,!e&&this.oiViewModel.mapImageConversionToolState&&(this.oiViewModel.setMapImageConversionToolState(!1),this.oiViewModel.plotReferencePointOnGround(null),this.clearReferencePointOnVideo()),e||(this.oiViewModel.clearSelectedPointOnViewer(),this.clearOverlayGraphics())}_updateVideoEffect(){if(!this.oiViewModel?.videoLayer)return;const e=1+this.videoBrightness/10,t=1+this.videoContrast/10;this.oiViewModel.videoLayer.effect=`brightness(${e}) contrast(${t})`}handleVideoBrightnessChange(e){this.oiViewModel?.videoLayer&&(this.videoBrightness=e??0,this._updateVideoEffect())}handleVideoContrastChange(e){this.oiViewModel?.videoLayer&&(this.videoContrast=e??0,this._updateVideoEffect())}playVideoFromSelectedLocation(e){const t=e.attributes.offsetFromStart,i=this.oiViewModel.videoElement?.content;this.closestFeature=e,this.resetVideoScale(),this.clearOverlayGraphics(),i&&null!=t&&(i.currentTime=t,i.play().catch(e=>{r.getLogger(this).error("error playing video",e)}))}addOverlayGraphics(e){this.oiViewModel.videoMapView.graphics.addMany(e)}imageGeometryToOverlayGeometry(e){return x(e)}async geometryToOverlayGeometry(e,t,i){const{footprintExtent:o}=this.oiViewModel;if(!o)return null;const r={feature:t,mode:"video",imageSize:g,footprintExtent:o};switch(e.type){case"point":{const t=await this.oiViewModel.getPixelLocationForFeature(e,r,i);return R(t)}case"polyline":{const o=await T(e,t,i);if(!o)return null;const s=(await Promise.all(o.paths.map(async t=>{const o=t.map(t=>L(t,e.spatialReference)),s=await this.oiViewModel.getPixelLocationsForFeature(o,r,i);return n(i),I(s)}))).flat();return s.length?new m({paths:s,spatialReference:M}):null}case"polygon":{const o=await H(e,t,i);if(!o)return null;const s=await Promise.all(o.rings.map(async t=>{const o=t.map(t=>L(t,e.spatialReference)),s=await this.oiViewModel.getPixelLocationsForFeature(o,r,i);return n(i),s.map(e=>{const t=R(e);return[t.x,t.y]})}));return u.fromJSON({rings:s,spatialReference:M})}case"multipoint":{const t=e.points.map(t=>L(t,e.spatialReference)),o=await this.oiViewModel.getPixelLocationsForFeature(t,r,i);return n(i),h.fromJSON({points:o.map(e=>{const t=R(e);return[t.x,t.y]}),spatialReference:M})}case"extent":{const o=u.fromExtent(e),r=await this.geometryToOverlayGeometry(o,t,i);return r?.extent??null}default:return null}}removeOverlayGraphics(e){this.oiViewModel.videoMapView.graphics.removeMany(e)}clearOverlayGraphics(){const e=Array.from(this.oiViewModel.overlayedMapFeatures.values()).flatMap(e=>e.toArray()),t=this.oiViewModel.videoMapView.graphics.toArray().filter(e=>e!==this._referencePointOnVideo&&e!==this._selectedPointOnVideo),i=Array.from(new Set([...this.oiViewModel.overlayedCameraLocations.toArray(),...e,...t]));i.length&&this.removeOverlayGraphics(i)}syncMapImageConversionHandle(){this.removeHandles(S.videoImageClick);const{currentBestFeature:e,footprintExtent:t,mode:i,mapImageConversionToolState:r,state:s,view:a,videoMapView:d}=this.oiViewModel;if(!r||!0!==this.videoPaused||"video-loaded"!==s||!t||!e)return;let l=null;const c=d.on("click",e=>{if(e.stopPropagation(),e.preventDefault(),!e.mapPoint)return;const r=E(e.mapPoint.x,e.mapPoint.y);this.oiViewModel.plotReferencePointOnImage(r),l?.abort(),l=o(async e=>{const o=this.closestFeature??this.oiViewModel.currentBestFeature;if(!o)return;const s={feature:o,mode:i,imageSize:g,footprintExtent:t};let d=await this.oiViewModel.getMapPointForFeature(r,s,{signal:e});n(e);const l=a?.spatialReference;l&&!d.spatialReference.equals(l)&&(d=await V(d,l),n(e)),this.oiViewModel.plotReferencePointOnGround(d)})});this.addHandles(c,S.videoImageClick)}plotReferencePointOnVideo(e){this.clearReferencePointOnVideo(),this._referencePointOnVideo=new t({geometry:R(e),symbol:_.clone()}),this.oiViewModel.videoMapView.graphics.add(this._referencePointOnVideo)}plotSelectedPointOnVideo(e){return this.clearSelectedPointOnVideo(),this._selectedPointOnVideo=new t({geometry:R(e),symbol:F.clone()}),this.oiViewModel.videoMapView.graphics.add(this._selectedPointOnVideo),this._selectedPointOnVideo}clearReferencePointOnVideo(){this._referencePointOnVideo&&(this.oiViewModel.videoMapView.graphics.remove(this._referencePointOnVideo),this._referencePointOnVideo.destroy(),this._referencePointOnVideo=null)}clearSelectedPointOnVideo(){this._selectedPointOnVideo&&(this.oiViewModel.videoMapView.graphics.remove(this._selectedPointOnVideo),this._selectedPointOnVideo.destroy(),this._selectedPointOnVideo=null)}};e([l()],A.prototype,"closestFeature",void 0),e([l()],A.prototype,"currentTime",void 0),e([l()],A.prototype,"oiViewModel",void 0),e([l({type:Number})],A.prototype,"videoBrightness",void 0),e([l({type:Number})],A.prototype,"videoContrast",void 0),e([l()],A.prototype,"videoDuration",void 0),e([l()],A.prototype,"videoPaused",void 0),e([l()],A.prototype,"videoScale",void 0),e([l()],A.prototype,"videoMuted",void 0),e([l()],A.prototype,"_referencePointOnVideo",void 0),e([l()],A.prototype,"_selectedPointOnVideo",void 0),e([l()],A.prototype,"_videoMinResolutionForCurrentView",null),A=e([c("esri.widgets.OrientedImageryViewer.components.OrientedImageryVideoViewModel")],A);const B=A;export{B as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../Graphic.js";import i from"../../../core/Accessor.js";import{createTask as o}from"../../../core/asyncUtils.js";import r from"../../../core/Logger.js";import{throwIfAborted as n,isAbortError as s}from"../../../core/promiseUtils.js";import{watch as a,syncAndInitial as d}from"../../../core/reactiveUtils.js";import{property as l,subclass as c}from"../../../core/accessorSupport/decorators.js";import p from"../../../geometry/Extent.js";import h from"../../../geometry/Multipoint.js";import u from"../../../geometry/Polygon.js";import m from"../../../geometry/Polyline.js";import{projectAsync as V}from"../../../geometry/projectionUtils.js";import{execute as v}from"../../../geometry/operators/clipOperator.js";import{execute as f}from"../../../geometry/operators/intersectionOperator.js";import{createCoveragePolygon as y}from"../../../layers/orientedImagery/core/coverageUtils.js";import{getResolutionToScaleFactor as w}from"../../../views/2d/viewpointUtils.js";import{fixedImageSize as g,videoSpatialReference as M,sampleExtent as P,videoFitScaleTolerance as O}from"../constants.js";import{diamondSymbol as _,crossSymbol as F}from"../symbols.js";import{registryKeys as S}from"../types.js";import{imageGeometryToVideoMapGeometry as x,pixelToVideoMapPoint as R,geoToPixel as E}from"../videoViewerUtils.js";import{coordinateToPoints as L}from"../support/geometryUtils.js";const[j,C]=g,b=new p({...P,spatialReference:M});function G({x:e,y:t}){return[P.xmin+e/j*(P.xmax-P.xmin),P.ymax-t/C*(P.ymax-P.ymin)]}function I(e){if(e.length<2)return[];const t=new m({paths:[e.map(e=>G(e))],spatialReference:M}),i=v(t,b);return"polyline"===i?.type?i.paths:[]}async function T(e,t,i){let o=y(t.attributes).polygon;e.spatialReference.equals(o.spatialReference)||(o=await V(o,e.spatialReference,i),n(i));const r=f(e,o);return"polyline"===r?.type?r:null}async function H(e,t,i){let o=y(t.attributes).polygon;e.spatialReference.equals(o.spatialReference)||(o=await V(o,e.spatialReference,i),n(i));const r=f(e,o);return"polygon"===r?.type?r:null}let A=class extends i{constructor(e){super(e),this.closestFeature=null,this.currentTime=0,this.videoBrightness=0,this.videoContrast=0,this.videoDuration=void 0,this.videoPaused=null,this.videoScale=void 0,this.videoMuted=null,this._referencePointOnVideo=null,this._selectedPointOnVideo=null,this.enableAudio=()=>{const{videoElement:e}=this.oiViewModel;e?.content&&(e.content.muted=!1,this.videoMuted=!1)},this.playVideoHandler=()=>{const e=this.oiViewModel.videoElement?.content;e&&(e.paused?e.play().catch(e=>{r.getLogger(this).error("error playing video",e)}):e.pause())},this.rewindVideoHandler=()=>{const e=this.oiViewModel.videoElement?.content;e&&(e.currentTime=0,e.play().catch(e=>{r.getLogger(this).error("error playing video",e)}))},this.resetVideoHandler=()=>{const{videoElement:e,videoMapView:t,videoLayer:i}=this.oiViewModel;this.removeHandles(S.videoImageClick),this.closestFeature=null,this.clearReferencePointOnVideo(),this.clearOverlayGraphics(),e?.content&&i&&t&&(e.content.pause(),t.map.layers.remove(i),i.destroy(),this.oiViewModel.videoElement=null)},this.resetVideoEnhancementTools=()=>{this.oiViewModel?.videoLayer&&(this.videoBrightness=0,this.videoContrast=0,this._updateVideoEffect())},this.resetVideoScale=()=>{this.videoScale&&(this.oiViewModel.videoMapView.scale=this.videoScale)},this.toggleAudio=()=>{const{videoElement:e}=this.oiViewModel;if(e?.content){const t=e.content.muted;e.content.muted=!t,this.videoMuted=!t}}}initialize(){this.addHandles([a(()=>this.oiViewModel.videoElement?.content,e=>{if(e instanceof HTMLVideoElement){this._startVideo();const t=async()=>{this.currentTime=Number(e.currentTime.toFixed(2)),e.currentTime&&await this._updateVidFootprint(e.currentTime)};e.addEventListener("timeupdate",t),e.addEventListener("play",()=>this._updateVideoIcon(e.paused)),e.addEventListener("pause",()=>this._pauseVideoHandler(e))}},d),a(()=>this._videoMinResolutionForCurrentView,e=>{null!=e&&this._updateVideoScaleForResize(e)},d),a(()=>this.oiViewModel.layer,(e,t)=>{t&&e&&e.uid!==t.uid&&this.oiViewModel.resetVideo()},d)])}destroy(){this.resetVideoHandler()}_pauseVideoHandler(e){this._updateVideoIcon(e.paused),e.paused&&this.oiViewModel.transformAndPlotSelectedLocation()}get _videoMinResolutionForCurrentView(){const{mode:e,videoMapView:t}=this.oiViewModel;if("video"!==e||!t.ready)return;const{width:i,height:o}=t;return i&&o?Math.max(b.width/i,b.height/o):void 0}_updateVideoScaleForResize(e){const{videoMapView:t}=this.oiViewModel,{constraints:i,scale:o,spatialReference:r}=t,n=i.minScale,s=Math.abs(o-n)<=O,a=w(r)*e;i.set({minScale:a}),this.videoScale=a,t.scale=s?a:o,s&&requestAnimationFrame(()=>{const{extent:e,scale:i,constraints:o}=t;e&&Math.abs(i-o.minScale)<=O&&(this.oiViewModel.initialVideoMapViewExtent=e.clone())})}_setVideoInfo(){const{videoElement:e,videoMapView:t}=this.oiViewModel;e?.content&&(this.videoDuration=e.content.duration,this.videoScale=t.scale)}_startVideo(){try{this.enableAudio(),this._setVideoInfo();const e=this.oiViewModel.currentBestFeature;e&&this.playVideoFromSelectedLocation(e)}catch(e){r.getLogger(this).error("oriented-imagery-viewer:video-load",e)}}async _updateVideoFootprintWithGivenFeature(e,t,i){const{activeViewer:o,mode:a,footprintExtent:d}=this.oiViewModel;if(t&&("video"===a?g:o?.imageSize)&&d)try{const o={points:e,feature:t,undefined:void 0,options:i};await this.oiViewModel.updateVideoFootprint(o),n(i)}catch(l){s(l)||r.getLogger(this).error("update-footprint",l)}else this.oiViewModel.updateCurrentCoveragePolygon(null)}async _updateVidFootprint(e){const t=this.oiViewModel.featureCache.find(t=>t.attributes.offsetFromStart===Math.floor(e));null!=t?.attributes.offsetFromStart&&this.closestFeature!==t&&(this.closestFeature=t,await this._updateVideoFootprintWithGivenFeature(this.oiViewModel.videoExtentPoints,t))}_updateVideoIcon(e){this.videoPaused=!!e,!e&&this.oiViewModel.mapImageConversionToolState&&(this.oiViewModel.setMapImageConversionToolState(!1),this.oiViewModel.plotReferencePointOnGround(null),this.clearReferencePointOnVideo()),e||(this.oiViewModel.clearSelectedPointOnViewer(),this.clearOverlayGraphics())}_updateVideoEffect(){if(!this.oiViewModel?.videoLayer)return;const e=1+this.videoBrightness/10,t=1+this.videoContrast/10;this.oiViewModel.videoLayer.effect=`brightness(${e}) contrast(${t})`}handleVideoBrightnessChange(e){this.oiViewModel?.videoLayer&&(this.videoBrightness=e??0,this._updateVideoEffect())}handleVideoContrastChange(e){this.oiViewModel?.videoLayer&&(this.videoContrast=e??0,this._updateVideoEffect())}playVideoFromSelectedLocation(e){const t=e.attributes.offsetFromStart,i=this.oiViewModel.videoElement?.content;this.closestFeature=e,this.resetVideoScale(),this.clearOverlayGraphics(),i&&null!=t&&(i.currentTime=t,i.play().catch(e=>{r.getLogger(this).error("error playing video",e)}))}addOverlayGraphics(e){this.oiViewModel.videoMapView.graphics.addMany(e)}imageGeometryToOverlayGeometry(e){return x(e)}async geometryToOverlayGeometry(e,t,i){const{footprintExtent:o}=this.oiViewModel;if(!o)return null;const r={feature:t,mode:"video",imageSize:g,footprintExtent:o};switch(e.type){case"point":{const t=await this.oiViewModel.getPixelLocationForFeature(e,r,i);return R(t)}case"polyline":{const o=await T(e,t,i);if(!o)return null;const s=(await Promise.all(o.paths.map(async t=>{const o=t.map(t=>L(t,e.spatialReference)),s=await this.oiViewModel.getPixelLocationsForFeature(o,r,i);return n(i),I(s)}))).flat();return s.length?new m({paths:s,spatialReference:M}):null}case"polygon":{const o=await H(e,t,i);if(!o)return null;const s=await Promise.all(o.rings.map(async t=>{const o=t.map(t=>L(t,e.spatialReference)),s=await this.oiViewModel.getPixelLocationsForFeature(o,r,i);return n(i),s.map(e=>{const t=R(e);return[t.x,t.y]})}));return u.fromJSON({rings:s,spatialReference:M})}case"multipoint":{const t=e.points.map(t=>L(t,e.spatialReference)),o=await this.oiViewModel.getPixelLocationsForFeature(t,r,i);return n(i),h.fromJSON({points:o.map(e=>{const t=R(e);return[t.x,t.y]}),spatialReference:M})}case"extent":{const o=u.fromExtent(e),r=await this.geometryToOverlayGeometry(o,t,i);return r?.extent??null}default:return null}}removeOverlayGraphics(e){this.oiViewModel.videoMapView.graphics.removeMany(e)}clearOverlayGraphics(){const e=Array.from(this.oiViewModel.overlayedMapFeatures.values()).flatMap(e=>e.toArray()),t=this.oiViewModel.videoMapView.graphics.toArray().filter(e=>e!==this._referencePointOnVideo&&e!==this._selectedPointOnVideo),i=Array.from(new Set([...this.oiViewModel.overlayedCameraLocations.toArray(),...e,...t]));i.length&&this.removeOverlayGraphics(i)}syncMapImageConversionHandle(){this.removeHandles(S.videoImageClick);const{currentBestFeature:e,footprintExtent:t,mode:i,mapImageConversionToolState:r,state:s,view:a,videoMapView:d}=this.oiViewModel;if(!r||!0!==this.videoPaused||"video-loaded"!==s||!t||!e)return;let l=null;const c=d.on("click",e=>{if(e.stopPropagation(),e.preventDefault(),!e.mapPoint)return;const r=E(e.mapPoint.x,e.mapPoint.y);this.oiViewModel.plotReferencePointOnImage(r),l?.abort(),l=o(async e=>{const o=this.closestFeature??this.oiViewModel.currentBestFeature;if(!o)return;const s={feature:o,mode:i,imageSize:g,footprintExtent:t};let d=await this.oiViewModel.getMapPointForFeature(r,s,{signal:e});n(e);const l=a?.spatialReference;l&&!d.spatialReference.equals(l)&&(d=await V(d,l),n(e)),this.oiViewModel.plotReferencePointOnGround(d)})});this.addHandles(c,S.videoImageClick)}plotReferencePointOnVideo(e){this.clearReferencePointOnVideo(),this._referencePointOnVideo=new t({geometry:R(e),symbol:_.clone()}),this.oiViewModel.videoMapView.graphics.add(this._referencePointOnVideo)}plotSelectedPointOnVideo(e){return this.clearSelectedPointOnVideo(),this._selectedPointOnVideo=new t({geometry:R(e),symbol:F.clone()}),this.oiViewModel.videoMapView.graphics.add(this._selectedPointOnVideo),this._selectedPointOnVideo}clearReferencePointOnVideo(){this._referencePointOnVideo&&(this.oiViewModel.videoMapView.graphics.remove(this._referencePointOnVideo),this._referencePointOnVideo.destroy(),this._referencePointOnVideo=null)}clearSelectedPointOnVideo(){this._selectedPointOnVideo&&(this.oiViewModel.videoMapView.graphics.remove(this._selectedPointOnVideo),this._selectedPointOnVideo.destroy(),this._selectedPointOnVideo=null)}};e([l()],A.prototype,"closestFeature",void 0),e([l()],A.prototype,"currentTime",void 0),e([l()],A.prototype,"oiViewModel",void 0),e([l({type:Number})],A.prototype,"videoBrightness",void 0),e([l({type:Number})],A.prototype,"videoContrast",void 0),e([l()],A.prototype,"videoDuration",void 0),e([l()],A.prototype,"videoPaused",void 0),e([l()],A.prototype,"videoScale",void 0),e([l()],A.prototype,"videoMuted",void 0),e([l()],A.prototype,"_referencePointOnVideo",void 0),e([l()],A.prototype,"_selectedPointOnVideo",void 0),e([l()],A.prototype,"_videoMinResolutionForCurrentView",null),A=e([c("esri.widgets.OrientedImageryViewer.components.OrientedImageryVideoViewModel")],A);const B=A;export{B as default};