@arcgis/core 5.2.0-next.7 → 5.2.0-next.8

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 (446) hide show
  1. package/arcgisGlobal.d.ts +4 -0
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/07cc5743cb6a9fd68adb.js +1 -0
  4. package/assets/esri/core/workers/chunks/0cbd7f5fe24271942abd.js +1 -0
  5. package/assets/esri/core/workers/chunks/0ecc1bc1686844cdd60e.js +1 -0
  6. package/assets/esri/core/workers/chunks/0f75c19d8e296a32e329.js +1 -0
  7. package/assets/esri/core/workers/chunks/174cc2e69e5b5a13d880.js +1 -0
  8. package/assets/esri/core/workers/chunks/18f980465db5a86153d1.js +1 -0
  9. package/assets/esri/core/workers/chunks/1996f0a930abdd97b855.js +1 -0
  10. package/assets/esri/core/workers/chunks/1c8436b27a3d3cde5cfc.js +1 -0
  11. package/assets/esri/core/workers/chunks/1cb1f125dccbf8c8cac9.js +1 -0
  12. package/assets/esri/core/workers/chunks/1dd06335bb2d35c66339.js +1 -0
  13. package/assets/esri/core/workers/chunks/1f289aa69dd6b6be534a.js +1 -0
  14. package/assets/esri/core/workers/chunks/2185e8a52c5e29d46680.js +1 -0
  15. package/assets/esri/core/workers/chunks/{da29cf0e64065631a470.js → 24810c36ae09bb4e83dc.js} +1 -1
  16. package/assets/esri/core/workers/chunks/26583db2af1a1cc456e5.js +1 -0
  17. package/assets/esri/core/workers/chunks/274b82cb183ddd0042f3.js +1 -0
  18. package/assets/esri/core/workers/chunks/27c6def22c2b0791ce9e.js +1 -0
  19. package/assets/esri/core/workers/chunks/2c9ba638d1f31c82f9f5.js +1 -0
  20. package/assets/esri/core/workers/chunks/2d2895f1fdf44d212a4d.js +1 -0
  21. package/assets/esri/core/workers/chunks/2dbc2fd0f2dde505c465.js +1 -0
  22. package/assets/esri/core/workers/chunks/2dbcdfdf000226bfe746.js +1 -0
  23. package/assets/esri/core/workers/chunks/2e6382d50bf012064eae.js +1 -0
  24. package/assets/esri/core/workers/chunks/30f1909c5ef1835b8507.js +1 -0
  25. package/assets/esri/core/workers/chunks/31918a0d9886dedf385f.js +1 -0
  26. package/assets/esri/core/workers/chunks/{1c029b03ed836f393a50.js → 3248001d9dfb9153699e.js} +1 -1
  27. package/assets/esri/core/workers/chunks/3297658ccd8d4b9ce733.js +1 -0
  28. package/assets/esri/core/workers/chunks/{716a4d7e8b908b81870b.js → 32f26757e36704923286.js} +1 -1
  29. package/assets/esri/core/workers/chunks/3529afab0c2444275d91.js +1 -0
  30. package/assets/esri/core/workers/chunks/36dac6ab51d9dbdd091d.js +1 -0
  31. package/assets/esri/core/workers/chunks/390fda094fa8695d98cf.js +1 -0
  32. package/assets/esri/core/workers/chunks/39596715e84d0da2f803.js +30 -0
  33. package/assets/esri/core/workers/chunks/398eb3100a282e4736bb.js +1 -0
  34. package/assets/esri/core/workers/chunks/{b23009d9f8eb7c20ce45.js → 3b15933f65f59625a650.js} +1 -1
  35. package/assets/esri/core/workers/chunks/3b3f91a61e3f29af1fb2.js +1 -0
  36. package/assets/esri/core/workers/chunks/{f815106d439ff1f76e51.js → 3b837b512999e6ab24bc.js} +1 -1
  37. package/assets/esri/core/workers/chunks/3d20c86f1fe877bf884b.js +1 -0
  38. package/assets/esri/core/workers/chunks/3dc5fbecc427df1fd827.js +1 -0
  39. package/assets/esri/core/workers/chunks/3e65b4b18760bde8ceee.js +1 -0
  40. package/assets/esri/core/workers/chunks/3ff7aa216cd794d951e8.js +1 -0
  41. package/assets/esri/core/workers/chunks/{8e1865392681d390ab2e.js → 401ee7fa500adad77db1.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{60915a3708a34da1977e.js → 426156137f279d979ddd.js} +1 -1
  43. package/assets/esri/core/workers/chunks/4517630bf869205bab87.js +1 -0
  44. package/assets/esri/core/workers/chunks/48f1c3a7c9f16d6896f6.js +1 -0
  45. package/assets/esri/core/workers/chunks/{cfd28eba44cf5a296c6d.js → 49308bdc36373555f1af.js} +1 -1
  46. package/assets/esri/core/workers/chunks/5075e85e1eafd431a8c0.js +1 -0
  47. package/assets/esri/core/workers/chunks/5121768c70f1e03b685c.js +1 -0
  48. package/assets/esri/core/workers/chunks/5201105ca11a2d450460.js +1 -0
  49. package/assets/esri/core/workers/chunks/528ed0bd8dc149ead023.js +1 -0
  50. package/assets/esri/core/workers/chunks/52f354bf80ee5ab0379a.js +1 -0
  51. package/assets/esri/core/workers/chunks/538537f9bc866d9caa75.js +1 -0
  52. package/assets/esri/core/workers/chunks/58a7cdebc3d182c15ec6.js +1 -0
  53. package/assets/esri/core/workers/chunks/58ac245ff7fb57c1004f.js +1 -0
  54. package/assets/esri/core/workers/chunks/58acc18b92533166135d.js +1 -0
  55. package/assets/esri/core/workers/chunks/597aa39cdb5366ef9a74.js +1 -0
  56. package/assets/esri/core/workers/chunks/5bfae465872760e7af6d.js +1 -0
  57. package/assets/esri/core/workers/chunks/5cb274e5759f7ca0d4ed.js +1 -0
  58. package/assets/esri/core/workers/chunks/5d3ddbf94539cb4f493e.js +1 -0
  59. package/assets/esri/core/workers/chunks/{542f5469f7b42026b24f.js → 5d62d1920e3e35fc0192.js} +1 -1
  60. package/assets/esri/core/workers/chunks/5dd441db1e74dc9b56e9.js +1 -0
  61. package/assets/esri/core/workers/chunks/630ad47857de3cf726d1.js +1 -0
  62. package/assets/esri/core/workers/chunks/64114a7d2da162987958.js +1 -0
  63. package/assets/esri/core/workers/chunks/6821462e5c1e9c76010a.js +1 -0
  64. package/assets/esri/core/workers/chunks/684d3cb4fb233180b2d0.js +1 -0
  65. package/assets/esri/core/workers/chunks/686c51fd2144e132783e.js +1 -0
  66. package/assets/esri/core/workers/chunks/68f9b2da1fd08785320f.js +2 -0
  67. package/assets/esri/core/workers/chunks/69e98de578f467a35054.js +1 -0
  68. package/assets/esri/core/workers/chunks/6a3d207308b29651f397.js +1 -0
  69. package/assets/esri/core/workers/chunks/6aabde21b0b376d95888.js +1 -0
  70. package/assets/esri/core/workers/chunks/6c6396bfcdab12e68deb.js +1 -0
  71. package/assets/esri/core/workers/chunks/6d616b66fb32904b55a1.js +1 -0
  72. package/assets/esri/core/workers/chunks/{bcb021a167580bb1619f.js → 6ef3b8d67b498d655a99.js} +1 -1
  73. package/assets/esri/core/workers/chunks/6f125b4ed06c0022dee6.js +1 -0
  74. package/assets/esri/core/workers/chunks/6f4825c3ef1fe202ab82.js +1 -0
  75. package/assets/esri/core/workers/chunks/6f5d61f734ec40dafabb.js +1 -0
  76. package/assets/esri/core/workers/chunks/{fce7995c26953bfd8d3d.js → 70229007d594536ba6a3.js} +1 -1
  77. package/assets/esri/core/workers/chunks/71e55381fdff3fc2542e.js +1 -0
  78. package/assets/esri/core/workers/chunks/{90953a827bc89d0e6bd5.js → 72cfb186e50537bcdd19.js} +1 -1
  79. package/assets/esri/core/workers/chunks/72d67cc3a382e83bf1a2.js +1 -0
  80. package/assets/esri/core/workers/chunks/7748743d4be047094d67.js +1 -0
  81. package/assets/esri/core/workers/chunks/78c53aeb0a408ab3c80c.js +1 -0
  82. package/assets/esri/core/workers/chunks/7b5c1030a7cf0f382cc4.js +1 -0
  83. package/assets/esri/core/workers/chunks/7cee81c5aa1e6b7d2452.js +1 -0
  84. package/assets/esri/core/workers/chunks/7e89cb9ff615742e0894.js +1 -0
  85. package/assets/esri/core/workers/chunks/80f4f686ce403cb2693f.js +1 -0
  86. package/assets/esri/core/workers/chunks/{8477b5fdd99c6ac5c27b.js → 851705cf276eae8d4d37.js} +1 -1
  87. package/assets/esri/core/workers/chunks/89e09276086745aa21fa.js +1 -0
  88. package/assets/esri/core/workers/chunks/{4894997bfa438f66da36.js → 8a8c5e5ce457ca004687.js} +1 -1
  89. package/assets/esri/core/workers/chunks/{b79428c5093614174e76.js → 8b0a01ebc86ab226f01f.js} +1 -1
  90. package/assets/esri/core/workers/chunks/{452c01cecbbd1e370098.js → 8f93e6fc11a158d4f1ee.js} +1 -1
  91. package/assets/esri/core/workers/chunks/93bd56396b8cd020f965.js +1 -0
  92. package/assets/esri/core/workers/chunks/{359d3acb3953e64e5a78.js → 93ceb74ac88ef460fe5f.js} +1 -1
  93. package/assets/esri/core/workers/chunks/957f7b8de4aecb6f644e.js +1 -0
  94. package/assets/esri/core/workers/chunks/{875cce0be4f6c89f80f3.js → 9629601de5e44ffe90ea.js} +2 -2
  95. package/assets/esri/core/workers/chunks/976ab2be6c244768c08a.js +1 -0
  96. package/assets/esri/core/workers/chunks/{e785f76c1a75cb1d1e1f.js → 99101789035f1787c630.js} +1 -1
  97. package/assets/esri/core/workers/chunks/99e5296192ab98fd0d99.js +1 -0
  98. package/assets/esri/core/workers/chunks/9d5f7573bfe3b051daf1.js +1 -0
  99. package/assets/esri/core/workers/chunks/a0c00c6fe60db49b3ab9.js +1 -0
  100. package/assets/esri/core/workers/chunks/a2247f4c3116efb16c4f.js +1 -0
  101. package/assets/esri/core/workers/chunks/a4245bd4e67a428fd835.js +1 -0
  102. package/assets/esri/core/workers/chunks/a442534ac0956a68b769.js +1 -0
  103. package/assets/esri/core/workers/chunks/a4e9a17dacbb52444d75.js +1 -0
  104. package/assets/esri/core/workers/chunks/{8bdca6f06c8b5fedd917.js → a5abba59e738c3240c22.js} +1 -1
  105. package/assets/esri/core/workers/chunks/{62dfbdc847be4800e833.js → a9a1293b1d5302fb3b54.js} +8 -12
  106. package/assets/esri/core/workers/chunks/a9fc53ae040320e49834.js +1 -0
  107. package/assets/esri/core/workers/chunks/aa118c1bcd922b8ac328.js +1 -0
  108. package/assets/esri/core/workers/chunks/aae0049c2c3e15a813e8.js +1 -0
  109. package/assets/esri/core/workers/chunks/ac33b10fe65f9e9e824f.js +1 -0
  110. package/assets/esri/core/workers/chunks/adc32f6b45ea3026fc34.js +1 -0
  111. package/assets/esri/core/workers/chunks/af31e62499d45bdab3c3.js +1 -0
  112. package/assets/esri/core/workers/chunks/b22a1c98271c2e4d8808.js +1 -0
  113. package/assets/esri/core/workers/chunks/{9f4681713f03365a2a53.js → b666027b9022fa346a79.js} +1 -1
  114. package/assets/esri/core/workers/chunks/b73c146d3e550eaf07eb.js +1 -0
  115. package/assets/esri/core/workers/chunks/c0cbc50e5afd68bd485c.js +1 -0
  116. package/assets/esri/core/workers/chunks/c2a65de34f6a6c89c652.js +1 -0
  117. package/assets/esri/core/workers/chunks/c357c0a08b99c1e7f290.js +1 -0
  118. package/assets/esri/core/workers/chunks/{4a23b27bfbcfa08fd9a7.js → c3cf9e6e91f71c9cc5f3.js} +1 -1
  119. package/assets/esri/core/workers/chunks/c3ff2ff0a86a9143d7a5.js +1 -0
  120. package/assets/esri/core/workers/chunks/{e545df5ea7c0ced92cee.js → c424a66f1546275e2bcb.js} +1 -1
  121. package/assets/esri/core/workers/chunks/c60b4f2dd5fccdf362a7.js +1 -0
  122. package/assets/esri/core/workers/chunks/c6d0b4875b6b8d6bc25a.js +1 -0
  123. package/assets/esri/core/workers/chunks/c911f0b5bdd43b66b731.js +1 -0
  124. package/assets/esri/core/workers/chunks/c9a4601073e1a3eee9d0.js +1 -0
  125. package/assets/esri/core/workers/chunks/ccffaba50674adba7a0f.js +1 -0
  126. package/assets/esri/core/workers/chunks/{24646a1176ce34039155.js → cdf6ad970dc1893dac58.js} +1 -1
  127. package/assets/esri/core/workers/chunks/d13e003c9293cb7e2852.js +1 -0
  128. package/assets/esri/core/workers/chunks/d24e027bb8b2c09f25c8.js +1 -0
  129. package/assets/esri/core/workers/chunks/d2df8c328054dc6cb7b7.js +1 -0
  130. package/assets/esri/core/workers/chunks/d5c35a75fd4c41def420.js +1 -0
  131. package/assets/esri/core/workers/chunks/{5e3e0d7b85dfd52d1c7d.js → d78b7cac322755e87eb8.js} +1 -1
  132. package/assets/esri/core/workers/chunks/d7be278aed1fb37ad5ec.js +1 -0
  133. package/assets/esri/core/workers/chunks/d9695794cfaa014a55b1.js +1 -0
  134. package/assets/esri/core/workers/chunks/da1e8b338ab9fe9e0a8e.js +1 -0
  135. package/assets/esri/core/workers/chunks/e1bf87077541da6853c6.js +1 -0
  136. package/assets/esri/core/workers/chunks/e279bcbe4f10e87bde6c.js +1 -0
  137. package/assets/esri/core/workers/chunks/e4406baf206b9e4c7e4f.js +1 -0
  138. package/assets/esri/core/workers/chunks/e499252cb52f7aed49a0.js +1 -0
  139. package/assets/esri/core/workers/chunks/{e178cd0e9178d6716410.js → e5837e5ac6ef761f26a2.js} +1 -1
  140. package/assets/esri/core/workers/chunks/e6a7272b59a4c2e34dca.js +1 -0
  141. package/assets/esri/core/workers/chunks/e912b515704e20313e53.js +1 -0
  142. package/assets/esri/core/workers/chunks/eac683a37339aa558455.js +1 -0
  143. package/assets/esri/core/workers/chunks/ec1841e6e498d54012eb.js +1 -0
  144. package/assets/esri/core/workers/chunks/ed3d16a5b4084ef61f8a.js +1 -0
  145. package/assets/esri/core/workers/chunks/ee07f54bc77fe9f8575a.js +1 -0
  146. package/assets/esri/core/workers/chunks/{e094364e54981c91e1b4.js → eeea5710275c967e8d51.js} +1 -1
  147. package/assets/esri/core/workers/chunks/ef46ef4f0ee9f2aeaa4a.js +1 -0
  148. package/assets/esri/core/workers/chunks/efb4aa5886730ea377bd.js +1 -0
  149. package/assets/esri/core/workers/chunks/{485d20152495c27b8074.js → f2a268c69f2a5566381b.js} +1 -1
  150. package/assets/esri/core/workers/chunks/f590db684d88e72bd79b.js +1 -0
  151. package/assets/esri/core/workers/chunks/f69df22a5c64389ebe28.js +1 -0
  152. package/assets/esri/core/workers/chunks/{f60292d97bcdbf19165b.js → f6d047358d14328f3622.js} +1 -1
  153. package/assets/esri/core/workers/chunks/f7fca88d120d45bb782a.js +1 -0
  154. package/assets/esri/core/workers/chunks/f819854098d63fe4ccdb.js +1 -0
  155. package/assets/esri/core/workers/chunks/f8f3579d0c1b65762902.js +1 -0
  156. package/assets/esri/core/workers/chunks/f98118127469449ca145.js +1 -0
  157. package/assets/esri/core/workers/chunks/f9ed05d4ad1f44d033bb.js +1 -0
  158. package/assets/esri/core/workers/chunks/fb6605be0c5e36785543.js +1 -0
  159. package/assets/esri/core/workers/chunks/fbe7dae0b4bf2d172487.js +1 -0
  160. package/assets/esri/core/workers/chunks/fc4d9be62cf5e9758842.js +1 -0
  161. package/assets/esri/core/workers/chunks/fd70a25ffdf2cc6c5be2.js +1 -0
  162. package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
  163. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  164. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  165. package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
  166. package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +38 -8
  167. package/assets/esri/themes/dark/main.css +1 -1
  168. package/assets/esri/themes/light/main.css +1 -1
  169. package/assets/esri/themes/light/view.css +1 -1
  170. package/chunks/GlowComposition.glsl.js +2 -2
  171. package/chunks/bundle2.js +1 -1
  172. package/chunks/lyr3DMain.js +1 -1
  173. package/chunks/lyr3DWorker.js +1 -1
  174. package/chunks/vxlLayer.js +1 -1
  175. package/config.js +1 -1
  176. package/core/screenUtils.js +1 -1
  177. package/core/sql.d.ts +1 -1
  178. package/geometry/Extent.d.ts +0 -13
  179. package/geometry/Geometry.d.ts +10 -8
  180. package/geometry/Multipoint.d.ts +9 -0
  181. package/geometry/Multipoint.js +1 -1
  182. package/geometry/Point.d.ts +15 -71
  183. package/geometry/Polygon.js +1 -1
  184. package/geometry/support/geometryUtils.js +1 -1
  185. package/graphic/AnnotationGraphicOrigin.d.ts +34 -0
  186. package/graphic/AnnotationGraphicOrigin.js +2 -0
  187. package/graphic/DimensionFeatureGraphicOrigin.d.ts +34 -0
  188. package/graphic/DimensionFeatureGraphicOrigin.js +2 -0
  189. package/identity/IdentityManagerBase.js +1 -1
  190. package/interfaces.d.ts +10 -0
  191. package/kernel.js +1 -1
  192. package/layers/AnnotationLayer.d.ts +263 -32
  193. package/layers/AnnotationLayer.js +1 -1
  194. package/layers/DimensionFeatureLayer.d.ts +263 -32
  195. package/layers/DimensionFeatureLayer.js +1 -1
  196. package/layers/FeatureLayer.d.ts +1 -1
  197. package/layers/GeoJSONLayer.d.ts +7 -7
  198. package/layers/SceneLayer.d.ts +4 -2
  199. package/layers/VideoLayer.d.ts +7 -1
  200. package/layers/VideoLayer.js +1 -1
  201. package/layers/catalog/CatalogFootprintLayer.d.ts +40 -10
  202. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  203. package/layers/graphics/sources/parquet/ParquetFileInfo.js +2 -0
  204. package/layers/graphics/sources/parquet/ParquetFileStatistics.js +2 -0
  205. package/layers/graphics/sources/parquet/PortalParquetFileProvider.js +1 -1
  206. package/layers/graphics/sources/parquet/PortalParquetLayerFileProvider.js +1 -1
  207. package/layers/graphics/sources/parquet/UrlsFileProvider.js +1 -1
  208. package/layers/graphics/sources/parquet/createFileProvider.js +1 -1
  209. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  210. package/layers/mixins/FeatureLayerBase.d.ts +40 -16
  211. package/layers/mixins/TemporalLayer.d.ts +4 -2
  212. package/layers/support/AnnotationSublayer.d.ts +44 -0
  213. package/layers/support/AnnotationSublayer.js +2 -0
  214. package/layers/support/commonProperties.js +1 -1
  215. package/layers/support/featureLayerUtils.js +1 -1
  216. package/layers/support/layerUtils.js +1 -1
  217. package/layers/support/parquetUtils.js +1 -1
  218. package/layers/support/tiles3DUtils.js +1 -1
  219. package/layers/support/timeSeriesUtils.js +1 -1
  220. package/layers/video/types.d.ts +61 -1
  221. package/libs/parquet/parquet.js +1 -1
  222. package/package.json +1 -1
  223. package/request/types.d.ts +18 -20
  224. package/support/revision.js +1 -1
  225. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  226. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  227. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityPolygonShader.js +1 -1
  228. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  229. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ComplexOutlineFillShader.js +1 -1
  230. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HeatmapAccumulateShader.js +1 -1
  231. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  232. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
  233. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  234. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  235. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  236. package/views/2d/layers/GeoRSSLayerView2D.js +1 -1
  237. package/views/2d/layers/GraphicsLayerView2D.js +1 -1
  238. package/views/2d/layers/ImageryLayerView2D.js +1 -1
  239. package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
  240. package/views/2d/layers/KMLLayerView2D.js +1 -1
  241. package/views/2d/layers/MapNotesLayerView2D.js +1 -1
  242. package/views/2d/layers/MediaLayerView2D.js +1 -1
  243. package/views/2d/layers/RouteLayerView2D.js +1 -1
  244. package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
  245. package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +1 -1
  246. package/views/2d/layers/features/sources/strategies/ParquetSnapshotLoadStrategy.js +1 -1
  247. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  248. package/views/2d/layers/graphics/GraphicStore.js +1 -1
  249. package/views/2d/support/hitTestUtils.js +1 -1
  250. package/views/3d/analysis/LineOfSight/LineOfSightAggregateManipulatedObject3D.js +2 -0
  251. package/views/3d/analysis/LineOfSight/LineOfSightAuthoringUtils.js +1 -1
  252. package/views/3d/analysis/LineOfSight/LineOfSightConfiguration.js +1 -1
  253. package/views/3d/analysis/LineOfSight/LineOfSightManipulators.js +1 -1
  254. package/views/3d/analysis/LineOfSight/LineOfSightObserverPlugin.js +1 -1
  255. package/views/3d/analysis/LineOfSight/LineOfSightPlacementLeafPlugin.js +2 -0
  256. package/views/3d/analysis/LineOfSight/LineOfSightPlacementTool.js +1 -1
  257. package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +2 -0
  258. package/views/3d/analysis/LineOfSight/LineOfSightRootPlugin.js +1 -1
  259. package/views/3d/analysis/LineOfSight/LineOfSightTargetPlugin.js +1 -1
  260. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  261. package/views/3d/analysis/LineOfSight/LineOfSightTool2.js +1 -1
  262. package/views/3d/analysis/Viewshed/ViewshedSnappingController.js +1 -1
  263. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  264. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  265. package/views/3d/interactive/editingTools/reshape/ReshapeTool3D.js +1 -1
  266. package/views/3d/interactive/editingTools/reshape/isSupportedObject.js +1 -1
  267. package/views/3d/interactive/editingTools/reshape/reshapeTooltipUtils3D.js +1 -1
  268. package/views/3d/interactive/editingTools/visualElementUtils.js +1 -1
  269. package/views/3d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles3D.js +1 -1
  270. package/views/3d/layers/FlowSubView3D.js +1 -1
  271. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  272. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  273. package/views/3d/terrain/OverlayManager.js +1 -1
  274. package/views/3d/webgl/RenderNode.d.ts +25 -4
  275. package/views/3d/webgl-engine/shaders/ToneMapping.glsl.js +6 -10
  276. package/views/draw/plugins/PolygonPlugin.js +1 -1
  277. package/views/interactive/interactiveToolUtils.js +1 -1
  278. package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
  279. package/views/interactive/snapping/LineSnapper.js +1 -1
  280. package/views/interactive/snapping/ParallelLineSnapper.js +1 -1
  281. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  282. package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
  283. package/views/interactive/snapping/SnappingAlgorithm.js +1 -1
  284. package/views/interactive/snapping/SnappingManager.js +1 -1
  285. package/views/interactive/snapping/snappingUtils.js +1 -1
  286. package/views/layers/FeatureLikeLayerView.d.ts +25 -1
  287. package/views/layers/FeatureLikeLayerView.js +1 -1
  288. package/views/types.d.ts +4 -4
  289. package/webdoc/support/webdocSaveUtils.js +1 -1
  290. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.d.ts +10 -2
  291. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  292. package/widgets/BatchAttributeForm/ReactiveContingentValuesManager.js +1 -1
  293. package/widgets/BatchAttributeForm/attachmentUtils.d.ts +14 -0
  294. package/widgets/BatchAttributeForm/attachmentUtils.js +1 -1
  295. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  296. package/widgets/BatchAttributeForm/css.js +1 -1
  297. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.d.ts +8 -6
  298. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.js +1 -1
  299. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  300. package/widgets/BatchAttributeForm/inputs/RelationshipElementInput.js +1 -1
  301. package/widgets/BatchAttributeForm/inputs/support/attachmentValidationCriteriaState.d.ts +5 -0
  302. package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
  303. package/widgets/BatchAttributeForm/inputs/types.d.ts +8 -1
  304. package/widgets/BatchAttributeForm/interfaceUtils.js +1 -1
  305. package/widgets/BatchAttributeForm/rendered-content/RelationshipDetails.js +1 -1
  306. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  307. package/widgets/BatchAttributeForm.d.ts +9 -1
  308. package/widgets/BatchAttributeForm.js +1 -1
  309. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  310. package/widgets/FeatureTable/Grid/Column.js +1 -1
  311. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  312. package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
  313. package/widgets/FeatureTable/Grid/GroupColumn.js +1 -1
  314. package/widgets/FeatureTable.js +1 -1
  315. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  316. package/widgets/Print/PrintViewModel.js +1 -1
  317. package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +7 -1
  318. package/widgets/VideoPlayer/VideoPlayerViewModel.js +1 -1
  319. package/widgets/support/ContingentValuesManager.js +1 -1
  320. package/assets/esri/core/workers/chunks/02aaeaa988e9e7d65a7f.js +0 -1
  321. package/assets/esri/core/workers/chunks/03354ad3d74d858173b4.js +0 -1
  322. package/assets/esri/core/workers/chunks/09a4139fc6d069ab6928.js +0 -1
  323. package/assets/esri/core/workers/chunks/0a510acf50915e00c62b.js +0 -1
  324. package/assets/esri/core/workers/chunks/0a780a883abfcdf0b900.js +0 -1
  325. package/assets/esri/core/workers/chunks/0fbf9bf52ecb4cd8293b.js +0 -1
  326. package/assets/esri/core/workers/chunks/119d352dd586f2bb61ec.js +0 -1
  327. package/assets/esri/core/workers/chunks/130784a27661de6b52a5.js +0 -1
  328. package/assets/esri/core/workers/chunks/145364aa20b4435294c2.js +0 -1
  329. package/assets/esri/core/workers/chunks/1595dc499a06b23b6a96.js +0 -1
  330. package/assets/esri/core/workers/chunks/16713986893adfbc9331.js +0 -1
  331. package/assets/esri/core/workers/chunks/179c9fe4ac83b42e5976.js +0 -1
  332. package/assets/esri/core/workers/chunks/19dcae83be0fc0aced02.js +0 -1
  333. package/assets/esri/core/workers/chunks/1c64e10f966e26af6fed.js +0 -1
  334. package/assets/esri/core/workers/chunks/1eabe746481e0b228498.js +0 -1
  335. package/assets/esri/core/workers/chunks/201007cf1a91e2b126fc.js +0 -1
  336. package/assets/esri/core/workers/chunks/20d0adc678f11981059c.js +0 -1
  337. package/assets/esri/core/workers/chunks/227eff8aa4a6f5f03bc2.js +0 -1
  338. package/assets/esri/core/workers/chunks/233ff588798c8a5eedf4.js +0 -1
  339. package/assets/esri/core/workers/chunks/238478cfe493fd4a6100.js +0 -1
  340. package/assets/esri/core/workers/chunks/24647e7424798dccdaf5.js +0 -1
  341. package/assets/esri/core/workers/chunks/249616ea2d90d40a8299.js +0 -1
  342. package/assets/esri/core/workers/chunks/24d9e4f1c7b8ff0d2cce.js +0 -1
  343. package/assets/esri/core/workers/chunks/2b36a54927f5a7281da3.js +0 -1
  344. package/assets/esri/core/workers/chunks/2bcd4d395bfe6a19ccc8.js +0 -1
  345. package/assets/esri/core/workers/chunks/2c8584ec1c3c9fd5aba2.js +0 -1
  346. package/assets/esri/core/workers/chunks/2d374cc8c54a722a7afe.js +0 -1
  347. package/assets/esri/core/workers/chunks/2e11b4e9d66474a60064.js +0 -1
  348. package/assets/esri/core/workers/chunks/2fa080539d039c92ce08.js +0 -1
  349. package/assets/esri/core/workers/chunks/3109b05fe4fc40d4f25b.js +0 -1
  350. package/assets/esri/core/workers/chunks/31442f25d550ead58fc4.js +0 -1
  351. package/assets/esri/core/workers/chunks/32323b0e0fcecd8f640e.js +0 -1
  352. package/assets/esri/core/workers/chunks/330da3828eefd8d72d3f.js +0 -1
  353. package/assets/esri/core/workers/chunks/33e0130e6a40fc768978.js +0 -1
  354. package/assets/esri/core/workers/chunks/343ba5ea459e96ba79c6.js +0 -1
  355. package/assets/esri/core/workers/chunks/388e71e8f2ec41bfa5a9.js +0 -1
  356. package/assets/esri/core/workers/chunks/3a5c1c501808352857bd.js +0 -1
  357. package/assets/esri/core/workers/chunks/3aacaa1be5efeac23a37.js +0 -1
  358. package/assets/esri/core/workers/chunks/3b765a8cac9e92f644f2.js +0 -1
  359. package/assets/esri/core/workers/chunks/3bf6d55511cd7722eb93.js +0 -1
  360. package/assets/esri/core/workers/chunks/3e012cd3ca4451f89f59.js +0 -1
  361. package/assets/esri/core/workers/chunks/3fbb6ff940156a981983.js +0 -1
  362. package/assets/esri/core/workers/chunks/40910c69307e2d2d3f28.js +0 -1
  363. package/assets/esri/core/workers/chunks/40c4e14e7bb505ef10a3.js +0 -1
  364. package/assets/esri/core/workers/chunks/4104fa1ede36bcee9be5.js +0 -1
  365. package/assets/esri/core/workers/chunks/423a9882abd4a6dadf86.js +0 -1
  366. package/assets/esri/core/workers/chunks/428561df7ba6f02e2d80.js +0 -1
  367. package/assets/esri/core/workers/chunks/45323491f9005629c602.js +0 -1
  368. package/assets/esri/core/workers/chunks/46d0a25d33b5b328cfce.js +0 -1
  369. package/assets/esri/core/workers/chunks/47dd2bfecc5c4b5f10f0.js +0 -1
  370. package/assets/esri/core/workers/chunks/4845df00f6ebcce6ea3e.js +0 -1
  371. package/assets/esri/core/workers/chunks/48fcc10768d93e95a04e.js +0 -1
  372. package/assets/esri/core/workers/chunks/4a9dd9f8aa98882218f3.js +0 -1
  373. package/assets/esri/core/workers/chunks/4bfffdfbe6d467f143a4.js +0 -1
  374. package/assets/esri/core/workers/chunks/518046d2b95a7590a092.js +0 -1
  375. package/assets/esri/core/workers/chunks/54dad475dc806a38c287.js +0 -1
  376. package/assets/esri/core/workers/chunks/552945a73a95cd2a9f54.js +0 -1
  377. package/assets/esri/core/workers/chunks/5553279998ae07b60f5f.js +0 -1
  378. package/assets/esri/core/workers/chunks/58155f24f8ed6aca7a21.js +0 -1
  379. package/assets/esri/core/workers/chunks/5838f46d341d2fde42ee.js +0 -1
  380. package/assets/esri/core/workers/chunks/592a599f514de373dead.js +0 -1
  381. package/assets/esri/core/workers/chunks/5aba23584e0b230c75f5.js +0 -1
  382. package/assets/esri/core/workers/chunks/5f9bacee6fbf9ac1bca0.js +0 -1
  383. package/assets/esri/core/workers/chunks/62206d5d497b95fc4caf.js +0 -1
  384. package/assets/esri/core/workers/chunks/624b1bb269744142b835.js +0 -1
  385. package/assets/esri/core/workers/chunks/62fc3c367f736c73b0d7.js +0 -1
  386. package/assets/esri/core/workers/chunks/643c33a98f2d30a92001.js +0 -1
  387. package/assets/esri/core/workers/chunks/64daa2a714e59d22bbd4.js +0 -1
  388. package/assets/esri/core/workers/chunks/65621650a53f69f7b05a.js +0 -1
  389. package/assets/esri/core/workers/chunks/6a5356ebed70e0f8f979.js +0 -1
  390. package/assets/esri/core/workers/chunks/6c9933f948efd7923aa1.js +0 -1
  391. package/assets/esri/core/workers/chunks/6cab67fc7044ee9b863b.js +0 -1
  392. package/assets/esri/core/workers/chunks/7014e73dfd3c8baa704c.js +0 -1
  393. package/assets/esri/core/workers/chunks/75839240022b280929f7.js +0 -1
  394. package/assets/esri/core/workers/chunks/76589434d573111a8fb4.js +0 -1
  395. package/assets/esri/core/workers/chunks/767ea5b455b3823afd09.js +0 -1
  396. package/assets/esri/core/workers/chunks/77859a61d059738d057f.js +0 -1
  397. package/assets/esri/core/workers/chunks/78aa5bc6af2758da20d0.js +0 -1
  398. package/assets/esri/core/workers/chunks/7b564226def99fcf79d8.js +0 -1
  399. package/assets/esri/core/workers/chunks/7bbffe07e62897928773.js +0 -1
  400. package/assets/esri/core/workers/chunks/7cadfd7444a2a05cf2fb.js +0 -1
  401. package/assets/esri/core/workers/chunks/7df94cb985db41815fad.js +0 -2
  402. package/assets/esri/core/workers/chunks/823789261ca3338f0fa8.js +0 -1
  403. package/assets/esri/core/workers/chunks/8419934bec7723b0feef.js +0 -1
  404. package/assets/esri/core/workers/chunks/84b0b6e099d949e0fea5.js +0 -1
  405. package/assets/esri/core/workers/chunks/9133c1b7cc1c9da27deb.js +0 -1
  406. package/assets/esri/core/workers/chunks/92ab5886aa2d8b9b179f.js +0 -1
  407. package/assets/esri/core/workers/chunks/9a6e62ef984e9c5babc4.js +0 -1
  408. package/assets/esri/core/workers/chunks/9b676606bf839b7aa433.js +0 -1
  409. package/assets/esri/core/workers/chunks/9d27cc631bab8aa7479e.js +0 -1
  410. package/assets/esri/core/workers/chunks/9dcfaca1f4fa8c8026ac.js +0 -1
  411. package/assets/esri/core/workers/chunks/9f23a61c60949459c14f.js +0 -30
  412. package/assets/esri/core/workers/chunks/a03c4c0bf138734a002e.js +0 -1
  413. package/assets/esri/core/workers/chunks/a0fa60a24e58f7a47e41.js +0 -1
  414. package/assets/esri/core/workers/chunks/a261f4c22224511fdfff.js +0 -1
  415. package/assets/esri/core/workers/chunks/a2ac139d0975085279a6.js +0 -1
  416. package/assets/esri/core/workers/chunks/a806ac351ef5da04c250.js +0 -1
  417. package/assets/esri/core/workers/chunks/ab94c9f62462d7a98f6a.js +0 -1
  418. package/assets/esri/core/workers/chunks/abdb05754c50776c3edd.js +0 -1
  419. package/assets/esri/core/workers/chunks/ad488985824fbb830ed6.js +0 -1
  420. package/assets/esri/core/workers/chunks/b0ac4b0b7aec70cfe6eb.js +0 -1
  421. package/assets/esri/core/workers/chunks/bfbd1ca28ed2f263e58f.js +0 -1
  422. package/assets/esri/core/workers/chunks/c1b6de0d728d25d7905a.js +0 -1
  423. package/assets/esri/core/workers/chunks/c44be4aaba829e6d149d.js +0 -1
  424. package/assets/esri/core/workers/chunks/ca6907e14b1dde4d5c07.js +0 -1
  425. package/assets/esri/core/workers/chunks/cbbd94c53e75efc99876.js +0 -1
  426. package/assets/esri/core/workers/chunks/ce0e627a5e1cb78adce8.js +0 -1
  427. package/assets/esri/core/workers/chunks/cf7acf5acb6d322fd996.js +0 -1
  428. package/assets/esri/core/workers/chunks/d21480b078ec9680d4c4.js +0 -1
  429. package/assets/esri/core/workers/chunks/d81291dac1932350eccd.js +0 -1
  430. package/assets/esri/core/workers/chunks/da3c54e27a808f4fcc18.js +0 -1
  431. package/assets/esri/core/workers/chunks/dc6d50e1097a920ff820.js +0 -1
  432. package/assets/esri/core/workers/chunks/dd58286dde3b20356f84.js +0 -1
  433. package/assets/esri/core/workers/chunks/dfeddb7b17fa9eaae64c.js +0 -1
  434. package/assets/esri/core/workers/chunks/e4e0c5a45cf32973d5d5.js +0 -1
  435. package/assets/esri/core/workers/chunks/e638391801ad83fe4a68.js +0 -1
  436. package/assets/esri/core/workers/chunks/e755477dc78e9d6038d4.js +0 -1
  437. package/assets/esri/core/workers/chunks/e7712467db46e1385cf4.js +0 -1
  438. package/assets/esri/core/workers/chunks/ed2cb60e4f17f46fb78d.js +0 -1
  439. package/assets/esri/core/workers/chunks/edb55329305becdb204f.js +0 -1
  440. package/assets/esri/core/workers/chunks/f02fe24177e56a7e42b2.js +0 -1
  441. package/assets/esri/core/workers/chunks/f1fb2f12371f4c562079.js +0 -1
  442. package/assets/esri/core/workers/chunks/f3dfe1bd1146a6927407.js +0 -1
  443. package/assets/esri/core/workers/chunks/ff48334528d2554db4fe.js +0 -1
  444. package/views/3d/analysis/LineOfSight/LineOfSightAuthoringStore.js +0 -2
  445. /package/assets/esri/core/workers/chunks/{7df94cb985db41815fad.js.LICENSE.txt → 68f9b2da1fd08785320f.js.LICENSE.txt} +0 -0
  446. /package/assets/esri/core/workers/chunks/{875cce0be4f6c89f80f3.js.LICENSE.txt → 9629601de5e44ffe90ea.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../../core/has.js";import{pt2px as t}from"../../../../core/screenUtils.js";import{r as e}from"../../../../chunks/rbush.js";import s from"../../../../geometry/Point.js";import{create as i,intersects as o,copy as r}from"../../../../geometry/support/aaBoundingRect.js";import{normalizeMapX as n}from"../../../../geometry/support/normalizeUtils.js";import{getInfo as m}from"../../../../geometry/support/spatialReferenceUtils.js";import{HittestDrawHelper as a}from"../../../../symbols/cim/CIMSymbolDrawHelper.js";import{CIMSymbolInflatedSizeHelper as l}from"../../../../symbols/cim/CIMSymbolHelper.js";import{hittestToleranceSmallSymbol as h,hittestToleranceMobile as c,hittestToleranceDesktop as u}from"../../engine/webgl/definitions.js";import{GraphicStoreItem as p}from"./GraphicStoreItem.js";import{pixelBuffer as d}from"./graphicsUtils.js";import{GraphicUpdateMessage as f}from"./GraphicUpdateMessage.js";import{getMapPointsFromScreen as _,createHittestQuery as y}from"../../support/hitTestUtils.js";const b=1e-5;function I(t,e){return e.zOrder-t.zOrder}class x{constructor(t,e,s,i,o){this._items=new Map,this._boundsDirty=!1,this._outSpatialReference=t,this._cimResourceManager=e,this._hittestDrawHelper=new a(e),this._tileInfoView=s,this._store=o;const r=s.getClosestInfoForScale(i);this._resolution=this._tileInfoView.getTileResolution(r.level)}destroy(){this._hittestDrawHelper.destroy()}items(){return this._items.values()}getItem(t){return this._items.get(t)}async update(t,e,s){const i=[],o=[],r=[],n=new Set,m=[];let a=0;const l=new Set;for(const h of t.items){const t=h.uid;if(l.has(t))continue;l.add(t),a++;const r=this._items.get(t),c=e(h);if(n.add(t),r){const t=r.update(h,c,a),e=r.updateDensificationResolution(this._resolution);t&&m.push(this._updateItem(r,s)),(t||e)&&o.push(r);continue}const u=this._store.createDisplayIdForObjectId(t),d=p.fromGraphic(h,c,a,u);d.updateDensificationResolution(this._resolution),m.push(this._updateItem(d,s)),this._items.set(d.objectId,d),i.push(d)}for(const[h,c]of this._items.entries())n.has(h)||(this._store.releaseDisplayIdForObjectId(h),this._items.delete(h),r.push(c));return await Promise.all(m),this._index=null,new f(i,o,r)}updateLevel(t){if(this._resolution===t)return!1;this._index=null,this._boundsDirty=!0,this._resolution=t;for(const e of this.items())if(e.hasCurvedGeoemtry)return!0;return!1}hitTest(t,e,r,m){const a=i();let l=i();const p=y(e);if(!p)return console.warn("Unexpected hittest input:",e),[];let f=0,b=_(t,p.input);if(b=b.map(t=>new s(n(t.x,this._tileInfoView.spatialReference),t.y,this._tileInfoView.spatialReference)),"rect"===p.hittestType){const t=Math.min(...b.map(t=>t.x)),e=Math.min(...b.map(t=>t.y)),s=Math.max(...b.map(t=>t.x)),i=Math.max(...b.map(t=>t.y));a[0]=t,a[1]=e,a[2]=s,a[3]=i,l=a}else if("point"===p.hittestType){const t=has("esri-mobile"),e=t?c:u,s=e+(t?0:h),o=b[0].x,n=b[0].y,m=r*window.devicePixelRatio*s;a[0]=o-m,a[1]=n-m,a[2]=o+m,a[3]=n+m;const p=r*window.devicePixelRatio*e,_=i();_[0]=o-p,_[1]=n-p,_[2]=o+p,_[3]=n+p;const y=.5*r*(s+d);l[0]=o-y,l[1]=n-y,l[2]=o+y,l[3]=n+y,f=_[2]-_[0]}const x=this._searchIndex(l[0],l[1],l[2],l[3]);if(!x||0===x.length)return[];const g=[],w=i(),j=i();for(const s of x){if(!s.visible)continue;const{geometryBounds:t,symbolResource:e}=s;this._getSymbolBounds(w,e,t,j,m),j[3]=j[2]=j[1]=j[0]=0,o(w,a)&&g.push(s)}if(0===g.length)return[];const R=this._hittestDrawHelper,S=[];for(const s of g){const{projectedGeometry:t,symbolResource:e}=s;if(!e)continue;const{textInfo:i,symbolInfo:o}=e,n=o.cimSymbol;R.hitTest(b,n.symbol,t,i,m,r,f,p.hittestType)&&S.push(s)}return S.sort(I),S.map(t=>t.objectId)}queryItems(t){return 0===this._items.size?[]:this._searchForItems(t)}clear(){this._items.clear(),this._index=null}async _updateItem(t,e){await t.projectAndNormalize(this._outSpatialReference),await e(t);const{size:s}=t;s[0]=s[1]=s[2]=s[3]=0,this._getSymbolBounds(t.symbolBounds,t.symbolResource,t.geometryBounds,t.size,0)}_searchIndex(t,s,i,o){return this._boundsDirty&&(this._items.forEach(t=>this._getSymbolBounds(t.symbolBounds,t.symbolResource,t.geometryBounds,t.size,0)),this._boundsDirty=!1),this._index||(this._index=e(9,t=>({minX:t.symbolBounds[0],minY:t.symbolBounds[1],maxX:t.symbolBounds[2],maxY:t.symbolBounds[3]})),this._index.load(Array.from(this._items.values()))),this._index.search({minX:t,minY:s,maxX:i,maxY:o})}_searchForItems(t){const e=this._tileInfoView.spatialReference,s=t.bounds,o=m(e);if(o&&e.isWrappable){const[e,r]=o.valid,n=Math.abs(s[2]-r)<b,m=Math.abs(s[0]-e)<b;if((!n||!m)&&(n||m)){const o=t.resolution;let m;m=i(n?[e,s[1],e+o*d,s[3]]:[r-o*d,s[1],r,s[3]]);const a=this._searchIndex(s[0],s[1],s[2],s[3]),l=this._searchIndex(m[0],m[1],m[2],m[3]);return[...new Set([...a,...l])]}}return this._searchIndex(s[0],s[1],s[2],s[3])}_getSymbolBounds(e,s,o,n,m){if(!s||!s.symbolInfo.linearCIM)return null;if(e||(e=i()),r(e,o),!n||0===n[0]&&0===n[1]&&0===n[2]&&0===n[3]){const{textInfo:e,symbolInfo:i}=s,o=i.cimSymbol;n||(n=[0,0,0,0]);const r=l.getSymbolInflateSize(n,o.symbol,this._cimResourceManager,m,e);n[0]=t(r[0]),n[1]=t(r[1]),n[2]=t(r[2]),n[3]=t(r[3])}const a=this._resolution,h=l.safeSize(n);return e[0]-=h*a,e[1]-=h*a,e[2]+=h*a,e[3]+=h*a,e}}export{x as default};
2
+ import has from"../../../../core/has.js";import{pt2px as t}from"../../../../core/screenUtils.js";import{r as e}from"../../../../chunks/rbush.js";import s from"../../../../geometry/Point.js";import{create as i,intersects as o,copy as n}from"../../../../geometry/support/aaBoundingRect.js";import{normalizeMapX as r}from"../../../../geometry/support/normalizeUtils.js";import{getInfo as m}from"../../../../geometry/support/spatialReferenceUtils.js";import{HittestDrawHelper as a}from"../../../../symbols/cim/CIMSymbolDrawHelper.js";import{CIMSymbolInflatedSizeHelper as l}from"../../../../symbols/cim/CIMSymbolHelper.js";import{hittestToleranceSmallSymbol as h,hittestToleranceMobile as c,hittestToleranceDesktop as u}from"../../engine/webgl/definitions.js";import{GraphicStoreItem as p}from"./GraphicStoreItem.js";import{pixelBuffer as d}from"./graphicsUtils.js";import{GraphicUpdateMessage as f}from"./GraphicUpdateMessage.js";import{getMapPointsFromScreen as _,createHittestQuery as y}from"../../support/hitTestUtils.js";const b=1e-5;function I(t,e){return e.zOrder-t.zOrder}class g{constructor(t,e,s,i,o){this._items=new Map,this._boundsDirty=!1,this._outSpatialReference=t,this._cimResourceManager=e,this._hittestDrawHelper=new a(e),this._tileInfoView=s,this._store=o;const n=s.getClosestInfoForScale(i);this._resolution=this._tileInfoView.getTileResolution(n.level)}destroy(){this._hittestDrawHelper.destroy()}items(){return this._items.values()}getItem(t){return this._items.get(t)}async update(t,e,s){const i=[],o=[],n=[],r=new Set,m=[];let a=0;const l=new Set;for(const h of t.items){const t=h.uid;if(l.has(t))continue;l.add(t),a++;const n=this._items.get(t),c=e(h);if(r.add(t),n){const t=n.update(h,c,a),e=n.updateDensificationResolution(this._resolution);t&&m.push(this._updateItem(n,s)),(t||e)&&o.push(n);continue}const u=this._store.createDisplayIdForObjectId(t),d=p.fromGraphic(h,c,a,u);d.updateDensificationResolution(this._resolution),m.push(this._updateItem(d,s)),this._items.set(d.objectId,d),i.push(d)}for(const[h,c]of this._items.entries())r.has(h)||(this._store.releaseDisplayIdForObjectId(h),this._items.delete(h),n.push(c));return await Promise.all(m),this._index=null,new f(i,o,n)}updateLevel(t){if(this._resolution===t)return!1;this._index=null,this._boundsDirty=!0,this._resolution=t;for(const e of this.items())if(e.hasCurvedGeoemtry)return!0;return!1}hitTest(t,e,n,m){const a=i();let l=i();const p=y(e);if(!p)return console.warn("Unexpected hittest input:",e),[];let f=0,b=_(t,p.input);if(b=b.map(t=>new s(r(t.x,this._tileInfoView.spatialReference),t.y,this._tileInfoView.spatialReference)),"rect"===p.hittestType){const t=Math.min(...b.map(t=>t.x)),e=Math.min(...b.map(t=>t.y)),s=Math.max(...b.map(t=>t.x)),i=Math.max(...b.map(t=>t.y));a[0]=t,a[1]=e,a[2]=s,a[3]=i,l=a}else if("point"===p.hittestType){const t=has("esri-mobile"),e=t?c:u,s=e+(t?0:h),o=b[0].x,r=b[0].y,m=n*window.devicePixelRatio*s;a[0]=o-m,a[1]=r-m,a[2]=o+m,a[3]=r+m;const p=n*window.devicePixelRatio*e,_=i();_[0]=o-p,_[1]=r-p,_[2]=o+p,_[3]=r+p;const y=.5*n*(s+d);l[0]=o-y,l[1]=r-y,l[2]=o+y,l[3]=r+y,f=_[2]-_[0]}const g=this._searchIndex(l[0],l[1],l[2],l[3]);if(!g||0===g.length)return[];const x=[],w=i(),j=i();for(const s of g){if(!s.visible)continue;const{geometryBounds:t,symbolResource:e}=s;this._getSymbolBounds(w,e,t,j,m),j[3]=j[2]=j[1]=j[0]=0,o(w,a)&&x.push(s)}if(0===x.length)return[];const R=this._hittestDrawHelper,S=[];for(const s of x){const{projectedGeometry:t,symbolResource:e}=s;if(!e)continue;const{textInfo:i,symbolInfo:o}=e,r=o.cimSymbol,a=o.linearCIM.some(t=>"alignment"in t&&0===t.alignment),l={hittestType:p.hittestType,textInfo:i,mapRotation:m,resolution:n,searchDist:f,isScreenAligned:a};R.hitTest(b,r.symbol,t,l)&&S.push(s)}return S.sort(I),S.map(t=>t.objectId)}queryItems(t){return 0===this._items.size?[]:this._searchForItems(t)}clear(){this._items.clear(),this._index=null}async _updateItem(t,e){await t.projectAndNormalize(this._outSpatialReference),await e(t);const{size:s}=t;s[0]=s[1]=s[2]=s[3]=0,this._getSymbolBounds(t.symbolBounds,t.symbolResource,t.geometryBounds,t.size,0)}_searchIndex(t,s,i,o){return this._boundsDirty&&(this._items.forEach(t=>this._getSymbolBounds(t.symbolBounds,t.symbolResource,t.geometryBounds,t.size,0)),this._boundsDirty=!1),this._index||(this._index=e(9,t=>({minX:t.symbolBounds[0],minY:t.symbolBounds[1],maxX:t.symbolBounds[2],maxY:t.symbolBounds[3]})),this._index.load(Array.from(this._items.values()))),this._index.search({minX:t,minY:s,maxX:i,maxY:o})}_searchForItems(t){const e=this._tileInfoView.spatialReference,s=t.bounds,o=m(e);if(o&&e.isWrappable){const[e,n]=o.valid,r=Math.abs(s[2]-n)<b,m=Math.abs(s[0]-e)<b;if((!r||!m)&&(r||m)){const o=t.resolution;let m;m=i(r?[e,s[1],e+o*d,s[3]]:[n-o*d,s[1],n,s[3]]);const a=this._searchIndex(s[0],s[1],s[2],s[3]),l=this._searchIndex(m[0],m[1],m[2],m[3]);return[...new Set([...a,...l])]}}return this._searchIndex(s[0],s[1],s[2],s[3])}_getSymbolBounds(e,s,o,r,m){if(!s||!s.symbolInfo.linearCIM)return null;if(e||(e=i()),n(e,o),!r||0===r[0]&&0===r[1]&&0===r[2]&&0===r[3]){const{textInfo:e,symbolInfo:i}=s,o=i.cimSymbol;r||(r=[0,0,0,0]);const n=l.getSymbolInflateSize(r,o.symbol,this._cimResourceManager,m,e);r[0]=t(n[0]),r[1]=t(n[1]),r[2]=t(n[2]),r[3]=t(n[3])}const a=this._resolution,h=l.safeSize(r);return e[0]-=h*a,e[1]-=h*a,e[2]+=h*a,e[3]+=h*a,e}}export{g as default};
@@ -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{isIterable as r}from"../../../core/iteratorUtils.js";import{isScreenRect as i,createScreenPoint as n,isScreenPoint as s}from"../../../core/screenUtils.js";import{computeClippedScreenRect as a,clipContainsPoint as l,clipIntersectsScreenRect as o}from"./clippingUtils.js";import{isSupportedScreenPointEvent as c,createScreenPointFromSupportedEvent as p}from"../../support/screenUtils.js";function u(e){if(i(e)){return{hittestType:"rect",input:e}}return{hittestType:"point",input:e}}async function f(e,r,n){const s=!c(r)&&i(r),a=s?r:c(r)?p(e,r):r;if(!e.ready||isNaN(a.x)||isNaN(a.y))return{screenPoint:a,results:[]};let l=new Set;const o=new Set;let u=!1,f=null,M=null;n?.include?d(n.include,y(e,e=>{l.add(e),g(e,e=>o.add(e))},(e,t)=>{o.add(e),l.add(t)},e=>{f||(f=new Set),f.add(e)},e=>l.add(e),()=>u=!0)):(u=!0,l=new Set(e.allLayerViews),l.forEach(e=>{g(e,e=>o.add(e))})),n?.exclude&&d(n.exclude,y(e,e=>{l.delete(e),g(e,e=>o.delete(e))},e=>o.delete(e),e=>{M||(M=new Set),M.add(e)}));const V=x(e,a)[0],j=m(e,a,V).filter(e=>l.has(e)),b=u?e.graphicsView.hitTest(e,a).map(e=>({type:"graphic",graphic:e,layer:null,mapPoint:s?null:V})):[],L=Array.from(j).flatMap(t=>{if(s){const r=w(e,t,a);return null==r?[]:r.map(e=>t.hitTest(V,e))}return[t.hitTest(V,a)]});let S=[...b,...await Promise.all(L)].filter(t).flat().filter(t);S=S.filter(e=>"graphic"!==e.type||"subtype-group"!==e.layer?.type||o.has(e.graphic.layer));const T=new Set;return S=S.filter(e=>{if("graphic"!==e.type||!e.graphic)return!0;const t=h(e.graphic);return!T.has(t)&&(T.add(t),!0)}),f&&(S=S.filter(e=>!("graphic"in e)||!e.graphic||f?.has(h(e.graphic)))),M&&(S=S.filter(e=>!("graphic"in e)||!e.graphic||!M?.has(h(e.graphic)))),{screenPoint:a,results:S}}function y(t,r,i,n,s,a){return l=>{if(l instanceof e){if(l.layer===t)a?.();else{const e=t.allLayerViews.find(e=>e.layer===l.layer);e&&s?.(e)}n(h(l))}else if("layer"in l&&"element"in l);else if("subtype-sublayer"===l.type){const e=t.allLayerViews.find(e=>e.layer===l.parent);e&&i(l,e)}else{const e=t.allLayerViews.find(e=>e.layer===l);e&&r(e)}}}function d(e,t){if(e)if(r(e))for(const i of e)if(r(i))for(const e of i)t(e);else t(i);else t(e)}function h(e){const t=e.getObjectId();return t?`${e.layer?.uid??e.sourceLayer?.uid??"MapView"}/${t}`:`"MapView/${e.uid}`}function g(e,t){const r=e.layer;"subtype-group"===r?.type&&r.sublayers.forEach(e=>{t(e)})}function m(e,t,r){const i=s(t)?i=>l(e,i,t,r):r=>o(e,r,t);return e.allLayerViews.filter(e=>!e.suspended&&(!e.clips.length||e.clips.some(i))).reverse()}function w(e,t,r){if(!t.clips.length)return[r];const i=[];for(const n of t.clips){if("rect"!==n.type){i.push(r);continue}const t=a(e,n,r);t&&i.push(t)}return i}function x(e,t){if(i(t)){const r=t;return[e.toMap(n(r.x,r.y)),e.toMap(n(r.x,r.y+r.height)),e.toMap(n(r.x+r.width,r.y+r.height)),e.toMap(n(r.x+r.width,r.y))]}return[e.toMap(t)]}export{u as createHittestQuery,m as getHitTestLayerViews,x as getMapPointsFromScreen,f as hitTest};
2
+ import e from"../../../Graphic.js";import{isSome as t}from"../../../core/arrayUtils.js";import{isIterable as r}from"../../../core/iteratorUtils.js";import{isScreenRect as i,createScreenPoint as n,isScreenPoint as s}from"../../../core/screenUtils.js";import{computeClippedScreenRect as a,clipContainsPoint as l,clipIntersectsScreenRect as o}from"./clippingUtils.js";import{isSupportedScreenPointEvent as c,createScreenPointFromSupportedEvent as p}from"../../support/screenUtils.js";function u(e){if(i(e)){return{hittestType:"rect",input:e}}return{hittestType:"point",input:e}}async function f(e,r,n){const s=!c(r)&&i(r),a=s?r:c(r)?p(e,r):r;if(!e.ready||isNaN(a.x)||isNaN(a.y))return{screenPoint:null,results:[]};let l=new Set;const o=new Set;let u=!1,f=null,M=null;n?.include?d(n.include,y(e,e=>{l.add(e),g(e,e=>o.add(e))},(e,t)=>{o.add(e),l.add(t)},e=>{f||(f=new Set),f.add(e)},e=>l.add(e),()=>u=!0)):(u=!0,l=new Set(e.allLayerViews),l.forEach(e=>{g(e,e=>o.add(e))})),n?.exclude&&d(n.exclude,y(e,e=>{l.delete(e),g(e,e=>o.delete(e))},e=>o.delete(e),e=>{M||(M=new Set),M.add(e)}));const V=x(e,a)[0],j=m(e,a,V).filter(e=>l.has(e)),b=u?e.graphicsView.hitTest(e,a).map(e=>({type:"graphic",graphic:e,layer:null,mapPoint:s?null:V})):[],L=Array.from(j).flatMap(t=>{if(s){const r=w(e,t,a);return null==r?[]:r.map(e=>t.hitTest(V,e))}return[t.hitTest(V,a)]});let S=[...b,...await Promise.all(L)].filter(t).flat().filter(t);S=S.filter(e=>"graphic"!==e.type||"subtype-group"!==e.layer?.type||o.has(e.graphic.layer));const T=new Set;return S=S.filter(e=>{if("graphic"!==e.type||!e.graphic)return!0;const t=h(e.graphic);return!T.has(t)&&(T.add(t),!0)}),f&&(S=S.filter(e=>!("graphic"in e)||!e.graphic||f?.has(h(e.graphic)))),M&&(S=S.filter(e=>!("graphic"in e)||!e.graphic||!M?.has(h(e.graphic)))),{screenPoint:s?null:a,results:S}}function y(t,r,i,n,s,a){return l=>{if(l instanceof e){if(l.layer===t)a?.();else{const e=t.allLayerViews.find(e=>e.layer===l.layer);e&&s?.(e)}n(h(l))}else if("layer"in l&&"element"in l);else if("subtype-sublayer"===l.type){const e=t.allLayerViews.find(e=>e.layer===l.parent);e&&i(l,e)}else{const e=t.allLayerViews.find(e=>e.layer===l);e&&r(e)}}}function d(e,t){if(e)if(r(e))for(const i of e)if(r(i))for(const e of i)t(e);else t(i);else t(e)}function h(e){const t=e.getObjectId();return t?`${e.layer?.uid??e.sourceLayer?.uid??"MapView"}/${t}`:`"MapView/${e.uid}`}function g(e,t){const r=e.layer;"subtype-group"===r?.type&&r.sublayers.forEach(e=>{t(e)})}function m(e,t,r){const i=s(t)?i=>l(e,i,t,r):r=>o(e,r,t);return e.allLayerViews.filter(e=>!e.suspended&&(!e.clips.length||e.clips.some(i))).reverse()}function w(e,t,r){if(!t.clips.length)return[r];const i=[];for(const n of t.clips){if("rect"!==n.type){i.push(r);continue}const t=a(e,n,r);t&&i.push(t)}return i}function x(e,t){if(i(t)){const r=t;return[e.toMap(n(r.x,r.y)),e.toMap(n(r.x,r.y+r.height)),e.toMap(n(r.x+r.width,r.y+r.height)),e.toMap(n(r.x+r.width,r.y))]}return[e.toMap(t)]}export{u as createHittestQuery,m as getHitTestLayerViews,x as getMapPointsFromScreen,f as hitTest};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{__decorate as t}from"tslib";import{equals as e}from"../../../../core/arrayUtils.js";import{EventedAccessor as s}from"../../../../core/Evented.js";import{destroyMaybe as r,removeMaybe as i}from"../../../../core/maybe.js";import{watch as a,initial as n,syncAndInitial as o}from"../../../../core/reactiveUtils.js";import{schedule as l}from"../../../../core/scheduling.js";import{property as u,subclass as h}from"../../../../core/accessorSupport/decorators.js";import p from"../../../../geometry/Multipoint.js";import{absoluteHeightElevationInfo as g,getConvertedElevation as c}from"../../../../support/elevationInfoUtils.js";import{restoreLineOfSightObserverState as d,restoreLineOfSightTargetState as y,snapshotLineOfSightTargetState as _,snapshotLineOfSightObserverState as m,updateLineOfSightItemFromAuthoredPoint as v}from"./LineOfSightAuthoringUtils.js";import{LineOfSightObserverManipulator as f,LineOfSightTargetManipulator as M,LineOfSightTargetManipulatorState as b}from"./LineOfSightManipulators.js";import{EditGeometryOperations as x}from"../../../interactive/editGeometry/EditGeometryOperations.js";const I=Symbol("line-of-sight-aggregate-operations");let w=class extends s{constructor(){super(...arguments),this._operations=null,this._externalGeometryStagingArea=new C(t=>this._syncOperationsFromAnalysisGeometry(t),()=>null==this._operations),this._observerManipulator=null,this._targetByPart=new Map,this._targetManipulators=new Map,this._dragIntersectionContext=null}initialize(){this.addHandles([a(()=>({observer:A(this.analysis.observer),targets:this.analysis.targets.toArray().map(t=>A(t))}),()=>this._analysisItemsChanged(),n),a(()=>this.analysisViewData.computations.toArray().map(t=>({isTargetVisible:t.computationResult.isTargetVisible,isValid:t.computationResult.isValid,target:t.target})),()=>this._updateTargetManipulatorStates(),o)])}destroy(){this._externalGeometryStagingArea.destroy(),this._replaceOperations(null),this._observerManipulator=null,this._targetManipulators.clear()}get operations(){return this._operations}get elevationInfo(){return g}get visible(){return this.analysisViewData.visible&&null!=this.origin}get isDraped(){return!1}get origin(){const t=this.analysis.observer,e=this.analysis.targets.at(0);return S(this.view,t?.position,t?.elevationInfo)??S(this.view,e?.position,e?.elevationInfo)}get updating(){return!1}createManipulator(t){return null}_createObserverReshapeManipulator(t){this._clearManipulatorDragTracking(this._observerManipulator);const e=new f(this.view,{deleting:!1,intersection:null,type:"observer"});return e.selected=t.selected,this._observerManipulator=e,this._trackManipulatorDrag(e,this.analysis.observer),e}_createTargetReshapeManipulator(t){const{part:e}=t.vertex,s=this._targetByPart.get(e);if(null==s)return t.defaultCreate();this._clearManipulatorDragTracking(this._targetManipulators.get(s));const r=new M(this.view,{deleting:!1,target:s,type:"target"});return r.selected=t.selected,this._targetManipulators.set(s,r),this._updateTargetManipulatorState(r,this._getTargetComputation(s)),this._trackManipulatorDrag(r,s),r}createReshapeManipulator(t){const{part:e}=t.vertex;return 0===e.index?this._createObserverReshapeManipulator(t):this._createTargetReshapeManipulator(t)}getReshapeMoveConfig(t){return 1===t.numSelected&&null!=this._targetByPart.get(t.vertex.part)?{xyAxisMode:"all"}:null}getTargetManipulator(t){const e=this._targetManipulators.get(t);return e?.view?e:null}getObserverManipulator(){const t=this._observerManipulator;return t?.view?t:null}toMap(t){return this.intersector.getScreenPointIntersection(t)?.mapPoint}createUndoRecord(){let t=this._snapshotState(),e=null;return{undo:()=>{e=this._snapshotState(),this._restoreSnapshot(t)},redo:()=>{null!=e&&(t=this._snapshotState(),this._restoreSnapshot(e))}}}_restoreSnapshot(t){const{observer:e}=this.analysis;null!=e&&null!=t.observer&&d(t.observer,e),this.analysis.targets.forEach((e,s)=>{const r=t.targets[s];null!=r&&y(r,e)}),this._queueAnalysisGeometryResync(),this.emit("committed")}_snapshotState(){return{observer:m(this.analysis.observer),targets:this.analysis.targets.toArray().map(t=>_(t))}}_replaceOperations(t){this.removeHandles(I),this._operations=r(this._operations),this._operations=t,this._targetByPart=null==t?new Map:T(t.data.parts,this.analysis.targets.toArray(),this._targetByPart),null==t&&(this._observerManipulator=null),null!=t&&this.addHandles(t.data.on("change",()=>this._operationsGeometryChanged()),I)}_analysisItemsChanged(){null==this.analysis.observer&&(this._clearManipulatorDragTracking(this._observerManipulator),this._observerManipulator=null),this._pruneTargetManipulators(),this._updateTargetManipulatorStates(),this._queueAnalysisGeometryResync()}_queueAnalysisGeometryResync(){this._externalGeometryStagingArea.stage(G(this.view,this.analysis))}_updateTargetManipulatorStates(){this._pruneTargetManipulators();for(const t of this.analysis.targets){const e=this._targetManipulators.get(t);null!=e&&this._updateTargetManipulatorState(e,this._getTargetComputation(t))}}_pruneTargetManipulators(){const t=new Set(this.analysis.targets.toArray());for(const[e,s]of this._targetManipulators)t.has(e)&&null!=s.view||(this._clearManipulatorDragTracking(s),this._targetManipulators.delete(e))}_getTargetComputation(t){return this.analysisViewData.computations.find(e=>e.target===t)}_updateTargetManipulatorState(t,e){null!=e&&e.computationResult.isValid?t.state=e.computationResult.isTargetVisible?b.visible:b.occluded:t.state=b.undefined}_syncOperationsFromAnalysisGeometry(t){if(null==t)return void(null!=this._operations&&(this._replaceOperations(null),this.emit("modified-externally")));const e=this._operations;if(null!=e&&e.data.geometry?.equals(t))this._syncTargetPartMapFromOperations(e);else{if(e?.trySetGeometry(t))return this._syncTargetPartMapFromOperations(e),this.emit("committed"),void this.emit("modified-externally");this._replaceOperations(x.fromGeometry(t,this.view.state.viewingMode)),this.emit("committed"),this.emit("modified-externally")}}_syncTargetPartMapFromOperations(t){this._targetByPart=T(t.data.parts,this.analysis.targets.toArray(),this._targetByPart)}_operationsGeometryChanged(){const t=this._operations,s=this.analysis.observer;if(this._externalGeometryStagingArea.inProgress||null==t||null==s)return;const{coordinateHelper:r,parts:i}=t.data,a=O(i,this._targetByPart);e(this.analysis.targets.toArray(),a)||this.analysis.targets.splice(0,this.analysis.targets.length,...a);const n=r.vectorToPoint(i[0]?.getFirstVertex()?.pos);null==n||P(this.view,s,n)||this._updateAnalysisItemFromAbsolutePoint(s,n);for(const e of i){if(0===e.index)continue;const t=this._targetByPart.get(e),s=r.vectorToPoint(e.getFirstVertex()?.pos);null!=t&&null!=s&&this.analysis.targets.includes(t)&&(P(this.view,t,s)||this._updateAnalysisItemFromAbsolutePoint(t,s))}null==this._dragIntersectionContext||this._dragIntersectionContext.dragging||(this._dragIntersectionContext=null),this.emit("committed")}_updateAnalysisItemFromAbsolutePoint(t,e){const s=this._dragIntersectionContext?.item===t?this._dragIntersectionContext.intersection:null;v(this.view,t,this.intersector,e,{sourceElevationInfo:g,preservedIntersection:s})}_trackManipulatorDrag(t,e){null!=e&&(this.removeHandles(t),this.addHandles(t.events.on("drag",t=>this._updateDragIntersectionContext(e,t)),t))}_clearManipulatorDragTracking(t){null!=t&&this.removeHandles(t)}_updateDragIntersectionContext(t,e){"cancel"!==e.action?this._dragIntersectionContext={dragging:"end"!==e.action,intersection:this.intersector.getScreenPointIntersection(e.screenPoint),item:t}:this._dragIntersectionContext=null}};function A(t){return t?[t,t.position,t.elevationInfo,t.feature]:null}function P(t,e,s){const r=S(t,e.position,e.elevationInfo);return r?.equals(s)??!1}function S(t,e,s){if(null==e)return null;const r=e.clone();return r.z=c(t,e,s??g,g),r}function T(t,e,s){const r=new Map;if(null!=s)for(const o of t){if(0===o.index||null!=o.getFirstVertex())continue;const t=s.get(o);null!=t&&r.set(o,t)}const i=new Set(r.values()),a=e.filter(t=>!i.has(t));let n=0;for(const o of t){if(0===o.index||null==o.getFirstVertex())continue;if(r.has(o))continue;const t=a[n++];if(null==t)break;r.set(o,t)}return r}function O(t,e){const s=[];for(const r of t){if(0===r.index||null==r.getFirstVertex())continue;const t=e.get(r);null!=t&&s.push(t)}return s}function G(t,e){const s=[S(t,e.observer?.position,e.observer?.elevationInfo),...e.targets.toArray().map(e=>S(t,e.position,e.elevationInfo))].filter(t=>null!=t);return 0===s.length?null:new p({hasZ:!0,points:s.map(t=>t.toArray()),spatialReference:s[0].spatialReference})}t([u({constructOnly:!0})],w.prototype,"analysisViewData",void 0),t([u({constructOnly:!0})],w.prototype,"analysis",void 0),t([u({constructOnly:!0})],w.prototype,"intersector",void 0),t([u({constructOnly:!0})],w.prototype,"view",void 0),t([u()],w.prototype,"_operations",void 0),t([u()],w.prototype,"operations",null),t([u()],w.prototype,"elevationInfo",null),t([u()],w.prototype,"visible",null),t([u()],w.prototype,"isDraped",null),t([u()],w.prototype,"origin",null),t([u()],w.prototype,"updating",null),w=t([h("esri.views.3d.analysis.LineOfSight.LineOfSightAggregateManipulatedObject3D")],w);class C{constructor(t,e){this._geometry=void 0,this._inProgressGeometry=void 0,this._scheduledHandle=null,this._apply=t,this._shouldApplyImmediately=e}destroy(){this._scheduledHandle=i(this._scheduledHandle),this._geometry=void 0,this._inProgressGeometry=void 0}get inProgress(){return null!=this._inProgressGeometry}stage(t){if(this._geometry=t,!this.inProgress&&this._shouldApplyImmediately())return this._scheduledHandle=i(this._scheduledHandle),void this._flush();this._scheduledHandle??=l(()=>{this._scheduledHandle=null,this._flush()})}_flush(){const t=this._geometry;if(void 0!==t){this._geometry=void 0,this._inProgressGeometry=t;try{this._apply(t)}finally{this._inProgressGeometry=void 0}}}}export{w as LineOfSightAggregateManipulatedObject3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{length as n,normalize as e,scaleAndAdd as o}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as t,create as r}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{absoluteHeightElevationInfo as l,getConvertedElevation as i,getGraphicEffectiveElevationInfo as u}from"../../../../support/elevationInfoUtils.js";import a from"../../../../symbols/support/ElevationInfo.js";function s(n){return n?.clone()??null}function c(n){return n?.clone()??null}function f(n){const e=s(n);return n&&e?{observer:n,snapshot:e}:null}function p(n){return{target:n,snapshot:c(n)??n.clone()}}function m(n,e,o,t=null){const r=o.clone();return r.z=i(e,o,t??l,l),n.getMapPointIntersection(r)}function d(n,e,o,t=o.mapPoint,r=null,s=l){if(null==t)return e.position=null,e.elevationInfo=null,void(e.feature=null);const c=t.clone();c.z=i(n,t,s??l,l);const f=!("relative-to-ground"===s?.mode||"on-the-ground"===s?.mode)&&!o.mapPoint?.equals(c);switch(o.context?.type){case"graphic":{const n=o.context.graphic,t=u(n);"on-the-ground"===t.mode&&(t.mode="relative-to-ground",t.offset=0),e.elevationInfo=new a(t),e.feature=n;break}case"gaussian-splat":return e.elevationInfo=r?.clone()??null,e.feature=null,f&&(e.elevationInfo=null),void(e.position=v(n,c,e.elevationInfo,o.normal));case"ground":e.elevationInfo=r?.clone()??new a({mode:"on-the-ground"}),e.feature=null;break;default:e.elevationInfo=r?.clone()??null,e.feature=null}f&&(e.elevationInfo=null);const p=c.clone();p.z=i(n,c,l,e.elevationInfo),e.position=p}function v(u,a,s,c){const f=a.clone(),p=t(a.x,a.y,a.z??0);if(!u.renderCoordsHelper.toRenderCoords(p,a.spatialReference,p)||0===n(c))return f.z=i(u,f,l,s),f;const m=4,d=u.state.camera.computeScreenPixelSizeAt(p)*m,v=e(r(),c);o(p,p,v,d);const g=u.renderCoordsHelper.fromRenderCoords(p,f);return null==g?(f.z=i(u,f,l,s),f):(g.z=i(u,g,l,s),g)}export{f as createLineOfSightObserverItem,p as createLineOfSightTargetItem,v as getGaussianSplatOffsetPosition,m as getLineOfSightMapPointIntersection,s as snapshotLineOfSightObserverState,c as snapshotLineOfSightTargetState,d as updateLineOfSightItemFromIntersection};
2
+ import e from"../../../../analysis/LineOfSightAnalysisObserver.js";import n from"../../../../analysis/LineOfSightAnalysisTarget.js";import{length as o,normalize as t,scaleAndAdd as l}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as r,create as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{absoluteHeightElevationInfo as i,getGraphicEffectiveElevationInfo as s,getConvertedElevation as a}from"../../../../support/elevationInfoUtils.js";import c from"../../../../symbols/support/ElevationInfo.js";function f(e){return e?.clone()??null}function p(e){return e?.clone()??null}function d(n,o=null){return m(n,o,()=>new e)}function v(e,o=null){return m(e,o,()=>new n)}function m(e,n,o){if(null==e)return null;const t=n??o();return t.position=e.position?.clone()??null,t.elevationInfo=e.elevationInfo?.clone()??null,t.feature=e.feature??null,t}function I(e,n,o=null){const t=n.clone();return t.z=a(e,n,o??i,i),t}function g(e,n,o,t=null){const l=I(n,o,t);try{return e.getMapPointIntersection(l)}catch{return null}}function h(e,n,o,{sourceElevationInfo:t=i,preservedIntersection:l=null,useSnappedAbsoluteHeight:r=!1,preferPreservedIntersection:u=!1}){const s=I(n,o,t);return null!=l&&u||null!=l&&!r||l?.mapPoint?.equals(s)?l:g(e,n,o,t)??l}function b(e,n,o,t,{defaultElevationInfo:l=null,sourceElevationInfo:r=i,preservedIntersection:u=null,useSnappedAbsoluteHeight:s=!1,preferPreservedIntersection:a=!1}={}){const c=h(o,e,t,{sourceElevationInfo:r,preservedIntersection:u,useSnappedAbsoluteHeight:s,preferPreservedIntersection:a});return null!=c&&(P(e,n,c,{snappedMapPoint:t,defaultElevationInfo:l,sourceElevationInfo:r,useSnappedAbsoluteHeight:s||!c.mapPoint?.equals(t)}),!0)}function P(e,n,o,{snappedMapPoint:t=o.mapPoint,defaultElevationInfo:l=null,sourceElevationInfo:r=i,useSnappedAbsoluteHeight:u=!1}={}){if(null==t)return n.position=null,n.elevationInfo=null,void(n.feature=null);const f=I(e,t,r),p=!("relative-to-ground"===r?.mode||"on-the-ground"===r?.mode)&&(u||"ground"!==o.context?.type&&!o.mapPoint?.equals(f));switch(o.context?.type){case"graphic":{const e=o.context.graphic,t=s(e);"on-the-ground"===t.mode&&(t.mode="relative-to-ground",t.offset=0),n.elevationInfo=new c(t),n.feature=e;break}case"gaussian-splat":return n.elevationInfo=l?.clone()??null,n.feature=null,p&&(n.elevationInfo=null),void(n.position=y(e,f,n.elevationInfo,o.normal));case"ground":n.elevationInfo=l?.clone()??new c({mode:"on-the-ground"}),n.feature=null;break;default:n.elevationInfo=l?.clone()??null,n.feature=null}p&&(n.elevationInfo=null);const d=f.clone();d.z=a(e,f,i,n.elevationInfo),n.position=d}function y(e,n,s,c){const f=n.clone(),p=r(n.x,n.y,n.z??0);if(!e.renderCoordsHelper.toRenderCoords(p,n.spatialReference,p)||0===o(c))return f.z=a(e,f,i,s),f;const d=4,v=e.state.camera.computeScreenPixelSizeAt(p)*d,m=t(u(),c);l(p,p,m,v);const I=e.renderCoordsHelper.fromRenderCoords(p,f);return null==I?(f.z=a(e,f,i,s),f):(I.z=a(e,I,i,s),I)}export{y as getGaussianSplatOffsetPosition,g as getLineOfSightMapPointIntersection,d as restoreLineOfSightObserverState,v as restoreLineOfSightTargetState,f as snapshotLineOfSightObserverState,p as snapshotLineOfSightTargetState,b as updateLineOfSightItemFromAuthoredPoint,P as updateLineOfSightItemFromIntersection};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import o from"../../../../Color.js";import{getContrast as n,multiplyOpacityToUnitRGBA as t}from"../../../../core/colorUtils.js";class e{constructor(){this.glowWidth=8,this.innerWidth=.75}}const r=new e;function s(o){const t=o.accentColor;return{glowColor:t,innerColor:n(t),globalAlpha:.75*t.a}}class i{constructor(){this.size=.5}}const c=new i;function l(o){return t(o.accentColor,.75)}class h{constructor(){this.size=.5,this.visibleColor=new o([3,252,111,.75]),this.occludedColor=new o([252,3,69,.75]),this.undefinedColor=new o([127,127,127,.75])}}const u=new h;class d{constructor(){this.innerWidth=2,this.outerWidth=8,this.visibleInnerColor=new o([3,252,111,1]),this.visibleOuterColor=new o([3,252,111,.15]),this.occludedInnerColor=new o([252,3,69,1]),this.occludedOuterColor=new o([252,3,69,.1]),this.undefinedInnerColor=new o([255,255,255,1]),this.undefinedOuterColor=new o([127,127,127,.2])}}const w=new d;export{s as getLaserLineColors,l as getObserverRGBA,r as laserLineConfiguration,w as lineOfSightConfiguration,c as observerConfiguration,u as targetConfiguration};
2
+ import o from"../../../../Color.js";import{multiplyOpacityToUnitRGBA as n,getContrast as t}from"../../../../core/colorUtils.js";class e{constructor(){this.glowWidth=8,this.innerWidth=.75}}const r=new e;function s(o){const n=o.accentColor;return{glowColor:n,innerColor:t(n),globalAlpha:.75*n.a}}class i{constructor(){this.size=.5}}const c=new i;function l(o){return n(o.accentColor,.75)}class h{constructor(){this.size=.5,this.visibleColor=new o([3,252,111,.75]),this.occludedColor=new o([252,3,69,.75]),this.undefinedColor=new o([127,127,127,.75])}}const u=new h;class d{constructor(){this.innerWidth=2,this.outerWidth=8,this.visibleInnerColor=new o([3,252,111,1]),this.visibleOuterColor=new o([3,252,111,.15]),this.occludedInnerColor=new o([252,3,69,1]),this.occludedOuterColor=new o([252,3,69,.1]),this.undefinedInnerColor=new o([255,255,255,1]),this.undefinedOuterColor=new o([127,127,127,.2])}}const w=new d;export{s as getLaserLineColors,l as getObserverRGBA,r as laserLineConfiguration,w as lineOfSightConfiguration,c as observerConfiguration,u as targetConfiguration};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{watch as e}from"../../../../core/reactiveUtils.js";import{targetConfiguration as t,getObserverRGBA as o,observerConfiguration as i}from"./LineOfSightConfiguration.js";import{Manipulator3D as r}from"../../interactive/Manipulator3D.js";import{createManipulatorMaterial as s}from"../../interactive/manipulatorUtils.js";import{RenderObject as n}from"../../interactive/RenderObject.js";import{disableDisplayOnGrab as a}from"../../interactive/editingTools/manipulatorUtils.js";import{createSphereGeometry as m}from"../../webgl-engine/lib/GeometryUtil.js";class l extends r{constructor(t,r){const l=s(o(t.effectiveTheme)),c=m(l,i.size,32,32),f=new n(c);super({view:t,renderObjects:[f],metadata:r,elevationInfo:{mode:"absolute-height",offset:0}}),a(this),this.themeHandle=e(()=>({color:o(t.effectiveTheme)}),e=>{l.setParameters(e)})}destroy(){this.themeHandle.remove(),super.destroy()}}class c extends r{constructor(e,o){const{size:i,visibleColor:r,occludedColor:s,undefinedColor:n}=t;super({view:e,renderObjects:[f(i,r,16),f(i,s,32),f(i,n,64)],metadata:o,elevationInfo:{mode:"absolute-height",offset:0}}),a(this)}}function f(e,t,o){return new n(m(s(t.toUnitRGBA()),e,32,32),o)}export{l as LineOfSightObserverManipulator,c as LineOfSightTargetManipulator};
2
+ import{watch as e}from"../../../../core/reactiveUtils.js";import{getObserverRGBA as t,observerConfiguration as o,targetConfiguration as i}from"./LineOfSightConfiguration.js";import{Manipulator3D as r}from"../../interactive/Manipulator3D.js";import{createManipulatorMaterial as s}from"../../interactive/manipulatorUtils.js";import{RenderObject as n}from"../../interactive/RenderObject.js";import{disableDisplayOnGrab as a}from"../../interactive/editingTools/manipulatorUtils.js";import{createSphereGeometry as c}from"../../webgl-engine/lib/GeometryUtil.js";const m=128,l=256,d=512;class f extends r{constructor(i,r){const m=s(t(i.effectiveTheme)),l=c(m,o.size,32,32),d=new n(l);super({view:i,renderObjects:[d],metadata:r,elevationInfo:{mode:"absolute-height",offset:0}}),a(this),this.themeHandle=e(()=>({color:t(i.effectiveTheme)}),e=>{m.setParameters(e)})}destroy(){this.themeHandle.remove(),super.destroy()}}class u extends r{constructor(e,t){const{size:o,visibleColor:r,occludedColor:s,undefinedColor:n}=i;super({view:e,renderObjects:[v(o,r,m),v(o,s,l),v(o,n,d)],metadata:t,elevationInfo:{mode:"absolute-height",offset:0}}),a(this)}}const p={visible:m,occluded:l,undefined:d};function v(e,t,o){return new n(c(s(t.toUnitRGBA()),e,32,32),o)}export{f as LineOfSightObserverManipulator,u as LineOfSightTargetManipulator,p as LineOfSightTargetManipulatorState};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import{watch as e,sync as i}from"../../../../core/reactiveUtils.js";import{property as o,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{PluginBase as s}from"../../../draw/plugins/PluginBase.js";var r;const a=Symbol("line-of-sight-observer-vertex"),p=Symbol("line-of-sight-observer-plugin-marker");let l=class extends s{constructor(){super(...arguments),this[r]=!0,this.observer=null,this.defaultCaptureMode="capture-always",this.inputMapPosition=null,this._interactiveHandle=null}static{r=p}start(t){super.start(t);const{session:o,positionOfLastUserInput:n}=t,s="grabbable-object"===this.defaultCaptureMode?this.inputMapPosition??this._interactiveHandle?.outputMapPosition??n:this.inputMapPosition??n;!s||"grabbable-object"!==this.defaultCaptureMode&&this._interactiveHandle||o.appendOrReplacePoint(a,s),this._interactiveHandle||(this._interactiveHandle=t.createInteractiveHandle({defaultCaptureMode:this.defaultCaptureMode,inputMapPosition:"grabbable-object"===this.defaultCaptureMode?s??void 0:void 0}),this.addHandles(e(()=>this._interactiveHandle?.outputMapPosition,t=>{t&&!this._isComplete&&this._session?.appendOrReplacePoint(a,t)},i),this._ownHandlesKey))}};function u(t){return!!t&&p in t}function d(t={}){return{uniqueId:Symbol("line-of-sight-observer-plugin"),kind:["vertex"],geometryType:"point",hidden:!0,localizationKey:"leaf-point-segment",icon:"point",create:()=>new l(t)}}t([o({constructOnly:!0})],l.prototype,"observer",void 0),t([o()],l.prototype,"defaultCaptureMode",void 0),t([o()],l.prototype,"inputMapPosition",void 0),t([o()],l.prototype,"_interactiveHandle",void 0),l=t([n("esri.views.3d.analysis.LineOfSight.LineOfSightObserverPlugin")],l);export{l as LineOfSightObserverPlugin,d as createLineOfSightObserverPluginConfiguration,u as isLineOfSightObserverPlugin,p as lineOfSightObserverPluginMarker};
2
+ import{__decorate as t}from"tslib";import{watch as e,sync as i}from"../../../../core/reactiveUtils.js";import{property as o,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{PluginBase as s}from"../../../draw/plugins/PluginBase.js";var r;const a=Symbol("line-of-sight-observer-vertex"),p=Symbol("line-of-sight-observer-plugin-marker");let l=class extends s{constructor(){super(...arguments),this[r]=!0,this.observer=null,this.defaultCaptureMode="capture-always",this.inputMapPosition=null,this.preservedIntersection=null,this._interactiveHandle=null}static{r=p}get usesSnappedAbsoluteHeight(){const t=this._interactiveHandle,e=t?.inputMapPosition,i=t?.outputMapPosition;return null!=e&&null!=i&&!e.equals(i)}start(t){super.start(t),this.preservedIntersection=null;const{session:o,positionOfLastUserInput:n}=t,s="grabbable-object"===this.defaultCaptureMode?this.inputMapPosition??this._interactiveHandle?.outputMapPosition??n:this.inputMapPosition??n;!s||"grabbable-object"!==this.defaultCaptureMode&&this._interactiveHandle||o.appendOrReplacePoint(a,s),this._interactiveHandle||(this._interactiveHandle=t.createInteractiveHandle({defaultCaptureMode:this.defaultCaptureMode,inputMapPosition:"grabbable-object"===this.defaultCaptureMode?s??void 0:void 0}),this.addHandles(e(()=>this._interactiveHandle?.outputMapPosition,t=>{t&&!this._isComplete&&this._session?.appendOrReplacePoint(a,t)},i),this._ownHandlesKey))}};function u(t){return!!t&&p in t}function d(t={}){return{uniqueId:Symbol("line-of-sight-observer-plugin"),kind:["vertex"],geometryType:"point",hidden:!0,localizationKey:"leaf-point-segment",icon:"point",create:()=>new l(t)}}t([o({constructOnly:!0})],l.prototype,"observer",void 0),t([o()],l.prototype,"defaultCaptureMode",void 0),t([o()],l.prototype,"inputMapPosition",void 0),t([o()],l.prototype,"preservedIntersection",void 0),t([o()],l.prototype,"_interactiveHandle",void 0),l=t([n("esri.views.3d.analysis.LineOfSight.LineOfSightObserverPlugin")],l);export{l as LineOfSightObserverPlugin,d as createLineOfSightObserverPluginConfiguration,u as isLineOfSightObserverPlugin,p as lineOfSightObserverPluginMarker};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{isLineOfSightObserverPlugin as r}from"./LineOfSightObserverPlugin.js";import{isLineOfSightTargetPlugin as i}from"./LineOfSightTargetPlugin.js";function t(t){return r(t)||i(t)}export{t as isLineOfSightPlacementLeafPlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{isSome as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{watch as i,syncAndInitial as n,when as a}from"../../../../core/reactiveUtils.js";import{property as s,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{absoluteHeightElevationInfo as r}from"../../../../support/elevationInfoUtils.js";import{LineOfSightDrawToolRenderer as l}from"./LineOfSightDrawToolRenderer.js";import{createLineOfSightRootPluginConfiguration as p}from"./LineOfSightRootPlugin.js";import{Manipulator3D as h}from"../../interactive/Manipulator3D.js";import{DrawTool as c}from"../../../draw/DrawTool.js";import{mouseButtons as u}from"../../../input/mouseButtons.js";import d from"../../../interactive/sketch/SketchOptions.js";import{acquire as v}from"../../../interactive/snapping/SnappingManagerPool.js";const g=Symbol("hiddenManipulatorHandle"),m=Symbol("snappingManagerHandle");let f=class extends c{constructor(e){super({...e,enableVertexVisuals:!1,sketchOptions:new d({tooltips:{enabled:!0}}),snappingManager:null,elevationInfo:null,hasZ:!0}),this.removeIncompleteOnCancel=!1,this.placementElevationInfo=null,this._snappingManagerResult=null,this.renderer=new l({view:e.view})}initialize(){this.addHandles([i(()=>[this.surfaceManager,this._snapToSceneEnabled],([e,t])=>{e&&(e.snapToSceneEnabled=t)},n),i(()=>this.manipulators.length,()=>this._hideManipulatorOnAppearance(),n),a(()=>!this.active,()=>{this.analysisViewData.cursorTarget=null},n),i(()=>this.analysisViewData.visible,e=>{this.visible=e},n),i(()=>this.parent.editable,e=>{this.editable=e},n),i(()=>this._sourceElevationInfo,e=>{this.elevationInfo=e,this.renderer.elevationInfo=e,this.renderer.refresh()},n),i(()=>this.analysis.valid,()=>this._syncCreatedState(),n)])}destroy(){this.removeHandles(g)}get state(){return this.active?"creating":null!=this.analysis.observer?.position?"created":"ready"}get _snapToSceneEnabled(){const e=this._sourceElevationInfo?.mode;return"relative-to-ground"!==e&&"on-the-ground"!==e&&null}get _defaultElevationInfo(){return this.placementElevationInfo}get _sourceElevationInfo(){return this.placementElevationInfo??r}deactivate(){super.deactivate(),this._releaseSnappingManager(),this.created||(this.analysis.clear(),this.analysisViewData.cursorTarget=null)}resetCreated(){this._set("created",!1),this._syncCreatedState()}_syncCreatedState(){this.analysis.valid&&this.finishToolCreation()}place(){this.begin([p({analysis:this.analysis,analysisViewData:this.analysisViewData,authoringStore:this.authoringStore,defaultElevationInfo:this._defaultElevationInfo,sourceElevationInfo:this._sourceElevationInfo,view:this.view})])}continue(){this._ensureSnappingManager(),this.view.activeTool!==this&&(this.view.activeTool=this),0===this.pluginStack.length&&this.place()}stop(){if(!this.active)return;const e=this.mostUpstreamPlugin;e&&this.lifecycleManager.cancel(e),this.view.activeTool===this&&(this.view.activeTool=null)}get testInfo(){}onInputEvent(e){if("immediate-click"===e.type&&"mouse"===e.pointerType){if(e.button===u.Right)return;if(e.native.detail>1)return}super.onInputEvent(e)}_hideManipulatorOnAppearance(){this.removeHandles(g),this.addHandles(this.manipulators.toArray().map(e=>e instanceof h?e.disableDisplay():null).filter(t),g)}_ensureSnappingManager(){if(this._snappingManagerResult)return;const e=v(this.view);this._snappingManagerResult=e,this.snappingManager=e.snappingManager,this.addHandles(e,m)}_releaseSnappingManager(){this._snappingManagerResult&&(this.snappingManager?.doneSnapping(),this.snappingManager=null,this.removeHandles(m),this._snappingManagerResult=null)}};e([s({constructOnly:!0})],f.prototype,"view",void 0),e([s({constructOnly:!0})],f.prototype,"analysis",void 0),e([s({constructOnly:!0})],f.prototype,"analysisViewData",void 0),e([s({constructOnly:!0})],f.prototype,"authoringStore",void 0),e([s({constructOnly:!0})],f.prototype,"parent",void 0),e([s()],f.prototype,"renderer",void 0),e([s()],f.prototype,"removeIncompleteOnCancel",void 0),e([s()],f.prototype,"placementElevationInfo",void 0),e([s()],f.prototype,"_snappingManagerResult",void 0),e([s()],f.prototype,"state",null),f=e([o("esri.views.3d.analysis.LineOfSight.LineOfSightPlacementTool")],f);export{f as LineOfSightPlacementTool};
2
+ import{__decorate as e}from"tslib";import{isSome as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{destroyMaybe as i}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as s,when as a}from"../../../../core/reactiveUtils.js";import{property as r,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{create as l}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as p,fromPoints as c}from"../../../../geometry/support/lineSegment.js";import{absoluteHeightElevationInfo as h}from"../../../../support/elevationInfoUtils.js";import{getLaserLineColors as u,laserLineConfiguration as d}from"./LineOfSightConfiguration.js";import{LineOfSightDrawToolRenderer as m}from"./LineOfSightDrawToolRenderer.js";import{isLineOfSightPlacementLeafPlugin as g}from"./LineOfSightPlacementLeafPlugin.js";import{LineOfSightRayIntersector as v}from"./LineOfSightRayIntersector.js";import{createLineOfSightRootPluginConfiguration as f}from"./LineOfSightRootPlugin.js";import{Manipulator3D as y}from"../../interactive/Manipulator3D.js";import{LaserlineVisualElement as _}from"../../interactive/visualElements/LaserlineVisualElement.js";import{DrawTool as P}from"../../../draw/DrawTool.js";import{mouseButtons as w}from"../../../input/mouseButtons.js";import S from"../../../interactive/sketch/SketchOptions.js";import{acquire as b}from"../../../interactive/snapping/SnappingManagerPool.js";import{createScreenPointFromEvent as E}from"../../../support/screenUtils.js";const M=Symbol("hiddenManipulatorHandle"),C=Symbol("snappingManagerHandle"),L=l(),I=l(),T=p();let V=class extends P{get cursor(){return this.active?"crosshair":null}constructor(e){super({...e,enableVertexVisuals:!1,sketchOptions:new S({tooltips:{enabled:!0}}),snappingManager:null,elevationInfo:null,hasZ:!0}),this.removeIncompleteOnCancel=!1,this._lastPlacementClickScreenPoint=null,this._lastPlacementClickPromise=null,this.placementElevationInfo=null,this._snappingManagerResult=null,this._laserlineVisualElement=null,this.renderer=new m({view:e.view}),this._intersector=new v({view:e.view})}initialize(){this._createLaserLine(),this.addHandles([n(()=>[this.surfaceManager,this._snapToSceneEnabled],([e,t])=>{e&&(e.snapToSceneEnabled=t)},s),n(()=>this.manipulators.length,()=>this._hideManipulatorOnAppearance(),s),a(()=>!this.active,()=>{this.analysisViewData.cursorTarget=null},s),n(()=>this.analysisViewData.visible,e=>{this.visible=e},s),n(()=>this.parent.editable,e=>{this.editable=e},s),n(()=>this._sourceElevationInfo,e=>{this.elevationInfo=e,this.renderer.elevationInfo=e,this.renderer.refresh()},s),n(()=>this.analysis.valid,()=>this._syncCreatedState(),s),n(()=>u(this.view.effectiveTheme),({glowColor:e,innerColor:t,globalAlpha:i})=>this._updateLaserLineStyle(e,t,i),s),n(()=>({active:this.active,cursorTargetPosition:this.analysisViewData.cursorTarget?.position,observerPosition:this.analysis.observer?.position,visible:this.visible}),()=>this._updateLaserLineRenderer(),s)])}destroy(){this._intersector.destroy(),this._releaseSnappingManager(),this._laserlineVisualElement=i(this._laserlineVisualElement),this.removeHandles(M)}get state(){return this.active?"creating":null!=this.analysis.observer?.position?"created":"ready"}get activeSnappingManager(){return this.active?this.snappingManager:null}get _snapToSceneEnabled(){const e=this._sourceElevationInfo?.mode;return"relative-to-ground"!==e&&"on-the-ground"!==e&&null}get _defaultElevationInfo(){return this.placementElevationInfo}get _sourceElevationInfo(){return this.placementElevationInfo??h}deactivate(){super.deactivate(),this._releaseSnappingManager(),this.created||(this.analysis.clear(),this.analysisViewData.cursorTarget=null)}resetCreated(){this._set("created",!1),this._syncCreatedState()}_syncCreatedState(){this.analysis.valid&&this.finishToolCreation()}_createLaserLine(){this._laserlineVisualElement=i(this._laserlineVisualElement);const{glowWidth:e,innerWidth:t}=d;this._laserlineVisualElement=new _({view:this.view,attached:!0,visible:!1,style:{glowWidth:e,innerWidth:t},isDecoration:!0})}_updateLaserLineRenderer(){const e=this._laserlineVisualElement,t=this.analysis.observer?.position,i=this.analysisViewData.cursorTarget?.position;null!=e&&this.active&&this.visible&&null!=t&&null!=i&&j(this.view,t,L)&&j(this.view,i,I)?(e.visible=!0,e.heightManifoldTarget=I,e.lineVerticalPlaneSegment=c(L,I,T)):this._hideLaserLine()}_hideLaserLine(){const e=this._laserlineVisualElement;null!=e&&(e.visible=!1,e.heightManifoldTarget=null,e.lineVerticalPlaneSegment=null)}_updateLaserLineStyle(e,t,i){const n=this._laserlineVisualElement;if(null==n)return;const s=n.style;n.style={...s,glowColor:e.toUnitRGB(),innerColor:t.toUnitRGB(),globalAlpha:i}}place(){this.begin([f({analysis:this.analysis,analysisViewData:this.analysisViewData,defaultElevationInfo:this._defaultElevationInfo,sourceElevationInfo:this._sourceElevationInfo,view:this.view})])}continue(){this._ensureSnappingManager(),this.view.activeTool!==this&&(this.view.activeTool=this),0===this.pluginStack.length&&this.place()}stop(){if(!this.active)return;const e=this.mostUpstreamPlugin;e&&this.lifecycleManager.cancel(e),this.view.activeTool===this&&(this.view.activeTool=null)}get testInfo(){}onInputEvent(e){if("immediate-double-click"===e.type&&e.button!==w.Right){const t=E(e),i=this._isLastPlacementClick(t),n=i?null:this._intersector.getScreenPointIntersection(t),s=i?this._lastPlacementClickPromise:null!=n?.mapPoint?this._addPointFromClickEvent(e,t,n):null;return s?this.addPromise(s.finally(()=>this.stop())):this.stop(),void e.stopPropagation()}if("immediate-click"===e.type){const t=E(e);if(e.button===w.Right)return;if("mouse"===e.pointerType&&e.native.detail>1&&this._isLastPlacementClick(t))return void e.stopPropagation();const i=this._intersector.getScreenPointIntersection(t);return null==i?.mapPoint?void e.stopPropagation():void this._addPointFromClickEvent(e,t,i)}super.onInputEvent(e)}_addPointFromClickEvent(e,t,i){const n=this.interactiveHandleManager?.capturingHandle??this.interactiveHandleManager?.findHandleByManipulator(t,e.pointerType);if(!this.editable||null==n)return null;this.lastScreenPosition=t,this._lastPlacementClickScreenPoint=t,this._setPreservedIntersection(i),e.stopPropagation();const s=this.addPromise(n.moveTo(t,{...this.movementCommandContext,pointerType:e.pointerType,skipSnapping:"touch"===e.pointerType}).then(()=>this.forceAddVertex()));return this._lastPlacementClickPromise=s,s}_setPreservedIntersection(e){const t=this.mostDownstreamPlugin;g(t)&&(t.preservedIntersection=e)}_isLastPlacementClick(e){const t=this._lastPlacementClickScreenPoint;return null!=t&&t.x===e.x&&t.y===e.y}_hideManipulatorOnAppearance(){this.removeHandles(M),this.addHandles(this.manipulators.toArray().map(e=>e instanceof y?e.disableDisplay():null).filter(t),M)}_ensureSnappingManager(){if(this._snappingManagerResult)return;const e=b(this.view);this._snappingManagerResult=e,this.snappingManager=e.snappingManager,this.addHandles(e,C)}_releaseSnappingManager(){this._snappingManagerResult&&(this.snappingManager?.doneSnapping(),this.snappingManager=null,this.removeHandles(C),this._snappingManagerResult=null)}};function j(e,t,i){return e.renderCoordsHelper.toRenderCoords(t,i)}e([r({constructOnly:!0})],V.prototype,"view",void 0),e([r({constructOnly:!0})],V.prototype,"analysis",void 0),e([r({constructOnly:!0})],V.prototype,"analysisViewData",void 0),e([r({constructOnly:!0})],V.prototype,"parent",void 0),e([r()],V.prototype,"renderer",void 0),e([r()],V.prototype,"removeIncompleteOnCancel",void 0),e([r()],V.prototype,"placementElevationInfo",void 0),e([r()],V.prototype,"cursor",null),e([r()],V.prototype,"_snappingManagerResult",void 0),e([r()],V.prototype,"state",null),V=e([o("esri.views.3d.analysis.LineOfSight.LineOfSightPlacementTool")],V);export{V as LineOfSightPlacementTool};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{__decorate as e}from"tslib";import{EventedAccessor as t}from"../../../../core/Evented.js";import{destroyMaybe as i}from"../../../../core/maybe.js";import{watch as a,syncAndInitial as s}from"../../../../core/reactiveUtils.js";import{property as n,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{create as o,fromPoints as l}from"../../../../geometry/support/lineSegment.js";import{LineOfSightAggregateManipulatedObject3D as h}from"./LineOfSightAggregateManipulatedObject3D.js";import{getLaserLineColors as p,laserLineConfiguration as u}from"./LineOfSightConfiguration.js";import{ReshapeTool3D as c}from"../../interactive/editingTools/reshape/ReshapeTool3D.js";import{LaserlineVisualElement as g}from"../../interactive/visualElements/LaserlineVisualElement.js";import d from"../../../interactive/sketch/SketchOptions.js";import{acquire as _}from"../../../interactive/snapping/SnappingManagerPool.js";const v=Symbol("line-of-sight-reshape-laser-line-manipulators"),b=Symbol("line-of-sight-reshape-tool-operations"),m=o();let L=class extends t{constructor(e){super(e),this.visible=!0,this._editing=!1,this._grabbedManipulator=null,this._laserlineVisualElement=null,this._snappingManagerResult=_(e.view),this._object=new h({analysis:e.analysis,analysisViewData:e.analysisViewData,intersector:e.intersector,view:e.view}),this._reshapeTool=new c({autoHideManipulators:!1,enableDeleteVertices:!0,enableEdgeOffset:!1,enableMidpoints:!1,enableMoveObject:!1,object:this._object,sketchOptions:new d({tooltips:{enabled:!0}}),snappingManager:this._snappingManagerResult.snappingManager,view:e.view})}initialize(){this.view.tools.add(this._reshapeTool),this._createLaserLine(),this.addHandles([this._snappingManagerResult,this._reshapeTool.events.on("manipulators-changed",()=>{this._syncLaserLineManipulatorHandles(),this._updateLaserLineRenderer()}),this._reshapeTool.events.on("reshape",e=>{"reshape-start"===e.type?this._editing=!0:"reshape-stop"===e.type&&(this._editing=!1,this._grabbedManipulator=null),this._updateLaserLineRenderer()}),this._reshapeTool.events.on("move",e=>{"move-start"===e.type?this._editing=!0:"move-stop"===e.type&&(this._editing=!1,this._grabbedManipulator=null),this._updateLaserLineRenderer()}),a(()=>this.active,e=>{e||this._cleanupAfterDeactivate()}),a(()=>p(this.view.effectiveTheme),({glowColor:e,innerColor:t,globalAlpha:i})=>this._updateLaserLineStyle(e,t,i),s),a(()=>({active:this.active,analysisVisible:this.analysisViewData.visible,targetCount:this.analysis.targets.length,visible:this.visible}),()=>{this._syncLaserLineManipulatorHandles(),this._updateLaserLineRenderer()},s),a(()=>this._object.operations,e=>{this.removeHandles(b),null!=e&&this.addHandles([e.on("can-redo-change",()=>this.notifyChange("canRedo")),e.on("can-undo-change",()=>this.notifyChange("canUndo"))],b),this.notifyChange("canUndo"),this.notifyChange("canRedo")},s)])}destroy(){this.stop(),this.removeHandles(v),this.view.tools.remove(this._reshapeTool),this._reshapeTool.destroy(),this._object.destroy(),this._laserlineVisualElement=i(this._laserlineVisualElement)}get active(){return this._reshapeTool.active}get canRedo(){return this._reshapeTool.canRedo}get canUndo(){return this._reshapeTool.canUndo}get updating(){return this._reshapeTool.updating}get snappingManager(){return this.active?this._reshapeTool.snappingManager:null}get laserLineVisualElement(){return this._laserlineVisualElement}activate(){this._reshapeTool.visible=this.visible,this.view.activeTool!==this._reshapeTool&&(this.view.activeTool=this._reshapeTool),this._reshapeTool.activate()}getTargetManipulator(e){return this._object.getTargetManipulator(e)}getObserverManipulator(){return this._object.getObserverManipulator()}redo(){this._reshapeTool.redo()}clearSelection(){this._reshapeTool.clearSelection()}applySelection(e){const t="observer"===e.type?this._object.getObserverManipulator():this._object.getTargetManipulator(e.target);return null!=t&&this._reshapeTool.selectManipulator(t)}setEditableFlag(e,t){this._reshapeTool.setEditableFlag(e,t)}stop(){this.view.activeTool===this._reshapeTool&&(this.view.activeTool=null),this._editing=!1,this._grabbedManipulator=null,this._hideLaserLine()}suspend(){this.clearSelection(),this.snappingManager?.doneSnapping(),this.stop()}undo(){this._reshapeTool.undo()}_cleanupAfterDeactivate(){this._editing=!1,this._grabbedManipulator=null,this._reshapeTool.snappingManager?.doneSnapping(),this._hideLaserLine()}_createLaserLine(){this._laserlineVisualElement=i(this._laserlineVisualElement);const{glowWidth:e,innerWidth:t}=u;this._laserlineVisualElement=new g({view:this.view,attached:!0,visible:!1,style:{glowWidth:e,innerWidth:t},isDecoration:!0})}_updateLaserLineRenderer(){const e=this._laserlineVisualElement,t=this._object.getObserverManipulator(),i=this._getLaserLineManipulator();null!=e&&this.active&&this.visible&&this.analysisViewData.visible&&null!=t&&null!=i?(e.visible=!0,e.heightManifoldTarget=i.renderLocation,e.lineVerticalPlaneSegment=i===t?null:l(t.renderLocation,i.renderLocation,m)):this._hideLaserLine()}_hideLaserLine(){const e=this._laserlineVisualElement;null!=e&&(e.visible=!1,e.heightManifoldTarget=null,e.lineVerticalPlaneSegment=null)}_updateLaserLineStyle(e,t,i){const a=this._laserlineVisualElement;if(null==a)return;const s=a.style;a.style={...s,glowColor:e.toUnitRGB(),innerColor:t.toUnitRGB(),globalAlpha:i}}_getLaserLineManipulator(){const e=this._grabbedManipulator;if(this._editing){const e=this._getSelectedManipulator();if(null!=e)return e}if(null!=e?.view)return e;for(const i of this.analysis.targets){const e=this._object.getTargetManipulator(i);if(y(e))return e}const t=this._object.getObserverManipulator();return y(t)?t:null}_getSelectedManipulator(){let e=null;for(const t of this._getLaserLineManipulators())if(t.selected){if(null!=e)return null;e=t}return e}_syncLaserLineManipulatorHandles(){this.removeHandles(v);const e=this._getLaserLineManipulators();null==this._grabbedManipulator||e.includes(this._grabbedManipulator)||(this._grabbedManipulator=null),this.addHandles(e.flatMap(e=>[e.events.on("grab-changed",t=>{"start"===t.action?this._grabbedManipulator=e:this._grabbedManipulator===e&&(this._grabbedManipulator=null),this._updateLaserLineRenderer()}),e.events.on("location-update",()=>this._updateLaserLineRenderer())]),v)}_getLaserLineManipulators(){return[this._object.getObserverManipulator(),...this.analysis.targets.toArray().map(e=>this._object.getTargetManipulator(e))].filter(e=>null!=e)}};function y(e){return null!=e&&e.grabbing}e([n({constructOnly:!0})],L.prototype,"analysisViewData",void 0),e([n({constructOnly:!0})],L.prototype,"analysis",void 0),e([n({constructOnly:!0})],L.prototype,"intersector",void 0),e([n({constructOnly:!0})],L.prototype,"view",void 0),e([n()],L.prototype,"visible",void 0),e([n()],L.prototype,"active",null),e([n()],L.prototype,"canRedo",null),e([n()],L.prototype,"canUndo",null),e([n()],L.prototype,"updating",null),L=e([r("esri.views.3d.analysis.LineOfSight.LineOfSightReshapeTool3D")],L);export{L as LineOfSightReshapeTool3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../../analysis/LineOfSightAnalysisObserver.js";import i from"../../../../analysis/LineOfSightAnalysisTarget.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{property as n,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{isPoint as r,isMultipoint as a}from"../../../../geometry/support/typeUtils.js";import{getLineOfSightMapPointIntersection as l,updateLineOfSightItemFromIntersection as u}from"./LineOfSightAuthoringUtils.js";import{isLineOfSightObserverPlugin as h,createLineOfSightObserverPluginConfiguration as c}from"./LineOfSightObserverPlugin.js";import{LineOfSightRayIntersector as g}from"./LineOfSightRayIntersector.js";import{isLineOfSightTargetPlugin as m,createLineOfSightTargetPluginConfiguration as p}from"./LineOfSightTargetPlugin.js";import{PluginBase as y}from"../../../draw/plugins/PluginBase.js";let d=class extends y{constructor(){super(...arguments),this.defaultElevationInfo=null,this.sourceElevationInfo=null,this._hadInitialObserver=!1,this._initialTargetCount=0,this._intersector=null,this._downstreamPlugin=null}initialize(){this._intersector=new g({view:this.view})}destroy(){this._intersector=s(this._intersector)}start(t){super.start(t),this.authoringStore.syncFromAnalysis(this.analysis),this._hadInitialObserver=null!=this.analysis.observer,this._initialTargetCount=this.authoringStore.targetItems.length,t.session.appendOrReplacePart(null,[]),this._syncAnalysisFromSession(),this._restartDownstreamPlugin()}beforeAttachPlugin(t){return{geometryType:"point",useStandaloneSession:!0}}beforeComplete(){return{downstreamPluginCompletionMode:"cancel"}}attachPlugin(t){this._downstreamPlugin=t}afterUndoRedo(){this._syncAnalysisFromSession(),this._restartDownstreamPlugin()}complete(){this._clearCursorTarget(),super.complete()}cancel(){this._clearCursorTarget()}detachPlugin(t,s){if(this._downstreamPlugin===t&&(this._downstreamPlugin=null),m(t)&&this._clearCursorTarget(),"complete"!==s)return void this._syncAnalysisFromSession();const n=this._context?.getSession(t)?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"point"});if(!n||!r(n))return this._syncAnalysisFromSession(),void this._restartDownstreamPlugin();const o=this._intersector&&l(this._intersector,this.view,n,this.sourceElevationInfo);if(!o)return this._syncAnalysisFromSession(),void this._restartDownstreamPlugin();if(this._truncateItemsToSession(),h(t)){const i=t.observer??new e;u(this.view,i,o,n,this.defaultElevationInfo,this.sourceElevationInfo),this.authoringStore.setObserver(i)}else if(m(t)){const e=t.target??new i;u(this.view,e,o,n,this.defaultElevationInfo,this.sourceElevationInfo),this.authoringStore.addTarget(e)}this._appendCommittedPoint(n),this._syncAnalysisFromSession(),this._restartDownstreamPlugin()}_appendCommittedPoint(t){const e=this._session;e&&(e.appendOrReplacePoint(null,t),e.appendOrReplacePart(null,[]),e.automaticRestart=!1,e.groupGeometryChanges())}_clearCursorTarget(){this.analysisViewData.cursorTarget=s(this.analysisViewData.cursorTarget)}_truncateItemsToSession(){const t=this._getCommittedPointCount();this._hadInitialObserver||0!==t||this.authoringStore.setObserver(null),this.authoringStore.truncateTargets(this._initialTargetCount+this._getCommittedOperationTargetCount(t))}_restartDownstreamPlugin(){const t=null==this.analysis.observer,e=t?this._createObserverPluginConfiguration():this._createTargetPluginConfiguration();t&&h(this._downstreamPlugin)||!t&&m(this._downstreamPlugin)||this._context?.requestBeginDownstreamPlugin(e,{cancelExisting:!0})}_createObserverPluginConfiguration(t=null){return c({observer:t,defaultCaptureMode:t?"grabbable-object":"capture-always",inputMapPosition:t?.position??null})}_createTargetPluginConfiguration(t=null){return p({analysis:this.analysis,analysisViewData:this.analysisViewData,defaultCaptureMode:t?"grabbable-object":"capture-always",defaultElevationInfo:this.defaultElevationInfo,inputMapPosition:t?.position??null,sourceElevationInfo:this.sourceElevationInfo,target:t,view:this.view})}_syncAnalysisFromSession(){const t=this._getCommittedPointCount();this.analysis.observer=this._getActiveObserver(t),this.authoringStore.syncTargetsToAnalysis(this.analysis,this._initialTargetCount+this._getCommittedOperationTargetCount(t))}_getActiveObserver(t){return this._hadInitialObserver||t>0?this.authoringStore.observerItem?.observer??null:null}_getCommittedOperationTargetCount(t){return Math.max(0,t-(this._hadInitialObserver?0:Math.min(t,1)))}_getCommittedPointCount(){const t=this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"multipoint"});return t&&a(t)?t.points.length:0}};function _(t){return{uniqueId:Symbol("line-of-sight-root-plugin"),kind:["multipart"],geometryType:"multipoint",hidden:!0,localizationKey:"line-of-sight-root",icon:"point",create:()=>new d(t)}}t([n({constructOnly:!0})],d.prototype,"analysis",void 0),t([n({constructOnly:!0})],d.prototype,"analysisViewData",void 0),t([n({constructOnly:!0})],d.prototype,"view",void 0),t([n({constructOnly:!0})],d.prototype,"authoringStore",void 0),t([n({constructOnly:!0})],d.prototype,"defaultElevationInfo",void 0),t([n({constructOnly:!0})],d.prototype,"sourceElevationInfo",void 0),t([n()],d.prototype,"_hadInitialObserver",void 0),t([n()],d.prototype,"_initialTargetCount",void 0),t([n()],d.prototype,"_intersector",void 0),t([n()],d.prototype,"_downstreamPlugin",void 0),d=t([o("esri.views.3d.analysis.LineOfSight.LineOfSightRootPlugin")],d);export{d as LineOfSightRootPlugin,_ as createLineOfSightRootPluginConfiguration};
2
+ import{__decorate as t}from"tslib";import e from"../../../../analysis/LineOfSightAnalysisObserver.js";import i from"../../../../analysis/LineOfSightAnalysisTarget.js";import s from"../../../../core/Collection.js";import{destroyMaybe as n}from"../../../../core/maybe.js";import{property as r,subclass as o}from"../../../../core/accessorSupport/decorators.js";import{isPoint as a,isMultipoint as l}from"../../../../geometry/support/typeUtils.js";import{updateLineOfSightItemFromAuthoredPoint as u}from"./LineOfSightAuthoringUtils.js";import{isLineOfSightObserverPlugin as h,createLineOfSightObserverPluginConfiguration as c}from"./LineOfSightObserverPlugin.js";import{isLineOfSightPlacementLeafPlugin as g}from"./LineOfSightPlacementLeafPlugin.js";import{LineOfSightRayIntersector as p}from"./LineOfSightRayIntersector.js";import{isLineOfSightTargetPlugin as m,createLineOfSightTargetPluginConfiguration as _}from"./LineOfSightTargetPlugin.js";import{PluginBase as f}from"../../../draw/plugins/PluginBase.js";let d=class extends f{constructor(){super(...arguments),this.defaultElevationInfo=null,this.sourceElevationInfo=null,this._intersector=null,this._downstreamPlugin=null,this._initialObserver=null,this._operationObserver=null,this._initialTargets=new s,this._operationTargets=new s}initialize(){this._intersector=new p({view:this.view})}destroy(){this._intersector=n(this._intersector)}start(t){super.start(t),this._initialObserver=this.analysis.observer,this._operationObserver=this._initialObserver,y(this._initialTargets,this.analysis.targets.toArray()),this._operationTargets.removeAll(),t.session.appendOrReplacePart(null,[]),this._syncAnalysisFromSession(),this._restartDownstreamPlugin()}beforeAttachPlugin(t){return{geometryType:"point",useStandaloneSession:!0}}beforeComplete(){return{downstreamPluginCompletionMode:"cancel"}}attachPlugin(t){this._downstreamPlugin=t}afterUndoRedo(){this._syncAnalysisFromSession(),this._restartDownstreamPlugin()}complete(){this._clearCursorTarget(),super.complete()}cancel(){this._clearCursorTarget()}detachPlugin(t,s){if(this._downstreamPlugin===t&&(this._downstreamPlugin=null),m(t)&&this._clearCursorTarget(),"complete"!==s)return void this._syncAnalysisFromSession();const n=this._context?.getSession(t)?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"point"});if(!n||!a(n))return this._syncAnalysisFromSession(),void this._restartDownstreamPlugin();this._truncateItemsToSession();const r=g(t)?t.preservedIntersection:null,o=!!g(t)&&t.usesSnappedAbsoluteHeight;if(h(t)){const i=t.observer??this._operationObserver??new e;if(!this._intersector||!u(this.view,i,this._intersector,n,{defaultElevationInfo:this.defaultElevationInfo,sourceElevationInfo:this.sourceElevationInfo,preservedIntersection:r,useSnappedAbsoluteHeight:o,preferPreservedIntersection:!0}))return this._syncAnalysisFromSession(),void this._restartDownstreamPlugin();this._operationObserver=i}else if(m(t)){const e=t.target??new i;if(!this._intersector||!u(this.view,e,this._intersector,n,{defaultElevationInfo:this.defaultElevationInfo,sourceElevationInfo:this.sourceElevationInfo,preservedIntersection:r,useSnappedAbsoluteHeight:o,preferPreservedIntersection:!0}))return this._syncAnalysisFromSession(),void this._restartDownstreamPlugin();this._operationTargets.add(e)}this._appendCommittedPoint(n),this._syncAnalysisFromSession(),this._restartDownstreamPlugin(),this._clearCursorTarget()}_appendCommittedPoint(t){const e=this._session;e&&(e.appendOrReplacePoint(null,t),e.appendOrReplacePart(null,[]),e.automaticRestart=!1,e.groupGeometryChanges())}_clearCursorTarget(){this.analysisViewData.cursorTarget=n(this.analysisViewData.cursorTarget)}_truncateItemsToSession(){const t=this._getCommittedPointCount();null==this._initialObserver&&0===t&&(this._operationObserver=null),this._operationTargets.splice(this._getCommittedOperationTargetCount(t))}_restartDownstreamPlugin(){const t=null==this.analysis.observer,e=t?this._createObserverPluginConfiguration():this._createTargetPluginConfiguration();t&&h(this._downstreamPlugin)||!t&&m(this._downstreamPlugin)||this._context?.requestBeginDownstreamPlugin(e,{cancelExisting:!0})}_createObserverPluginConfiguration(t=null){return c({observer:t,defaultCaptureMode:t?"grabbable-object":"capture-always",inputMapPosition:t?.position??null})}_createTargetPluginConfiguration(t=null){return _({analysis:this.analysis,analysisViewData:this.analysisViewData,defaultCaptureMode:t?"grabbable-object":"capture-always",defaultElevationInfo:this.defaultElevationInfo,inputMapPosition:t?.position??null,sourceElevationInfo:this.sourceElevationInfo,target:t,view:this.view})}_syncAnalysisFromSession(){const t=this._getCommittedPointCount(),e=this._getCommittedOperationTargetCount(t);this.analysis.observer=this._getActiveObserver(t),y(this.analysis.targets,this._initialTargets.toArray().concat(this._operationTargets.toArray().slice(0,e)))}_getActiveObserver(t){return null!=this._initialObserver?this._operationObserver??null:t>0?this._operationObserver:null}_getCommittedOperationTargetCount(t){return Math.max(0,t-(null!=this._initialObserver?0:Math.min(t,1)))}_getCommittedPointCount(){const t=this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"multipoint"});return t&&l(t)?t.points.length:0}};function v(t){return{uniqueId:Symbol("line-of-sight-root-plugin"),kind:["multipart"],geometryType:"multipoint",hidden:!0,localizationKey:"line-of-sight-root",icon:"point",create:()=>new d(t)}}function y(t,e){let i=-1;for(let s=0;s<Math.min(t.length,e.length);s++)if(t.getItemAt(s)!==e[s]){i=s;break}if(-1===i){if(t.length===e.length)return;i=Math.min(t.length,e.length)}t.splice(i,t.length-i,...e.slice(i))}t([r({constructOnly:!0})],d.prototype,"analysis",void 0),t([r({constructOnly:!0})],d.prototype,"analysisViewData",void 0),t([r({constructOnly:!0})],d.prototype,"view",void 0),t([r({constructOnly:!0})],d.prototype,"defaultElevationInfo",void 0),t([r({constructOnly:!0})],d.prototype,"sourceElevationInfo",void 0),t([r()],d.prototype,"_intersector",void 0),t([r()],d.prototype,"_downstreamPlugin",void 0),d=t([o("esri.views.3d.analysis.LineOfSight.LineOfSightRootPlugin")],d);export{d as LineOfSightRootPlugin,v as createLineOfSightRootPluginConfiguration};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import e from"../../../../analysis/LineOfSightAnalysisTarget.js";import{destroyMaybe as i}from"../../../../core/maybe.js";import{watch as o,sync as r}from"../../../../core/reactiveUtils.js";import{property as s,subclass as a}from"../../../../core/accessorSupport/decorators.js";import{getLineOfSightMapPointIntersection as n,updateLineOfSightItemFromIntersection as l}from"./LineOfSightAuthoringUtils.js";import{LineOfSightRayIntersector as p}from"./LineOfSightRayIntersector.js";import{PluginBase as c}from"../../../draw/plugins/PluginBase.js";var u;const h=Symbol("line-of-sight-target-vertex"),d=Symbol("line-of-sight-target-plugin-marker");let f=class extends c{constructor(){super(...arguments),this[u]=!0,this.target=null,this.defaultElevationInfo=null,this.defaultCaptureMode="capture-always",this.inputMapPosition=null,this.sourceElevationInfo=null,this._interactiveHandle=null,this._intersector=null}static{u=d}initialize(){this._intersector=new p({view:this.view})}destroy(){this._intersector=i(this._intersector)}start(t){super.start(t);const{positionOfLastUserInput:s,session:a}=t,p="grabbable-object"===this.defaultCaptureMode?this.inputMapPosition??this._interactiveHandle?.outputMapPosition??s:this.inputMapPosition??s;!p||"grabbable-object"!==this.defaultCaptureMode&&this._interactiveHandle||a.appendOrReplacePoint(h,p),this._interactiveHandle&&this._clearCursorTarget(),this._interactiveHandle||(this._interactiveHandle=t.createInteractiveHandle({defaultCaptureMode:this.defaultCaptureMode,inputMapPosition:"grabbable-object"===this.defaultCaptureMode?p??void 0:void 0}),this.addHandles(o(()=>this._interactiveHandle?.outputMapPosition,t=>{if(!t||this._isComplete)return;const o=this.analysisViewData.cursorTarget??new e,r=this._intersector&&n(this._intersector,this.view,t,this.sourceElevationInfo);this._session?.appendOrReplacePoint(h,t),r?(this.analysisViewData.cursorTarget=o,l(this.view,o,r,t,this.defaultElevationInfo,this.sourceElevationInfo)):this.analysisViewData.cursorTarget=i(this.analysisViewData.cursorTarget)},r),this._ownHandlesKey))}complete(){this._clearCursorTarget(),super.complete()}cancel(){this._clearCursorTarget()}_clearCursorTarget(){this.analysisViewData.cursorTarget=i(this.analysisViewData.cursorTarget)}};function v(t){return!!t&&d in t}function y(t){return{uniqueId:Symbol("line-of-sight-target-plugin"),kind:["vertex"],geometryType:"point",hidden:!0,localizationKey:"leaf-point-segment",icon:"point",create:()=>new f(t)}}t([s({constructOnly:!0})],f.prototype,"analysis",void 0),t([s({constructOnly:!0})],f.prototype,"analysisViewData",void 0),t([s({constructOnly:!0})],f.prototype,"view",void 0),t([s({constructOnly:!0})],f.prototype,"target",void 0),t([s({constructOnly:!0})],f.prototype,"defaultElevationInfo",void 0),t([s()],f.prototype,"defaultCaptureMode",void 0),t([s()],f.prototype,"inputMapPosition",void 0),t([s({constructOnly:!0})],f.prototype,"sourceElevationInfo",void 0),t([s()],f.prototype,"_interactiveHandle",void 0),t([s()],f.prototype,"_intersector",void 0),f=t([a("esri.views.3d.analysis.LineOfSight.LineOfSightTargetPlugin")],f);export{f as LineOfSightTargetPlugin,y as createLineOfSightTargetPluginConfiguration,v as isLineOfSightTargetPlugin,d as lineOfSightTargetPluginMarker};
2
+ import{__decorate as t}from"tslib";import e from"../../../../analysis/LineOfSightAnalysisTarget.js";import{destroyMaybe as i}from"../../../../core/maybe.js";import{watch as s,sync as o}from"../../../../core/reactiveUtils.js";import{property as n,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{updateLineOfSightItemFromIntersection as a,updateLineOfSightItemFromAuthoredPoint as l}from"./LineOfSightAuthoringUtils.js";import{LineOfSightRayIntersector as u}from"./LineOfSightRayIntersector.js";import{PluginBase as p}from"../../../draw/plugins/PluginBase.js";var c;const d=Symbol("line-of-sight-target-vertex"),h=Symbol("line-of-sight-target-plugin-marker");let v=class extends p{constructor(){super(...arguments),this[c]=!0,this.target=null,this.defaultElevationInfo=null,this.defaultCaptureMode="capture-always",this.inputMapPosition=null,this.preservedIntersection=null,this.sourceElevationInfo=null,this._interactiveHandle=null,this._intersector=null}static{c=h}initialize(){this._intersector=new u({view:this.view})}destroy(){this._intersector=i(this._intersector)}get usesSnappedAbsoluteHeight(){const t=this._interactiveHandle,e=t?.inputMapPosition,i=t?.outputMapPosition;return null!=e&&null!=i&&!e.equals(i)}start(t){super.start(t),this.preservedIntersection=null;const{positionOfLastUserInput:n,session:r}=t,u="grabbable-object"===this.defaultCaptureMode?this.inputMapPosition??this._interactiveHandle?.outputMapPosition??n:this.inputMapPosition??n;!u||"grabbable-object"!==this.defaultCaptureMode&&this._interactiveHandle||r.appendOrReplacePoint(d,u);let p="capture-always"===this.defaultCaptureMode&&null!=u;this._interactiveHandle&&this._clearCursorTarget(),this._interactiveHandle||(this._interactiveHandle=t.createInteractiveHandle({defaultCaptureMode:this.defaultCaptureMode,inputMapPosition:"grabbable-object"===this.defaultCaptureMode?u??void 0:void 0}),this.addHandles(s(()=>this._interactiveHandle?.outputMapPosition,t=>{if(!t||this._isComplete)return;const s=this.analysisViewData.cursorTarget??new e,o=this.usesSnappedAbsoluteHeight,n=this._interactiveHandle?.screenPosition,r=n&&this._intersector?this._intersector.getScreenPointIntersection(n):null;return this._session?.appendOrReplacePoint(d,t),p?(p=!1,void this._clearCursorTarget()):null!=r?(this.analysisViewData.cursorTarget=s,void a(this.view,s,r,{snappedMapPoint:t,defaultElevationInfo:this.defaultElevationInfo,sourceElevationInfo:this.sourceElevationInfo,useSnappedAbsoluteHeight:o})):null!=n&&null!=this.preservedIntersection?(this.analysisViewData.cursorTarget=s,void a(this.view,s,this.preservedIntersection,{snappedMapPoint:t,defaultElevationInfo:this.defaultElevationInfo,sourceElevationInfo:this.sourceElevationInfo,useSnappedAbsoluteHeight:o})):void(null==n&&this._intersector&&l(this.view,s,this._intersector,t,{defaultElevationInfo:this.defaultElevationInfo,sourceElevationInfo:this.sourceElevationInfo,preservedIntersection:this.preservedIntersection,useSnappedAbsoluteHeight:o,preferPreservedIntersection:!0})?this.analysisViewData.cursorTarget=s:this.analysisViewData.cursorTarget=i(this.analysisViewData.cursorTarget))},o),this._ownHandlesKey))}complete(){this._clearCursorTarget(),super.complete()}cancel(){this._clearCursorTarget()}_clearCursorTarget(){this.analysisViewData.cursorTarget=i(this.analysisViewData.cursorTarget)}};function f(t){return!!t&&h in t}function g(t){return{uniqueId:Symbol("line-of-sight-target-plugin"),kind:["vertex"],geometryType:"point",hidden:!0,localizationKey:"leaf-point-segment",icon:"point",create:()=>new v(t)}}t([n({constructOnly:!0})],v.prototype,"analysis",void 0),t([n({constructOnly:!0})],v.prototype,"analysisViewData",void 0),t([n({constructOnly:!0})],v.prototype,"view",void 0),t([n({constructOnly:!0})],v.prototype,"target",void 0),t([n({constructOnly:!0})],v.prototype,"defaultElevationInfo",void 0),t([n()],v.prototype,"defaultCaptureMode",void 0),t([n()],v.prototype,"inputMapPosition",void 0),t([n()],v.prototype,"preservedIntersection",void 0),t([n({constructOnly:!0})],v.prototype,"sourceElevationInfo",void 0),t([n()],v.prototype,"_interactiveHandle",void 0),t([n()],v.prototype,"_intersector",void 0),v=t([r("esri.views.3d.analysis.LineOfSight.LineOfSightTargetPlugin")],v);export{v as LineOfSightTargetPlugin,g as createLineOfSightTargetPluginConfiguration,f as isLineOfSightTargetPlugin,h as lineOfSightTargetPluginMarker};
@@ -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"../../../../analysis/LineOfSightAnalysisObserver.js";import n from"../../../../analysis/LineOfSightAnalysisTarget.js";import i from"../../../../core/Handles.js";import"../../../../core/has.js";import a from"../../../../core/Logger.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{memoize as s}from"../../../../core/memoize.js";import{ignoreAbortErrors as o}from"../../../../core/promiseUtils.js";import{when as l,syncAndInitial as p,initial as u}from"../../../../core/reactiveUtils.js";import{property as c,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as d}from"../../../../core/support/UpdatingHandles.js";import{create as g,fromPoints as _}from"../../../../geometry/support/lineSegment.js";import{hydrateGeometry as m,clonePoint as v}from"../../../../layers/graphics/hydratedFeatures.js";import{absoluteHeightElevationInfo as b,getGraphicEffectiveElevationInfo as y,getConvertedElevation as f}from"../../../../support/elevationInfoUtils.js";import M from"../../../../symbols/support/ElevationInfo.js";import{getGaussianSplatOffsetPosition as T}from"./LineOfSightAuthoringUtils.js";import{getLaserLineColors as P,laserLineConfiguration as w}from"./LineOfSightConfiguration.js";import{LineOfSightTargetManipulator as S,LineOfSightObserverManipulator as L}from"./LineOfSightManipulators.js";import{LineOfSightRayIntersector as k}from"./LineOfSightRayIntersector.js";import{SnappingVisualizer3D as C}from"../../interactive/SnappingVisualizer3D.js";import{LaserlineVisualElement as O}from"../../interactive/visualElements/LaserlineVisualElement.js";import{mouseButtons as I}from"../../../input/mouseButtons.js";import{AnalysisToolBase as H}from"../../../interactive/AnalysisToolBase.js";import{createCoordinateHelper as j}from"../../../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as R}from"../../../interactive/dragEventPipeline.js";import{EditGeometry as E}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as V}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as D}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as x}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as G}from"../../../interactive/snapping/SnappingManagerPool.js";import{SnappingOperation as A}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as F}from"../../../interactive/snapping/snappingUtils.js";import{createScreenPointFromEvent as U}from"../../../support/screenUtils.js";let z=class extends H{constructor(e){super(e),this._creationMode=!1,this.removeIncompleteOnCancel=!1,this.analysisViewData=null,this._latestPointerMovePointerType=null,this._laserlineVisualElement=null,this._grabbedManipulator=null,this._trackerIntersection=null,this._trackerMapPoint=null,this._snappingManagerResult=null,this._analysisHandles=new i,this._updatingHandles=new d,this._manipulatorHandles=new i,this._targetTrackerManipulator=null,this._getSnappingContext=s(e=>new D({elevationInfo:b,pointer:e,editGeometryOperations:new V(new E("point",j(!0,!1,this.view.spatialReference)),this.view.state.viewingMode),visualizer:new C}))}initialize(){this._intersector=new k({view:this.view}),this._snappingOperation=new A({view:this.view}),F(this,()=>{const e=this.view.inputManager.latestPointerInfo?.type??"mouse",t=this._getSnappingContext(e);this._updatingHandles.consumePromise(o(this._snappingOperation.snapAgainNearPreviousMapPoint(this._ensureSnappingManager(),t)))}),this.addHandles(l(()=>"created"===this.state,()=>this.finishToolCreation(),p)),this._observerManipulator=this._createObserverManipulator(),this._createLaserLine(),this.addHandles([this._updatingHandles.add(()=>this.analysisViewData?.elevationAlignedObserver,e=>this._onObserverLocationChange(e),u),this._updatingHandles.add(()=>P(this.view.effectiveTheme),({glowColor:e,innerColor:t,globalAlpha:n})=>this._updateLaserLineStyle(e,t,n),u),this._updatingHandles.add(()=>this._laserLineRendererDependencies(),e=>this._updateLaserLineRenderer(e)),this._connectComputations(),this._updatingHandles.addWhen(()=>!this._shouldRenderTracker,()=>this._clearCursorTracker(),u),this._updatingHandles.add(()=>({active:this.active,hasGrabbedManipulators:this.hasGrabbedManipulators}),({active:e,hasGrabbedManipulators:t})=>{this._creationMode=!!e&&(this._creationMode||!t)},u),this._updatingHandles.add(()=>({observerPosition:this.analysis.observer?.position,showTracker:this._showTracker,hasGrabbedManipulators:this.hasGrabbedManipulators,stagedPoint:this._snappingOperation.stagedPoint,trackerIntersection:this._trackerIntersection}),({observerPosition:e,showTracker:t,hasGrabbedManipulators:i,stagedPoint:a,trackerIntersection:r})=>{if(null==e||!t||i||null==r?.mapPoint)return;this.analysisViewData.cursorTarget??=new n;const s=null!=a?m(a):r.mapPoint,o=this._resolveIntersection(r,s);this._updateFromIntersection(this.analysisViewData.cursorTarget,o,s),this._updateLaserLineRenderer()},u)])}destroy(){this._updatingHandles=r(this._updatingHandles),this._manipulatorHandles=r(this._manipulatorHandles),this._analysisHandles=r(this._analysisHandles),this._observerManipulator=null,this._clearCursorTracker(),this._snappingOperation=r(this._snappingOperation),this._removeLaserLine(),this._intersector=null,this._set("analysis",null)}get state(){return this.active?!this.hasGrabbedManipulators||this._creationMode?"creating":"created":null!=this.analysis.observer?.position?"created":"ready"}get cursor(){return this.active&&this._showTracker?"crosshair":null}get updating(){return!!this.analysisViewData?.updating||!!this._snappingManager?.updating}get _showTracker(){return this.active&&"mouse"===this._latestPointerMovePointerType}get _shouldRenderTracker(){return this._showTracker&&null!=this.analysis.observer?.position&&!this.hasGrabbedManipulators}get _snappingManager(){return this._snappingManagerResult?.snappingManager}get snappingOptions(){return this._snappingManager?.options}continue(){this.view.activeTool=this}stop(){this.view.activeTool=null}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickHandler(e)}onShow(){}onHide(){}onDeactivate(){this._clearCursorTracker()}_connectComputations(){return this._updatingHandles.addOnCollectionChange(()=>this.analysisViewData.computations,e=>this._onComputationsCollectionChange(e),{initial:!0,final:!0})}_onComputationsCollectionChange({added:e,removed:t}){for(const n of t)this._disconnectComputation(n);for(const n of e)this._connectComputation(n)}_connectComputation(e){if(this.destroyed)return void a.getLogger(this).warn("Attempting to connect an analysis to a destroyed LineOfSight tool. Ignoring.");const t=this._analysisHandles;if(t.has(e))return;const n=this._createTargetManipulator(e.target);null==this._targetTrackerManipulator&&n.metadata.target===this.analysisViewData.cursorTarget&&(this._targetTrackerManipulator=n,this._targetTrackerManipulator.available=!1,this._targetTrackerManipulator.interactive=!1,this._updateLaserLineRenderer()),t.add([this._updatingHandles.add(()=>q(e),()=>B(n,e),u),this._updatingHandles.add(()=>e.elevationAlignedTargetLocation,e=>this._onTargetLocationChange(e,n),u)],e)}_disconnectComputation(e){if(this.destroyed)return void a.getLogger(this).warn("Attempting to disconnect an analysis from a destroyed LineOfSight tool. Ignoring.");this._analysisHandles.remove(e);const t=this._getTargetManipulator(e.target);null!=t&&(this.manipulators.remove(t),this._manipulatorHandles.remove(t),null!=this._targetTrackerManipulator&&this._targetTrackerManipulator===t&&(this._targetTrackerManipulator=null))}_clearCursorTracker(){this._trackerIntersection=null,this._trackerMapPoint=null,this._resetSnappingState(),this.analysisViewData.cursorTarget=r(this.analysisViewData.cursorTarget)}_ensureSnappingManager(){if(null==this._snappingManagerResult){const e=G(this.view);this._snappingManagerResult=e,this.addHandles(e)}return this._snappingManagerResult.snappingManager}_createTargetManipulator(e){const t={target:e,type:"target"},n=new S(this.view,t);return this._manipulatorHandles.add([this._createTargetManipulatorDragPipeline(n),n.events.on("grab-changed",e=>this._manipulatorGrabChanged(n,e)),n.events.on("immediate-click",e=>this._manipulatorClick(n,e))],n),this.manipulators.add(n),null!=e.position?n.elevationAlignedLocation=e.position:n.available=!1,n}_getTargetManipulator(e){let t=null;return this.manipulators.forEach(n=>{const i=n.manipulator;null==t&&"target"===i.metadata.type&&i.metadata.target===e&&(t=i)}),t}_createObserverManipulator(){const e=new L(this.view,{type:"observer",intersection:null});return this._manipulatorHandles.add([this._createObserverManipulatorDragPipeline(e),e.events.on("grab-changed",t=>this._manipulatorGrabChanged(e,t)),e.events.on("immediate-click",t=>this._manipulatorClick(e,t))],e),this.manipulators.add(e),e}_createTargetManipulatorDragPipeline(e){return R(e,(t,n,i,a)=>{const r=this._ensureSnappingManager(),{snappingStep:s,cancelSnapping:o}=x({snappingManager:r,snappingContext:this._getSnappingContext(a),updatingHandles:this._updatingHandles});n.next(this._screenToSnappingDragEvent()).next(...s).next(this._updateIntersectionFromSnappedPoint()).next(this._updateTargetDragStep(e)).next(()=>this._updateLaserLineRenderer()),i.next(W(e.metadata.target)).next(o).next(()=>this._updateLaserLineRenderer())})}_createObserverManipulatorDragPipeline(e){return R(e,(e,t,n,i)=>{const a=this._ensureSnappingManager(),{snappingStep:r,cancelSnapping:s}=x({snappingManager:a,snappingContext:this._getSnappingContext(i),updatingHandles:this._updatingHandles});t.next(this._screenToSnappingDragEvent()).next(...r).next(this._updateIntersectionFromSnappedPoint()).next(this._updateObserverDragStep()).next(()=>this._updateLaserLineRenderer()),n.next(this._cancelObserverDragStep()).next(s).next(()=>this._updateLaserLineRenderer())})}_screenToSnappingDragEvent(){let e=null;return t=>{"start"===t.action&&(e=this._intersector.getScreenPointIntersection(t.screenStart));const n=this._intersector.getScreenPointIntersection(t.screenEnd);return null==e?.mapPoint||null==n?.mapPoint?null:{...t,intersection:n,mapStart:v(e.mapPoint),mapEnd:v(n.mapPoint)}}}_updateIntersectionFromSnappedPoint(){return e=>(e.intersection=this._resolveIntersection(e.intersection,e.mapEnd),e)}_updateObserverDragStep(){return e=>(this.analysis.observer??=new t,this._updateFromIntersection(this.analysis.observer,e.intersection,e.mapEnd),e)}_cancelObserverDragStep(){const e=null!=this.analysis.observer?.position?this.analysis.observer.clone():null;return t=>(this.analysis.observer=e,t)}_updateTargetDragStep(e){return t=>(this._updateFromIntersection(e.metadata.target,t.intersection,t.mapEnd),e.elevationAlignedLocation=t.mapEnd,t)}_manipulatorGrabChanged(e,t){switch(t.action){case"start":this._grabbedManipulator=e;break;case"end":this._grabbedManipulator===e&&(this._grabbedManipulator=null)}}_laserLineRendererDependencies(){return{laserlineVisualElement:this._laserlineVisualElement,grabbedManipulator:this._grabbedManipulator,shouldRenderTracker:this._shouldRenderTracker,observerPosition:null!=this.analysis.observer?this.analysis.observer.position:null,visible:this.visible}}_updateLaserLineRenderer(e=this._laserLineRendererDependencies()){const{laserlineVisualElement:t,grabbedManipulator:n,shouldRenderTracker:i,observerPosition:a,visible:r}=e;if(null==t)return;const s=null!=n?n:i&&null!=a?this._targetTrackerManipulator:null;null!=s&&r?(t.visible=!0,t.heightManifoldTarget=s.renderLocation,s!==this._observerManipulator?t.lineVerticalPlaneSegment=_(this._observerManipulator.renderLocation,s.renderLocation,N):t.lineVerticalPlaneSegment=null):(t.visible=!1,t.heightManifoldTarget=null,t.lineVerticalPlaneSegment=null)}_createLaserLine(){this._removeLaserLine();const{glowWidth:e,innerWidth:t}=w;this._laserlineVisualElement=new O({view:this.view,attached:!0,visible:this.visible,style:{glowWidth:e,innerWidth:t},isDecoration:!0})}_removeLaserLine(){null!=this._laserlineVisualElement&&(this._laserlineVisualElement.destroy(),this._laserlineVisualElement=null)}_updateLaserLineStyle(e,t,n){const i=this._laserlineVisualElement;if(null==i)return;const a=i.style;i.style={...a,glowColor:e.toUnitRGB(),innerColor:t.toUnitRGB(),globalAlpha:n}}_onObserverLocationChange(e){null!=e?(this._observerManipulator.metadata.intersection=null,this._observerManipulator.available=!0,this._observerManipulator.elevationAlignedLocation=e):this._observerManipulator.available=!1}_onTargetLocationChange(e,t){null!=e?(t.elevationAlignedLocation=e,t!==this._targetTrackerManipulator&&(t.available=!0)):t.available=!1}_addPointFromClickEvent(e,i){const a=this._getPlacementLocation(e,i);if(null==a)return;const{intersection:r,point:s}=a;if(null!=this.analysis.observer?.position){this._clearCursorTracker();const e=new n;this._updateFromIntersection(e,r,s),this.analysis.targets.add(e)}else{const e=new t;this._updateFromIntersection(e,r,s),this.analysis.observer=e}}_clickHandler(e){this.active&&e.button!==I.Right&&(this._addPointFromClickEvent(U(e),e.pointerType),e.stopPropagation())}_doubleClickHandler(e){this.active&&e.button!==I.Right&&(this.stop(),e.stopPropagation())}_pointerMoveHandler(e){if(this.hasGrabbedManipulators)return;if(this._latestPointerMovePointerType=e.pointerType,this._updateLaserLineRenderer(),!this._showTracker)return void this._clearCursorTracker();const t=U(e),n=this._intersector.getScreenPointIntersection(t),i=n?.mapPoint;null!=n?.mapPoint&&null!=i?(this._trackerIntersection=n,this._trackerMapPoint=i,this._updateHoverSnapping(i,e.pointerType)):this._clearCursorTracker()}_getPlacementLocation(e,t){const n=this._intersector.getScreenPointIntersection(e);if(null==n?.mapPoint)return null;const i=n.mapPoint;if(!this._shouldUsePlacementSnapping(t))return{intersection:n,point:i};const a=n.mapPoint,r=this._trackerMapPoint?.equals(a)?this._snappingOperation.stagedPoint:null,s=m(r??this._snappingOperation.update({point:a},this._ensureSnappingManager(),this._getSnappingContext(t)));return{intersection:this._resolveIntersection(n,s),point:s}}_shouldUsePlacementSnapping(e){return"touch"!==e}_updateHoverSnapping(e,t){const n=this._getSnappingContext(t);this._updatingHandles.consumePromise(o(this._snappingOperation.snap({point:e},this._ensureSnappingManager(),n)))}_updateFromIntersection(e,t,n=t.mapPoint){if(null==n)return e.position=null,e.elevationInfo=null,void(e.feature=null);const i=!t.mapPoint?.equals(n);switch(t.context?.type){case"graphic":{const n=t.context.graphic,i=y(n);"on-the-ground"===i.mode&&(i.mode="relative-to-ground",i.offset=0),e.elevationInfo=new M(i),e.feature=n}break;case"gaussian-splat":return e.elevationInfo=null,e.feature=null,void(e.position=T(this.view,n,e.elevationInfo,t.normal));case"ground":e.elevationInfo=new M({mode:"on-the-ground"}),e.feature=null;break;default:e.elevationInfo=null,e.feature=null}i&&(e.elevationInfo=null);const a=n.clone();a.z=f(this.view,a,b,e.elevationInfo),e.position=a}_manipulatorClick(e,t){if("observer"===e.metadata.type||e.grabbing||e.dragging||t.button!==I.Right||this.analysis.targets.length<=1)return;const{target:n}=e.metadata;this.analysis.targets.remove(n),t.stopPropagation()}get testInfo(){}_resetSnappingState(){this._snappingManager?.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_resolveIntersection(e,t){return e.mapPoint?.equals(t)?e:this._intersector.getMapPointIntersection(t)??e}};function W(e){const t=e.position?.clone();return n=>(e.position=t,n)}function B(e,t){const{isValid:n,isTargetVisible:i}=t.computationResult;e.state=n?i?16:32:64}function q(e){const{isValid:t,isTargetVisible:n}=e.computationResult;return{isValid:t,isTargetVisible:n}}e([c({constructOnly:!0})],z.prototype,"view",void 0),e([c({constructOnly:!0})],z.prototype,"analysis",void 0),e([c()],z.prototype,"_creationMode",void 0),e([c({readOnly:!0})],z.prototype,"state",null),e([c({readOnly:!0})],z.prototype,"cursor",null),e([c()],z.prototype,"removeIncompleteOnCancel",void 0),e([c({readOnly:!0})],z.prototype,"updating",null),e([c({constructOnly:!0})],z.prototype,"analysisViewData",void 0),e([c({readOnly:!0})],z.prototype,"_showTracker",null),e([c()],z.prototype,"_latestPointerMovePointerType",void 0),e([c()],z.prototype,"_shouldRenderTracker",null),e([c()],z.prototype,"_laserlineVisualElement",void 0),e([c()],z.prototype,"_grabbedManipulator",void 0),e([c()],z.prototype,"_trackerIntersection",void 0),e([c()],z.prototype,"_trackerMapPoint",void 0),e([c()],z.prototype,"_snappingManagerResult",void 0),z=e([h("esri.views.3d.analysis.LineOfSight.LineOfSightTool")],z);const N=g();export{z as LineOfSightTool};
2
+ import{__decorate as e}from"tslib";import t from"../../../../analysis/LineOfSightAnalysisObserver.js";import n from"../../../../analysis/LineOfSightAnalysisTarget.js";import i from"../../../../core/Handles.js";import"../../../../core/has.js";import a from"../../../../core/Logger.js";import{destroyMaybe as r}from"../../../../core/maybe.js";import{memoize as s}from"../../../../core/memoize.js";import{ignoreAbortErrors as o}from"../../../../core/promiseUtils.js";import{when as l,syncAndInitial as p,initial as u}from"../../../../core/reactiveUtils.js";import{property as c,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as d}from"../../../../core/support/UpdatingHandles.js";import{create as g,fromPoints as _}from"../../../../geometry/support/lineSegment.js";import{hydrateGeometry as m,clonePoint as v}from"../../../../layers/graphics/hydratedFeatures.js";import{absoluteHeightElevationInfo as b,getGraphicEffectiveElevationInfo as y,getConvertedElevation as f}from"../../../../support/elevationInfoUtils.js";import M from"../../../../symbols/support/ElevationInfo.js";import{getGaussianSplatOffsetPosition as T}from"./LineOfSightAuthoringUtils.js";import{getLaserLineColors as P,laserLineConfiguration as w}from"./LineOfSightConfiguration.js";import{LineOfSightTargetManipulator as S,LineOfSightObserverManipulator as L,LineOfSightTargetManipulatorState as k}from"./LineOfSightManipulators.js";import{LineOfSightRayIntersector as C}from"./LineOfSightRayIntersector.js";import{SnappingVisualizer3D as O}from"../../interactive/SnappingVisualizer3D.js";import{LaserlineVisualElement as I}from"../../interactive/visualElements/LaserlineVisualElement.js";import{mouseButtons as H}from"../../../input/mouseButtons.js";import{AnalysisToolBase as j}from"../../../interactive/AnalysisToolBase.js";import{createCoordinateHelper as R}from"../../../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as E}from"../../../interactive/dragEventPipeline.js";import{EditGeometry as V}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as D}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as x}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as G}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as A}from"../../../interactive/snapping/SnappingManagerPool.js";import{SnappingOperation as F}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as U}from"../../../interactive/snapping/snappingUtils.js";import{createScreenPointFromEvent as z}from"../../../support/screenUtils.js";let W=class extends j{constructor(e){super(e),this._creationMode=!1,this.removeIncompleteOnCancel=!1,this.analysisViewData=null,this._latestPointerMovePointerType=null,this._laserlineVisualElement=null,this._grabbedManipulator=null,this._trackerIntersection=null,this._trackerMapPoint=null,this._snappingManagerResult=null,this._analysisHandles=new i,this._updatingHandles=new d,this._manipulatorHandles=new i,this._targetTrackerManipulator=null,this._getSnappingContext=s(e=>new x({elevationInfo:b,pointer:e,editGeometryOperations:new D(new V("point",R(!0,!1,this.view.spatialReference)),this.view.state.viewingMode),visualizer:new O}))}initialize(){this._intersector=new C({view:this.view}),this._snappingOperation=new F({view:this.view}),U(this,()=>{const e=this.view.inputManager.latestPointerInfo?.type??"mouse",t=this._getSnappingContext(e);this._updatingHandles.consumePromise(o(this._snappingOperation.snapAgainNearPreviousMapPoint(this._ensureSnappingManager(),t)))}),this.addHandles(l(()=>"created"===this.state,()=>this.finishToolCreation(),p)),this._observerManipulator=this._createObserverManipulator(),this._createLaserLine(),this.addHandles([this._updatingHandles.add(()=>this.analysisViewData?.elevationAlignedObserver,e=>this._onObserverLocationChange(e),u),this._updatingHandles.add(()=>P(this.view.effectiveTheme),({glowColor:e,innerColor:t,globalAlpha:n})=>this._updateLaserLineStyle(e,t,n),u),this._updatingHandles.add(()=>this._laserLineRendererDependencies(),e=>this._updateLaserLineRenderer(e)),this._connectComputations(),this._updatingHandles.addWhen(()=>!this._shouldRenderTracker,()=>this._clearCursorTracker(),u),this._updatingHandles.add(()=>({active:this.active,hasGrabbedManipulators:this.hasGrabbedManipulators}),({active:e,hasGrabbedManipulators:t})=>{this._creationMode=!!e&&(this._creationMode||!t)},u),this._updatingHandles.add(()=>({observerPosition:this.analysis.observer?.position,showTracker:this._showTracker,hasGrabbedManipulators:this.hasGrabbedManipulators,stagedPoint:this._snappingOperation.stagedPoint,trackerIntersection:this._trackerIntersection}),({observerPosition:e,showTracker:t,hasGrabbedManipulators:i,stagedPoint:a,trackerIntersection:r})=>{if(null==e||!t||i||null==r?.mapPoint)return;this.analysisViewData.cursorTarget??=new n;const s=null!=a?m(a):r.mapPoint,o=this._resolveIntersection(r,s);this._updateFromIntersection(this.analysisViewData.cursorTarget,o,s),this._updateLaserLineRenderer()},u)])}destroy(){this._updatingHandles=r(this._updatingHandles),this._manipulatorHandles=r(this._manipulatorHandles),this._analysisHandles=r(this._analysisHandles),this._observerManipulator=null,this._clearCursorTracker(),this._snappingOperation=r(this._snappingOperation),this._removeLaserLine(),this._intersector=null,this._set("analysis",null)}get state(){return this.active?!this.hasGrabbedManipulators||this._creationMode?"creating":"created":null!=this.analysis.observer?.position?"created":"ready"}get cursor(){return this.active&&this._showTracker?"crosshair":null}get updating(){return!!this.analysisViewData?.updating||!!this._snappingManager?.updating}get _showTracker(){return this.active&&"mouse"===this._latestPointerMovePointerType}get _shouldRenderTracker(){return this._showTracker&&null!=this.analysis.observer?.position&&!this.hasGrabbedManipulators}get _snappingManager(){return this._snappingManagerResult?.snappingManager}get snappingOptions(){return this._snappingManager?.options}continue(){this.view.activeTool=this}stop(){this.view.activeTool=null}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickHandler(e)}onShow(){}onHide(){}onDeactivate(){this._clearCursorTracker()}_connectComputations(){return this._updatingHandles.addOnCollectionChange(()=>this.analysisViewData.computations,e=>this._onComputationsCollectionChange(e),{initial:!0,final:!0})}_onComputationsCollectionChange({added:e,removed:t}){for(const n of t)this._disconnectComputation(n);for(const n of e)this._connectComputation(n)}_connectComputation(e){if(this.destroyed)return void a.getLogger(this).warn("Attempting to connect an analysis to a destroyed LineOfSight tool. Ignoring.");const t=this._analysisHandles;if(t.has(e))return;const n=this._createTargetManipulator(e.target);null==this._targetTrackerManipulator&&n.metadata.target===this.analysisViewData.cursorTarget&&(this._targetTrackerManipulator=n,this._targetTrackerManipulator.available=!1,this._targetTrackerManipulator.interactive=!1,this._updateLaserLineRenderer()),t.add([this._updatingHandles.add(()=>N(e),()=>q(n,e),u),this._updatingHandles.add(()=>e.elevationAlignedTargetLocation,e=>this._onTargetLocationChange(e,n),u)],e)}_disconnectComputation(e){if(this.destroyed)return void a.getLogger(this).warn("Attempting to disconnect an analysis from a destroyed LineOfSight tool. Ignoring.");this._analysisHandles.remove(e);const t=this._getTargetManipulator(e.target);null!=t&&(this.manipulators.remove(t),this._manipulatorHandles.remove(t),null!=this._targetTrackerManipulator&&this._targetTrackerManipulator===t&&(this._targetTrackerManipulator=null))}_clearCursorTracker(){this._trackerIntersection=null,this._trackerMapPoint=null,this._resetSnappingState(),this.analysisViewData.cursorTarget=r(this.analysisViewData.cursorTarget)}_ensureSnappingManager(){if(null==this._snappingManagerResult){const e=A(this.view);this._snappingManagerResult=e,this.addHandles(e)}return this._snappingManagerResult.snappingManager}_createTargetManipulator(e){const t={deleting:!1,target:e,type:"target"},n=new S(this.view,t);return this._manipulatorHandles.add([this._createTargetManipulatorDragPipeline(n),n.events.on("grab-changed",e=>this._manipulatorGrabChanged(n,e)),n.events.on("immediate-click",e=>this._manipulatorClick(n,e))],n),this.manipulators.add(n),null!=e.position?n.elevationAlignedLocation=e.position:n.available=!1,n}_getTargetManipulator(e){let t=null;return this.manipulators.forEach(n=>{const i=n.manipulator;null==t&&"target"===i.metadata.type&&i.metadata.target===e&&(t=i)}),t}_createObserverManipulator(){const e=new L(this.view,{deleting:!1,type:"observer",intersection:null});return this._manipulatorHandles.add([this._createObserverManipulatorDragPipeline(e),e.events.on("grab-changed",t=>this._manipulatorGrabChanged(e,t)),e.events.on("immediate-click",t=>this._manipulatorClick(e,t))],e),this.manipulators.add(e),e}_createTargetManipulatorDragPipeline(e){return E(e,(t,n,i,a)=>{const r=this._ensureSnappingManager(),{snappingStep:s,cancelSnapping:o}=G({snappingManager:r,snappingContext:this._getSnappingContext(a),updatingHandles:this._updatingHandles});n.next(this._screenToSnappingDragEvent()).next(...s).next(this._updateIntersectionFromSnappedPoint()).next(this._updateTargetDragStep(e)).next(()=>this._updateLaserLineRenderer()),i.next(B(e.metadata.target)).next(o).next(()=>this._updateLaserLineRenderer())})}_createObserverManipulatorDragPipeline(e){return E(e,(e,t,n,i)=>{const a=this._ensureSnappingManager(),{snappingStep:r,cancelSnapping:s}=G({snappingManager:a,snappingContext:this._getSnappingContext(i),updatingHandles:this._updatingHandles});t.next(this._screenToSnappingDragEvent()).next(...r).next(this._updateIntersectionFromSnappedPoint()).next(this._updateObserverDragStep()).next(()=>this._updateLaserLineRenderer()),n.next(this._cancelObserverDragStep()).next(s).next(()=>this._updateLaserLineRenderer())})}_screenToSnappingDragEvent(){let e=null;return t=>{"start"===t.action&&(e=this._intersector.getScreenPointIntersection(t.screenStart));const n=this._intersector.getScreenPointIntersection(t.screenEnd);return null==e?.mapPoint||null==n?.mapPoint?null:{...t,intersection:n,mapStart:v(e.mapPoint),mapEnd:v(n.mapPoint)}}}_updateIntersectionFromSnappedPoint(){return e=>(e.intersection=this._resolveIntersection(e.intersection,e.mapEnd),e)}_updateObserverDragStep(){return e=>(this.analysis.observer??=new t,this._updateFromIntersection(this.analysis.observer,e.intersection,e.mapEnd),e)}_cancelObserverDragStep(){const e=null!=this.analysis.observer?.position?this.analysis.observer.clone():null;return t=>(this.analysis.observer=e,t)}_updateTargetDragStep(e){return t=>(this._updateFromIntersection(e.metadata.target,t.intersection,t.mapEnd),e.elevationAlignedLocation=t.mapEnd,t)}_manipulatorGrabChanged(e,t){switch(t.action){case"start":this._grabbedManipulator=e;break;case"end":this._grabbedManipulator===e&&(this._grabbedManipulator=null)}}_laserLineRendererDependencies(){return{laserlineVisualElement:this._laserlineVisualElement,grabbedManipulator:this._grabbedManipulator,shouldRenderTracker:this._shouldRenderTracker,observerPosition:null!=this.analysis.observer?this.analysis.observer.position:null,visible:this.visible}}_updateLaserLineRenderer(e=this._laserLineRendererDependencies()){const{laserlineVisualElement:t,grabbedManipulator:n,shouldRenderTracker:i,observerPosition:a,visible:r}=e;if(null==t)return;const s=null!=n?n:i&&null!=a?this._targetTrackerManipulator:null;null!=s&&r?(t.visible=!0,t.heightManifoldTarget=s.renderLocation,s!==this._observerManipulator?t.lineVerticalPlaneSegment=_(this._observerManipulator.renderLocation,s.renderLocation,J):t.lineVerticalPlaneSegment=null):(t.visible=!1,t.heightManifoldTarget=null,t.lineVerticalPlaneSegment=null)}_createLaserLine(){this._removeLaserLine();const{glowWidth:e,innerWidth:t}=w;this._laserlineVisualElement=new I({view:this.view,attached:!0,visible:this.visible,style:{glowWidth:e,innerWidth:t},isDecoration:!0})}_removeLaserLine(){null!=this._laserlineVisualElement&&(this._laserlineVisualElement.destroy(),this._laserlineVisualElement=null)}_updateLaserLineStyle(e,t,n){const i=this._laserlineVisualElement;if(null==i)return;const a=i.style;i.style={...a,glowColor:e.toUnitRGB(),innerColor:t.toUnitRGB(),globalAlpha:n}}_onObserverLocationChange(e){null!=e?(this._observerManipulator.metadata.intersection=null,this._observerManipulator.available=!0,this._observerManipulator.elevationAlignedLocation=e):this._observerManipulator.available=!1}_onTargetLocationChange(e,t){null!=e?(t.elevationAlignedLocation=e,t!==this._targetTrackerManipulator&&(t.available=!0)):t.available=!1}_addPointFromClickEvent(e,i){const a=this._getPlacementLocation(e,i);if(null==a)return;const{intersection:r,point:s}=a;if(null!=this.analysis.observer?.position){this._clearCursorTracker();const e=new n;this._updateFromIntersection(e,r,s),this.analysis.targets.add(e)}else{const e=new t;this._updateFromIntersection(e,r,s),this.analysis.observer=e}}_clickHandler(e){this.active&&e.button!==H.Right&&(this._addPointFromClickEvent(z(e),e.pointerType),e.stopPropagation())}_doubleClickHandler(e){this.active&&e.button!==H.Right&&(this.stop(),e.stopPropagation())}_pointerMoveHandler(e){if(this.hasGrabbedManipulators)return;if(this._latestPointerMovePointerType=e.pointerType,this._updateLaserLineRenderer(),!this._showTracker)return void this._clearCursorTracker();const t=z(e),n=this._intersector.getScreenPointIntersection(t),i=n?.mapPoint;null!=n?.mapPoint&&null!=i?(this._trackerIntersection=n,this._trackerMapPoint=i,this._updateHoverSnapping(i,e.pointerType)):this._clearCursorTracker()}_getPlacementLocation(e,t){const n=this._intersector.getScreenPointIntersection(e);if(null==n?.mapPoint)return null;const i=n.mapPoint;if(!this._shouldUsePlacementSnapping(t))return{intersection:n,point:i};const a=n.mapPoint,r=this._trackerMapPoint?.equals(a)?this._snappingOperation.stagedPoint:null,s=m(r??this._snappingOperation.update({point:a},this._ensureSnappingManager(),this._getSnappingContext(t)));return{intersection:this._resolveIntersection(n,s),point:s}}_shouldUsePlacementSnapping(e){return"touch"!==e}_updateHoverSnapping(e,t){const n=this._getSnappingContext(t);this._updatingHandles.consumePromise(o(this._snappingOperation.snap({point:e},this._ensureSnappingManager(),n)))}_updateFromIntersection(e,t,n=t.mapPoint){if(null==n)return e.position=null,e.elevationInfo=null,void(e.feature=null);const i=!t.mapPoint?.equals(n);switch(t.context?.type){case"graphic":{const n=t.context.graphic,i=y(n);"on-the-ground"===i.mode&&(i.mode="relative-to-ground",i.offset=0),e.elevationInfo=new M(i),e.feature=n}break;case"gaussian-splat":return e.elevationInfo=null,e.feature=null,void(e.position=T(this.view,n,e.elevationInfo,t.normal));case"ground":e.elevationInfo=new M({mode:"on-the-ground"}),e.feature=null;break;default:e.elevationInfo=null,e.feature=null}i&&(e.elevationInfo=null);const a=n.clone();a.z=f(this.view,a,b,e.elevationInfo),e.position=a}_manipulatorClick(e,t){if("observer"===e.metadata.type||e.grabbing||e.dragging||t.button!==H.Right||this.analysis.targets.length<=1)return;const{target:n}=e.metadata;this.analysis.targets.remove(n),t.stopPropagation()}get testInfo(){}_resetSnappingState(){this._snappingManager?.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_resolveIntersection(e,t){return e.mapPoint?.equals(t)?e:this._intersector.getMapPointIntersection(t)??e}};function B(e){const t=e.position?.clone();return n=>(e.position=t,n)}function q(e,t){const{isValid:n,isTargetVisible:i}=t.computationResult;e.state=n?i?k.visible:k.occluded:k.undefined}function N(e){const{isValid:t,isTargetVisible:n}=e.computationResult;return{isValid:t,isTargetVisible:n}}e([c({constructOnly:!0})],W.prototype,"view",void 0),e([c({constructOnly:!0})],W.prototype,"analysis",void 0),e([c()],W.prototype,"_creationMode",void 0),e([c({readOnly:!0})],W.prototype,"state",null),e([c({readOnly:!0})],W.prototype,"cursor",null),e([c()],W.prototype,"removeIncompleteOnCancel",void 0),e([c({readOnly:!0})],W.prototype,"updating",null),e([c({constructOnly:!0})],W.prototype,"analysisViewData",void 0),e([c({readOnly:!0})],W.prototype,"_showTracker",null),e([c()],W.prototype,"_latestPointerMovePointerType",void 0),e([c()],W.prototype,"_shouldRenderTracker",null),e([c()],W.prototype,"_laserlineVisualElement",void 0),e([c()],W.prototype,"_grabbedManipulator",void 0),e([c()],W.prototype,"_trackerIntersection",void 0),e([c()],W.prototype,"_trackerMapPoint",void 0),e([c()],W.prototype,"_snappingManagerResult",void 0),W=e([h("esri.views.3d.analysis.LineOfSight.LineOfSightTool")],W);const J=g();export{W as LineOfSightTool};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import"../../../../core/has.js";import{onAbort as e}from"../../../../core/promiseUtils.js";import{watch as o,syncAndInitial as i,on as s}from"../../../../core/reactiveUtils.js";import{property as a,subclass as r}from"../../../../core/accessorSupport/decorators.js";import{LineOfSightAuthoringStore as n}from"./LineOfSightAuthoringStore.js";import{LineOfSightPlacementTool as l}from"./LineOfSightPlacementTool.js";import{ExclusiveOperationManager as c}from"../../../analysis/ExclusiveOperationManager.js";import{AnalysisToolBase as p}from"../../../interactive/AnalysisToolBase.js";const h={ready:"ready",created:"created"};let m=class extends p{constructor(t){super(t),this._authoringStore=new n,this._operationManager=new c,this.analysisViewData=null,this.removeIncompleteOnCancel=!1,this._placementTool=new l({...t,authoringStore:this._authoringStore,parent:this})}get active(){return this._placementTool.active}get state(){return this._placementTool.active?this._placementTool.state:null!=this.analysis.observer?.position?h.created:h.ready}get cursor(){return this._placementTool.cursor}get updating(){return this._placementTool.updating}initialize(){this.view.tools.add(this._placementTool),this.addHandles(o(()=>this.editable,t=>{this.analysisViewData.editable=t},i))}destroy(){this._operationManager.destroy(),this._placementTool.stop(),this.view.tools.remove(this._placementTool),this._placementTool.destroy()}place(t){return this.analysisViewData.interactive=!0,this._operationManager.start("place",async(t,a)=>{const r=this.analysis.clone();let n=!1,l=!1;const c=()=>{l||(l=!0,this.stop(),a.aborted||!this.analysis.valid||this.analysis.equals(r)?t.reject():t.resolve({}))};t.handles.push(e(a,()=>this.stop()),s(()=>this._placementTool,"cancel",()=>c()),o(()=>this._placementTool.active,t=>{t?n=!0:n&&c()},i)),this.resetCreated(),this.continue()},t)}activate(){this.view.focus(),this.continue()}deactivate(){this.onDeactivate()}continue(){this._placementTool.continue()}stop(){this._placementTool.stop(),this.view.activeTool===this&&(this.view.activeTool=null)}resetCreated(){this._placementTool.resetCreated()}get testInfo(){}};t([a({constructOnly:!0})],m.prototype,"view",void 0),t([a({constructOnly:!0})],m.prototype,"analysis",void 0),t([a({constructOnly:!0})],m.prototype,"analysisViewData",void 0),t([a()],m.prototype,"active",null),t([a()],m.prototype,"state",null),t([a()],m.prototype,"cursor",null),t([a()],m.prototype,"updating",null),t([a()],m.prototype,"removeIncompleteOnCancel",void 0),m=t([r("esri.views.3d.analysis.LineOfSight.LineOfSightTool2")],m);export{m as LineOfSightTool2};
2
+ import{__decorate as t}from"tslib";import"../../../../core/has.js";import{onAbort as e}from"../../../../core/promiseUtils.js";import{watch as i,syncAndInitial as s,on as o}from"../../../../core/reactiveUtils.js";import{property as a,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{LineOfSightPlacementTool as l}from"./LineOfSightPlacementTool.js";import{LineOfSightRayIntersector as r}from"./LineOfSightRayIntersector.js";import{LineOfSightReshapeTool3D as h}from"./LineOfSightReshapeTool3D.js";import{ExclusiveOperationManager as c}from"../../../analysis/ExclusiveOperationManager.js";import{ViewEventPriorities as p}from"../../../input/InputManager.js";import{AnalysisToolBase as v}from"../../../interactive/AnalysisToolBase.js";import{deactivevateTool as d}from"../../../interactive/interactiveToolUtils.js";import{sketchKeys as y}from"../../../interactive/keybindings.js";const _={ready:"ready",created:"created"};let m=class extends v{constructor(t){super(t),this._operationManager=new c,this._syncingActiveTool=!1,this.analysisViewData=null,this.removeIncompleteOnCancel=!1,this._reshapeIntersector=new r({view:t.view}),this._reshapeTool=new h({analysis:t.analysis,analysisViewData:t.analysisViewData,intersector:this._reshapeIntersector,view:t.view}),this._placementTool=new l({...t,parent:this})}get active(){return this._reshapeTool.active||this._placementTool.active}get canRedo(){return this._activeUndoRedoComponent?.canRedo??!1}get canUndo(){return this._activeUndoRedoComponent?.canUndo??!1}get state(){return this._placementTool.active?this._placementTool.state:null!=this.analysis.observer?.position?_.created:_.ready}get cursor(){return this._placementTool.cursor}get updating(){return this._reshapeTool.updating||this._placementTool.updating}initialize(){this.view.tools.add(this._placementTool),this.addHandles([this.view.on("key-down",t=>this._onKeyDown(t),p.WIDGET),i(()=>({editable:this.editable,interactive:this.analysisViewData.interactive,placementActive:this._placementTool.active,valid:this.analysis.valid,visible:this.visible}),()=>this._syncActiveTool(),s),i(()=>this.state===_.created,t=>{t?this.finishToolCreation():this._set("created",!1)},s),i(()=>this.analysisViewData.visible,t=>{this.visible=t},s),i(()=>{const{analysis:t}=this,{observer:e,targets:i}=t;return{observer:e,observerPosition:e?.position,observerElevationInfo:e?.elevationInfo,observerFeature:e?.feature,targets:i.toArray().map(t=>[t,t.position,t.elevationInfo,t.feature])}},()=>this._syncItemsFromAnalysis(),s),i(()=>this.editable,t=>{this.analysisViewData.editable=t},s)])}destroy(){this._operationManager.destroy(),this._reshapeTool.stop(),this._placementTool.stop(),this.view.tools.remove(this._placementTool),this._reshapeTool.destroy(),this._placementTool.destroy(),this._reshapeIntersector.destroy()}place(t){return this.analysisViewData.interactive=!0,this._operationManager.start("place",async(t,a)=>{const n=this.analysis.clone();let l=!1,r=!1;const h=()=>{r||(r=!0,this.stop(),a.aborted||!this.analysis.valid||this.analysis.equals(n)?t.reject():t.resolve({}))};t.handles.push(e(a,()=>this.stop()),o(()=>this._placementTool,"cancel",()=>h()),i(()=>this._placementTool.active,t=>{t?l=!0:l&&h()},s)),this.resetCreated(),this.continue()},t)}activate(){this.view.focus(),this.analysisViewData.interactive=!0,this._syncActiveTool(),this.analysis.valid||this._placementTool.active||this.continue()}deactivate(){this.onDeactivate()}continue(){this.analysisViewData.interactive=!0,this._placementTool.continue()}stop(){this._placementTool.stop(),this._placementTool.placementElevationInfo=null,this._syncActiveTool()}redo(){this._activeUndoRedoComponent?.redo()}resetCreated(){this._placementTool.resetCreated()}undo(){this._activeUndoRedoComponent?.undo()}get testInfo(){}onEditableChange(){this.analysisViewData.editable=this.editable,this._reshapeTool.setEditableFlag(1,!0),this._reshapeTool.setEditableFlag(0,this.editable),this._placementTool.setEditableFlag(1,!0),this._placementTool.setEditableFlag(0,this.editable),this._syncActiveTool()}_hideReshapeTool(){this._reshapeTool.suspend(),this._reshapeTool.visible=!1}_onKeyDown(t){const e=t.key;e===y.undo&&this.canUndo?(t.stopPropagation(),this.undo()):e===y.redo&&this.canRedo&&(t.stopPropagation(),this.redo())}get _activeUndoRedoComponent(){return this.analysisViewData.interactive?this._placementTool.active||!this._canActivateReshapeTool?this._placementTool.active?this._placementTool:null:this._reshapeTool:null}get _canActivateReshapeTool(){return this.visible&&this.editable&&this.analysis.valid&&null!=this.analysis.observer?.position}_syncActiveTool(){if(!this._syncingActiveTool){this._syncingActiveTool=!0;try{const t=this.analysisViewData.interactive,e=this._canActivateReshapeTool;if(this._placementTool.visible=this.visible&&t,!t)return this._placementTool.stop(),this._hideReshapeTool(),this.analysisViewData.cursorTarget=null,void d(this.view,this);if(this._placementTool.active||!e)return this._hideReshapeTool(),void d(this.view,this);if(this._reshapeTool.visible=!0,this.analysisViewData.cursorTarget=null,!this._reshapeTool.active){const t=this.analysis.targets.at(-1);null!=t&&this._reshapeTool.applySelection({type:"target",target:t})}d(this.view,this)}finally{this._syncingActiveTool=!1}}}_syncItemsFromAnalysis(){this._syncActiveTool()}};t([a({constructOnly:!0})],m.prototype,"view",void 0),t([a({constructOnly:!0})],m.prototype,"analysis",void 0),t([a({constructOnly:!0})],m.prototype,"analysisViewData",void 0),t([a()],m.prototype,"active",null),t([a()],m.prototype,"canRedo",null),t([a()],m.prototype,"canUndo",null),t([a()],m.prototype,"state",null),t([a()],m.prototype,"cursor",null),t([a()],m.prototype,"updating",null),t([a()],m.prototype,"removeIncompleteOnCancel",void 0),t([a()],m.prototype,"_canActivateReshapeTool",null),m=t([n("esri.views.3d.analysis.LineOfSight.LineOfSightTool2")],m);export{m as LineOfSightTool2};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as n}from"tslib";import e from"../../../../core/Accessor.js";import{property as t,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as a}from"../../../../core/support/UpdatingHandles.js";import{absoluteHeightElevationInfo as p}from"../../../../support/elevationInfoUtils.js";import{SnappingVisualizer3D as r}from"../../interactive/SnappingVisualizer3D.js";import{SnappingContext as s}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as o}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as g}from"../../../interactive/snapping/SnappingManagerPool.js";let l=class extends e{constructor(n){super(n),this._updatingHandles=new a,this._snappingManagerResult=null}get updating(){return this._updatingHandles.updating||!!this._snappingManager?.updating}get _snappingManager(){return this._snappingManagerResult?.snappingManager}destroy(){this._updatingHandles.destroy()}createObserverMoveSnappingPipeline(n,e,t){if(0!==n)return null;const i=new s({elevationInfo:p,pointer:t,editGeometryOperations:e,visualizer:new r});return o({snappingContext:i,snappingManager:this._ensureSnappingManager(),updatingHandles:this._updatingHandles})}_ensureSnappingManager(){if(null==this._snappingManagerResult){const n=g(this.view);this._snappingManagerResult=n,this.addHandles(n)}return this._snappingManagerResult.snappingManager}};n([t({constructOnly:!0})],l.prototype,"view",void 0),n([t()],l.prototype,"updating",null),n([t()],l.prototype,"_snappingManager",null),n([t()],l.prototype,"_snappingManagerResult",void 0),l=n([i("esri.views.3d.analysis.Viewshed.ViewshedSnappingController")],l);export{l as ViewshedSnappingController};
2
+ import{__decorate as n}from"tslib";import e from"../../../../core/Accessor.js";import{property as t,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as a}from"../../../../core/support/UpdatingHandles.js";import{absoluteHeightElevationInfo as p}from"../../../../support/elevationInfoUtils.js";import{SnappingVisualizer3D as r}from"../../interactive/SnappingVisualizer3D.js";import{SnappingContext as s}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as o}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as g}from"../../../interactive/snapping/SnappingManagerPool.js";let l=class extends e{constructor(n){super(n),this._updatingHandles=new a,this._snappingManagerResult=null}get updating(){return this._updatingHandles.updating||!!this._snappingManager?.updating}get _snappingManager(){return this._snappingManagerResult?.snappingManager}destroy(){this._updatingHandles.destroy()}createObserverMoveSnappingPipeline(n,e,t){if(0!==n)return null;const i=new s({elevationInfo:p,pointer:t,editGeometryOperations:e,visualizer:new r});return o({snappingContext:i,snappingManager:this._ensureSnappingManager(),updatingHandles:this._updatingHandles,useZ:!1})}_ensureSnappingManager(){if(null==this._snappingManagerResult){const n=g(this.view);this._snappingManagerResult=n,this.addHandles(n)}return this._snappingManagerResult.snappingManager}};n([t({constructOnly:!0})],l.prototype,"view",void 0),n([t()],l.prototype,"updating",null),n([t()],l.prototype,"_snappingManager",null),n([t()],l.prototype,"_snappingManagerResult",void 0),l=n([i("esri.views.3d.analysis.Viewshed.ViewshedSnappingController")],l);export{l as ViewshedSnappingController};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import i from"../../../../core/Accessor.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{createTask as a}from"../../../../core/asyncUtils.js";import{cyclicalDegrees as n,Cyclical as o}from"../../../../core/Cyclical.js";import{handlesGroup as r}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{deg2rad as s}from"../../../../core/mathUtils.js";import{abortMaybe as l,destroyMaybe as p}from"../../../../core/maybe.js";import{after as h,throwIfAborted as u}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as c,initial as v}from"../../../../core/reactiveUtils.js";import{property as g,subclass as m}from"../../../../core/accessorSupport/decorators.js";import{sub as f,len as b,dot as M}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as _}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{tryProject as w}from"../../../../geometry/projectionUtils.js";import{viewingModeFromString as O}from"../../../ViewingMode.js";import{viewshedToolManipulatorConfiguration as V}from"./ViewshedConfiguration.js";import{ViewshedFieldOfViewManipulation as y,isSideHorizontal as T,flipSide as D}from"./ViewshedFieldOfViewManipulation.js";import{ViewshedScaleOrientManipulation as H}from"./ViewshedScaleOrientManipulation.js";import{ViewshedObserverManipulator as S}from"./viewshedToolManipulatorUtils.js";import{discRadiusSmall as C}from"../../interactive/editingTools/manipulations/config.js";import{MoveManipulation as j}from"../../interactive/editingTools/manipulations/MoveManipulation.js";import{resetProperties as F,sceneSnappingAtLocation as x,dragManipulatedObject as A}from"../../../interactive/dragEventPipeline.js";import{EditGeometryOperations as P}from"../../../interactive/editGeometry/EditGeometryOperations.js";const k=Symbol("dragHandles"),E=Symbol("hideManipulators"),z=Symbol("hideFoVManipulators"),U=Symbol("hideObserverManipulator");let R=class extends i{constructor(e){super(e),this._moveManipulation=null,this._observerManipulator=null,this._fieldOfViewManipulation=null,this._scaleOrientManipulation=null,this._forceHoveringTask=null,this._forceHoveringTestPromise=null,this._grabbing=!1,this.viewshedComputedData=null}initialize(){this._moveManipulation=this._createMoveManipulation(),this._fieldOfViewManipulation=new y({view:this.view,tool:this.parentTool}),this._scaleOrientManipulation=new H({view:this.view,tool:this.parentTool}),this._observerManipulator=new S(this.view,this.parentTool),this.addHandles([d(()=>this.elevationAlignedObserverRenderSpace,e=>{null!=e&&(this._moveManipulation.renderLocation=e,this._observerManipulator.renderLocation=e)},c),d(()=>this.viewshedComputedData?.heading,e=>{e&&(this._moveManipulation.angle=s(90-e))},v),d(()=>{const{viewshedComputedData:e}=this;return{viewshedComputedData:e,observer:this.elevationAlignedObserverRenderSpace}},({viewshedComputedData:e,observer:i},a)=>{this._grabbing&&i!==a?.observer||(this.removeHandles(k),e?.valid&&this.addHandles([this._buildObserverDragPipeline(e),this._buildFOVDragPipeline(e),this._buildScaleOrientDragPipeline(e)].filter(t),k))},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,target:e.elevationAlignedTargetRenderSpace,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorsTransform(e.viewshedCompData)},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView,tilt:e.tilt}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorVisuals(e.viewshedCompData)},v),d(()=>{const e=this.analysisViewData.visible&&(this.viewshedComputedData?.valid??!1),i=this.parentTool.selectedViewshedComputedData===this.viewshedComputedData,{creating:t,isPlacingTarget:a}=this.parentTool;return{fovManipulationAvailable:e&&!a,nonFOVManipulationAvailable:e&&(!t||i)}},({fovManipulationAvailable:e,nonFOVManipulationAvailable:i})=>{this._moveManipulation.available=i,this._scaleOrientManipulation.available=i,this._observerManipulator.available=i,this._fieldOfViewManipulation.available=e},v),d(()=>{const e=this.viewshedComputedData;if(!e?.valid)return null;const{observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}=e;return{viewshedCompData:e,observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}},e=>{null!=e&&this._scaleOrientManipulation.updateManipulators(e.viewshedCompData)},v)]);const e=e=>{this.addHandles([e.events.on("focus-changed",()=>{const e=this._someManipulatorHovering();e&&this.parentTool.subToolHandles.forEach(({subTool:e})=>{e._resetHoveringTask()}),this._someManipulatorSelected()||e||(this._forceHoveringTask=a(async e=>{await(this._forceHoveringTestPromise??h(V.hoverTimeoutMilliseconds,e)),u(e),this._forceHoveringTask=null,this._updateManipulatorVisibility()}))}),e.events.on("grab-changed",i=>{this._grabbing="start"===i.action,"end"===i.action&&this.parentTool.updateInteractionVisualsVisibility(),this.parentTool.subToolHandles.forEach(({subTool:e})=>{e!==this&&e._setInteractive(!this._grabbing)}),this._setInteractive(i=>i.hasManipulator(e)||!this._grabbing)}),e.events.on("drag",e=>{"start"===e.action&&this.parentTool.updateInteractionVisualsVisibility()})])};this._forEachManipulator(e)}destroy(){this._forceHoveringTask=l(this._forceHoveringTask),this._moveManipulation=p(this._moveManipulation),this._fieldOfViewManipulation=p(this._fieldOfViewManipulation),this._scaleOrientManipulation=p(this._scaleOrientManipulation),this.parentTool.manipulators.remove(this._observerManipulator),this._observerManipulator=p(this._observerManipulator)}get updating(){return null!=this._forceHoveringTask&&!this._forceHoveringTask.finished}get viewshed(){return this.viewshedComputedData?.viewshed}get grabbing(){return this._grabbing}get observer(){return this.viewshed?.observer}set observer(e){const i=this.viewshed;null!=i&&(i.observer=e)}get elevationAlignedObserverRenderSpace(){return this.viewshedComputedData?.elevationAlignedObserverRenderSpace}get discManipulator(){return this._moveManipulation.xyManipulation.discManipulator}get moveInteractionState(){const{dragging:e,grabbing:i}=this._moveManipulation;return{dragging:e,grabbing:i}}get scaleOrientInteractionState(){const{dragging:e,grabbing:i}=this._scaleOrientManipulation;return{dragging:e,grabbing:i}}_setInteractive(e){const i="boolean"==typeof e;this._forEachManipulation(t=>t.interactive=i?e:e(t))}onManipulatorSelectionChanged(){if(this._updateManipulatorVisibility(),!this._someManipulatorSelected()){this.analysisViewData.selectedViewshed===this.viewshed&&(this.analysisViewData.selectedViewshed=null),this._resetHoveringTask()}}hasManipulator(e){let i=!1;return this._forEachManipulator(t=>{i=i||t===e}),i}_someManipulatorSelected(){return this._moveManipulation.selected||this._fieldOfViewManipulation.selected||this._scaleOrientManipulation.selected}_someManipulatorHovering(){return this._moveManipulation.hovering||this._fieldOfViewManipulation.hovering||this._scaleOrientManipulation.hovering}_createMoveManipulation(){return new j({view:this.view,tool:this.parentTool,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:C})}_buildObserverDragPipeline(e){const i={mode:"absolute-height",offset:0},t=e.observer;if(null==t)return null;const a=this.view.spatialReference;return this._moveManipulation.createDragPipeline((n,o,r,s,l)=>{s=s.next(F(this,["observer"]));const p=w(t,a),h=w(e.elevationAlignedObserver,a);if(null==p||null==h)return{steps:r,cancel:s};const u=P.fromGeometry(p,O(this.view.viewingMode)),d=P.fromGeometry(h,O(this.view.viewingMode)),c=this.parentTool.createObserverMoveSnappingPipeline?.(n,d,l);if(null!=c){const{snappingStep:e,cancelSnapping:t}=c,{coordinateHelper:a}=d.data;s=s.next(t);return{steps:r.next(e=>({...e,snapOrigin:a.pointToVector(h)})).next(x(this.view,i)).next(...e).next(A({operations:u})).next(e=>(this.observer=u.data.geometry,e)),cancel:s}}return{steps:r.next(A({operations:u})).next(e=>(this.observer=u.data.geometry,e)),cancel:s}},i,a,void 0)}_buildFOVDragPipeline(e){let i=0,t=0;return this._fieldOfViewManipulation.createDragPipeline((a,o,r)=>{if(null==e)return{steps:o,cancel:r};const s=e.viewshed;let l=null;r=r.next(F(s,["horizontalFieldOfView","verticalFieldOfView"]));return{steps:o.next(a=>{"start"===a.action&&(l=null,i=e.horizontalFieldOfView,t=e.verticalFieldOfView);const o=a.deltaAngle;if(null==l&&0!==o){const e="bottom"===a.side||"left"===a.side?o>0:o<0;l=T(a.side)?0===i&&e||360===i&&!e:0===t&&e}const r=l?D(a.side):a.side;let p=0;switch(r){case"left":p=i/2-o;break;case"right":p=i/2+o;break;case"top":p=t+2*o;break;case"bottom":p=t-2*o}return T(r)?(p=n.normalize(p),p=p>270?0:p>180?180:p,s.horizontalFieldOfView=2*p):s.verticalFieldOfView=p,a}),cancel:r}},e)}_buildScaleOrientDragPipeline(e){let i=0,t=0;const a=(i,t)=>(a,n,o)=>{if(null==e)return{steps:n,cancel:o};const r=e.viewshed;return o=o.next(F(r,[i])),{steps:n=n.next(t(r,e)),cancel:o}};return r([this._scaleOrientManipulation.createHeadingDragPipeline(a("heading",(i,a)=>a=>("start"===a.action&&(t=e.heading),i.heading=n.normalize(t+a.deltaAngle),a)),e),this._scaleOrientManipulation.createTiltDragPipeline(a("tilt",(t,a)=>a=>{"start"===a.action&&(i=e.tilt);let n=i+a.deltaAngle;return n<-90?n=180:n>270&&(n=0),t.tilt=G.clamp(n),a}),e),this._scaleOrientManipulation.createDistanceDragPipeline(a("farDistance",(e,i)=>t=>{const a=f(I,t.renderEnd,i.elevationAlignedObserverRenderSpace),n=b(a)*i.metersPerUnit,o=M(a,i.targetDirection)<0?V.scaleOrientMinDistance:n;return e.farDistance=o,t}),e)])}_updateManipulatorVisibility(){const e=this._someManipulatorSelected(),i=null!=this._forceHoveringTask||this._someManipulatorHovering(),t=this._fieldOfViewManipulation.hovering,a=this.parentTool.creating;let n=[];const o=e=>{n.push(e.disableDisplay())};e||!a&&i?this.removeHandles(E):(this._scaleOrientManipulation.forEachManipulator(o),this._moveManipulation.forEachManipulator(o),this.addHandles(n,E),n=[]),e||!a&&i||a&&t?this.removeHandles(z):(this._fieldOfViewManipulation.forEachManipulator(o),this.addHandles(n,z)),e||!a?this.removeHandles(U):this.addHandles(this._observerManipulator.disableDisplay(),U)}_resetHoveringTask(){this._forceHoveringTask=l(this._forceHoveringTask),this._updateManipulatorVisibility()}_forEachManipulator(e){this._forEachManipulation(i=>{i.forEachManipulator(e)}),e(this._observerManipulator)}_forEachManipulation(e){e(this._moveManipulation),e(this._fieldOfViewManipulation),e(this._scaleOrientManipulation)}get test(){return{moveManipulation:this._moveManipulation,fieldOfViewManipulation:this._fieldOfViewManipulation,scaleOrientManipulation:this._scaleOrientManipulation,viewshedComputedData:this.viewshedComputedData,setHoveringTimeoutPromise:e=>{this._forceHoveringTestPromise=e}}}};e([g({constructOnly:!0})],R.prototype,"analysis",void 0),e([g({constructOnly:!0})],R.prototype,"analysisViewData",void 0),e([g({constructOnly:!0})],R.prototype,"parentTool",void 0),e([g({constructOnly:!0,nonNullable:!0})],R.prototype,"view",void 0),e([g()],R.prototype,"_forceHoveringTask",void 0),e([g()],R.prototype,"updating",null),e([g()],R.prototype,"viewshed",null),e([g()],R.prototype,"_grabbing",void 0),e([g()],R.prototype,"grabbing",null),e([g()],R.prototype,"viewshedComputedData",void 0),e([g()],R.prototype,"observer",null),e([g()],R.prototype,"elevationAlignedObserverRenderSpace",null),R=e([m("esri.views.3d.analysis.Viewshed.ViewshedSubTool")],R);const I=_(),G=new o(0,180);export{R as ViewshedSubTool};
2
+ import{__decorate as e}from"tslib";import i from"../../../../core/Accessor.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{createTask as a}from"../../../../core/asyncUtils.js";import{cyclicalDegrees as n,Cyclical as o}from"../../../../core/Cyclical.js";import{handlesGroup as r}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import{deg2rad as s}from"../../../../core/mathUtils.js";import{abortMaybe as l,destroyMaybe as p}from"../../../../core/maybe.js";import{after as h,throwIfAborted as u}from"../../../../core/promiseUtils.js";import{watch as d,syncAndInitial as c,initial as v}from"../../../../core/reactiveUtils.js";import{property as g,subclass as m}from"../../../../core/accessorSupport/decorators.js";import{sub as f,len as b,dot as M}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as _}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{tryProject as w}from"../../../../geometry/projectionUtils.js";import{viewingModeFromString as O}from"../../../ViewingMode.js";import{viewshedToolManipulatorConfiguration as V}from"./ViewshedConfiguration.js";import{ViewshedFieldOfViewManipulation as y,isSideHorizontal as T,flipSide as D}from"./ViewshedFieldOfViewManipulation.js";import{ViewshedScaleOrientManipulation as H}from"./ViewshedScaleOrientManipulation.js";import{ViewshedObserverManipulator as S}from"./viewshedToolManipulatorUtils.js";import{discRadiusSmall as C}from"../../interactive/editingTools/manipulations/config.js";import{MoveManipulation as j}from"../../interactive/editingTools/manipulations/MoveManipulation.js";import{resetProperties as F,sceneSnappingAtProjectedLocation as x,dragManipulatedObject as A}from"../../../interactive/dragEventPipeline.js";import{EditGeometryOperations as P}from"../../../interactive/editGeometry/EditGeometryOperations.js";const k=Symbol("dragHandles"),E=Symbol("hideManipulators"),z=Symbol("hideFoVManipulators"),U=Symbol("hideObserverManipulator");let R=class extends i{constructor(e){super(e),this._moveManipulation=null,this._observerManipulator=null,this._fieldOfViewManipulation=null,this._scaleOrientManipulation=null,this._forceHoveringTask=null,this._forceHoveringTestPromise=null,this._grabbing=!1,this.viewshedComputedData=null}initialize(){this._moveManipulation=this._createMoveManipulation(),this._fieldOfViewManipulation=new y({view:this.view,tool:this.parentTool}),this._scaleOrientManipulation=new H({view:this.view,tool:this.parentTool}),this._observerManipulator=new S(this.view,this.parentTool),this.addHandles([d(()=>this.elevationAlignedObserverRenderSpace,e=>{null!=e&&(this._moveManipulation.renderLocation=e,this._observerManipulator.renderLocation=e)},c),d(()=>this.viewshedComputedData?.heading,e=>{e&&(this._moveManipulation.angle=s(90-e))},v),d(()=>{const{viewshedComputedData:e}=this;return{viewshedComputedData:e,observer:this.elevationAlignedObserverRenderSpace}},({viewshedComputedData:e,observer:i},a)=>{this._grabbing&&i!==a?.observer||(this.removeHandles(k),e?.valid&&this.addHandles([this._buildObserverDragPipeline(e),this._buildFOVDragPipeline(e),this._buildScaleOrientDragPipeline(e)].filter(t),k))},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,target:e.elevationAlignedTargetRenderSpace,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorsTransform(e.viewshedCompData)},v),d(()=>{const e=this.viewshedComputedData;return e?.valid?{viewshedCompData:e,hFOV:e.horizontalFieldOfView,vFOV:e.verticalFieldOfView,tilt:e.tilt}:null},e=>{null!=e&&this._fieldOfViewManipulation.updateManipulatorVisuals(e.viewshedCompData)},v),d(()=>{const e=this.analysisViewData.visible&&(this.viewshedComputedData?.valid??!1),i=this.parentTool.selectedViewshedComputedData===this.viewshedComputedData,{creating:t,isPlacingTarget:a}=this.parentTool;return{fovManipulationAvailable:e&&!a,nonFOVManipulationAvailable:e&&(!t||i)}},({fovManipulationAvailable:e,nonFOVManipulationAvailable:i})=>{this._moveManipulation.available=i,this._scaleOrientManipulation.available=i,this._observerManipulator.available=i,this._fieldOfViewManipulation.available=e},v),d(()=>{const e=this.viewshedComputedData;if(!e?.valid)return null;const{observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}=e;return{viewshedCompData:e,observer:i,target:t,verticalFieldOfView:a,horizontalFieldOfView:n}},e=>{null!=e&&this._scaleOrientManipulation.updateManipulators(e.viewshedCompData)},v)]);const e=e=>{this.addHandles([e.events.on("focus-changed",()=>{const e=this._someManipulatorHovering();e&&this.parentTool.subToolHandles.forEach(({subTool:e})=>{e._resetHoveringTask()}),this._someManipulatorSelected()||e||(this._forceHoveringTask=a(async e=>{await(this._forceHoveringTestPromise??h(V.hoverTimeoutMilliseconds,e)),u(e),this._forceHoveringTask=null,this._updateManipulatorVisibility()}))}),e.events.on("grab-changed",i=>{this._grabbing="start"===i.action,"end"===i.action&&this.parentTool.updateInteractionVisualsVisibility(),this.parentTool.subToolHandles.forEach(({subTool:e})=>{e!==this&&e._setInteractive(!this._grabbing)}),this._setInteractive(i=>i.hasManipulator(e)||!this._grabbing)}),e.events.on("drag",e=>{"start"===e.action&&this.parentTool.updateInteractionVisualsVisibility()})])};this._forEachManipulator(e)}destroy(){this._forceHoveringTask=l(this._forceHoveringTask),this._moveManipulation=p(this._moveManipulation),this._fieldOfViewManipulation=p(this._fieldOfViewManipulation),this._scaleOrientManipulation=p(this._scaleOrientManipulation),this.parentTool.manipulators.remove(this._observerManipulator),this._observerManipulator=p(this._observerManipulator)}get updating(){return null!=this._forceHoveringTask&&!this._forceHoveringTask.finished}get viewshed(){return this.viewshedComputedData?.viewshed}get grabbing(){return this._grabbing}get observer(){return this.viewshed?.observer}set observer(e){const i=this.viewshed;null!=i&&(i.observer=e)}get elevationAlignedObserverRenderSpace(){return this.viewshedComputedData?.elevationAlignedObserverRenderSpace}get discManipulator(){return this._moveManipulation.xyManipulation.discManipulator}get moveInteractionState(){const{dragging:e,grabbing:i}=this._moveManipulation;return{dragging:e,grabbing:i}}get scaleOrientInteractionState(){const{dragging:e,grabbing:i}=this._scaleOrientManipulation;return{dragging:e,grabbing:i}}_setInteractive(e){const i="boolean"==typeof e;this._forEachManipulation(t=>t.interactive=i?e:e(t))}onManipulatorSelectionChanged(){if(this._updateManipulatorVisibility(),!this._someManipulatorSelected()){this.analysisViewData.selectedViewshed===this.viewshed&&(this.analysisViewData.selectedViewshed=null),this._resetHoveringTask()}}hasManipulator(e){let i=!1;return this._forEachManipulator(t=>{i=i||t===e}),i}_someManipulatorSelected(){return this._moveManipulation.selected||this._fieldOfViewManipulation.selected||this._scaleOrientManipulation.selected}_someManipulatorHovering(){return this._moveManipulation.hovering||this._fieldOfViewManipulation.hovering||this._scaleOrientManipulation.hovering}_createMoveManipulation(){return new j({view:this.view,tool:this.parentTool,snapToScene:!1,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:!0,radius:C})}_buildObserverDragPipeline(e){const i={mode:"absolute-height",offset:0},t=e.observer;if(null==t)return null;const a=this.view.spatialReference;return this._moveManipulation.createDragPipeline((n,o,r,s,l)=>{s=s.next(F(this,["observer"]));const p=w(t,a),h=w(e.elevationAlignedObserver,a);if(null==p||null==h)return{steps:r,cancel:s};const u=P.fromGeometry(p,O(this.view.viewingMode)),d=P.fromGeometry(h,O(this.view.viewingMode)),c=this.parentTool.createObserverMoveSnappingPipeline?.(n,d,l);if(null!=c){const{snappingStep:e,cancelSnapping:t}=c,{coordinateHelper:a}=d.data;s=s.next(t);return{steps:r.next(e=>({...e,snapOrigin:a.pointToVector(h)})).next(x(this.view,i)).next(...e).next(A({operations:u})).next(e=>(this.observer=u.data.geometry,e)),cancel:s}}return{steps:r.next(A({operations:u})).next(e=>(this.observer=u.data.geometry,e)),cancel:s}},i,a,void 0)}_buildFOVDragPipeline(e){let i=0,t=0;return this._fieldOfViewManipulation.createDragPipeline((a,o,r)=>{if(null==e)return{steps:o,cancel:r};const s=e.viewshed;let l=null;r=r.next(F(s,["horizontalFieldOfView","verticalFieldOfView"]));return{steps:o.next(a=>{"start"===a.action&&(l=null,i=e.horizontalFieldOfView,t=e.verticalFieldOfView);const o=a.deltaAngle;if(null==l&&0!==o){const e="bottom"===a.side||"left"===a.side?o>0:o<0;l=T(a.side)?0===i&&e||360===i&&!e:0===t&&e}const r=l?D(a.side):a.side;let p=0;switch(r){case"left":p=i/2-o;break;case"right":p=i/2+o;break;case"top":p=t+2*o;break;case"bottom":p=t-2*o}return T(r)?(p=n.normalize(p),p=p>270?0:p>180?180:p,s.horizontalFieldOfView=2*p):s.verticalFieldOfView=p,a}),cancel:r}},e)}_buildScaleOrientDragPipeline(e){let i=0,t=0;const a=(i,t)=>(a,n,o)=>{if(null==e)return{steps:n,cancel:o};const r=e.viewshed;return o=o.next(F(r,[i])),{steps:n=n.next(t(r,e)),cancel:o}};return r([this._scaleOrientManipulation.createHeadingDragPipeline(a("heading",(i,a)=>a=>("start"===a.action&&(t=e.heading),i.heading=n.normalize(t+a.deltaAngle),a)),e),this._scaleOrientManipulation.createTiltDragPipeline(a("tilt",(t,a)=>a=>{"start"===a.action&&(i=e.tilt);let n=i+a.deltaAngle;return n<-90?n=180:n>270&&(n=0),t.tilt=G.clamp(n),a}),e),this._scaleOrientManipulation.createDistanceDragPipeline(a("farDistance",(e,i)=>t=>{const a=f(I,t.renderEnd,i.elevationAlignedObserverRenderSpace),n=b(a)*i.metersPerUnit,o=M(a,i.targetDirection)<0?V.scaleOrientMinDistance:n;return e.farDistance=o,t}),e)])}_updateManipulatorVisibility(){const e=this._someManipulatorSelected(),i=null!=this._forceHoveringTask||this._someManipulatorHovering(),t=this._fieldOfViewManipulation.hovering,a=this.parentTool.creating;let n=[];const o=e=>{n.push(e.disableDisplay())};e||!a&&i?this.removeHandles(E):(this._scaleOrientManipulation.forEachManipulator(o),this._moveManipulation.forEachManipulator(o),this.addHandles(n,E),n=[]),e||!a&&i||a&&t?this.removeHandles(z):(this._fieldOfViewManipulation.forEachManipulator(o),this.addHandles(n,z)),e||!a?this.removeHandles(U):this.addHandles(this._observerManipulator.disableDisplay(),U)}_resetHoveringTask(){this._forceHoveringTask=l(this._forceHoveringTask),this._updateManipulatorVisibility()}_forEachManipulator(e){this._forEachManipulation(i=>{i.forEachManipulator(e)}),e(this._observerManipulator)}_forEachManipulation(e){e(this._moveManipulation),e(this._fieldOfViewManipulation),e(this._scaleOrientManipulation)}get test(){return{moveManipulation:this._moveManipulation,fieldOfViewManipulation:this._fieldOfViewManipulation,scaleOrientManipulation:this._scaleOrientManipulation,viewshedComputedData:this.viewshedComputedData,setHoveringTimeoutPromise:e=>{this._forceHoveringTestPromise=e}}}};e([g({constructOnly:!0})],R.prototype,"analysis",void 0),e([g({constructOnly:!0})],R.prototype,"analysisViewData",void 0),e([g({constructOnly:!0})],R.prototype,"parentTool",void 0),e([g({constructOnly:!0,nonNullable:!0})],R.prototype,"view",void 0),e([g()],R.prototype,"_forceHoveringTask",void 0),e([g()],R.prototype,"updating",null),e([g()],R.prototype,"viewshed",null),e([g()],R.prototype,"_grabbing",void 0),e([g()],R.prototype,"grabbing",null),e([g()],R.prototype,"viewshedComputedData",void 0),e([g()],R.prototype,"observer",null),e([g()],R.prototype,"elevationAlignedObserverRenderSpace",null),R=e([m("esri.views.3d.analysis.Viewshed.ViewshedSubTool")],R);const I=_(),G=new o(0,180);export{R as ViewshedSubTool};