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

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 (489) hide show
  1. package/applications/SceneViewer/layerUtils.d.ts +9 -1
  2. package/applications/SceneViewer/layerUtils.js +1 -1
  3. package/arcgisGlobal.d.ts +4 -0
  4. package/assets/esri/core/workers/RemoteClient.js +1 -1
  5. package/assets/esri/core/workers/chunks/07cc5743cb6a9fd68adb.js +1 -0
  6. package/assets/esri/core/workers/chunks/0cbd7f5fe24271942abd.js +1 -0
  7. package/assets/esri/core/workers/chunks/0ecc1bc1686844cdd60e.js +1 -0
  8. package/assets/esri/core/workers/chunks/0f75c19d8e296a32e329.js +1 -0
  9. package/assets/esri/core/workers/chunks/174cc2e69e5b5a13d880.js +1 -0
  10. package/assets/esri/core/workers/chunks/18f980465db5a86153d1.js +1 -0
  11. package/assets/esri/core/workers/chunks/1996f0a930abdd97b855.js +1 -0
  12. package/assets/esri/core/workers/chunks/1c8436b27a3d3cde5cfc.js +1 -0
  13. package/assets/esri/core/workers/chunks/1cb1f125dccbf8c8cac9.js +1 -0
  14. package/assets/esri/core/workers/chunks/1dd06335bb2d35c66339.js +1 -0
  15. package/assets/esri/core/workers/chunks/1f289aa69dd6b6be534a.js +1 -0
  16. package/assets/esri/core/workers/chunks/2185e8a52c5e29d46680.js +1 -0
  17. package/assets/esri/core/workers/chunks/{da29cf0e64065631a470.js → 24810c36ae09bb4e83dc.js} +1 -1
  18. package/assets/esri/core/workers/chunks/26583db2af1a1cc456e5.js +1 -0
  19. package/assets/esri/core/workers/chunks/274b82cb183ddd0042f3.js +1 -0
  20. package/assets/esri/core/workers/chunks/27c6def22c2b0791ce9e.js +1 -0
  21. package/assets/esri/core/workers/chunks/2d2895f1fdf44d212a4d.js +1 -0
  22. package/assets/esri/core/workers/chunks/2dbc2fd0f2dde505c465.js +1 -0
  23. package/assets/esri/core/workers/chunks/2dbcdfdf000226bfe746.js +1 -0
  24. package/assets/esri/core/workers/chunks/2e6382d50bf012064eae.js +1 -0
  25. package/assets/esri/core/workers/chunks/30f1909c5ef1835b8507.js +1 -0
  26. package/assets/esri/core/workers/chunks/31918a0d9886dedf385f.js +1 -0
  27. package/assets/esri/core/workers/chunks/{1c029b03ed836f393a50.js → 3248001d9dfb9153699e.js} +1 -1
  28. package/assets/esri/core/workers/chunks/3297658ccd8d4b9ce733.js +1 -0
  29. package/assets/esri/core/workers/chunks/{716a4d7e8b908b81870b.js → 32f26757e36704923286.js} +1 -1
  30. package/assets/esri/core/workers/chunks/3529afab0c2444275d91.js +1 -0
  31. package/assets/esri/core/workers/chunks/36dac6ab51d9dbdd091d.js +1 -0
  32. package/assets/esri/core/workers/chunks/390fda094fa8695d98cf.js +1 -0
  33. package/assets/esri/core/workers/chunks/39596715e84d0da2f803.js +30 -0
  34. package/assets/esri/core/workers/chunks/398eb3100a282e4736bb.js +1 -0
  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/434c1dd3f48e6f0802fc.js +1 -0
  44. package/assets/esri/core/workers/chunks/4517630bf869205bab87.js +1 -0
  45. package/assets/esri/core/workers/chunks/48f1c3a7c9f16d6896f6.js +1 -0
  46. package/assets/esri/core/workers/chunks/{cfd28eba44cf5a296c6d.js → 49308bdc36373555f1af.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{09d0e430c66788a2626f.js → 4a20f7a0700fd14a129f.js} +1 -1
  48. package/assets/esri/core/workers/chunks/5075e85e1eafd431a8c0.js +1 -0
  49. package/assets/esri/core/workers/chunks/5121768c70f1e03b685c.js +1 -0
  50. package/assets/esri/core/workers/chunks/5201105ca11a2d450460.js +1 -0
  51. package/assets/esri/core/workers/chunks/528ed0bd8dc149ead023.js +1 -0
  52. package/assets/esri/core/workers/chunks/52f354bf80ee5ab0379a.js +1 -0
  53. package/assets/esri/core/workers/chunks/538537f9bc866d9caa75.js +1 -0
  54. package/assets/esri/core/workers/chunks/58a7cdebc3d182c15ec6.js +1 -0
  55. package/assets/esri/core/workers/chunks/58ac245ff7fb57c1004f.js +1 -0
  56. package/assets/esri/core/workers/chunks/58acc18b92533166135d.js +1 -0
  57. package/assets/esri/core/workers/chunks/597aa39cdb5366ef9a74.js +1 -0
  58. package/assets/esri/core/workers/chunks/5bfae465872760e7af6d.js +1 -0
  59. package/assets/esri/core/workers/chunks/5cb274e5759f7ca0d4ed.js +1 -0
  60. package/assets/esri/core/workers/chunks/5d3ddbf94539cb4f493e.js +1 -0
  61. package/assets/esri/core/workers/chunks/{542f5469f7b42026b24f.js → 5d62d1920e3e35fc0192.js} +1 -1
  62. package/assets/esri/core/workers/chunks/5dd441db1e74dc9b56e9.js +1 -0
  63. package/assets/esri/core/workers/chunks/630ad47857de3cf726d1.js +1 -0
  64. package/assets/esri/core/workers/chunks/64114a7d2da162987958.js +1 -0
  65. package/assets/esri/core/workers/chunks/6821462e5c1e9c76010a.js +1 -0
  66. package/assets/esri/core/workers/chunks/684d3cb4fb233180b2d0.js +1 -0
  67. package/assets/esri/core/workers/chunks/686c51fd2144e132783e.js +1 -0
  68. package/assets/esri/core/workers/chunks/68f9b2da1fd08785320f.js +2 -0
  69. package/assets/esri/core/workers/chunks/69e98de578f467a35054.js +1 -0
  70. package/assets/esri/core/workers/chunks/6a3d207308b29651f397.js +1 -0
  71. package/assets/esri/core/workers/chunks/6aabde21b0b376d95888.js +1 -0
  72. package/assets/esri/core/workers/chunks/6d616b66fb32904b55a1.js +1 -0
  73. package/assets/esri/core/workers/chunks/{bcb021a167580bb1619f.js → 6ef3b8d67b498d655a99.js} +1 -1
  74. package/assets/esri/core/workers/chunks/6f125b4ed06c0022dee6.js +1 -0
  75. package/assets/esri/core/workers/chunks/6f4825c3ef1fe202ab82.js +1 -0
  76. package/assets/esri/core/workers/chunks/6f5d61f734ec40dafabb.js +1 -0
  77. package/assets/esri/core/workers/chunks/{fce7995c26953bfd8d3d.js → 70229007d594536ba6a3.js} +1 -1
  78. package/assets/esri/core/workers/chunks/71e55381fdff3fc2542e.js +1 -0
  79. package/assets/esri/core/workers/chunks/{90953a827bc89d0e6bd5.js → 72cfb186e50537bcdd19.js} +1 -1
  80. package/assets/esri/core/workers/chunks/72d67cc3a382e83bf1a2.js +1 -0
  81. package/assets/esri/core/workers/chunks/7748743d4be047094d67.js +1 -0
  82. package/assets/esri/core/workers/chunks/78c53aeb0a408ab3c80c.js +1 -0
  83. package/assets/esri/core/workers/chunks/7b5c1030a7cf0f382cc4.js +1 -0
  84. package/assets/esri/core/workers/chunks/7cee81c5aa1e6b7d2452.js +1 -0
  85. package/assets/esri/core/workers/chunks/7e89cb9ff615742e0894.js +1 -0
  86. package/assets/esri/core/workers/chunks/80f4f686ce403cb2693f.js +1 -0
  87. package/assets/esri/core/workers/chunks/{62dfbdc847be4800e833.js → 8103d06f760a2c79773d.js} +10 -14
  88. package/assets/esri/core/workers/chunks/{8477b5fdd99c6ac5c27b.js → 851705cf276eae8d4d37.js} +1 -1
  89. package/assets/esri/core/workers/chunks/89e09276086745aa21fa.js +1 -0
  90. package/assets/esri/core/workers/chunks/{4894997bfa438f66da36.js → 8a8c5e5ce457ca004687.js} +1 -1
  91. package/assets/esri/core/workers/chunks/{b79428c5093614174e76.js → 8b0a01ebc86ab226f01f.js} +1 -1
  92. package/assets/esri/core/workers/chunks/{452c01cecbbd1e370098.js → 8f93e6fc11a158d4f1ee.js} +1 -1
  93. package/assets/esri/core/workers/chunks/93bd56396b8cd020f965.js +1 -0
  94. package/assets/esri/core/workers/chunks/{359d3acb3953e64e5a78.js → 93ceb74ac88ef460fe5f.js} +1 -1
  95. package/assets/esri/core/workers/chunks/957f7b8de4aecb6f644e.js +1 -0
  96. package/assets/esri/core/workers/chunks/{875cce0be4f6c89f80f3.js → 9629601de5e44ffe90ea.js} +2 -2
  97. package/assets/esri/core/workers/chunks/976ab2be6c244768c08a.js +1 -0
  98. package/assets/esri/core/workers/chunks/{e785f76c1a75cb1d1e1f.js → 99101789035f1787c630.js} +1 -1
  99. package/assets/esri/core/workers/chunks/99e5296192ab98fd0d99.js +1 -0
  100. package/assets/esri/core/workers/chunks/9d5f7573bfe3b051daf1.js +1 -0
  101. package/assets/esri/core/workers/chunks/a0c00c6fe60db49b3ab9.js +1 -0
  102. package/assets/esri/core/workers/chunks/a2247f4c3116efb16c4f.js +1 -0
  103. package/assets/esri/core/workers/chunks/a4245bd4e67a428fd835.js +1 -0
  104. package/assets/esri/core/workers/chunks/a442534ac0956a68b769.js +1 -0
  105. package/assets/esri/core/workers/chunks/a4e9a17dacbb52444d75.js +1 -0
  106. package/assets/esri/core/workers/chunks/{8bdca6f06c8b5fedd917.js → a5abba59e738c3240c22.js} +1 -1
  107. package/assets/esri/core/workers/chunks/a9fc53ae040320e49834.js +1 -0
  108. package/assets/esri/core/workers/chunks/aa118c1bcd922b8ac328.js +1 -0
  109. package/assets/esri/core/workers/chunks/aae0049c2c3e15a813e8.js +1 -0
  110. package/assets/esri/core/workers/chunks/ac33b10fe65f9e9e824f.js +1 -0
  111. package/assets/esri/core/workers/chunks/adc32f6b45ea3026fc34.js +1 -0
  112. package/assets/esri/core/workers/chunks/af31e62499d45bdab3c3.js +1 -0
  113. package/assets/esri/core/workers/chunks/b22a1c98271c2e4d8808.js +1 -0
  114. package/assets/esri/core/workers/chunks/{9f4681713f03365a2a53.js → b666027b9022fa346a79.js} +1 -1
  115. package/assets/esri/core/workers/chunks/b73c146d3e550eaf07eb.js +1 -0
  116. package/assets/esri/core/workers/chunks/{0f3654c8157ec8f22869.js → b895674c0550826ecb28.js} +3 -3
  117. package/assets/esri/core/workers/chunks/c0cbc50e5afd68bd485c.js +1 -0
  118. package/assets/esri/core/workers/chunks/c2a65de34f6a6c89c652.js +1 -0
  119. package/assets/esri/core/workers/chunks/c357c0a08b99c1e7f290.js +1 -0
  120. package/assets/esri/core/workers/chunks/{4a23b27bfbcfa08fd9a7.js → c3cf9e6e91f71c9cc5f3.js} +1 -1
  121. package/assets/esri/core/workers/chunks/c3ff2ff0a86a9143d7a5.js +1 -0
  122. package/assets/esri/core/workers/chunks/{e545df5ea7c0ced92cee.js → c424a66f1546275e2bcb.js} +1 -1
  123. package/assets/esri/core/workers/chunks/c60b4f2dd5fccdf362a7.js +1 -0
  124. package/assets/esri/core/workers/chunks/c6d0b4875b6b8d6bc25a.js +1 -0
  125. package/assets/esri/core/workers/chunks/c80fc1b3048e8d58a1f8.js +1 -0
  126. package/assets/esri/core/workers/chunks/c911f0b5bdd43b66b731.js +1 -0
  127. package/assets/esri/core/workers/chunks/c9a4601073e1a3eee9d0.js +1 -0
  128. package/assets/esri/core/workers/chunks/ccffaba50674adba7a0f.js +1 -0
  129. package/assets/esri/core/workers/chunks/{24646a1176ce34039155.js → cdf6ad970dc1893dac58.js} +1 -1
  130. package/assets/esri/core/workers/chunks/d13e003c9293cb7e2852.js +1 -0
  131. package/assets/esri/core/workers/chunks/d24e027bb8b2c09f25c8.js +1 -0
  132. package/assets/esri/core/workers/chunks/d2df8c328054dc6cb7b7.js +1 -0
  133. package/assets/esri/core/workers/chunks/d5c35a75fd4c41def420.js +1 -0
  134. package/assets/esri/core/workers/chunks/{5e3e0d7b85dfd52d1c7d.js → d78b7cac322755e87eb8.js} +1 -1
  135. package/assets/esri/core/workers/chunks/d7be278aed1fb37ad5ec.js +1 -0
  136. package/assets/esri/core/workers/chunks/d9695794cfaa014a55b1.js +1 -0
  137. package/assets/esri/core/workers/chunks/da1e8b338ab9fe9e0a8e.js +1 -0
  138. package/assets/esri/core/workers/chunks/dd920a6f6422fa213eba.js +1 -0
  139. package/assets/esri/core/workers/chunks/e1bf87077541da6853c6.js +1 -0
  140. package/assets/esri/core/workers/chunks/e279bcbe4f10e87bde6c.js +1 -0
  141. package/assets/esri/core/workers/chunks/e4406baf206b9e4c7e4f.js +1 -0
  142. package/assets/esri/core/workers/chunks/e499252cb52f7aed49a0.js +1 -0
  143. package/assets/esri/core/workers/chunks/{e178cd0e9178d6716410.js → e5837e5ac6ef761f26a2.js} +1 -1
  144. package/assets/esri/core/workers/chunks/e6a7272b59a4c2e34dca.js +1 -0
  145. package/assets/esri/core/workers/chunks/e912b515704e20313e53.js +1 -0
  146. package/assets/esri/core/workers/chunks/eac683a37339aa558455.js +1 -0
  147. package/assets/esri/core/workers/chunks/ec1841e6e498d54012eb.js +1 -0
  148. package/assets/esri/core/workers/chunks/ed3d16a5b4084ef61f8a.js +1 -0
  149. package/assets/esri/core/workers/chunks/ee07f54bc77fe9f8575a.js +1 -0
  150. package/assets/esri/core/workers/chunks/{e094364e54981c91e1b4.js → eeea5710275c967e8d51.js} +1 -1
  151. package/assets/esri/core/workers/chunks/ef46ef4f0ee9f2aeaa4a.js +1 -0
  152. package/assets/esri/core/workers/chunks/efb4aa5886730ea377bd.js +1 -0
  153. package/assets/esri/core/workers/chunks/{485d20152495c27b8074.js → f2a268c69f2a5566381b.js} +1 -1
  154. package/assets/esri/core/workers/chunks/f590db684d88e72bd79b.js +1 -0
  155. package/assets/esri/core/workers/chunks/f69df22a5c64389ebe28.js +1 -0
  156. package/assets/esri/core/workers/chunks/{f60292d97bcdbf19165b.js → f6d047358d14328f3622.js} +1 -1
  157. package/assets/esri/core/workers/chunks/f7fca88d120d45bb782a.js +1 -0
  158. package/assets/esri/core/workers/chunks/f819854098d63fe4ccdb.js +1 -0
  159. package/assets/esri/core/workers/chunks/f8f3579d0c1b65762902.js +1 -0
  160. package/assets/esri/core/workers/chunks/f98118127469449ca145.js +1 -0
  161. package/assets/esri/core/workers/chunks/f9ed05d4ad1f44d033bb.js +1 -0
  162. package/assets/esri/core/workers/chunks/fb6605be0c5e36785543.js +1 -0
  163. package/assets/esri/core/workers/chunks/fbe7dae0b4bf2d172487.js +1 -0
  164. package/assets/esri/core/workers/chunks/fc4d9be62cf5e9758842.js +1 -0
  165. package/assets/esri/core/workers/chunks/fd70a25ffdf2cc6c5be2.js +1 -0
  166. package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
  167. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  168. package/assets/esri/libs/parquet/pkg/bundle_bg.wasm +0 -0
  169. package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
  170. package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +38 -8
  171. package/assets/esri/themes/dark/main.css +1 -1
  172. package/assets/esri/themes/light/main.css +1 -1
  173. package/assets/esri/themes/light/view.css +1 -1
  174. package/chunks/GaussianSplatComposition.glsl.js +1 -1
  175. package/chunks/GlobalIllumination.glsl.js +1 -1
  176. package/chunks/GlowComposition.glsl.js +2 -2
  177. package/chunks/OITBlend.glsl.js +3 -3
  178. package/chunks/OITBlendEmission.glsl.js +2 -2
  179. package/chunks/OITDimOpaque.glsl.js +2 -2
  180. package/chunks/SlicePlaneMaterial.glsl.js +4 -4
  181. package/chunks/bundle2.js +1 -1
  182. package/chunks/lyr3DMain.js +1 -1
  183. package/chunks/lyr3DWorker.js +1 -1
  184. package/chunks/vxlLayer.js +1 -1
  185. package/config.js +1 -1
  186. package/core/has.js +1 -1
  187. package/core/screenUtils.js +1 -1
  188. package/core/sql.d.ts +1 -1
  189. package/geometry/Extent.d.ts +0 -13
  190. package/geometry/Geometry.d.ts +10 -8
  191. package/geometry/Multipoint.d.ts +9 -0
  192. package/geometry/Multipoint.js +1 -1
  193. package/geometry/Point.d.ts +15 -71
  194. package/geometry/Polygon.js +1 -1
  195. package/geometry/support/geometryUtils.js +1 -1
  196. package/graphic/AnnotationGraphicOrigin.d.ts +34 -0
  197. package/graphic/AnnotationGraphicOrigin.js +2 -0
  198. package/graphic/DimensionFeatureGraphicOrigin.d.ts +34 -0
  199. package/graphic/DimensionFeatureGraphicOrigin.js +2 -0
  200. package/identity/IdentityManagerBase.js +1 -1
  201. package/interfaces.d.ts +11 -0
  202. package/kernel.js +1 -1
  203. package/layers/AnnotationLayer.d.ts +263 -32
  204. package/layers/AnnotationLayer.js +1 -1
  205. package/layers/DimensionFeatureLayer.d.ts +263 -32
  206. package/layers/DimensionFeatureLayer.js +1 -1
  207. package/layers/FeatureLayer.d.ts +1 -1
  208. package/layers/GeoJSONLayer.d.ts +7 -7
  209. package/layers/ParquetLayer.d.ts +22 -2
  210. package/layers/SceneLayer.d.ts +4 -2
  211. package/layers/VideoLayer.d.ts +7 -1
  212. package/layers/VideoLayer.js +1 -1
  213. package/layers/catalog/CatalogFootprintLayer.d.ts +40 -10
  214. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  215. package/layers/graphics/sources/parquet/ParquetFileInfo.js +2 -0
  216. package/layers/graphics/sources/parquet/ParquetFileStatistics.js +2 -0
  217. package/layers/graphics/sources/parquet/PortalParquetFileProvider.js +1 -1
  218. package/layers/graphics/sources/parquet/PortalParquetLayerFileProvider.js +1 -1
  219. package/layers/graphics/sources/parquet/UrlsFileProvider.js +1 -1
  220. package/layers/graphics/sources/parquet/createFileProvider.js +1 -1
  221. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  222. package/layers/mixins/FeatureLayerBase.d.ts +40 -16
  223. package/layers/mixins/TemporalLayer.d.ts +4 -2
  224. package/layers/support/AnnotationSublayer.d.ts +44 -0
  225. package/layers/support/AnnotationSublayer.js +2 -0
  226. package/layers/support/GeometryEncodingLocation.d.ts +1 -1
  227. package/layers/support/GeometryEncodingWkb.d.ts +3 -2
  228. package/layers/support/ParquetFilesData.d.ts +13 -3
  229. package/layers/support/ParquetPortalItemData.d.ts +12 -1
  230. package/layers/support/arcgisLayers.js +1 -1
  231. package/layers/support/commonProperties.js +1 -1
  232. package/layers/support/featureLayerUtils.js +1 -1
  233. package/layers/support/layerUtils.js +1 -1
  234. package/layers/support/parquetUtils.js +1 -1
  235. package/layers/support/tiles3DUtils.js +1 -1
  236. package/layers/support/timeSeriesUtils.js +1 -1
  237. package/layers/video/types.d.ts +61 -1
  238. package/libs/parquet/parquet.js +1 -1
  239. package/package.json +1 -1
  240. package/request/types.d.ts +18 -20
  241. package/rest/support/Query.d.ts +1 -0
  242. package/support/revision.js +1 -1
  243. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  244. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  245. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityPolygonShader.js +1 -1
  246. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  247. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ComplexOutlineFillShader.js +1 -1
  248. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HeatmapAccumulateShader.js +1 -1
  249. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  250. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
  251. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  252. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  253. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  254. package/views/2d/layers/GeoRSSLayerView2D.js +1 -1
  255. package/views/2d/layers/GraphicsLayerView2D.js +1 -1
  256. package/views/2d/layers/ImageryLayerView2D.js +1 -1
  257. package/views/2d/layers/ImageryTileLayerView2D.js +1 -1
  258. package/views/2d/layers/KMLLayerView2D.js +1 -1
  259. package/views/2d/layers/MapNotesLayerView2D.js +1 -1
  260. package/views/2d/layers/MediaLayerView2D.js +1 -1
  261. package/views/2d/layers/RouteLayerView2D.js +1 -1
  262. package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
  263. package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +1 -1
  264. package/views/2d/layers/features/sources/strategies/ParquetSnapshotLoadStrategy.js +1 -1
  265. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  266. package/views/2d/layers/graphics/GraphicStore.js +1 -1
  267. package/views/2d/support/hitTestUtils.js +1 -1
  268. package/views/3d/analysis/LineOfSight/LineOfSightAggregateManipulatedObject3D.js +2 -0
  269. package/views/3d/analysis/LineOfSight/LineOfSightAuthoringUtils.js +1 -1
  270. package/views/3d/analysis/LineOfSight/LineOfSightConfiguration.js +1 -1
  271. package/views/3d/analysis/LineOfSight/LineOfSightManipulators.js +1 -1
  272. package/views/3d/analysis/LineOfSight/LineOfSightObserverPlugin.js +1 -1
  273. package/views/3d/analysis/LineOfSight/LineOfSightPlacementLeafPlugin.js +2 -0
  274. package/views/3d/analysis/LineOfSight/LineOfSightPlacementTool.js +1 -1
  275. package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +2 -0
  276. package/views/3d/analysis/LineOfSight/LineOfSightRootPlugin.js +1 -1
  277. package/views/3d/analysis/LineOfSight/LineOfSightTargetPlugin.js +1 -1
  278. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  279. package/views/3d/analysis/LineOfSight/LineOfSightTool2.js +1 -1
  280. package/views/3d/analysis/Viewshed/ViewshedSnappingController.js +1 -1
  281. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  282. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  283. package/views/3d/interactive/editingTools/reshape/ReshapeTool3D.js +1 -1
  284. package/views/3d/interactive/editingTools/reshape/isSupportedObject.js +1 -1
  285. package/views/3d/interactive/editingTools/reshape/reshapeTooltipUtils3D.js +1 -1
  286. package/views/3d/interactive/editingTools/visualElementUtils.js +1 -1
  287. package/views/3d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles3D.js +1 -1
  288. package/views/3d/layers/FlowSubView3D.js +1 -1
  289. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  290. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  291. package/views/3d/layers/i3s/PointCloudRenderer.js +1 -1
  292. package/views/3d/terrain/OverlayManager.js +1 -1
  293. package/views/3d/terrain/TerrainRenderer.js +1 -1
  294. package/views/3d/webgl/RenderNode.d.ts +25 -4
  295. package/views/3d/webgl-engine/collections/Component/ComponentObject.js +1 -1
  296. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  297. package/views/3d/webgl-engine/collections/Component/RenderSubmitSystem.js +1 -1
  298. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  299. package/views/3d/webgl-engine/core/shaderLibrary/util/EmissionDimming.glsl.js +1 -1
  300. package/views/3d/webgl-engine/effects/RenderPlugin.js +1 -1
  301. package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
  302. package/views/3d/webgl-engine/effects/emissive/emissions.js +1 -1
  303. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  304. package/views/3d/webgl-engine/effects/transparency/OITBlend.js +1 -1
  305. package/views/3d/webgl-engine/effects/transparency/OITBlendTechniqueConfiguration.js +1 -1
  306. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  307. package/views/3d/webgl-engine/lib/MainFramebuffer.js +1 -1
  308. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  309. package/views/3d/webgl-engine/lib/RendererBase.js +1 -1
  310. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  311. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  312. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  313. package/views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js +2 -2
  314. package/views/3d/webgl-engine/shaders/SlicePlaneMaterial.glsl.js +1 -1
  315. package/views/3d/webgl-engine/shaders/ToneMapping.glsl.js +6 -10
  316. package/views/draw/plugins/PolygonPlugin.js +1 -1
  317. package/views/interactive/interactiveToolUtils.js +1 -1
  318. package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
  319. package/views/interactive/snapping/LineSnapper.js +1 -1
  320. package/views/interactive/snapping/ParallelLineSnapper.js +1 -1
  321. package/views/interactive/snapping/RightAngleSnapper.js +1 -1
  322. package/views/interactive/snapping/RightAngleTriangleSnapper.js +1 -1
  323. package/views/interactive/snapping/SnappingAlgorithm.js +1 -1
  324. package/views/interactive/snapping/SnappingManager.js +1 -1
  325. package/views/interactive/snapping/snappingUtils.js +1 -1
  326. package/views/layers/FeatureLikeLayerView.d.ts +25 -1
  327. package/views/layers/FeatureLikeLayerView.js +1 -1
  328. package/views/types.d.ts +4 -4
  329. package/views/webgl/RenderingContext.js +1 -1
  330. package/views/webgl/renderState.js +1 -1
  331. package/webdoc/support/webdocSaveUtils.js +1 -1
  332. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.d.ts +10 -2
  333. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  334. package/widgets/BatchAttributeForm/ReactiveContingentValuesManager.js +1 -1
  335. package/widgets/BatchAttributeForm/attachmentUtils.d.ts +14 -0
  336. package/widgets/BatchAttributeForm/attachmentUtils.js +1 -1
  337. package/widgets/BatchAttributeForm/batchAttributeFormUtils.js +1 -1
  338. package/widgets/BatchAttributeForm/css.js +1 -1
  339. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.d.ts +8 -6
  340. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.js +1 -1
  341. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  342. package/widgets/BatchAttributeForm/inputs/RelationshipElementInput.js +1 -1
  343. package/widgets/BatchAttributeForm/inputs/support/attachmentValidationCriteriaState.d.ts +5 -0
  344. package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
  345. package/widgets/BatchAttributeForm/inputs/types.d.ts +8 -1
  346. package/widgets/BatchAttributeForm/interfaceUtils.js +1 -1
  347. package/widgets/BatchAttributeForm/rendered-content/RelationshipDetails.js +1 -1
  348. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  349. package/widgets/BatchAttributeForm.d.ts +9 -1
  350. package/widgets/BatchAttributeForm.js +1 -1
  351. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  352. package/widgets/FeatureTable/Grid/Column.js +1 -1
  353. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  354. package/widgets/FeatureTable/Grid/GridViewModel.js +1 -1
  355. package/widgets/FeatureTable/Grid/GroupColumn.js +1 -1
  356. package/widgets/FeatureTable.js +1 -1
  357. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  358. package/widgets/Print/PrintViewModel.js +1 -1
  359. package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +7 -1
  360. package/widgets/VideoPlayer/VideoPlayerViewModel.js +1 -1
  361. package/widgets/support/ContingentValuesManager.js +1 -1
  362. package/assets/esri/core/workers/chunks/02aaeaa988e9e7d65a7f.js +0 -1
  363. package/assets/esri/core/workers/chunks/03354ad3d74d858173b4.js +0 -1
  364. package/assets/esri/core/workers/chunks/09a4139fc6d069ab6928.js +0 -1
  365. package/assets/esri/core/workers/chunks/0a510acf50915e00c62b.js +0 -1
  366. package/assets/esri/core/workers/chunks/0a780a883abfcdf0b900.js +0 -1
  367. package/assets/esri/core/workers/chunks/0fbf9bf52ecb4cd8293b.js +0 -1
  368. package/assets/esri/core/workers/chunks/119d352dd586f2bb61ec.js +0 -1
  369. package/assets/esri/core/workers/chunks/130784a27661de6b52a5.js +0 -1
  370. package/assets/esri/core/workers/chunks/145364aa20b4435294c2.js +0 -1
  371. package/assets/esri/core/workers/chunks/1595dc499a06b23b6a96.js +0 -1
  372. package/assets/esri/core/workers/chunks/16713986893adfbc9331.js +0 -1
  373. package/assets/esri/core/workers/chunks/179c9fe4ac83b42e5976.js +0 -1
  374. package/assets/esri/core/workers/chunks/19dcae83be0fc0aced02.js +0 -1
  375. package/assets/esri/core/workers/chunks/1c64e10f966e26af6fed.js +0 -1
  376. package/assets/esri/core/workers/chunks/1eabe746481e0b228498.js +0 -1
  377. package/assets/esri/core/workers/chunks/201007cf1a91e2b126fc.js +0 -1
  378. package/assets/esri/core/workers/chunks/20d0adc678f11981059c.js +0 -1
  379. package/assets/esri/core/workers/chunks/227eff8aa4a6f5f03bc2.js +0 -1
  380. package/assets/esri/core/workers/chunks/233ff588798c8a5eedf4.js +0 -1
  381. package/assets/esri/core/workers/chunks/238478cfe493fd4a6100.js +0 -1
  382. package/assets/esri/core/workers/chunks/24647e7424798dccdaf5.js +0 -1
  383. package/assets/esri/core/workers/chunks/249616ea2d90d40a8299.js +0 -1
  384. package/assets/esri/core/workers/chunks/24d9e4f1c7b8ff0d2cce.js +0 -1
  385. package/assets/esri/core/workers/chunks/2b36a54927f5a7281da3.js +0 -1
  386. package/assets/esri/core/workers/chunks/2bcd4d395bfe6a19ccc8.js +0 -1
  387. package/assets/esri/core/workers/chunks/2c8584ec1c3c9fd5aba2.js +0 -1
  388. package/assets/esri/core/workers/chunks/2d374cc8c54a722a7afe.js +0 -1
  389. package/assets/esri/core/workers/chunks/2e11b4e9d66474a60064.js +0 -1
  390. package/assets/esri/core/workers/chunks/2fa080539d039c92ce08.js +0 -1
  391. package/assets/esri/core/workers/chunks/3109b05fe4fc40d4f25b.js +0 -1
  392. package/assets/esri/core/workers/chunks/31442f25d550ead58fc4.js +0 -1
  393. package/assets/esri/core/workers/chunks/32323b0e0fcecd8f640e.js +0 -1
  394. package/assets/esri/core/workers/chunks/330da3828eefd8d72d3f.js +0 -1
  395. package/assets/esri/core/workers/chunks/33e0130e6a40fc768978.js +0 -1
  396. package/assets/esri/core/workers/chunks/343ba5ea459e96ba79c6.js +0 -1
  397. package/assets/esri/core/workers/chunks/388e71e8f2ec41bfa5a9.js +0 -1
  398. package/assets/esri/core/workers/chunks/3a5c1c501808352857bd.js +0 -1
  399. package/assets/esri/core/workers/chunks/3aacaa1be5efeac23a37.js +0 -1
  400. package/assets/esri/core/workers/chunks/3b765a8cac9e92f644f2.js +0 -1
  401. package/assets/esri/core/workers/chunks/3bf6d55511cd7722eb93.js +0 -1
  402. package/assets/esri/core/workers/chunks/3e012cd3ca4451f89f59.js +0 -1
  403. package/assets/esri/core/workers/chunks/3fbb6ff940156a981983.js +0 -1
  404. package/assets/esri/core/workers/chunks/40910c69307e2d2d3f28.js +0 -1
  405. package/assets/esri/core/workers/chunks/40c4e14e7bb505ef10a3.js +0 -1
  406. package/assets/esri/core/workers/chunks/4104fa1ede36bcee9be5.js +0 -1
  407. package/assets/esri/core/workers/chunks/423a9882abd4a6dadf86.js +0 -1
  408. package/assets/esri/core/workers/chunks/428561df7ba6f02e2d80.js +0 -1
  409. package/assets/esri/core/workers/chunks/45323491f9005629c602.js +0 -1
  410. package/assets/esri/core/workers/chunks/46d0a25d33b5b328cfce.js +0 -1
  411. package/assets/esri/core/workers/chunks/47dd2bfecc5c4b5f10f0.js +0 -1
  412. package/assets/esri/core/workers/chunks/4845df00f6ebcce6ea3e.js +0 -1
  413. package/assets/esri/core/workers/chunks/48fcc10768d93e95a04e.js +0 -1
  414. package/assets/esri/core/workers/chunks/4a9dd9f8aa98882218f3.js +0 -1
  415. package/assets/esri/core/workers/chunks/4bfffdfbe6d467f143a4.js +0 -1
  416. package/assets/esri/core/workers/chunks/518046d2b95a7590a092.js +0 -1
  417. package/assets/esri/core/workers/chunks/54dad475dc806a38c287.js +0 -1
  418. package/assets/esri/core/workers/chunks/552945a73a95cd2a9f54.js +0 -1
  419. package/assets/esri/core/workers/chunks/5553279998ae07b60f5f.js +0 -1
  420. package/assets/esri/core/workers/chunks/58155f24f8ed6aca7a21.js +0 -1
  421. package/assets/esri/core/workers/chunks/5838f46d341d2fde42ee.js +0 -1
  422. package/assets/esri/core/workers/chunks/592a599f514de373dead.js +0 -1
  423. package/assets/esri/core/workers/chunks/5aba23584e0b230c75f5.js +0 -1
  424. package/assets/esri/core/workers/chunks/5f9bacee6fbf9ac1bca0.js +0 -1
  425. package/assets/esri/core/workers/chunks/62206d5d497b95fc4caf.js +0 -1
  426. package/assets/esri/core/workers/chunks/624b1bb269744142b835.js +0 -1
  427. package/assets/esri/core/workers/chunks/62fc3c367f736c73b0d7.js +0 -1
  428. package/assets/esri/core/workers/chunks/643c33a98f2d30a92001.js +0 -1
  429. package/assets/esri/core/workers/chunks/64daa2a714e59d22bbd4.js +0 -1
  430. package/assets/esri/core/workers/chunks/65621650a53f69f7b05a.js +0 -1
  431. package/assets/esri/core/workers/chunks/6a5356ebed70e0f8f979.js +0 -1
  432. package/assets/esri/core/workers/chunks/6c9933f948efd7923aa1.js +0 -1
  433. package/assets/esri/core/workers/chunks/6cab67fc7044ee9b863b.js +0 -1
  434. package/assets/esri/core/workers/chunks/7014e73dfd3c8baa704c.js +0 -1
  435. package/assets/esri/core/workers/chunks/75839240022b280929f7.js +0 -1
  436. package/assets/esri/core/workers/chunks/76589434d573111a8fb4.js +0 -1
  437. package/assets/esri/core/workers/chunks/767ea5b455b3823afd09.js +0 -1
  438. package/assets/esri/core/workers/chunks/77859a61d059738d057f.js +0 -1
  439. package/assets/esri/core/workers/chunks/78aa5bc6af2758da20d0.js +0 -1
  440. package/assets/esri/core/workers/chunks/7b564226def99fcf79d8.js +0 -1
  441. package/assets/esri/core/workers/chunks/7bbffe07e62897928773.js +0 -1
  442. package/assets/esri/core/workers/chunks/7cadfd7444a2a05cf2fb.js +0 -1
  443. package/assets/esri/core/workers/chunks/7df94cb985db41815fad.js +0 -2
  444. package/assets/esri/core/workers/chunks/823789261ca3338f0fa8.js +0 -1
  445. package/assets/esri/core/workers/chunks/8419934bec7723b0feef.js +0 -1
  446. package/assets/esri/core/workers/chunks/84b0b6e099d949e0fea5.js +0 -1
  447. package/assets/esri/core/workers/chunks/9133c1b7cc1c9da27deb.js +0 -1
  448. package/assets/esri/core/workers/chunks/92ab5886aa2d8b9b179f.js +0 -1
  449. package/assets/esri/core/workers/chunks/9a6e62ef984e9c5babc4.js +0 -1
  450. package/assets/esri/core/workers/chunks/9b676606bf839b7aa433.js +0 -1
  451. package/assets/esri/core/workers/chunks/9d27cc631bab8aa7479e.js +0 -1
  452. package/assets/esri/core/workers/chunks/9dcfaca1f4fa8c8026ac.js +0 -1
  453. package/assets/esri/core/workers/chunks/9f23a61c60949459c14f.js +0 -30
  454. package/assets/esri/core/workers/chunks/a03c4c0bf138734a002e.js +0 -1
  455. package/assets/esri/core/workers/chunks/a0fa60a24e58f7a47e41.js +0 -1
  456. package/assets/esri/core/workers/chunks/a261f4c22224511fdfff.js +0 -1
  457. package/assets/esri/core/workers/chunks/a2ac139d0975085279a6.js +0 -1
  458. package/assets/esri/core/workers/chunks/a806ac351ef5da04c250.js +0 -1
  459. package/assets/esri/core/workers/chunks/ab94c9f62462d7a98f6a.js +0 -1
  460. package/assets/esri/core/workers/chunks/abdb05754c50776c3edd.js +0 -1
  461. package/assets/esri/core/workers/chunks/ad488985824fbb830ed6.js +0 -1
  462. package/assets/esri/core/workers/chunks/b0ac4b0b7aec70cfe6eb.js +0 -1
  463. package/assets/esri/core/workers/chunks/b23009d9f8eb7c20ce45.js +0 -1
  464. package/assets/esri/core/workers/chunks/bfbd1ca28ed2f263e58f.js +0 -1
  465. package/assets/esri/core/workers/chunks/c1b6de0d728d25d7905a.js +0 -1
  466. package/assets/esri/core/workers/chunks/c44be4aaba829e6d149d.js +0 -1
  467. package/assets/esri/core/workers/chunks/ca6907e14b1dde4d5c07.js +0 -1
  468. package/assets/esri/core/workers/chunks/cbbd94c53e75efc99876.js +0 -1
  469. package/assets/esri/core/workers/chunks/ce0e627a5e1cb78adce8.js +0 -1
  470. package/assets/esri/core/workers/chunks/cf7acf5acb6d322fd996.js +0 -1
  471. package/assets/esri/core/workers/chunks/d21480b078ec9680d4c4.js +0 -1
  472. package/assets/esri/core/workers/chunks/d81291dac1932350eccd.js +0 -1
  473. package/assets/esri/core/workers/chunks/da3c54e27a808f4fcc18.js +0 -1
  474. package/assets/esri/core/workers/chunks/dc6d50e1097a920ff820.js +0 -1
  475. package/assets/esri/core/workers/chunks/dd58286dde3b20356f84.js +0 -1
  476. package/assets/esri/core/workers/chunks/dfeddb7b17fa9eaae64c.js +0 -1
  477. package/assets/esri/core/workers/chunks/e4e0c5a45cf32973d5d5.js +0 -1
  478. package/assets/esri/core/workers/chunks/e638391801ad83fe4a68.js +0 -1
  479. package/assets/esri/core/workers/chunks/e755477dc78e9d6038d4.js +0 -1
  480. package/assets/esri/core/workers/chunks/e7712467db46e1385cf4.js +0 -1
  481. package/assets/esri/core/workers/chunks/ed2cb60e4f17f46fb78d.js +0 -1
  482. package/assets/esri/core/workers/chunks/edb55329305becdb204f.js +0 -1
  483. package/assets/esri/core/workers/chunks/f02fe24177e56a7e42b2.js +0 -1
  484. package/assets/esri/core/workers/chunks/f1fb2f12371f4c562079.js +0 -1
  485. package/assets/esri/core/workers/chunks/f3dfe1bd1146a6927407.js +0 -1
  486. package/assets/esri/core/workers/chunks/ff48334528d2554db4fe.js +0 -1
  487. package/views/3d/analysis/LineOfSight/LineOfSightAuthoringStore.js +0 -2
  488. /package/assets/esri/core/workers/chunks/{7df94cb985db41815fad.js.LICENSE.txt → 68f9b2da1fd08785320f.js.LICENSE.txt} +0 -0
  489. /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{__decorate as e}from"tslib";import r from"../../../../core/Accessor.js";import{watch as t}from"../../../../core/reactiveUtils.js";import{property as s,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{splitRenderGeometryChangeSetByMaterial as d}from"./rendererUtils.js";import{MergedRenderer as o}from"../materials/renderers/MergedRenderer.js";let n=class extends r{constructor(e){super(e),this._renderers=new Map}destroy(){this._renderers.forEach(e=>!e.destroyed&&e.destroy()),this._renderers.clear()}initialize(){this.addHandles(t(()=>this.stage.view.state.highlights,()=>this.updateHighlights()))}getMaterialRenderer(e){return this._renderers.get(e)}updateHighlights(){this._renderers.forEach(e=>e.updateHighlights(this.stage.view.state.highlightOrderMap))}commit(e,r,t){const{adds:s,removes:i,updates:n}=e;if(0===s.length&&0===i.length&&0===n.length)return!1;d(e).forEach((e,s)=>{if(r.done)return;let i=this._renderers.get(s);null==i&&e.adds.length>0&&(i=new o({material:s,highlightOrderMap:this.stage.view.state.highlightOrderMap}),i.initializeRenderContext(t),this.rendererAdded(i),this._renderers.set(s,i)),i?(i.modify(e,r),i.updateHighlights(this.stage.view.state.highlightOrderMap),0===i.numGeometries&&(this._renderers.delete(i.material),this.rendererRemoved(i),i.destroy())):(e.clear(),r.madeProgress())});let a=0;for(const d of this._renderers.values())d.drapedPriority=a++;return!0}get canCompact(){for(const e of this._renderers.values())if(e.canCompact)return!0;return!1}compact(e){let r=!1;for(const t of this._renderers.values()){if(e.done)return r;r=t.compact(e)||r}return r}get renderers(){return this._renderers}};e([s({constructOnly:!0})],n.prototype,"stage",void 0),n=e([i("esri.views.3d.webgl-engine.lib.RendererBase")],n);export{n as RendererBase};
2
+ import{__decorate as e}from"tslib";import r from"../../../../core/Accessor.js";import{watch as t}from"../../../../core/reactiveUtils.js";import{property as s,subclass as i}from"../../../../core/accessorSupport/decorators.js";import{splitRenderGeometryChangeSetByMaterial as o}from"./rendererUtils.js";import{MergedRenderer as d}from"../materials/renderers/MergedRenderer.js";let n=class extends r{constructor(e){super(e),this._renderers=new Map}destroy(){this._renderers.forEach(e=>!e.destroyed&&e.destroy()),this._renderers.clear()}initialize(){this.addHandles(t(()=>this.stage.view.state.highlights,()=>this.updateHighlights()))}getMaterialRenderer(e){return this._renderers.get(e)}updateHighlights(){this._renderers.forEach(e=>e.updateHighlights(this.stage.view.state.highlightOrderMap))}commit(e,r,t){const{adds:s,removes:i,updates:n}=e;if(0===s.length&&0===i.length&&0===n.length)return!1;o(e).forEach((e,s)=>{if(r.done)return;let i=this._renderers.get(s);null==i&&e.adds.length>0&&(i=new d({material:s,highlightOrderMap:this.stage.view.state.highlightOrderMap}),i.initializeRenderContext(t),this.addRenderer(i),this._renderers.set(s,i)),i?(i.modify(e,r),i.updateHighlights(this.stage.view.state.highlightOrderMap),0===i.numGeometries&&(this._renderers.delete(i.material),this.removeRenderer(i),i.destroy())):(e.clear(),r.madeProgress())});let a=0;for(const o of this._renderers.values())o.drapedPriority=a++;return!0}get canCompact(){for(const e of this._renderers.values())if(e.canCompact)return!0;return!1}compact(e){let r=!1;for(const t of this._renderers.values()){if(e.done)return r;r=t.compact(e)||r}return r}get renderers(){return this._renderers}};e([s({constructOnly:!0})],n.prototype,"stage",void 0),n=e([i("esri.views.3d.webgl-engine.lib.RendererBase")],n);export{n as RendererBase};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{addMany as r,filterInPlace as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{someMap as s,everyMap as i}from"../../../../core/MapUtils.js";import n from"../../../../core/PooledArray.js";import{property as o,subclass as d}from"../../../../core/accessorSupport/decorators.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{OverlayTarget as h}from"../../terrain/Intersector.js";import{ChangeSet as c,RenderGeometryUpdate as l}from"./ChangeSet.js";import{IntersectorResult as p}from"./IntersectorResult.js";import{RendererBase as u}from"./RendererBase.js";import{noBudget as g}from"../../../support/Scheduler.js";let m=class extends u{constructor(e){super(e),this._pending=new y,this._changes=new c,this._sortedRenderers=new n,this._geometries=new Map,this._hasHighlights=!1,this._hasWater=!1}destroy(){this.destroyed||(this._changes.prune(),this._sortedRenderers.prune(),this._geometries.clear(),this._pending.clear())}get updating(){return!this._pending.empty||this._changes.updates.length>0}get rctx(){return this.rendererContext.rctx}get _localOriginFactory(){return this.rendererContext.localOriginFactory}get hasHighlights(){return this._hasHighlights}hasHighlight(e){return s(this.renderers,r=>r.hasHighlight(e))}get hasWater(){return this._hasWater}get hasOccluders(){return this.renderers&&s(this.renderers,e=>e.hasOnlyOccluders)}get hasOnlyOccluders(){return i(this.renderers,e=>e.hasOnlyOccluders)}get isEmpty(){return!this.updating&&0===this.renderers.size&&0===this._geometries.size}get sortedRenderers(){return this._sortedRenderers}commitChanges(){return!!this.updating&&(this._processAddsRemoves(),this.commit(this._changes,g,this.rendererContext.pluginContext)&&(this._updateSortedMaterialRenderers(),this._hasHighlights=s(this.renderers,e=>{const r=e.produces.get(18);return!!r&&r(10)}),this._hasWater=s(this.renderers,e=>{const r=e.produces.get(19);return!!r&&r(4)})),this.notifyChange("updating"),!0)}rendererAdded(){this._sortedRenderers.clear()}rendererRemoved(){this._sortedRenderers.clear()}addGeometries(e,r){if(0===e.length)return;const t=this._validateRenderGeometries(e);for(const i of t)this._geometries.set(i.id,i);const s=this._pending.empty;for(const i of t)this._pending.adds.add(i);switch(s&&this.notifyChange("updating"),r){case 0:this._notifyGraphicVisibilityChanged(e);break;case 1:this._notifyGraphicGeometryChanged(e)}}removeGeometries(e,r){if(this.destroyed)return;const t=this._pending.empty,s=this._pending.adds;for(const i of e)s.has(i)?(this._pending.removed.add(i),s.delete(i)):this._pending.removed.has(i)||this._pending.removes.add(i),this._geometries.delete(i.id);t&&!this._pending.empty&&this.notifyChange("updating"),1===r&&this._notifyGraphicGeometryChanged(e)}modifyGeometries(e,r){const t=0===this._changes.updates.length;for(const s of e){const e=new l;this._changes.updates.push(e),e.renderGeometry=this._ensureValidRenderGeometry(s),e.updateType=r}switch(t&&this._changes.updates.length>0&&this.notifyChange("updating"),r){case 4:case 2:return this._notifyGraphicGeometryChanged(e);case 1:return this._notifyGraphicVisibilityChanged(e)}}updateAnimation(e){let r=!1;return this._sortedRenderers.forAll(t=>r=!!t.updateAnimation&&t.updateAnimation(e)||r),r}precompile(e){return this._sortedRenderers.reduce((r,t)=>t.precompile(e)||r,!1)}render(e){this._sortedRenderers.forAll(r=>{const t=r.acquireTechniques(e);t&&r.render(e,t)})}intersect(e,r,t,s,i){for(const n of this._geometries.values()){if(!s(n))continue;this._intersectRenderGeometry(n,t,r,0,e,i);const o=this.rendererContext.longitudeCyclical;o&&(n.boundingSphere.center[0]-n.boundingSphere.radius<o.min&&this._intersectRenderGeometry(n,t,r,o.range,e,i),n.boundingSphere.center[0]+n.boundingSphere.radius>o.max&&this._intersectRenderGeometry(n,t,r,-o.range,e,i)),i++}return i}_updateSortedMaterialRenderers(){if(!(this._sortedRenderers.length>0)){for(const e of this.renderers.values())this._sortedRenderers.push(e);this._sortedRenderers.sort((e,r)=>r.material?.renderPriority===e.material?.renderPriority?e.drapedPriority-r.drapedPriority:(r.material?.renderPriority||0)-(e.material?.renderPriority||0))}}_processAddsRemoves(){this._changes.adds.length=0,this._changes.removes.length=0,r(this._changes.adds,Array.from(this._pending.adds)),r(this._changes.removes,Array.from(this._pending.removes)),t(this._changes.updates,({renderGeometry:e})=>!this._pending.has(e)),this._pending.clear()}_intersectRenderGeometry(e,r,t,s,i,n){if(!e.visible||!e.material.visible||!e.material.intersectDraped)return;let o=0;s+=e.transformation[12],o=e.transformation[13],f[0]=t[0]-s,f[1]=t[1]-o,e.screenToWorldRatio=this.rendererContext.screenToWorldRatio,e.material.intersectDraped(e,i,f,(t,s,o)=>{_(r,o,n,e.material.renderPriority,i,e.layerViewUid,e.graphicUid)},r)}_notifyGraphicGeometryChanged(e){if(null==this.drapeSource.notifyGraphicGeometryChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicGeometryChanged(t),r=t)}_notifyGraphicVisibilityChanged(e){if(null==this.drapeSource.notifyGraphicVisibilityChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicVisibilityChanged(t),r=t)}_validateRenderGeometries(e){for(const r of e)this._ensureValidRenderGeometry(r);return e}_ensureValidRenderGeometry(e){return null==e.localOrigin&&(e.localOrigin=this._localOriginFactory.getOrigin(e.boundingSphere.center)),e}get test(){}};e([o({constructOnly:!0})],m.prototype,"drapeSource",void 0),e([o({constructOnly:!0})],m.prototype,"rendererContext",void 0),e([o()],m.prototype,"updating",null),e([o()],m.prototype,"rctx",null),e([o()],m.prototype,"_localOriginFactory",null),e([o({readOnly:!0})],m.prototype,"isEmpty",null),e([o()],m.prototype,"_geometries",void 0),m=e([d("esri.views.3d.webgl-engine.lib.SortedRenderGeometryRenderer")],m);class y{constructor(){this.adds=new Set,this.removes=new Set,this.removed=new Set}get empty(){return 0===this.adds.size&&0===this.removes.size&&0===this.removed.size}has(e){return this.adds.has(e)||this.removes.has(e)||this.removed.has(e)}clear(){this.adds.clear(),this.removes.clear(),this.removed.clear()}}function _(e,r,t,s,i,n,o){const d=new h(n,o,r),a=r=>{r.set(5,d,e.distance,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.distance||i.results.ground.distance<=i.results.min.distance)&&a(i.results.min),0!==i.options.store&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.distance||i.results.ground.distance>i.results.max.distance)&&a(i.results.max),2===i.options.store){const e=new p(i.ray);a(e),i.results.all.push(e)}}const f=a();export{m as SortedRenderGeometryRenderer};
2
+ import{__decorate as e}from"tslib";import{addMany as r,filterInPlace as t}from"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{someMap as s,everyMap as i}from"../../../../core/MapUtils.js";import n from"../../../../core/PooledArray.js";import{property as o,subclass as d}from"../../../../core/accessorSupport/decorators.js";import{create as a}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{OverlayTarget as h}from"../../terrain/Intersector.js";import{ChangeSet as c,RenderGeometryUpdate as l}from"./ChangeSet.js";import{IntersectorResult as p}from"./IntersectorResult.js";import{RendererBase as u}from"./RendererBase.js";import{noBudget as g}from"../../../support/Scheduler.js";let m=class extends u{constructor(e){super(e),this._pending=new y,this._changes=new c,this._sortedRenderers=new n,this._geometries=new Map,this._hasHighlights=!1,this._hasWater=!1}destroy(){this.destroyed||(this._changes.prune(),this._sortedRenderers.prune(),this._geometries.clear(),this._pending.clear())}get updating(){return!this._pending.empty||this._changes.updates.length>0}get rctx(){return this.rendererContext.rctx}get _localOriginFactory(){return this.rendererContext.localOriginFactory}get hasHighlights(){return this._hasHighlights}hasHighlight(e){return s(this.renderers,r=>r.hasHighlight(e))}get hasWater(){return this._hasWater}get hasOccluders(){return this.renderers&&s(this.renderers,e=>e.hasOnlyOccluders)}get hasOnlyOccluders(){return i(this.renderers,e=>e.hasOnlyOccluders)}get isEmpty(){return!this.updating&&0===this.renderers.size&&0===this._geometries.size}get sortedRenderers(){return this._sortedRenderers}commitChanges(){return!!this.updating&&(this._processAddsRemoves(),this.commit(this._changes,g,this.rendererContext.pluginContext)&&(this._updateSortedMaterialRenderers(),this._hasHighlights=s(this.renderers,e=>{const r=e.produces.get(18);return!!r&&r(10)}),this._hasWater=s(this.renderers,e=>{const r=e.produces.get(19);return!!r&&r(4)})),this.notifyChange("updating"),!0)}addRenderer(){this._sortedRenderers.clear()}removeRenderer(){this._sortedRenderers.clear()}addGeometries(e,r){if(0===e.length)return;const t=this._validateRenderGeometries(e);for(const i of t)this._geometries.set(i.id,i);const s=this._pending.empty;for(const i of t)this._pending.adds.add(i);switch(s&&this.notifyChange("updating"),r){case 0:this._notifyGraphicVisibilityChanged(e);break;case 1:this._notifyGraphicGeometryChanged(e)}}removeGeometries(e,r){if(this.destroyed)return;const t=this._pending.empty,s=this._pending.adds;for(const i of e)s.has(i)?(this._pending.removed.add(i),s.delete(i)):this._pending.removed.has(i)||this._pending.removes.add(i),this._geometries.delete(i.id);t&&!this._pending.empty&&this.notifyChange("updating"),1===r&&this._notifyGraphicGeometryChanged(e)}modifyGeometries(e,r){const t=0===this._changes.updates.length;for(const s of e){const e=new l;this._changes.updates.push(e),e.renderGeometry=this._ensureValidRenderGeometry(s),e.updateType=r}switch(t&&this._changes.updates.length>0&&this.notifyChange("updating"),r){case 4:case 2:return this._notifyGraphicGeometryChanged(e);case 1:return this._notifyGraphicVisibilityChanged(e)}}updateAnimation(e){let r=!1;return this._sortedRenderers.forAll(t=>r=!!t.updateAnimation&&t.updateAnimation(e)||r),r}precompile(e){return this._sortedRenderers.reduce((r,t)=>t.precompile(e)||r,!1)}render(e){this._sortedRenderers.forAll(r=>{const t=r.acquireTechniques(e);t&&r.render(e,t)})}intersect(e,r,t,s,i){for(const n of this._geometries.values()){if(!s(n))continue;this._intersectRenderGeometry(n,t,r,0,e,i);const o=this.rendererContext.longitudeCyclical;o&&(n.boundingSphere.center[0]-n.boundingSphere.radius<o.min&&this._intersectRenderGeometry(n,t,r,o.range,e,i),n.boundingSphere.center[0]+n.boundingSphere.radius>o.max&&this._intersectRenderGeometry(n,t,r,-o.range,e,i)),i++}return i}_updateSortedMaterialRenderers(){if(!(this._sortedRenderers.length>0)){for(const e of this.renderers.values())this._sortedRenderers.push(e);this._sortedRenderers.sort((e,r)=>r.material?.renderPriority===e.material?.renderPriority?e.drapedPriority-r.drapedPriority:(r.material?.renderPriority||0)-(e.material?.renderPriority||0))}}_processAddsRemoves(){this._changes.adds.length=0,this._changes.removes.length=0,r(this._changes.adds,Array.from(this._pending.adds)),r(this._changes.removes,Array.from(this._pending.removes)),t(this._changes.updates,({renderGeometry:e})=>!this._pending.has(e)),this._pending.clear()}_intersectRenderGeometry(e,r,t,s,i,n){if(!e.visible||!e.material.visible||!e.material.intersectDraped)return;let o=0;s+=e.transformation[12],o=e.transformation[13],f[0]=t[0]-s,f[1]=t[1]-o,e.screenToWorldRatio=this.rendererContext.screenToWorldRatio,e.material.intersectDraped(e,i,f,(t,s,o)=>{_(r,o,n,e.material.renderPriority,i,e.layerViewUid,e.graphicUid)},r)}_notifyGraphicGeometryChanged(e){if(null==this.drapeSource.notifyGraphicGeometryChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicGeometryChanged(t),r=t)}_notifyGraphicVisibilityChanged(e){if(null==this.drapeSource.notifyGraphicVisibilityChanged)return;let r;for(const{graphicUid:t}of e)null!=t&&t!==r&&(this.drapeSource.notifyGraphicVisibilityChanged(t),r=t)}_validateRenderGeometries(e){for(const r of e)this._ensureValidRenderGeometry(r);return e}_ensureValidRenderGeometry(e){return null==e.localOrigin&&(e.localOrigin=this._localOriginFactory.getOrigin(e.boundingSphere.center)),e}get test(){}};e([o({constructOnly:!0})],m.prototype,"drapeSource",void 0),e([o({constructOnly:!0})],m.prototype,"rendererContext",void 0),e([o()],m.prototype,"updating",null),e([o()],m.prototype,"rctx",null),e([o()],m.prototype,"_localOriginFactory",null),e([o({readOnly:!0})],m.prototype,"isEmpty",null),e([o()],m.prototype,"_geometries",void 0),m=e([d("esri.views.3d.webgl-engine.lib.SortedRenderGeometryRenderer")],m);class y{constructor(){this.adds=new Set,this.removes=new Set,this.removed=new Set}get empty(){return 0===this.adds.size&&0===this.removes.size&&0===this.removed.size}has(e){return this.adds.has(e)||this.removes.has(e)||this.removed.has(e)}clear(){this.adds.clear(),this.removes.clear(),this.removed.clear()}}function _(e,r,t,s,i,n,o){const d=new h(n,o,r),a=r=>{r.set(5,d,e.distance,e.normal,e.transformation,t,s)};if((null==i.results.min.drapedLayerOrder||t>=i.results.min.drapedLayerOrder)&&(null==i.results.min.distance||i.results.ground.distance<=i.results.min.distance)&&a(i.results.min),0!==i.options.store&&(null==i.results.max.drapedLayerOrder||t<i.results.max.drapedLayerOrder)&&(null==i.results.max.distance||i.results.ground.distance>i.results.max.distance)&&a(i.results.max),2===i.options.store){const e=new p(i.ray);a(e),i.results.all.push(e)}}const f=a();export{m as SortedRenderGeometryRenderer};
@@ -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 r from"../../../../../core/Error.js";import{someMap as n,getOrCreateMapValue as s}from"../../../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../../../core/maybe.js";import{isAborted as i,throwIfAborted as o}from"../../../../../core/promiseUtils.js";import{property as l,subclass as c}from"../../../../../core/accessorSupport/decorators.js";import{create as h}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{subtract as d,dot as u,transformMat4 as m}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as f}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as _,freeze as p}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{debugFlags as g}from"../../../support/debugFlags.js";import{glLayout as y}from"../../../support/buffer/glUtil.js";import v from"../../../webgl/RenderCamera.js";import{isColor as b}from"../../core/shaderLibrary/ShaderOutput.js";import{AsyncRenderPlugin as I}from"../../effects/RenderPlugin.js";import{DepthRange as C}from"../DepthRange.js";import{assert as D}from"../Util.js";import{InstanceData as R}from"./InstanceData.js";import{InstanceOctree as E}from"./InstanceOctree.js";import{LevelSelector as x}from"./LevelSelector.js";import{LodLevel as S}from"./LodLevel.js";import{getRenderInstanceDataLayout as w,RenderInstanceData as L}from"./RenderInstanceData.js";import{colorMixModes as j}from"../../materials/internal/MaterialUtil.js";import{encodeDoubleVec3 as U}from"../../materials/renderers/utils.js";import{DefaultMaterialDrawParameters as O}from"../../shaders/DefaultMaterialTechnique.js";import{defaultHighlightName as T}from"../../../../support/HighlightDefaults.js";import{TaskPriority as A,noBudget as M}from"../../../../support/Scheduler.js";import{bindVertexBufferLayout as q}from"../../../../webgl/Util.js";import{fromLayout as B}from"../../../../webgl/VertexAttributeLocations.js";const F=e=>{const t=e.baseBoundingSphere.radius,r=e.levels.map(e=>e.minScreenSpaceRadius);return new x(t,r)};let V=class extends I{constructor(e,t){super(e),this.type=3,this.isGround=!1,this._levels=[],this._defaultRenderInstanceData=new Array,this._highlightRenderInstanceDatas=new Map,this._instanceIndex=0,this._cycleStartIndex=0,this._slicePlane=!1,this._camera=new v,this._updateCyclesWithStaticCamera=-1,this._needFullCycle=!1,this.produces=new Map([[2,e=>this._produces(e)],[4,e=>!!this._hasTransparentLevels()&&this._produces(e)]]),this._instanceData=new R({shaderTransformation:e.shaderTransformation},e.symbol.materialParameters),this.addHandles(t.registerTask(A.LOD_RENDERER,this))}initialize(){this._instanceBufferLayout=w(this.symbol.materialParameters),this._glInstanceBufferLayout=y(this._instanceBufferLayout,1),this.addHandles([this._instanceData.events.on("instances-changed",()=>this._requestUpdateCycle()),this._instanceData.events.on("instance-transform-changed",({index:e})=>{this._requestUpdateCycle(),this.metadata.notifyGraphicGeometryChanged(e)}),this._instanceData.events.on("instance-visibility-changed",({index:e})=>{this._requestUpdateCycle(!0),this.metadata.notifyGraphicVisibilityChanged(e)}),this._instanceData.events.on("instance-highlight-changed",()=>this._requestUpdateCycle(!0))])}get _allRenderInstanceData(){return[this._defaultRenderInstanceData,...this._highlightRenderInstanceDatas.values()]}get _allRenderInstanceDataExceptHighlightShadow(){const e=[this._defaultRenderInstanceData];for(const t of this._highlightRenderInstanceDatas)t[0]!==T&&e.push(t[1]);return e}hasHighlight(e){return this._highlightRenderInstanceDatas.has(e)}get _enableLevelSelection(){return this.symbol.levels.length>1}get levels(){return this._levels}get baseBoundingBox(){return this._levels[this._levels.length-1].boundingBox}get baseBoundingSphere(){return this._levels[this._levels.length-1].boundingSphere}get baseMaterial(){return this._levels[this._levels.length-1].components[0].material}get slicePlaneEnabled(){return this._slicePlane}set slicePlaneEnabled(e){this._slicePlane=e}get layerViewUid(){return this.metadata.layerViewUid}get instanceData(){return this._instanceData}get hasEmissions(){let e=0;for(const t of this._levels){const r=t.hasEmissions;if(2===r&&1===e||1===r&&2===e?e=3:0!==r&&0===e&&(e=r),3===e)return e}return e}get usedMemory(){return this._allRenderInstanceData.reduce((e,t)=>t.reduce((e,t)=>e+t.usedMemory,e),this._levels.reduce((e,t)=>e+t.components.reduce((e,t)=>e+t.usedMemory,0),0))}get renderStats(){const e=this._instanceData.size,t=[];return this._levels.forEach((e,r)=>{const n=this._allRenderInstanceData[0][r].size+this._allRenderInstanceData[1][r].size,s=e.triangleCount;t.push({renderedInstances:n,renderedTriangles:n*s,trianglesPerInstance:s})}),{totalInstances:e,renderedInstances:t.reduce((e,t)=>e+t.renderedInstances,0),renderedTriangles:t.reduce((e,t)=>e+t.renderedTriangles,0),levels:t}}_createRenderInstanceDataArray(){const{rctx:e}=this._context.renderContext;return this.symbol.levels.map(t=>new L(e,this._instanceBufferLayout))}async initializeRenderContext(e,r){this._context=e,this._defaultRenderInstanceData=this._createRenderInstanceDataArray();const n=await Promise.allSettled(this.symbol.levels.map(t=>S.create(e,t,r))),s=n.map(e=>"fulfilled"===e.status?e.value:null).filter(t);if(i(r)||s.length!==n.length){s.forEach(e=>e.destroy()),o(r);for(const e of n)if("rejected"===e.status)throw e.reason}this._levels=s,this._levelSelector=F(this)}uninitializeRenderContext(){this._invalidateOctree(),this._levels.forEach(e=>e.destroy()),this._defaultRenderInstanceData.forEach(e=>e.destroy()),this._highlightRenderInstanceDatas.forEach(e=>e.forEach(e=>e.destroy()))}_hasTransparentLevels(){return this._levels.some(e=>e.components.some(e=>{const t=e.material.produces.get(4);return t?.(0)}))}hasHighlights(){return n(this._highlightRenderInstanceDatas,e=>e.some(e=>e.size>0))}_produces(e){return(10!==e||this.hasHighlights())&&(6!==e||this.hasHighlight(T))}prepareRender(e){if(!g.LOD_INSTANCE_RENDERER_DISABLE_UPDATES){if(this._enableLevelSelection){const t=e.bind.contentCamera.equals(this._camera);this._camera.copyFrom(e.bind.contentCamera),t||this._requestUpdateCycle()}this._needFullCycle&&(this.runTask(M),this._needFullCycle=!1)}}acquireTechniques(e){if(!this.baseMaterial.visible||!this.baseMaterial.isVisibleForOutput(e.output))return null;const t=this._getInstanceDatas(e);if(!t)return null;const r=new Array,n=this.levels;return t.forEach(t=>n.forEach(({components:n},s)=>n.forEach(n=>r.push(this._beginComponent(e,t[s],n))))),r}render(e,t){const r=this._getInstanceDatas(e);if(!r||null==t)return;let n=0;const s=this.levels;r.forEach(r=>s.forEach(({components:s},a)=>s.forEach(s=>this._renderComponent(e,t[n++],r[a],s,a)))),e.rctx.unbindBuffer(34962),e.rctx.bindVAO(null)}_getInstanceDatas(e){const{output:t,bind:r}=e,n=10===t,s=6===t,a=7!==t;if(!n&&!s)return a?this._allRenderInstanceData:this._allRenderInstanceDataExceptHighlightShadow;const{_highlightRenderInstanceDatas:i}=this;if(a){if(n){const e=r.highlight?.name;if(!e)return null;const t=i.get(e);return t?[t]:null}const e=i.get(T);return s?e?[e]:null:Array.from(i.values())}return null}intersect(e,t,r,n){if(!this.baseMaterial.visible||null==this._octree)return;const s=f();d(s,n,r);const a=s=>{this._instanceData.getCombinedModelTransform(s,G),e.transform.set(G),m(W,r,e.transform.inverse),m(k,n,e.transform.inverse);const a=this._instanceData.getState(s),i=this._instanceData.getLodLevel(s),o=this._levels.length;4&a&&(D(!!(18&a),"invalid instance state"),D(i>=0&&i<o,"invaid lod level"),this._levels[i].intersect(e,t,W,k,s,this.metadata,o))};this.baseMaterial.parameters.verticalOffset?this._octree.forEach(a):this._octree.forEachAlongRay(r,s,a)}notifyShaderTransformationChanged(){this._invalidateOctree(),this._requestUpdateCycle()}get _octree(){if(null==this._octreeCached){const e=this._instanceData,t=e.view?.state;if(!t)return null;this._octreeCached=new E(e,this.baseBoundingSphere);for(let r=0;r<e.capacity;++r)18&t.get(r)&&this._octreeCached.addInstance(r)}return this._octreeCached}_invalidateOctree(){this._octreeCached=a(this._octreeCached)}queryDepthRange(e){if(null==this._octree)return new C;const t=e.viewForward,r=this._octree.findClosest(t,1,e.frustum),n=this._octree.findClosest(t,-1,e.frustum);if(null==r||null==n)return new C;const s=e.eye,a=this._instanceData.view;a.boundingSphere.getVec(r,N),d(N,N,s);const i=u(N,t)-N[3];a.boundingSphere.getVec(n,N),d(N,N,s);const o=u(N,t)+N[3];return new C(i,o)}_requestUpdateCycle(e=!1){this._updateCyclesWithStaticCamera=-1,this._cycleStartIndex=this._instanceIndex,e&&(this._needFullCycle=!0,this._context.requestRender())}_startUpdateCycle(){this._updateCyclesWithStaticCamera++,this._allRenderInstanceData.forEach(e=>e.forEach(e=>e.startUpdateCycle()))}get readyToRun(){return this._instanceData.size>0&&this._updateCyclesWithStaticCamera<1}runTask(e){const{_enableLevelSelection:t,_camera:n,_levelSelector:a}=this;this._allRenderInstanceData.forEach(e=>e.forEach(e=>e.beginUpdate()));const i=this._instanceData,o=i.view;let l=i.size;const c=i.capacity;let h=this._instanceIndex;const d=Math.ceil(c/500),{_highlightRenderInstanceDatas:u}=this;for(let m=0;m<l&&!e.done;++m){h===this._cycleStartIndex&&this._startUpdateCycle();const m=o.state.get(h);let f=0;if(!(1&m)){h=h+1===c?0:h+1,l++;continue}const _=o.lodLevel.get(h);if(2&m&&this._defaultRenderInstanceData[_].freeTail(),16&m){const e=i.geHighlightOptionsPrev(h);if(e){const t=u.get(e);if(!t)throw new r("internal:lod-renderer","Internal error in lodRenderer");t[_].freeTail(),t.every(e=>e.isEmpty)&&(t.forEach(e=>e.destroy()),u.delete(e))}}if(32&m)i.freeInstance(h);else if(4&m){let e=0;if(t&&(o.modelOrigin.getVec(h,z),e=a.selectLevel(z,i.getCombinedMedianScaleFactor(h),n)),f=-83&m,e>=0)if(8&m){const t=i.getHighlightName(h);if(t){const n=()=>{const e=this._createRenderInstanceDataArray();return e.forEach(e=>e.beginUpdate()),e},a=s(u,t,n);if(e>=a.length)throw new r("internal:lod-renderer",`LodRenderer internal error - missing lodLevel ${e}`);H(a[e],o,h)}f|=16}else H(this._defaultRenderInstanceData[e],o,h),f|=2;o.state.set(h,f),o.lodLevel.set(h,e)}else f=-83&m,o.state.set(h,f);const p=!!(18&m),g=!!(18&f);null!=this._octreeCached&&(!p&&g?this._octreeCached.addInstance(h):p&&!g?this._octreeCached.removeInstance(h):p&&g&&64&m&&(this._octreeCached.removeInstance(h),this._octreeCached.addInstance(h))),h=h+1===c?0:h+1,h%d===0&&e.madeProgress(),p!==g&&this.metadata.notifyGraphicVisibilityChanged(h),g&&64&m&&this.metadata.notifyGraphicGeometryChanged(h)}this._instanceIndex=h,this._allRenderInstanceData.forEach(e=>e.forEach(e=>e.endUpdate())),this._context.requestRender()}_beginComponent(e,t,r){if(0===t.size)return null;const n=r.glMaterialLoader.load(e.rctx,e.bind.slot,e.output);return n?.beginSlot(e.bind)}_renderComponent(e,t,r,n,s){if(!t)return;const{bind:a,rctx:i}=e,o=i.bindTechnique(t,a,n.material.parameters,Z),l=this._glInstanceBufferLayout;o.assertCompatibleVertexAttributeLocations(n.vao,B(l)),i.bindVAO(n.vao),g.LOD_INSTANCE_RENDERER_COLORIZE_BY_LEVEL&&b(e.output)&&(o.setUniform4fv("externalColor",Y[Math.min(s,Y.length-1)]),o.setUniform1i("symbolColorMixMode",j.replace));const c=r.capacity,h=r.headIndex,d=r.tailIndex,u=r.firstIndex,m=(e,s)=>{q(i,o.locations,r.buffer,e),i.drawArraysInstanced(t.primitiveType,0,n.numVertices,s-e)};n.material.transparent&&null!=u?h>d?(D(u>=d&&u<=h,"invalid firstIndex"),m(u,h),m(d,u)):h<d&&(u<=h?(D(u>=0&&u<=h,"invalid firstIndex"),m(u,h),m(d,c),m(0,u)):(D(u>=d&&u<=c,"invalid firstIndex"),m(u,c),m(0,h),m(d,u))):h>d?m(d,h):h<d&&(m(0,h),m(d,c))}};function H(e,t,r){const n=e.allocateHead();P(t,r,e.view,n)}function P(e,t,r,n){U(e.modelOrigin,t,r.modelOriginHi,r.modelOriginLo,n),r.model.copyFrom(n,e.model,t),r.modelNormal.copyFrom(n,e.modelNormal,t),e.color&&r.color&&r.color.copyFrom(n,e.color,t),e.olidColor&&r.olidColor&&r.olidColor.copyFrom(n,e.olidColor,t),e.featureAttribute&&r.featureAttribute&&r.featureAttribute.copyFrom(n,e.featureAttribute,t)}e([l({constructOnly:!0})],V.prototype,"symbol",void 0),e([l({constructOnly:!0})],V.prototype,"metadata",void 0),e([l({constructOnly:!0})],V.prototype,"shaderTransformation",void 0),e([l()],V.prototype,"_instanceData",void 0),e([l()],V.prototype,"_cycleStartIndex",void 0),e([l({readOnly:!0})],V.prototype,"_enableLevelSelection",null),e([l()],V.prototype,"_updateCyclesWithStaticCamera",void 0),e([l({readOnly:!0})],V.prototype,"readyToRun",null),V=e([c("esri.views.3d.webgl-engine.lib.lodRendering.LodRenderer")],V);const z=f(),N=_(),G=h(),W=f(),k=f(),Y=[p(1,0,1,1),p(0,0,1,1),p(0,1,0,1),p(1,1,0,1),p(1,0,0,1)],Z=new O;export{V as LodRenderer};
2
+ import{__decorate as e}from"tslib";import{isSome as t}from"../../../../../core/arrayUtils.js";import r from"../../../../../core/Error.js";import{someMap as n,getOrCreateMapValue as s}from"../../../../../core/MapUtils.js";import{destroyMaybe as a}from"../../../../../core/maybe.js";import{isAborted as i,throwIfAborted as o}from"../../../../../core/promiseUtils.js";import{property as l,subclass as c}from"../../../../../core/accessorSupport/decorators.js";import{create as h}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{subtract as d,dot as u,transformMat4 as m}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as f}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as _,freeze as p}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{debugFlags as g}from"../../../support/debugFlags.js";import{glLayout as y}from"../../../support/buffer/glUtil.js";import v from"../../../webgl/RenderCamera.js";import{isColor as b}from"../../core/shaderLibrary/ShaderOutput.js";import{AsyncRenderPlugin as I}from"../../effects/RenderPlugin.js";import{DepthRange as C}from"../DepthRange.js";import{assert as D}from"../Util.js";import{InstanceData as R}from"./InstanceData.js";import{InstanceOctree as E}from"./InstanceOctree.js";import{LevelSelector as x}from"./LevelSelector.js";import{LodLevel as S}from"./LodLevel.js";import{getRenderInstanceDataLayout as w,RenderInstanceData as L}from"./RenderInstanceData.js";import{colorMixModes as j}from"../../materials/internal/MaterialUtil.js";import{encodeDoubleVec3 as U}from"../../materials/renderers/utils.js";import{DefaultMaterialDrawParameters as O}from"../../shaders/DefaultMaterialTechnique.js";import{defaultHighlightName as T}from"../../../../support/HighlightDefaults.js";import{TaskPriority as A,noBudget as M}from"../../../../support/Scheduler.js";import{bindVertexBufferLayout as q}from"../../../../webgl/Util.js";import{fromLayout as B}from"../../../../webgl/VertexAttributeLocations.js";const F=e=>{const t=e.baseBoundingSphere.radius,r=e.levels.map(e=>e.minScreenSpaceRadius);return new x(t,r)};let V=class extends I{constructor(e,t){super(e),this.type=3,this.isGround=!1,this._levels=[],this._defaultRenderInstanceData=new Array,this._highlightRenderInstanceDatas=new Map,this._instanceIndex=0,this._cycleStartIndex=0,this._slicePlane=!1,this._camera=new v,this._updateCyclesWithStaticCamera=-1,this._needFullCycle=!1,this.produces=new Map([[2,e=>this._produces(e)],[4,e=>!!this._hasTransparentLevels()&&this._produces(e)]]),this._instanceData=new R({shaderTransformation:e.shaderTransformation},e.symbol.materialParameters),this.addHandles(t.registerTask(A.LOD_RENDERER,this))}initialize(){this._instanceBufferLayout=w(this.symbol.materialParameters),this._glInstanceBufferLayout=y(this._instanceBufferLayout,1),this.addHandles([this._instanceData.events.on("instances-changed",()=>this._requestUpdateCycle()),this._instanceData.events.on("instance-transform-changed",({index:e})=>{this._requestUpdateCycle(),this.metadata.notifyGraphicGeometryChanged(e)}),this._instanceData.events.on("instance-visibility-changed",({index:e})=>{this._requestUpdateCycle(!0),this.metadata.notifyGraphicVisibilityChanged(e)}),this._instanceData.events.on("instance-highlight-changed",()=>this._requestUpdateCycle(!0))])}get _allRenderInstanceData(){return[this._defaultRenderInstanceData,...this._highlightRenderInstanceDatas.values()]}get _allRenderInstanceDataExceptHighlightShadow(){const e=[this._defaultRenderInstanceData];for(const t of this._highlightRenderInstanceDatas)t[0]!==T&&e.push(t[1]);return e}hasHighlight(e){return this._highlightRenderInstanceDatas.has(e)}get _enableLevelSelection(){return this.symbol.levels.length>1}get levels(){return this._levels}get baseBoundingBox(){return this._levels[this._levels.length-1].boundingBox}get baseBoundingSphere(){return this._levels[this._levels.length-1].boundingSphere}get baseMaterial(){return this._levels[this._levels.length-1].components[0].material}get slicePlaneEnabled(){return this._slicePlane}set slicePlaneEnabled(e){this._slicePlane=e}get layerViewUid(){return this.metadata.layerViewUid}get instanceData(){return this._instanceData}get emissions(){let e=0;for(const t of this._levels){const r=t.hasEmissions;if(2===r&&1===e||1===r&&2===e?e=3:0!==r&&0===e&&(e=r),3===e)return e}return e}get usedMemory(){return this._allRenderInstanceData.reduce((e,t)=>t.reduce((e,t)=>e+t.usedMemory,e),this._levels.reduce((e,t)=>e+t.components.reduce((e,t)=>e+t.usedMemory,0),0))}get renderStats(){const e=this._instanceData.size,t=[];return this._levels.forEach((e,r)=>{const n=this._allRenderInstanceData[0][r].size+this._allRenderInstanceData[1][r].size,s=e.triangleCount;t.push({renderedInstances:n,renderedTriangles:n*s,trianglesPerInstance:s})}),{totalInstances:e,renderedInstances:t.reduce((e,t)=>e+t.renderedInstances,0),renderedTriangles:t.reduce((e,t)=>e+t.renderedTriangles,0),levels:t}}_createRenderInstanceDataArray(){const{rctx:e}=this._context.renderContext;return this.symbol.levels.map(t=>new L(e,this._instanceBufferLayout))}async initializeRenderContext(e,r){this._context=e,this._defaultRenderInstanceData=this._createRenderInstanceDataArray();const n=await Promise.allSettled(this.symbol.levels.map(t=>S.create(e,t,r))),s=n.map(e=>"fulfilled"===e.status?e.value:null).filter(t);if(i(r)||s.length!==n.length){s.forEach(e=>e.destroy()),o(r);for(const e of n)if("rejected"===e.status)throw e.reason}this._levels=s,this._levelSelector=F(this)}uninitializeRenderContext(){this._invalidateOctree(),this._levels.forEach(e=>e.destroy()),this._defaultRenderInstanceData.forEach(e=>e.destroy()),this._highlightRenderInstanceDatas.forEach(e=>e.forEach(e=>e.destroy()))}_hasTransparentLevels(){return this._levels.some(e=>e.components.some(e=>{const t=e.material.produces.get(4);return t?.(0)}))}hasHighlights(){return n(this._highlightRenderInstanceDatas,e=>e.some(e=>e.size>0))}_produces(e){return(10!==e||this.hasHighlights())&&(6!==e||this.hasHighlight(T))}prepareRender(e){if(!g.LOD_INSTANCE_RENDERER_DISABLE_UPDATES){if(this._enableLevelSelection){const t=e.bind.contentCamera.equals(this._camera);this._camera.copyFrom(e.bind.contentCamera),t||this._requestUpdateCycle()}this._needFullCycle&&(this.runTask(M),this._needFullCycle=!1)}}acquireTechniques(e){if(!this.baseMaterial.visible||!this.baseMaterial.isVisibleForOutput(e.output))return null;const t=this._getInstanceDatas(e);if(!t)return null;const r=new Array,n=this.levels;return t.forEach(t=>n.forEach(({components:n},s)=>n.forEach(n=>r.push(this._beginComponent(e,t[s],n))))),r}render(e,t){const r=this._getInstanceDatas(e);if(!r||null==t)return;let n=0;const s=this.levels;r.forEach(r=>s.forEach(({components:s},a)=>s.forEach(s=>this._renderComponent(e,t[n++],r[a],s,a)))),e.rctx.unbindBuffer(34962),e.rctx.bindVAO(null)}_getInstanceDatas(e){const{output:t,bind:r}=e,n=10===t,s=6===t,a=7!==t;if(!n&&!s)return a?this._allRenderInstanceData:this._allRenderInstanceDataExceptHighlightShadow;const{_highlightRenderInstanceDatas:i}=this;if(a){if(n){const e=r.highlight?.name;if(!e)return null;const t=i.get(e);return t?[t]:null}const e=i.get(T);return s?e?[e]:null:Array.from(i.values())}return null}intersect(e,t,r,n){if(!this.baseMaterial.visible||null==this._octree)return;const s=f();d(s,n,r);const a=s=>{this._instanceData.getCombinedModelTransform(s,G),e.transform.set(G),m(W,r,e.transform.inverse),m(k,n,e.transform.inverse);const a=this._instanceData.getState(s),i=this._instanceData.getLodLevel(s),o=this._levels.length;4&a&&(D(!!(18&a),"invalid instance state"),D(i>=0&&i<o,"invaid lod level"),this._levels[i].intersect(e,t,W,k,s,this.metadata,o))};this.baseMaterial.parameters.verticalOffset?this._octree.forEach(a):this._octree.forEachAlongRay(r,s,a)}notifyShaderTransformationChanged(){this._invalidateOctree(),this._requestUpdateCycle()}get _octree(){if(null==this._octreeCached){const e=this._instanceData,t=e.view?.state;if(!t)return null;this._octreeCached=new E(e,this.baseBoundingSphere);for(let r=0;r<e.capacity;++r)18&t.get(r)&&this._octreeCached.addInstance(r)}return this._octreeCached}_invalidateOctree(){this._octreeCached=a(this._octreeCached)}queryDepthRange(e){if(null==this._octree)return new C;const t=e.viewForward,r=this._octree.findClosest(t,1,e.frustum),n=this._octree.findClosest(t,-1,e.frustum);if(null==r||null==n)return new C;const s=e.eye,a=this._instanceData.view;a.boundingSphere.getVec(r,N),d(N,N,s);const i=u(N,t)-N[3];a.boundingSphere.getVec(n,N),d(N,N,s);const o=u(N,t)+N[3];return new C(i,o)}_requestUpdateCycle(e=!1){this._updateCyclesWithStaticCamera=-1,this._cycleStartIndex=this._instanceIndex,e&&(this._needFullCycle=!0,this._context.requestRender())}_startUpdateCycle(){this._updateCyclesWithStaticCamera++,this._allRenderInstanceData.forEach(e=>e.forEach(e=>e.startUpdateCycle()))}get readyToRun(){return this._instanceData.size>0&&this._updateCyclesWithStaticCamera<1}runTask(e){const{_enableLevelSelection:t,_camera:n,_levelSelector:a}=this;this._allRenderInstanceData.forEach(e=>e.forEach(e=>e.beginUpdate()));const i=this._instanceData,o=i.view;let l=i.size;const c=i.capacity;let h=this._instanceIndex;const d=Math.ceil(c/500),{_highlightRenderInstanceDatas:u}=this;for(let m=0;m<l&&!e.done;++m){h===this._cycleStartIndex&&this._startUpdateCycle();const m=o.state.get(h);let f=0;if(!(1&m)){h=h+1===c?0:h+1,l++;continue}const _=o.lodLevel.get(h);if(2&m&&this._defaultRenderInstanceData[_].freeTail(),16&m){const e=i.geHighlightOptionsPrev(h);if(e){const t=u.get(e);if(!t)throw new r("internal:lod-renderer","Internal error in lodRenderer");t[_].freeTail(),t.every(e=>e.isEmpty)&&(t.forEach(e=>e.destroy()),u.delete(e))}}if(32&m)i.freeInstance(h);else if(4&m){let e=0;if(t&&(o.modelOrigin.getVec(h,z),e=a.selectLevel(z,i.getCombinedMedianScaleFactor(h),n)),f=-83&m,e>=0)if(8&m){const t=i.getHighlightName(h);if(t){const n=()=>{const e=this._createRenderInstanceDataArray();return e.forEach(e=>e.beginUpdate()),e},a=s(u,t,n);if(e>=a.length)throw new r("internal:lod-renderer",`LodRenderer internal error - missing lodLevel ${e}`);H(a[e],o,h)}f|=16}else H(this._defaultRenderInstanceData[e],o,h),f|=2;o.state.set(h,f),o.lodLevel.set(h,e)}else f=-83&m,o.state.set(h,f);const p=!!(18&m),g=!!(18&f);null!=this._octreeCached&&(!p&&g?this._octreeCached.addInstance(h):p&&!g?this._octreeCached.removeInstance(h):p&&g&&64&m&&(this._octreeCached.removeInstance(h),this._octreeCached.addInstance(h))),h=h+1===c?0:h+1,h%d===0&&e.madeProgress(),p!==g&&this.metadata.notifyGraphicVisibilityChanged(h),g&&64&m&&this.metadata.notifyGraphicGeometryChanged(h)}this._instanceIndex=h,this._allRenderInstanceData.forEach(e=>e.forEach(e=>e.endUpdate())),this._context.requestRender()}_beginComponent(e,t,r){if(0===t.size)return null;const n=r.glMaterialLoader.load(e.rctx,e.bind.slot,e.output);return n?.beginSlot(e.bind)}_renderComponent(e,t,r,n,s){if(!t)return;const{bind:a,rctx:i}=e,o=i.bindTechnique(t,a,n.material.parameters,Z),l=this._glInstanceBufferLayout;o.assertCompatibleVertexAttributeLocations(n.vao,B(l)),i.bindVAO(n.vao),g.LOD_INSTANCE_RENDERER_COLORIZE_BY_LEVEL&&b(e.output)&&(o.setUniform4fv("externalColor",Y[Math.min(s,Y.length-1)]),o.setUniform1i("symbolColorMixMode",j.replace));const c=r.capacity,h=r.headIndex,d=r.tailIndex,u=r.firstIndex,m=(e,s)=>{q(i,o.locations,r.buffer,e),i.drawArraysInstanced(t.primitiveType,0,n.numVertices,s-e)};n.material.transparent&&null!=u?h>d?(D(u>=d&&u<=h,"invalid firstIndex"),m(u,h),m(d,u)):h<d&&(u<=h?(D(u>=0&&u<=h,"invalid firstIndex"),m(u,h),m(d,c),m(0,u)):(D(u>=d&&u<=c,"invalid firstIndex"),m(u,c),m(0,h),m(d,u))):h>d?m(d,h):h<d&&(m(0,h),m(d,c))}};function H(e,t,r){const n=e.allocateHead();P(t,r,e.view,n)}function P(e,t,r,n){U(e.modelOrigin,t,r.modelOriginHi,r.modelOriginLo,n),r.model.copyFrom(n,e.model,t),r.modelNormal.copyFrom(n,e.modelNormal,t),e.color&&r.color&&r.color.copyFrom(n,e.color,t),e.olidColor&&r.olidColor&&r.olidColor.copyFrom(n,e.olidColor,t),e.featureAttribute&&r.featureAttribute&&r.featureAttribute.copyFrom(n,e.featureAttribute,t)}e([l({constructOnly:!0})],V.prototype,"symbol",void 0),e([l({constructOnly:!0})],V.prototype,"metadata",void 0),e([l({constructOnly:!0})],V.prototype,"shaderTransformation",void 0),e([l()],V.prototype,"_instanceData",void 0),e([l()],V.prototype,"_cycleStartIndex",void 0),e([l({readOnly:!0})],V.prototype,"_enableLevelSelection",null),e([l()],V.prototype,"_updateCyclesWithStaticCamera",void 0),e([l({readOnly:!0})],V.prototype,"readyToRun",null),V=e([c("esri.views.3d.webgl-engine.lib.lodRendering.LodRenderer")],V);const z=f(),N=_(),G=h(),W=f(),k=f(),Y=[p(1,0,1,1),p(0,0,1,1),p(0,1,0,1),p(1,1,0,1),p(1,0,0,1)],Z=new O;export{V as LodRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import"../../../../../core/has.js";import{property as r,subclass as t}from"../../../../../core/accessorSupport/decorators.js";import{SyncRenderPlugin as s}from"../../effects/RenderPlugin.js";import{MergedBuffer as i}from"./MergedBuffer.js";import{VaoRenderer as a}from"./VaoRenderer.js";let n=class extends s{constructor(e){super(e),this._dataByBaseInstance=new Map,this._buffer=null,this._renderer=null,this.drapedPriority=0}initialize(){this._buffer=new i({material:this.material,dataByBaseInstance:this._dataByBaseInstance,highlightOrderMap:this.highlightOrderMap}),this._renderer=new a({material:this.material,dataByBaseInstance:this._dataByBaseInstance})}destroy(){this._buffer.destroy(),this._renderer.destroy()}hasHighlight(e){return this._renderer.hasHighlight(e)}initializeRenderContext(e){this._buffer.initializeRenderContext(e),this._renderer.initializeRenderContext(e)}uninitializeRenderContext(){this._buffer.uninitializeRenderContext(),this._renderer.uninitializeRenderContext()}get produces(){return this._renderer.produces}get hasOccludees(){return this._buffer.hasOccludees}get hasOnlyOccluders(){return!!(-2&this.renderOccludedFlags)}get hasEmissions(){return this.material.hasEmissions}get isDecoration(){return this.material.parameters.isDecoration}get renderOccludedFlags(){return this.material.renderOccludedFlags}get testsTransparentRenderOrder(){return"test"===process.env.NODE_ENV?this.material.testsTransparentRenderOrder:0}get numGeometries(){let e=0;for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())e+=t.buffers.reduce((e,r)=>e+r.instances.size,0);return e}get usedMemory(){let e=0;for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())e+=t.buffers.reduce((e,r)=>e+r.vao.usedMemory,0);return e}forEachGeometry(e){for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())for(const r of t.buffers)for(const{geometry:t}of r.instances.values())e(t)}modify(e,r){this._buffer.modify(e,r),this._renderer.updateHighlights()}get canCompact(){return this._buffer.canCompact}compact(e){return this._buffer.compact(e)}updateHighlights(e){this.highlightOrderMap=e,this._buffer.updateHighlights(e),this._renderer.updateHighlights()}updateAnimation(e){return this.material.update(e)}acquireTechniques(e){return this._renderer.acquireTechniques(e)}render(e,r){return this._renderer.render(e,r)}static prune(){i.prune()}get test(){}};e([r({constructOnly:!0})],n.prototype,"material",void 0),e([r()],n.prototype,"highlightOrderMap",void 0),n=e([t("esri.views.3d.webgl-engine.materials.renderers.MergedRenderer")],n);export{n as MergedRenderer};
2
+ import{__decorate as e}from"tslib";import"../../../../../core/has.js";import{property as r,subclass as t}from"../../../../../core/accessorSupport/decorators.js";import{SyncRenderPlugin as s}from"../../effects/RenderPlugin.js";import{MergedBuffer as i}from"./MergedBuffer.js";import{VaoRenderer as a}from"./VaoRenderer.js";let n=class extends s{constructor(e){super(e),this._dataByBaseInstance=new Map,this._buffer=null,this._renderer=null,this.drapedPriority=0}initialize(){this._buffer=new i({material:this.material,dataByBaseInstance:this._dataByBaseInstance,highlightOrderMap:this.highlightOrderMap}),this._renderer=new a({material:this.material,dataByBaseInstance:this._dataByBaseInstance})}destroy(){this._buffer.destroy(),this._renderer.destroy()}hasHighlight(e){return this._renderer.hasHighlight(e)}initializeRenderContext(e){this._buffer.initializeRenderContext(e),this._renderer.initializeRenderContext(e)}uninitializeRenderContext(){this._buffer.uninitializeRenderContext(),this._renderer.uninitializeRenderContext()}get produces(){return this._renderer.produces}get hasOccludees(){return this._buffer.hasOccludees}get hasOnlyOccluders(){return!!(-2&this.renderOccludedFlags)}get emissions(){return this.material.hasEmissions}get isDecoration(){return this.material.parameters.isDecoration}get renderOccludedFlags(){return this.material.renderOccludedFlags}get testsTransparentRenderOrder(){return"test"===process.env.NODE_ENV?this.material.testsTransparentRenderOrder:0}get numGeometries(){let e=0;for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())e+=t.buffers.reduce((e,r)=>e+r.instances.size,0);return e}get usedMemory(){let e=0;for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())e+=t.buffers.reduce((e,r)=>e+r.vao.usedMemory,0);return e}forEachGeometry(e){for(const r of this._dataByBaseInstance.values())for(const t of r.dataByOrigin.values())for(const r of t.buffers)for(const{geometry:t}of r.instances.values())e(t)}modify(e,r){this._buffer.modify(e,r),this._renderer.updateHighlights()}get canCompact(){return this._buffer.canCompact}compact(e){return this._buffer.compact(e)}updateHighlights(e){this.highlightOrderMap=e,this._buffer.updateHighlights(e),this._renderer.updateHighlights()}updateAnimation(e){return this.material.update(e)}acquireTechniques(e){return this._renderer.acquireTechniques(e)}render(e,r){return this._renderer.render(e,r)}static prune(){i.prune()}get test(){}};e([r({constructOnly:!0})],n.prototype,"material",void 0),e([r()],n.prototype,"highlightOrderMap",void 0),n=e([t("esri.views.3d.webgl-engine.materials.renderers.MergedRenderer")],n);export{n as MergedRenderer};
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isColor as o,isOITColor as l,isOITFrontFace as i}from"../core/shaderLibrary/ShaderOutput.js";import{Emissions as r}from"../core/shaderLibrary/output/Emissions.glsl.js";import{OutputHighlight as a}from"../core/shaderLibrary/output/OutputHighlight.glsl.js";import{ColorConversion as s}from"../core/shaderLibrary/util/ColorConversion.glsl.js";import{EmissionDimming as e}from"../core/shaderLibrary/util/EmissionDimming.glsl.js";import{If as t,glsl as n}from"../core/shaderModules/glsl.js";import{alphaCutoff as f}from"./alphaCutoff.glsl.js";import{ditherNoise as m}from"./ditherNoise.glsl.js";import{oitResolution as u}from"./oitResolution.glsl.js";function d(d,g){d.include(a,g),d.include(r,g);const{fragment:p,outputs:c}=d;p.include(s);const{output:C,hasEmission:h,discardInvisibleFragments:v,oitPremultipliedAlpha:b,snowCover:A,useFloatBlend:$,emissionDimmingPass:y}=g,E=11===C,j=l(C),O=i(C),L=o(C)&&!j;let S=0;(L||j)&&c.add("fragColor","vec4",S++),h&&c.add("fragEmission","vec4",S++),j&&c.add("fragAlpha","float",S++),p.include(f),p.include(u,g),p.include(m,g),y&&p.include(e),p.code.add(n`
2
+ import{isColor as o,isOITColor as l,isOITFrontFace as i}from"../core/shaderLibrary/ShaderOutput.js";import{Emissions as r}from"../core/shaderLibrary/output/Emissions.glsl.js";import{OutputHighlight as a}from"../core/shaderLibrary/output/OutputHighlight.glsl.js";import{ColorConversion as s}from"../core/shaderLibrary/util/ColorConversion.glsl.js";import{emissionDimming as e}from"../core/shaderLibrary/util/EmissionDimming.glsl.js";import{If as t,glsl as n}from"../core/shaderModules/glsl.js";import{alphaCutoff as f}from"./alphaCutoff.glsl.js";import{ditherNoise as m}from"./ditherNoise.glsl.js";import{oitResolution as u}from"./oitResolution.glsl.js";function d(d,g){d.include(a,g),d.include(r,g);const{fragment:p,outputs:c}=d,{output:C,hasEmission:h,discardInvisibleFragments:v,oitPremultipliedAlpha:b,snowCover:A,useFloatBlend:$,emissionDimmingPass:y}=g,E=11===C,j=l(C),O=i(C),L=o(C)&&!j;let S=0;(L||j)&&c.add("fragColor","vec4",S++),j&&c.add("fragAlpha","float",S++),h&&c.add("fragEmission","vec4",S++),p.include(s),p.include(f),p.include(u,g),p.include(m,g),y&&p.include(e),p.code.add(n`
3
3
  void outputColorHighlightOLID(vec4 finalColor, vec3 emissiveSymbolColor ${t(A,", float snow")}) {
4
4
  ${t(E,"finalColor.a = 1.0;")}
5
5
  ${t(v,"if (finalColor.a < alphaCutoff) { discard; }")}
@@ -8,7 +8,7 @@ import{isColor as o,isOITColor as l,isOITFrontFace as i}from"../core/shaderLibra
8
8
  ${t(j,`fragColor = ${t(b,"finalColor","premultiplyAlpha(finalColor)")};\n fragColor = vec4(fragColor.rgb * floatBlendOutputScale + noise, fragColor.a);\n float scaledAlpha = finalColor.a * floatBlendOutputScale;\n fragAlpha = scaledAlpha + noise;\n ${t(!$,"fragAlpha = fragAlpha < alphaCutoff ? scaledAlpha : fragAlpha;")}`)}
9
9
  ${t(O&&b&&v,"finalColor.rgb /= finalColor.a;")}
10
10
  ${t(L,"fragColor = finalColor;")}
11
- ${t(h,y?"fragEmission = vec4(emissionDimming(premultiplyAlpha(finalColor).rgb, finalColor.a), 0.0);":`fragEmission = ${t(A,"mix(finalColor.a * getEmissions(emissiveSymbolColor), vec4(0.0), snow);","finalColor.a * getEmissions(emissiveSymbolColor);")}\n fragEmission = vec4(fragEmission.rgb * floatBlendOutputScale + noise, fragEmission.a);`)}
11
+ ${t(h,y?"fragEmission = vec4(emissionDimming(premultiplyAlpha(finalColor).rgb, 1.0 - finalColor.a), 0.0);":`fragEmission = ${t(A,"mix(finalColor.a * getEmissions(emissiveSymbolColor), vec4(0.0), snow);","finalColor.a * getEmissions(emissiveSymbolColor);")}\n fragEmission = vec4(fragEmission.rgb * floatBlendOutputScale + noise, fragEmission.a);`)}
12
12
  calculateOcclusionAndOutputHighlight();
13
13
  ${t(E,"outputObjectAndLayerIdColor();")}
14
14
  }
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../chunks/SlicePlaneMaterial.glsl.js";
2
+ import"../core/shaderLibrary/util/ColorConversion.glsl.js";import"../core/shaderLibrary/util/View.glsl.js";import"../core/shaderModules/Float4PassUniform.js";import"../core/shaderModules/FloatPassUniform.js";import"../core/shaderModules/glsl.js";import"./alphaCutoff.glsl.js";import"./OutputColorHighlightOLID.glsl.js";import"../../../webgl/ShaderBuilder.js";export{b as build}from"../../../../chunks/SlicePlaneMaterial.glsl.js";
@@ -1,20 +1,16 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
2
  import{glsl as o}from"../core/shaderModules/glsl.js";function e(e){e.code.add(o`vec3 tonemapACES(vec3 x) {
3
3
  return clamp((x * (2.51 * x + 0.03)) / (x * (2.43 * x + 0.59) + 0.14), 0.0, 1.0);
4
- }`),e.code.add(o`vec3 tonemapKhronosNeutral(vec3 color, float exposure) {
4
+ }`),e.code.add(o`vec3 tonemapKhronosNeutral(vec3 color) {
5
5
  const float startCompression = 0.76;
6
6
  const float desaturation = 0.15;
7
- color *= exposure;
8
- float x = min( color.r, min( color.g, color.b ) );
9
- float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;
10
- color -= offset;
11
- float peak = max( color.r, max( color.g, color.b ) );
12
- if ( peak < startCompression ) {
7
+ float peak = max(color.r, max(color.g, color.b));
8
+ if (peak < startCompression) {
13
9
  return color;
14
10
  }
15
11
  float d = 1.0 - startCompression;
16
- float newPeak = 1.0 - d * d / ( peak + d - startCompression );
12
+ float newPeak = 1.0 - d * d / (peak + d - startCompression);
17
13
  color *= newPeak / peak;
18
- float g = 1.0 - 1.0 / ( desaturation * ( peak - newPeak ) + 1.0 );
19
- return mix( color, vec3( newPeak ), g );
14
+ float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0 );
15
+ return mix(color, vec3(newPeak), g);
20
16
  }`)}export{e as ToneMapping};
@@ -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,initial as o}from"../../../core/reactiveUtils.js";import{property as n,subclass as i}from"../../../core/accessorSupport/decorators.js";import s from"../../../geometry/Polyline.js";import{isPolygon as r}from"../../../geometry/support/typeUtils.js";import{getPaths as l}from"../../../geometry/support/curves/curveUtils.js";import{PolylinePlugin as a}from"./PolylinePlugin.js";import{knownFieldDisplayOrders as d}from"../support/types.js";import{screenDistance as p}from"../../interactive/snapping/snappingUtils.js";const u=5,c=Symbol("polygon-snap-to-close-constraint"),m=Symbol("polygon-area-measurement"),g=Symbol("polygon-area-field");let y=class extends a{constructor(){super(...arguments),this._autoCloseLineVisualId=Symbol("polygon-auto-close-on-commit"),this._defaultClosingLineVisualId=Symbol("polygon-default-close-on-cancel"),this.clickToCloseEnabled=!0}get _totalPreviewGeometry(){const{_session:t}=this;if(!t)return null;const e=t.lastPointAddedBySession?.partIndex,o=this._downstreamEditSession?.lastPointAddedBySession?.partIndex,n=e??o;if(!t||null==n)return null;const i=t?.getInformationAboutPoint(0,n),s=t?.getInformationAboutPoint(-1,n);return t?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon",firstIncludedPoint:i,lastIncludedPoint:s})}get helpMessageKey(){const t=this._session?.lastPointAddedBySession;return t?null!=t.pointIndex&&t.pointIndex>0?"polygonTwoVertices":"polygonOneVertex":"polygonZeroVertices"}get test(){const{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}=this;return{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}}start(t){super.start(t),t.createConstraint(c,(t,e)=>this._snapToClosingVertex(t,e)),t.addOrUpdateVisual(this._autoCloseLineVisualId,{role:"outline",state:"active"}),t.addOrUpdateVisual(this._defaultClosingLineVisualId,{role:"outline",state:"idle"}),this.addHandles([e(()=>this._downstreamEditSession?.lastPointAddedBySession,t=>{if(!t||null==t.pointIndex)return this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null}),void this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null});const e=this._session?.getInformationAboutPoint(t.pointIndex-1,t.partIndex),o=this._session?.getInformationAboutPoint(0,t.partIndex);if(t.point&&o?.point){const e=[t.point.x,t.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:t.point.spatialReference,paths:[[e,n]]});this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null});if(e?.point&&o?.point){const t=[e.point.x,e.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:o.point.spatialReference,paths:[[t,n]]});this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null})},o)],this._ownHandlesKey)}detachPlugin(t,e){const{_session:o}=this,n=o?.lastPointAddedBySession;if(!n||null==n.pointIndex)return;"complete"===e&&this._context?.setGlobalState("drawAtFixedElevation",!0);const i=o.getInformationAboutPoint(0,n.partIndex),s=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex),r="2d"!==this._context?.getViewInformation()?.type;if("complete"===e&&this.clickToCloseEnabled&&(n.pointIndex>2||2===n.pointIndex&&n.curveInfo)&&(f(i?.point,n.point,r)||f(s?.point,n.point,r))){!n.curveInfo&&o?.eraseLastOperation(),this._context?.requestComplete()}else"complete"===e&&this._context?.requestBeginDownstreamPlugin(t.configuration,{cancelExisting:!1})}afterUndoRedo(){const t=this._session?.lastPointAddedBySession;this._context?.setGlobalState("drawAtFixedElevation",!!t||void 0)}_getCommittedGeometry(){return this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon"})}_setupGeometrySpecificTooltip(){this._context&&(this._areaField??=this._context.createMeasuredField({id:g,preset:"area",getMeasurementInput:()=>this._totalPreviewGeometry,measure:async(t,e)=>{if(!t||!r(t))return null;const o=l(t)?.at(-1);if(!o||o.length<2||!t.curveRings&&o.length<3)return null;const n=e.inputUnitInfos.area.unit;return this._context?.measureArea(t,m,"tooltip",n)},fieldProperties:{readOnly:!0,displayOrder:d.ShapeMeasurements}}))}_snapToClosingVertex(t,e){const{_session:o}=this;if("primary"!==e.handle.role||!o)return t;if(e.handle.dragging&&"capture-when-engaged"===e.handle.captureMode)return t;if(!o?.sessionIsOperatingOnSameGeometry(e.editSession))return t;const n=e.editSession?.lastPointAddedBySession;if(!n||null==n.pointIndex||n.pointIndex<2)return t;const i=o.getInformationAboutPoint(0,n.partIndex);if(!t||!i?.point)return t;const s=e.toScreen(t);if(!s)return t;const r=e.toScreen(i.point);if(!r)return t;if(p(s,r)<=u)return i.point;const l=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex);if(!l?.point)return t;const a=e.toScreen(l.point);return a&&p(s,a)<=u?l.point:t}};function f(t,e,o){return t===e||null!=t&&null!=e&&t.x===e.x&&t.y===e.y&&(!o||t.z===e.z)}t([n()],y.prototype,"_areaField",void 0),t([n()],y.prototype,"_totalPreviewGeometry",null),t([n()],y.prototype,"clickToCloseEnabled",void 0),t([n()],y.prototype,"helpMessageKey",null),y=t([i("esri.views.draw.plugins.PolygonPlugin")],y);export{y as PolygonPlugin};
2
+ import{__decorate as t}from"tslib";import{watch as e,initial as o}from"../../../core/reactiveUtils.js";import{property as n,subclass as i}from"../../../core/accessorSupport/decorators.js";import s from"../../../geometry/Polyline.js";import{isPolygon as r}from"../../../geometry/support/typeUtils.js";import{getPaths as l}from"../../../geometry/support/curves/curveUtils.js";import{PolylinePlugin as a}from"./PolylinePlugin.js";import{knownFieldDisplayOrders as p}from"../support/types.js";import"../../../core/sql/UnknownTimeZone.js";import"../../../time/constants.js";import"luxon";import"../../../intl/date.js";import"../../../rest/support/Query.js";import"../../input/InputManager.js";import"../../interactive/keybindings.js";import"../../../core/units.js";import"../../../symbols/support/unitConversionUtils.js";import"../../../core/RandomLCG.js";import"../../../core/Logger.js";import{screenDistance as d}from"../../../core/screenUtils.js";const u=5,c=Symbol("polygon-snap-to-close-constraint"),m=Symbol("polygon-area-measurement"),g=Symbol("polygon-area-field");let y=class extends a{constructor(){super(...arguments),this._autoCloseLineVisualId=Symbol("polygon-auto-close-on-commit"),this._defaultClosingLineVisualId=Symbol("polygon-default-close-on-cancel"),this.clickToCloseEnabled=!0}get _totalPreviewGeometry(){const{_session:t}=this;if(!t)return null;const e=t.lastPointAddedBySession?.partIndex,o=this._downstreamEditSession?.lastPointAddedBySession?.partIndex,n=e??o;if(!t||null==n)return null;const i=t?.getInformationAboutPoint(0,n),s=t?.getInformationAboutPoint(-1,n);return t?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon",firstIncludedPoint:i,lastIncludedPoint:s})}get helpMessageKey(){const t=this._session?.lastPointAddedBySession;return t?null!=t.pointIndex&&t.pointIndex>0?"polygonTwoVertices":"polygonOneVertex":"polygonZeroVertices"}get test(){const{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}=this;return{_autoCloseLineVisualId:t,_defaultClosingLineVisualId:e}}start(t){super.start(t),t.createConstraint(c,(t,e)=>this._snapToClosingVertex(t,e)),t.addOrUpdateVisual(this._autoCloseLineVisualId,{role:"outline",state:"active"}),t.addOrUpdateVisual(this._defaultClosingLineVisualId,{role:"outline",state:"idle"}),this.addHandles([e(()=>this._downstreamEditSession?.lastPointAddedBySession,t=>{if(!t||null==t.pointIndex)return this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null}),void this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null});const e=this._session?.getInformationAboutPoint(t.pointIndex-1,t.partIndex),o=this._session?.getInformationAboutPoint(0,t.partIndex);if(t.point&&o?.point){const e=[t.point.x,t.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:t.point.spatialReference,paths:[[e,n]]});this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._autoCloseLineVisualId,{geometry:null});if(e?.point&&o?.point){const t=[e.point.x,e.point.y],n=[o.point.x,o.point.y],i=new s({spatialReference:o.point.spatialReference,paths:[[t,n]]});this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:i})}else this._context?.addOrUpdateVisual(this._defaultClosingLineVisualId,{geometry:null})},o)],this._ownHandlesKey)}detachPlugin(t,e){const{_session:o}=this,n=o?.lastPointAddedBySession;if(!n||null==n.pointIndex)return;"complete"===e&&this._context?.setGlobalState("drawAtFixedElevation",!0);const i=o.getInformationAboutPoint(0,n.partIndex),s=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex),r="2d"!==this._context?.getViewInformation()?.type;if("complete"===e&&this.clickToCloseEnabled&&(n.pointIndex>2||2===n.pointIndex&&n.curveInfo)&&(f(i?.point,n.point,r)||f(s?.point,n.point,r))){!n.curveInfo&&o?.eraseLastOperation(),this._context?.requestComplete()}else"complete"===e&&this._context?.requestBeginDownstreamPlugin(t.configuration,{cancelExisting:!1})}afterUndoRedo(){const t=this._session?.lastPointAddedBySession;this._context?.setGlobalState("drawAtFixedElevation",!!t||void 0)}_getCommittedGeometry(){return this._session?.generatePreviewGeometry({includeAutomaticConnection:!1,geometryType:"polygon"})}_setupGeometrySpecificTooltip(){this._context&&(this._areaField??=this._context.createMeasuredField({id:g,preset:"area",getMeasurementInput:()=>this._totalPreviewGeometry,measure:async(t,e)=>{if(!t||!r(t))return null;const o=l(t)?.at(-1);if(!o||o.length<2||!t.curveRings&&o.length<3)return null;const n=e.inputUnitInfos.area.unit;return this._context?.measureArea(t,m,"tooltip",n)},fieldProperties:{readOnly:!0,displayOrder:p.ShapeMeasurements}}))}_snapToClosingVertex(t,e){const{_session:o}=this;if("primary"!==e.handle.role||!o)return t;if(e.handle.dragging&&"capture-when-engaged"===e.handle.captureMode)return t;if(!o?.sessionIsOperatingOnSameGeometry(e.editSession))return t;const n=e.editSession?.lastPointAddedBySession;if(!n||null==n.pointIndex||n.pointIndex<2)return t;const i=o.getInformationAboutPoint(0,n.partIndex);if(!t||!i?.point)return t;const s=e.toScreen(t);if(!s)return t;const r=e.toScreen(i.point);if(!r)return t;if(d(s,r)<=u)return i.point;const l=o.getInformationAboutPoint(n.pointIndex-1,n.partIndex);if(!l?.point)return t;const a=e.toScreen(l.point);return a&&d(s,a)<=u?l.point:t}};function f(t,e,o){return t===e||null!=t&&null!=e&&t.x===e.x&&t.y===e.y&&(!o||t.z===e.z)}t([n()],y.prototype,"_areaField",void 0),t([n()],y.prototype,"_totalPreviewGeometry",null),t([n()],y.prototype,"clickToCloseEnabled",void 0),t([n()],y.prototype,"helpMessageKey",null),y=t([i("esri.views.draw.plugins.PolygonPlugin")],y);export{y as PolygonPlugin};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../core/Logger.js";import{interactiveToolKeys as t}from"./keybindings.js";function o(t){return[t.on("before-add",o=>{const i=o.item;if(null==i||t.includes(i))return e.getLogger("esri.views.interactive.interactiveToolUtils").warn("Tool is either already in the list of tools or tool is `null`. Not adding tool."),void o.preventDefault();i.onAdd()}),t.on("after-remove",e=>{const t=e.item;t.active&&(t.view.activeTool=null),t.destroy()})]}function i(e){return e.visible&&null!=e.getEditableFlag&&e.getEditableFlag(0)&&e.getEditableFlag(1)}function n(e){return"key-down"===e.type&&e.key===t.cancel}export{i as areToolManipulatorsEditable,o as getToolCollectionHandles,n as isCancelEvent};
2
+ import e from"../../core/Logger.js";import{interactiveToolKeys as t}from"./keybindings.js";function o(t){return[t.on("before-add",o=>{const i=o.item;if(null==i||t.includes(i))return e.getLogger("esri.views.interactive.interactiveToolUtils").warn("Tool is either already in the list of tools or tool is `null`. Not adding tool."),void o.preventDefault();i.onAdd()}),t.on("after-remove",e=>{const t=e.item;t.active&&(t.view.activeTool=null),t.destroy()})]}function i(e){return e.visible&&null!=e.getEditableFlag&&e.getEditableFlag(0)&&e.getEditableFlag(1)}function n(e){return"key-down"===e.type&&e.key===t.cancel}function l(e,t){e.activeTool===t&&(e.activeTool=null)}export{i as areToolManipulatorsEditable,l as deactivevateTool,o as getToolCollectionHandles,n as isCancelEvent};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{isSome as r}from"../../../core/arrayUtils.js";import{destroyHandle as a}from"../../../core/handleUtils.js";import"../../../core/has.js";import{mapCollectionAsync as n}from"../../../core/mapCollectionUtils.js";import{allSettledValues as s,throwIfAborted as i}from"../../../core/promiseUtils.js";import{watch as o,sync as c}from"../../../core/reactiveUtils.js";import{getMetersPerUnitForSR as u,getMetersPerVerticalUnitForSR as l}from"../../../core/units.js";import{property as p,subclass as d}from"../../../core/accessorSupport/decorators.js";import{squaredDistance as m}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as S,squaredDistance as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getEpsilon as f}from"../../../core/libs/gl-matrix-2/math/common.js";import{UpdatingHandles as y}from"../../../core/support/UpdatingHandles.js";import{absoluteHeightElevationInfo as _}from"../../../support/elevationInfoUtils.js";import{VerticalHalfPlaneConstraint as v,isLine as w,isDrapedLine as j}from"../sketch/constraints.js";import{fromAnyMapPoint as F,asVec2 as b,markAsTarget as x}from"../sketch/normalizedPoint.js";import{FeatureSnappingSourceInfo as C}from"./FeatureSnappingSourceInfo.js";import{sortCandidatesInPlace as R,screenDistance as M}from"./snappingUtils.js";import{DrapedEdgeSnappingCandidate as I}from"./candidates/DrapedEdgeSnappingCandidate.js";import{EdgeSnappingCandidate as L}from"./candidates/EdgeSnappingCandidate.js";import{FeatureSnappingCandidate as G}from"./candidates/FeatureSnappingCandidate.js";import{RightAngleSnappingCandidate as H}from"./candidates/RightAngleSnappingCandidate.js";import{vectorToScreenPoint as P}from"../support/viewUtils.js";let z=class extends t{get updating(){return this._snappingSources.some(e=>null==e?.valid||!0===e.valid&&!0===e.snappingSource?.updating)||this._updatingHandles.updating}constructor(e){super(e),this.options=null,this._domain=1,this._updatingHandles=new y,this._sourceModules={featureService:{module:null,loader:null},featureCollection:{module:null,loader:null},graphics:{module:null,loader:null},notes:{module:null,loader:null},scene:{module:null,loader:null}}}initialize(){const e=n(()=>this.options?._effectiveFeatureSources,(e,t)=>this._createSourceInfo(e,t));this._snappingSources=e,this.addHandles([a(e),o(()=>({rulesEnabled:!!this.options?.attributeRulesEnabled,sources:this._snappingSources.filter(r)}),({rulesEnabled:e,sources:t})=>{for(const r of t)r.attributeRulesEnabled=e},c)])}destroy(){this._set("options",null),this._updatingHandles.destroy()}async fetchCandidates(e,t,r,a){if(!(t&this._domain&&null!=this.options&&this.options.effectiveFeatureEnabled))return[];const n=new Array,o=this._computeScreenSizeDistanceParameters(e,r);for(const s of this._snappingSources){if(!s?.valid||!s.snappingSource?.layerSource?.enabled||s.layerView?.suspended)continue;const t=s.getFetchCandidatesParameters(e,r,o);for(const e of t)n.push(s.snappingSource.fetchCandidates(e,a).then(e=>this._processCandidatesFromSource(s,e,r)))}const c=(await s(n)).flat();return this._addRightAngleCandidates(c,e,o,r),i(a),R(e,c),c}_addRightAngleCandidates(e,t,r,a){const n=null!=a.vertexHandle?a.vertexHandle.rightSegment?.rightVertex?.pos:null!=a.editGeometryOperations&&"polygon"===a.editGeometryOperations.data.type?a.editGeometryOperations.data.parts[0]?.getFirstVertex()?.pos:null,s=null!=a.vertexHandle?a.vertexHandle.leftSegment?.leftVertex?.pos:null!=a.editGeometryOperations?a.editGeometryOperations.data.parts[0]?.getLastVertex()?.pos:null,{view:i}=this,o=F(n,i,a),c=F(s,i,a),u=e.length;for(let l=0;l<u;l++)this._addRightAngleCandidate(e[l],c,t,r,e),this._addRightAngleCandidate(e[l],o,t,r,e)}_addRightAngleCandidate(e,t,r,a,n){if(null==t||!A(e))return;const s=e.constraint.closestTo(t),i=(s[0]-r[0])/a.x,o=(s[1]-r[1])/a.y,{start:c,end:u}=e.constraint;if(i*i+o*o<=1){const r=m(b(s),b(c))>m(b(s),b(u))?c:u,a=new H({targetPoint:x(s),otherVertex:t,otherVertexType:0,previousVertex:r,constraint:new v(t,s),objectId:e.objectId,isDraped:e.isDraped,domain:1});n.push(a)}}_computeScreenSizeDistanceParameters(e,t){let r=null!=this.options?this.options.distance*("touch"===t.pointer?this.options.touchSensitivityMultiplier:1):0;return null==this.view?{x:r,y:r,z:r,distance:r}:"2d"===this.view.type?(r*=this.view.resolution,{x:r,y:r,z:r,distance:r}):this._computeScreenSizeDistanceParameters3D(e,r,this.view,t)}_computeScreenSizeDistanceParameters3D(e,t,r,a){const{spatialReference:n}=a;r.renderCoordsHelper.toRenderCoords(e,n,O);const s=r.state.camera.computeScreenPixelSizeAt(O),i=s*r.renderCoordsHelper.unitInMeters,o=i/u(n),c=i/l(n),p=t*o,d=t*c,m=P(e,n,_,r),S=m?E(m,e,o,0,0,r,a):0,h=m?E(m,e,0,o,0,r,a):0,g=m?E(m,e,0,0,c,r,a):0;return{x:0===S?0:p/S,y:0===h?0:p/h,z:0===g?0:d/g,distance:s*t}}_processCandidatesFromSource(e,t,r){const a=[];for(const n of t)e.snappingSource&&!this._candidateIsExcluded(e.snappingSource,n,r.excludeFeature)&&(n instanceof G&&(n.layer=e.layer),a.push(n));return a}_candidateIsExcluded(e,t,r){if(null==r)return!1;const a=this._getCandidateObjectId(t);if(null==a)return!1;const n=e.layerSource.layer;return"graphics"===n.type?r.uid===a:r.sourceLayer===n&&(!(!r.attributes||!("objectIdField"in n))&&r.attributes[n.objectIdField]===a)}_getCandidateObjectId(e){return e instanceof G?e.objectId:null}async _createSourceInfo(e,t){const r=e.layer;r.loaded||(await r.load(),i(t));const{view:a}=this,n=await this._createFeatureSnappingSourceType(e);return i(t),new C(null==n?{}:{snappingSource:n,view:a,layer:r})}async _createFeatureSnappingSourceType(e){switch(e.layer.type){case"feature":case"geojson":case"csv":case"oriented-imagery":case"subtype-group":case"wfs":return this._createFeatureSnappingSourceFeatureLayer(e);case"graphics":return this._createFeatureSnappingSourceGraphicsLayer(e);case"map-notes":return this._createFeatureSnappingSourceMapNotesLayer(e);case"scene":case"building-scene":return this._createFeatureSnappingSourceSceneLayer(e)}return null}async _createFeatureSnappingSourceSceneLayer(e){const{view:t}=this;if(null==t||"3d"!==t.type)return null;return new((await this._getSourceModule("scene")).SceneLayerSnappingSource)({layerSource:e,view:t})}async _createFeatureSnappingSourceFeatureLayer(e){switch(e.layer.source?.type){case"feature-layer":case"oriented-imagery":return new((await this._getSourceModule("featureService")).FeatureServiceSnappingSource)({spatialReference:this.spatialReference,view:this.view,layerSource:e});case"memory":case"csv":case"geojson":case"wfs":if("mesh"===e.layer.geometryType)return null;return new((await this._getSourceModule("featureCollection")).FeatureCollectionSnappingSource)({layerSource:e,view:this.view})}return null}async _createFeatureSnappingSourceGraphicsLayer(e){return new((await this._getSourceModule("graphics")).GraphicsSnappingSource)({getGraphicsLayers:()=>[e.layer],spatialReference:this.spatialReference,view:this.view,layerSource:e})}async _createFeatureSnappingSourceMapNotesLayer(e){return new((await this._getSourceModule("notes")).GraphicsSnappingSource)({getGraphicsLayers:()=>e.layer.sublayers?.toArray()??[],spatialReference:this.spatialReference,view:this.view,layerSource:e})}async _getSourceModule(e){const t=this._sourceModules[e];if(null==t.loader){const t=this._loadSourceModule(e),r={module:null,loader:t};this._sourceModules[e]=r;const a=await t,n={module:a,loader:t};return this._sourceModules[e]=n,a}return null==t.module?t.loader:t.module}_loadSourceModule(e){const t=this._updatingHandles;switch(e){case"featureService":return t.addPromise(import("./featureSources/FeatureServiceSnappingSource.js"));case"featureCollection":return t.addPromise(import("./featureSources/FeatureCollectionSnappingSource.js"));case"graphics":case"notes":return t.addPromise(import("./featureSources/GraphicsSnappingSource.js"));case"scene":return t.addPromise(import("./featureSources/SceneLayerSnappingSource.js"))}}get test(){}};function A(e){const t=e instanceof L||e instanceof I,r=w(e.constraint)||j(e.constraint);return t&&r&&!D(e.constraint)}function D({start:e,end:t}){const r=h(e,t),a=m(b(e),b(t));return r<f()||a/r<V}function E(e,t,r,a,n,s,{spatialReference:i}){const o=S(U,t);o[0]+=r,o[1]+=a,o[2]+=n;const c=P(o,i,_,s);return c?M(c,e):1/0}e([p({constructOnly:!0})],z.prototype,"spatialReference",void 0),e([p({constructOnly:!0})],z.prototype,"view",void 0),e([p()],z.prototype,"options",void 0),e([p({readOnly:!0})],z.prototype,"updating",null),e([p()],z.prototype,"_snappingSources",void 0),z=e([d("esri.views.interactive.snapping.FeatureSnappingEngine")],z);const O=g(),U=g(),V=1e-4;export{z as FeatureSnappingEngine};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{isSome as r}from"../../../core/arrayUtils.js";import{destroyHandle as a}from"../../../core/handleUtils.js";import"../../../core/has.js";import{mapCollectionAsync as n}from"../../../core/mapCollectionUtils.js";import{allSettledValues as s,throwIfAborted as i}from"../../../core/promiseUtils.js";import{watch as o,sync as c}from"../../../core/reactiveUtils.js";import{getMetersPerUnitForSR as u,getMetersPerVerticalUnitForSR as l}from"../../../core/units.js";import{property as p,subclass as d}from"../../../core/accessorSupport/decorators.js";import{squaredDistance as m}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{copy as S,squaredDistance as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{getEpsilon as f}from"../../../core/libs/gl-matrix-2/math/common.js";import{UpdatingHandles as y}from"../../../core/support/UpdatingHandles.js";import{absoluteHeightElevationInfo as _}from"../../../support/elevationInfoUtils.js";import{VerticalHalfPlaneConstraint as v,isLine as w,isDrapedLine as j}from"../sketch/constraints.js";import{fromAnyMapPoint as F,asVec2 as b,markAsTarget as x}from"../sketch/normalizedPoint.js";import{FeatureSnappingSourceInfo as C}from"./FeatureSnappingSourceInfo.js";import{sortCandidatesInPlace as R}from"./snappingUtils.js";import{DrapedEdgeSnappingCandidate as M}from"./candidates/DrapedEdgeSnappingCandidate.js";import{EdgeSnappingCandidate as I}from"./candidates/EdgeSnappingCandidate.js";import{FeatureSnappingCandidate as L}from"./candidates/FeatureSnappingCandidate.js";import{RightAngleSnappingCandidate as G}from"./candidates/RightAngleSnappingCandidate.js";import{vectorToScreenPoint as H}from"../support/viewUtils.js";import{screenDistance as P}from"../../../core/screenUtils.js";let z=class extends t{get updating(){return this._snappingSources.some(e=>null==e?.valid||!0===e.valid&&!0===e.snappingSource?.updating)||this._updatingHandles.updating}constructor(e){super(e),this.options=null,this._domain=1,this._updatingHandles=new y,this._sourceModules={featureService:{module:null,loader:null},featureCollection:{module:null,loader:null},graphics:{module:null,loader:null},notes:{module:null,loader:null},scene:{module:null,loader:null}}}initialize(){const e=n(()=>this.options?._effectiveFeatureSources,(e,t)=>this._createSourceInfo(e,t));this._snappingSources=e,this.addHandles([a(e),o(()=>({rulesEnabled:!!this.options?.attributeRulesEnabled,sources:this._snappingSources.filter(r)}),({rulesEnabled:e,sources:t})=>{for(const r of t)r.attributeRulesEnabled=e},c)])}destroy(){this._set("options",null),this._updatingHandles.destroy()}async fetchCandidates(e,t,r,a){if(!(t&this._domain&&null!=this.options&&this.options.effectiveFeatureEnabled))return[];const n=new Array,o=this._computeScreenSizeDistanceParameters(e,r);for(const s of this._snappingSources){if(!s?.valid||!s.snappingSource?.layerSource?.enabled||s.layerView?.suspended)continue;const t=s.getFetchCandidatesParameters(e,r,o);for(const e of t)n.push(s.snappingSource.fetchCandidates(e,a).then(e=>this._processCandidatesFromSource(s,e,r)))}const c=(await s(n)).flat();return this._addRightAngleCandidates(c,e,o,r),i(a),R(e,c),c}_addRightAngleCandidates(e,t,r,a){const n=null!=a.vertexHandle?a.vertexHandle.rightSegment?.rightVertex?.pos:null!=a.editGeometryOperations&&"polygon"===a.editGeometryOperations.data.type?a.editGeometryOperations.data.parts[0]?.getFirstVertex()?.pos:null,s=null!=a.vertexHandle?a.vertexHandle.leftSegment?.leftVertex?.pos:null!=a.editGeometryOperations?a.editGeometryOperations.data.parts[0]?.getLastVertex()?.pos:null,{view:i}=this,o=F(n,i,a),c=F(s,i,a),u=e.length;for(let l=0;l<u;l++)this._addRightAngleCandidate(e[l],c,t,r,e),this._addRightAngleCandidate(e[l],o,t,r,e)}_addRightAngleCandidate(e,t,r,a,n){if(null==t||!A(e))return;const s=e.constraint.closestTo(t),i=(s[0]-r[0])/a.x,o=(s[1]-r[1])/a.y,{start:c,end:u}=e.constraint;if(i*i+o*o<=1){const r=m(b(s),b(c))>m(b(s),b(u))?c:u,a=new G({targetPoint:x(s),otherVertex:t,otherVertexType:0,previousVertex:r,constraint:new v(t,s),objectId:e.objectId,isDraped:e.isDraped,domain:1});n.push(a)}}_computeScreenSizeDistanceParameters(e,t){let r=null!=this.options?this.options.distance*("touch"===t.pointer?this.options.touchSensitivityMultiplier:1):0;return null==this.view?{x:r,y:r,z:r,distance:r}:"2d"===this.view.type?(r*=this.view.resolution,{x:r,y:r,z:r,distance:r}):this._computeScreenSizeDistanceParameters3D(e,r,this.view,t)}_computeScreenSizeDistanceParameters3D(e,t,r,a){const{spatialReference:n}=a;r.renderCoordsHelper.toRenderCoords(e,n,O);const s=r.state.camera.computeScreenPixelSizeAt(O),i=s*r.renderCoordsHelper.unitInMeters,o=i/u(n),c=i/l(n),p=t*o,d=t*c,m=H(e,n,_,r),S=m?E(m,e,o,0,0,r,a):0,h=m?E(m,e,0,o,0,r,a):0,g=m?E(m,e,0,0,c,r,a):0;return{x:0===S?0:p/S,y:0===h?0:p/h,z:0===g?0:d/g,distance:s*t}}_processCandidatesFromSource(e,t,r){const a=[];for(const n of t)e.snappingSource&&!this._candidateIsExcluded(e.snappingSource,n,r.excludeFeature)&&(n instanceof L&&(n.layer=e.layer),a.push(n));return a}_candidateIsExcluded(e,t,r){if(null==r)return!1;const a=this._getCandidateObjectId(t);if(null==a)return!1;const n=e.layerSource.layer;return"graphics"===n.type?r.uid===a:r.sourceLayer===n&&(!(!r.attributes||!("objectIdField"in n))&&r.attributes[n.objectIdField]===a)}_getCandidateObjectId(e){return e instanceof L?e.objectId:null}async _createSourceInfo(e,t){const r=e.layer;r.loaded||(await r.load(),i(t));const{view:a}=this,n=await this._createFeatureSnappingSourceType(e);return i(t),new C(null==n?{}:{snappingSource:n,view:a,layer:r})}async _createFeatureSnappingSourceType(e){switch(e.layer.type){case"feature":case"geojson":case"csv":case"oriented-imagery":case"subtype-group":case"wfs":return this._createFeatureSnappingSourceFeatureLayer(e);case"graphics":return this._createFeatureSnappingSourceGraphicsLayer(e);case"map-notes":return this._createFeatureSnappingSourceMapNotesLayer(e);case"scene":case"building-scene":return this._createFeatureSnappingSourceSceneLayer(e)}return null}async _createFeatureSnappingSourceSceneLayer(e){const{view:t}=this;if(null==t||"3d"!==t.type)return null;return new((await this._getSourceModule("scene")).SceneLayerSnappingSource)({layerSource:e,view:t})}async _createFeatureSnappingSourceFeatureLayer(e){switch(e.layer.source?.type){case"feature-layer":case"oriented-imagery":return new((await this._getSourceModule("featureService")).FeatureServiceSnappingSource)({spatialReference:this.spatialReference,view:this.view,layerSource:e});case"memory":case"csv":case"geojson":case"wfs":if("mesh"===e.layer.geometryType)return null;return new((await this._getSourceModule("featureCollection")).FeatureCollectionSnappingSource)({layerSource:e,view:this.view})}return null}async _createFeatureSnappingSourceGraphicsLayer(e){return new((await this._getSourceModule("graphics")).GraphicsSnappingSource)({getGraphicsLayers:()=>[e.layer],spatialReference:this.spatialReference,view:this.view,layerSource:e})}async _createFeatureSnappingSourceMapNotesLayer(e){return new((await this._getSourceModule("notes")).GraphicsSnappingSource)({getGraphicsLayers:()=>e.layer.sublayers?.toArray()??[],spatialReference:this.spatialReference,view:this.view,layerSource:e})}async _getSourceModule(e){const t=this._sourceModules[e];if(null==t.loader){const t=this._loadSourceModule(e),r={module:null,loader:t};this._sourceModules[e]=r;const a=await t,n={module:a,loader:t};return this._sourceModules[e]=n,a}return null==t.module?t.loader:t.module}_loadSourceModule(e){const t=this._updatingHandles;switch(e){case"featureService":return t.addPromise(import("./featureSources/FeatureServiceSnappingSource.js"));case"featureCollection":return t.addPromise(import("./featureSources/FeatureCollectionSnappingSource.js"));case"graphics":case"notes":return t.addPromise(import("./featureSources/GraphicsSnappingSource.js"));case"scene":return t.addPromise(import("./featureSources/SceneLayerSnappingSource.js"))}}get test(){}};function A(e){const t=e instanceof I||e instanceof M,r=w(e.constraint)||j(e.constraint);return t&&r&&!D(e.constraint)}function D({start:e,end:t}){const r=h(e,t),a=m(b(e),b(t));return r<f()||a/r<V}function E(e,t,r,a,n,s,{spatialReference:i}){const o=S(U,t);o[0]+=r,o[1]+=a,o[2]+=n;const c=H(o,i,_,s);return c?P(c,e):1/0}e([p({constructOnly:!0})],z.prototype,"spatialReference",void 0),e([p({constructOnly:!0})],z.prototype,"view",void 0),e([p()],z.prototype,"options",void 0),e([p({readOnly:!0})],z.prototype,"updating",null),e([p()],z.prototype,"_snappingSources",void 0),z=e([d("esri.views.interactive.snapping.FeatureSnappingEngine")],z);const O=g(),U=g(),V=1e-4;export{z as FeatureSnappingEngine};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{cyclicalPI as e,cyclical2PI as t}from"../../../core/Cyclical.js";import{valueInUnit as r,createAngle as n}from"../../../core/quantity.js";import{create as s}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import i from"../../../geometry/Multipoint.js";import{absoluteHeightElevationInfo as o}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as a,markAsTarget as l,fromVec3 as p}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as c}from"./SnappingAlgorithm.js";import{isLine as h,editEdgeToSnappingEdge as m,squaredScreenDistance as d}from"./snappingUtils.js";import{LineSnappingCandidate as f}from"./candidates/LineSnappingCandidate.js";import{vectorToScreenPoint as g}from"../support/viewUtils.js";import{radiansGeographicBetweenVec as u,pointFromDistanceAlongAzimuth as w}from"../../support/angularMeasurementUtils.js";import{projectPointToLineLike as x}from"../../support/geometry3dUtils.js";class S extends c{constructor(e,t,r){super(e,t),this._measurementWorker=r}async snapNewVertex(e,t){const r=t.editGeometryOperations.data.parts.at(-1),n=r?.segments.length??0;if(n<1||!r)return[];const{spatialReference:s}=t,i=g(e,s,o,this.view),{view:a}=this,l=r.segments[n-1];let p=l;const c=[];do{if(h(p)&&this.edgeExceedsShortLineThreshold(p,t)){const e=m(p,a,t);c.push(new y(e.left,e.right))}p=p.leftVertex.leftSegment}while(p&&p!==l);return this._processCandidateProposals(c,e,i,t)}async snapExistingVertex(e,t){const r=t.vertexHandle,n=r.part;if(n.segments.length<2)return[];const{view:s}=this,{spatialReference:i}=t,l=g(e,i,o,s),p=r.leftSegment,c=r.rightSegment,d=[];h(p)&&h(c)&&this.edgeExceedsShortLineThreshold(p,t)&&this.edgeExceedsShortLineThreshold(c,t)&&d.push(new y(a(p.leftVertex.pos,s,t),a(c.rightVertex.pos,s,t)));const f=n.segments[0];let u=f;do{if(h(u)&&u!==r.leftSegment&&u!==r.rightSegment&&this.edgeExceedsShortLineThreshold(u,t)){const e=m(u,s,t);d.push(new y(e.left,e.right))}u=u.rightVertex.rightSegment}while(u&&u!==f);return this._processCandidateProposals(d,e,l,t)}async _processCandidateProposals(e,t,r,n){if(!e.length)return[];const s=await j(e.map(({lineEnd:e})=>e),t,n,this._measurementWorker);return e.map(({lineStart:e,lineEnd:i},o)=>this._processCandidateProposal(e,i,t,r,n,s[o]??null)).filter(e=>void 0!==e)}_processCandidateProposal(e,t,r,n,i,a){const{spatialReference:c,pointer:h}=i,m=s();P(m,e,t,r,i,a);const u=l(p(m));if(!(d(n,g(u,c,o,this.view))>=this.squaredProximityThreshold(h)))return new f({lineStart:e,lineEnd:t,targetPoint:u,isDraped:"on-the-ground"===i.elevationInfo?.mode})}}class y{constructor(e,t){this.lineStart=e,this.lineEnd=t}}async function j(e,t,{spatialReference:r},n){if(!e.length)return[];const s=new i({spatialReference:r,hasZ:!0,points:e.map(e=>[e[0],e[1],e[2]])}),o=new i({spatialReference:r,hasZ:!0,points:Array.from({length:e.length},()=>[t[0],t[1],t[2]])});try{return await n.geodeticDistanceBetweenPointsMany(s,o)}catch{return new Array(e.length).fill(null)}}function P(e,t,r,n,s,i){v(e,t,r,n,s,i)||E(e,n,t,r)}function v(s,i,o,a,{spatialReference:l},p){const c=u(i,o,l,l);if(null==c)return!1;const h=u(o,a,l,l);if(null==h)return!1;if(null==p)return!1;const m=Math.abs(e.shortestSignedDiff(c,h))>Math.PI/2?t.normalize(c+Math.PI):c;return w(s,o,l,r(p,"meters"),n(m,"radians","geographic"),"geodesic"),s[2]=a[2],!0}function E(e,t,r,n){x(t,{start:r,end:n,type:1},e),e[2]=t[2]}export{S as LineSnapper};
2
+ import{cyclicalPI as e,cyclical2PI as t}from"../../../core/Cyclical.js";import{valueInUnit as r,createAngle as s}from"../../../core/quantity.js";import{create as n}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import i from"../../../geometry/Multipoint.js";import{absoluteHeightElevationInfo as o}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as a,markAsTarget as l,fromVec3 as p}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as c}from"./SnappingAlgorithm.js";import{isLine as h,editEdgeToSnappingEdge as m}from"./snappingUtils.js";import{LineSnappingCandidate as f}from"./candidates/LineSnappingCandidate.js";import{vectorToScreenPoint as d}from"../support/viewUtils.js";import{radiansGeographicBetweenVec as g,pointFromDistanceAlongAzimuth as u}from"../../support/angularMeasurementUtils.js";import{projectPointToLineLike as w}from"../../support/geometry3dUtils.js";import{squaredScreenDistance as x}from"../../../core/screenUtils.js";class S extends c{constructor(e,t,r){super(e,t),this._measurementWorker=r}async snapNewVertex(e,t){const r=t.editGeometryOperations.data.parts.at(-1),s=r?.segments.length??0;if(s<1||!r)return[];const{spatialReference:n}=t,i=d(e,n,o,this.view),{view:a}=this,l=r.segments[s-1];let p=l;const c=[];do{if(h(p)&&this.edgeExceedsShortLineThreshold(p,t)){const e=m(p,a,t);c.push(new y(e.left,e.right))}p=p.leftVertex.leftSegment}while(p&&p!==l);return this._processCandidateProposals(c,e,i,t)}async snapExistingVertex(e,t){const r=t.vertexHandle,s=r.part;if(s.segments.length<2)return[];const{view:n}=this,{spatialReference:i}=t,l=d(e,i,o,n),p=r.leftSegment,c=r.rightSegment,f=[];h(p)&&h(c)&&this.edgeExceedsShortLineThreshold(p,t)&&this.edgeExceedsShortLineThreshold(c,t)&&f.push(new y(a(p.leftVertex.pos,n,t),a(c.rightVertex.pos,n,t)));const g=s.segments[0];let u=g;do{if(h(u)&&u!==r.leftSegment&&u!==r.rightSegment&&this.edgeExceedsShortLineThreshold(u,t)){const e=m(u,n,t);f.push(new y(e.left,e.right))}u=u.rightVertex.rightSegment}while(u&&u!==g);return this._processCandidateProposals(f,e,l,t)}async _processCandidateProposals(e,t,r,s){if(!e.length)return[];const n=await j(e.map(({lineEnd:e})=>e),t,s,this._measurementWorker);return e.map(({lineStart:e,lineEnd:i},o)=>this._processCandidateProposal(e,i,t,r,s,n[o]??null)).filter(e=>void 0!==e)}_processCandidateProposal(e,t,r,s,i,a){const{spatialReference:c,pointer:h}=i,m=n();P(m,e,t,r,i,a);const g=l(p(m));if(!(x(s,d(g,c,o,this.view))>=this.squaredProximityThreshold(h)))return new f({lineStart:e,lineEnd:t,targetPoint:g,isDraped:"on-the-ground"===i.elevationInfo?.mode})}}class y{constructor(e,t){this.lineStart=e,this.lineEnd=t}}async function j(e,t,{spatialReference:r},s){if(!e.length)return[];const n=new i({spatialReference:r,hasZ:!0,points:e.map(e=>[e[0],e[1],e[2]])}),o=new i({spatialReference:r,hasZ:!0,points:Array.from({length:e.length},()=>[t[0],t[1],t[2]])});try{return await s.geodeticDistanceBetweenPointsMany(n,o)}catch{return new Array(e.length).fill(null)}}function P(e,t,r,s,n,i){v(e,t,r,s,n,i)||E(e,s,t,r)}function v(n,i,o,a,{spatialReference:l},p){const c=g(i,o,l,l);if(null==c)return!1;const h=g(o,a,l,l);if(null==h)return!1;if(null==p)return!1;const m=Math.abs(e.shortestSignedDiff(c,h))>Math.PI/2?t.normalize(c+Math.PI):c;return u(n,o,l,r(p,"meters"),s(m,"radians","geographic"),"geodesic"),n[2]=a[2],!0}function E(e,t,r,s){w(t,{start:r,end:s,type:1},e),e[2]=t[2]}export{S as LineSnapper};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{squaredDistance as e}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as t}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{absoluteHeightElevationInfo as r}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as i,asVec2 as s,markAsTarget as n,fromValues as o}from"../sketch/normalizedPoint.js";import{defaults as l}from"./Settings.js";import{SnappingAlgorithm as a}from"./SnappingAlgorithm.js";import{isLine as c,editEdgeToSnappingEdge as h,squaredScreenDistance as p}from"./snappingUtils.js";import{ParallelLineSnappingCandidate as g}from"./candidates/ParallelLineSnappingCandidate.js";import{vectorToScreenPoint as f}from"../support/viewUtils.js";import{projectPointToLine as m}from"../../support/geometry2dUtils.js";class d extends a{async snapNewVertex(e,t){const s=t.editGeometryOperations.data.parts.at(-1),n=[];if(!s)return n;const o=s.segments.length,l=s.vertices.length;if(o<2)return n;const{view:a}=this,p=f(e,t.spatialReference,r,a),g=s.vertices[0],m=s.vertices[l-1],d=c(m.leftSegment)?i(m.pos,a,t):null,u=c(g.rightSegment)?i(g.pos,a,t):null,v=s.segments[o-1];let x=v;do{if(c(x)&&this.edgeExceedsShortLineThreshold(x,t)){const r=h(x,a,t);d&&this._checkEdgeForParallelLines(r,d,e,p,t,n),u&&this._checkEdgeForParallelLines(r,u,e,p,t,n)}x=x.leftVertex.leftSegment}while(x&&x!==v);return n}async snapExistingVertex(e,t){const s=[],n=t.vertexHandle,o=n.part;if(o.segments.length<3)return s;const{view:l}=this,a=f(e,t.spatialReference,r,l),p=n.leftSegment,g=n.rightSegment,m=o.vertices[0],d=i(m.pos,l,t),u=o.vertices.length,v=o.vertices[u-1],x=i(v.pos,l,t),L=o.segments[0];let S=L;do{if(c(S)&&S!==p&&S!==g&&this.edgeExceedsShortLineThreshold(S,t)){const r=h(S,l,t);c(p)&&this._checkEdgeForParallelLines(r,i(p.leftVertex.pos,l,t),e,a,t,s),c(g)&&this._checkEdgeForParallelLines(r,i(g.rightVertex.pos,l,t),e,a,t,s),n===m?this._checkEdgeForParallelLines(r,x,e,a,t,s):n===v&&this._checkEdgeForParallelLines(r,d,e,a,t,s)}S=S.rightVertex.rightSegment}while(S&&S!==L);return s}_checkEdgeForParallelLines(t,i,a,c,h,d){const x=t.left,L=t.right;if(m(v,s(i),s(x),s(L)),e(v,s(i))<l.parallelLineThreshold)return;m(v,s(a),s(x),s(L),s(i));const{spatialReference:S,pointer:P}=h,j=n(o(v[0],v[1],a[2]));if(p(c,f(j,S,r,this.view))<this.squaredProximityThreshold(P)){if(this.isVertical(j,i,h)||this.isVertical(x,L,h))return;if(u(t,d))return;d.push(new g({referenceLine:t,lineStart:i,targetPoint:j,isDraped:"on-the-ground"===h.elevationInfo?.mode}))}}}function u(t,r){const i=t.left,n=t.right;for(const o of r)if(m(v,s(n),s(o.constraint.start),s(o.constraint.end),s(i)),e(v,s(n))<l.parallelLineThreshold)return o.addReferenceLine(t),!0;return!1}const v=t();export{d as ParallelLineSnapper};
2
+ import{squaredDistance as e}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as t}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{absoluteHeightElevationInfo as r}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as i,asVec2 as s,markAsTarget as n,fromValues as o}from"../sketch/normalizedPoint.js";import{defaults as l}from"./Settings.js";import{SnappingAlgorithm as a}from"./SnappingAlgorithm.js";import{isLine as c,editEdgeToSnappingEdge as h}from"./snappingUtils.js";import{ParallelLineSnappingCandidate as p}from"./candidates/ParallelLineSnappingCandidate.js";import{vectorToScreenPoint as g}from"../support/viewUtils.js";import{projectPointToLine as m}from"../../support/geometry2dUtils.js";import{squaredScreenDistance as f}from"../../../core/screenUtils.js";class d extends a{async snapNewVertex(e,t){const s=t.editGeometryOperations.data.parts.at(-1),n=[];if(!s)return n;const o=s.segments.length,l=s.vertices.length;if(o<2)return n;const{view:a}=this,p=g(e,t.spatialReference,r,a),m=s.vertices[0],f=s.vertices[l-1],d=c(f.leftSegment)?i(f.pos,a,t):null,u=c(m.rightSegment)?i(m.pos,a,t):null,v=s.segments[o-1];let x=v;do{if(c(x)&&this.edgeExceedsShortLineThreshold(x,t)){const r=h(x,a,t);d&&this._checkEdgeForParallelLines(r,d,e,p,t,n),u&&this._checkEdgeForParallelLines(r,u,e,p,t,n)}x=x.leftVertex.leftSegment}while(x&&x!==v);return n}async snapExistingVertex(e,t){const s=[],n=t.vertexHandle,o=n.part;if(o.segments.length<3)return s;const{view:l}=this,a=g(e,t.spatialReference,r,l),p=n.leftSegment,m=n.rightSegment,f=o.vertices[0],d=i(f.pos,l,t),u=o.vertices.length,v=o.vertices[u-1],x=i(v.pos,l,t),L=o.segments[0];let S=L;do{if(c(S)&&S!==p&&S!==m&&this.edgeExceedsShortLineThreshold(S,t)){const r=h(S,l,t);c(p)&&this._checkEdgeForParallelLines(r,i(p.leftVertex.pos,l,t),e,a,t,s),c(m)&&this._checkEdgeForParallelLines(r,i(m.rightVertex.pos,l,t),e,a,t,s),n===f?this._checkEdgeForParallelLines(r,x,e,a,t,s):n===v&&this._checkEdgeForParallelLines(r,d,e,a,t,s)}S=S.rightVertex.rightSegment}while(S&&S!==L);return s}_checkEdgeForParallelLines(t,i,a,c,h,d){const x=t.left,L=t.right;if(m(v,s(i),s(x),s(L)),e(v,s(i))<l.parallelLineThreshold)return;m(v,s(a),s(x),s(L),s(i));const{spatialReference:S,pointer:j}=h,P=n(o(v[0],v[1],a[2]));if(f(c,g(P,S,r,this.view))<this.squaredProximityThreshold(j)){if(this.isVertical(P,i,h)||this.isVertical(x,L,h))return;if(u(t,d))return;d.push(new p({referenceLine:t,lineStart:i,targetPoint:P,isDraped:"on-the-ground"===h.elevationInfo?.mode}))}}}function u(t,r){const i=t.left,n=t.right;for(const o of r)if(m(v,s(n),s(o.constraint.start),s(o.constraint.end),s(i)),e(v,s(n))<l.parallelLineThreshold)return o.addReferenceLine(t),!0;return!1}const v=t();export{d as ParallelLineSnapper};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{cyclical2PI as e}from"../../../core/Cyclical.js";import{createAngle as t,valueInUnit as r}from"../../../core/quantity.js";import{subtract as i,dot as n,squaredLength as s,scaleAndAdd as a}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as o}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{scaleAndAdd as c,subtract as p,set as g}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as m}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import h from"../../../geometry/Point.js";import{absoluteHeightElevationInfo as l}from"../../../support/elevationInfoUtils.js";import{VerticalHalfPlaneConstraint as f}from"../sketch/constraints.js";import{fromAnyMapPoint as d,asVec2 as u,markAsTarget as x,fromValues as S,fromVec3 as V,setDehydratedPoint as w}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as j}from"./SnappingAlgorithm.js";import{isLine as v,squaredScreenDistance as y}from"./snappingUtils.js";import{RightAngleSnappingCandidate as k}from"./candidates/RightAngleSnappingCandidate.js";import{vectorToScreenPoint as C}from"../support/viewUtils.js";import{radiansGeographicBetweenVec as _,pointFromDistanceAlongAzimuth as F}from"../../support/angularMeasurementUtils.js";class P extends j{constructor(e,t,r){super(e,t),this._measurementWorker=r}async snapNewVertex(e,t){const r=t.editGeometryOperations.data.parts.at(-1),i=[];if(!r||r.vertices.length<2)return i;const{view:n}=this,s=C(e,t.spatialReference,l,n),a=r.vertices.at(-1);v(a.leftSegment)&&await this._checkForSnappingCandidate(1,i,a.leftSegment,a,a.leftSegment.leftVertex,e,s,t);const o=r.vertices[0];return v(o.rightSegment)&&await this._checkForSnappingCandidate(2,i,o.rightSegment,o,o.rightSegment.rightVertex,e,s,t),i}async snapExistingVertex(e,t){const r=[],i=t.vertexHandle,{part:n}=i;if(n.vertices.length<3)return r;const{view:s}=this,a=C(e,t.spatialReference,l,s),o=i.leftSegment,c=i.rightSegment;if(v(o?.leftVertex.leftSegment)){const i=o.leftVertex.leftSegment;await this._checkForSnappingCandidate(3,r,i,i.rightVertex,i.leftVertex,e,a,t)}if(v(c)&&v(c.rightVertex.rightSegment)){const i=c.rightVertex.rightSegment;await this._checkForSnappingCandidate(3,r,i,i.leftVertex,i.rightVertex,e,a,t)}const p=n.getFirstVertex()?.rightSegment;return!c&&v(p)&&await this._checkForSnappingCandidate(3,r,p,p.leftVertex,p.rightVertex,e,a,t),r}async _checkForSnappingCandidate(e,t,r,i,n,s,a,o){if(!v(r)||!this.edgeExceedsShortLineThreshold(r,o))return;const c=this.view,p=d(i.pos,c,o),g=d(n.pos,c,o);await R(T,g,p,s,o,this._measurementWorker),this._checkForSnappingCandidateAlongProjectedRay(e,t,g,p,T,s,a,o)}_checkForSnappingCandidateAlongProjectedRay(e,t,r,o,p,g,h,d){const{spatialReference:w,pointer:j}=d,v=i(M,u(g),u(o)),_=n(p,v)/s(p),F=a(M,u(o),p,_),P=x(S(F[0],F[1],g[2]));if(y(h,C(P,w,l,this.view))>this.squaredProximityThreshold(j)||this.isVertical(P,o,d)||this.isVertical(o,r,d))return;const R=c(m(),o,p,Math.sign(_));t.push(new k({targetPoint:P,constraint:new f(o,V(R)),previousVertex:r,otherVertex:o,otherVertexType:1,selfSnappingType:e,isDraped:"on-the-ground"===d.elevationInfo?.mode}))}}async function R(e,t,r,i,n,s){await A(e,t,r,i,n,s)||b(e,t,r)}async function A(i,n,s,a,{spatialReference:o},c){const g=_(n,s,o,o);if(null==g)return!1;const l=_(s,a,o,o);if(null==l)return!1;const f=Math.sign(e.shortestSignedDiff(g,l))*Math.PI*.5,d=t(g+f,"radians","geographic"),u=m(),x=await c.geodeticDistanceBetweenPoints(w(new h,s,o),w(new h,a,o));return null!=x&&(F(u,s,o,r(x,"meters"),d,"geodesic"),p(i,u,s),!0)}function b(e,t,r){const n=i(M,u(r),u(t));g(e,n[1],-n[0],0)}const M=o(),T=m();export{P as RightAngleSnapper};
2
+ import{cyclical2PI as e}from"../../../core/Cyclical.js";import{createAngle as t,valueInUnit as r}from"../../../core/quantity.js";import{subtract as i,dot as n,squaredLength as s,scaleAndAdd as a}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as o}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{scaleAndAdd as c,subtract as p,set as g}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as m}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import h from"../../../geometry/Point.js";import{absoluteHeightElevationInfo as l}from"../../../support/elevationInfoUtils.js";import{VerticalHalfPlaneConstraint as f}from"../sketch/constraints.js";import{fromAnyMapPoint as d,asVec2 as u,markAsTarget as x,fromValues as S,fromVec3 as V,setDehydratedPoint as w}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as j}from"./SnappingAlgorithm.js";import{isLine as v}from"./snappingUtils.js";import{RightAngleSnappingCandidate as y}from"./candidates/RightAngleSnappingCandidate.js";import{vectorToScreenPoint as k}from"../support/viewUtils.js";import{radiansGeographicBetweenVec as C,pointFromDistanceAlongAzimuth as _}from"../../support/angularMeasurementUtils.js";import{squaredScreenDistance as F}from"../../../core/screenUtils.js";class P extends j{constructor(e,t,r){super(e,t),this._measurementWorker=r}async snapNewVertex(e,t){const r=t.editGeometryOperations.data.parts.at(-1),i=[];if(!r||r.vertices.length<2)return i;const{view:n}=this,s=k(e,t.spatialReference,l,n),a=r.vertices.at(-1);v(a.leftSegment)&&await this._checkForSnappingCandidate(1,i,a.leftSegment,a,a.leftSegment.leftVertex,e,s,t);const o=r.vertices[0];return v(o.rightSegment)&&await this._checkForSnappingCandidate(2,i,o.rightSegment,o,o.rightSegment.rightVertex,e,s,t),i}async snapExistingVertex(e,t){const r=[],i=t.vertexHandle,{part:n}=i;if(n.vertices.length<3)return r;const{view:s}=this,a=k(e,t.spatialReference,l,s),o=i.leftSegment,c=i.rightSegment;if(v(o?.leftVertex.leftSegment)){const i=o.leftVertex.leftSegment;await this._checkForSnappingCandidate(3,r,i,i.rightVertex,i.leftVertex,e,a,t)}if(v(c)&&v(c.rightVertex.rightSegment)){const i=c.rightVertex.rightSegment;await this._checkForSnappingCandidate(3,r,i,i.leftVertex,i.rightVertex,e,a,t)}const p=n.getFirstVertex()?.rightSegment;return!c&&v(p)&&await this._checkForSnappingCandidate(3,r,p,p.leftVertex,p.rightVertex,e,a,t),r}async _checkForSnappingCandidate(e,t,r,i,n,s,a,o){if(!v(r)||!this.edgeExceedsShortLineThreshold(r,o))return;const c=this.view,p=d(i.pos,c,o),g=d(n.pos,c,o);await R(M,g,p,s,o,this._measurementWorker),this._checkForSnappingCandidateAlongProjectedRay(e,t,g,p,M,s,a,o)}_checkForSnappingCandidateAlongProjectedRay(e,t,r,o,p,g,h,d){const{spatialReference:w,pointer:j}=d,v=i(U,u(g),u(o)),C=n(p,v)/s(p),_=a(U,u(o),p,C),P=x(S(_[0],_[1],g[2]));if(F(h,k(P,w,l,this.view))>this.squaredProximityThreshold(j)||this.isVertical(P,o,d)||this.isVertical(o,r,d))return;const R=c(m(),o,p,Math.sign(C));t.push(new y({targetPoint:P,constraint:new f(o,V(R)),previousVertex:r,otherVertex:o,otherVertexType:1,selfSnappingType:e,isDraped:"on-the-ground"===d.elevationInfo?.mode}))}}async function R(e,t,r,i,n,s){await A(e,t,r,i,n,s)||b(e,t,r)}async function A(i,n,s,a,{spatialReference:o},c){const g=C(n,s,o,o);if(null==g)return!1;const l=C(s,a,o,o);if(null==l)return!1;const f=Math.sign(e.shortestSignedDiff(g,l))*Math.PI*.5,d=t(g+f,"radians","geographic"),u=m(),x=await c.geodeticDistanceBetweenPoints(w(new h,s,o),w(new h,a,o));return null!=x&&(_(u,s,o,r(x,"meters"),d,"geodesic"),p(i,u,s),!0)}function b(e,t,r){const n=i(U,u(r),u(t));g(e,n[1],-n[0],0)}const U=o(),M=m();export{P as RightAngleSnapper};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{lerp as e,distance as t}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as i}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{absoluteHeightElevationInfo as r}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as s,asVec2 as n,markAsTarget as o,fromValues as p}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as a}from"./SnappingAlgorithm.js";import{squaredScreenDistance as l}from"./snappingUtils.js";import{RightAngleTriangleSnappingCandidate as m}from"./candidates/RightAngleTriangleSnappingCandidate.js";import{vectorToScreenPoint as c}from"../support/viewUtils.js";import{projectPointToCircle as d}from"../../support/geometry2dUtils.js";class g extends a{async snapNewVertex(e,t){const i=t.editGeometryOperations.data.parts.at(-1),r=[];if(!i)return r;const n=i.vertices.length;if("polygon"!==t.editGeometryOperations.data.type||n<2)return r;const{view:o}=this,p=i.vertices[0],a=i.vertices[n-1];if(a.leftSegment&&"line"!==a.leftSegment.type||a.rightSegment&&"line"!==a.rightSegment.type)return r;const l=s(p.pos,o,t),m=s(a.pos,o,t);return this._processCandidateProposal(l,m,e,t,r),r}async snapExistingVertex(e,t){const i=[],r=t.vertexHandle,{part:n,rightSegment:o,leftSegment:p}=r;if(n.segments.length<2)return i;if("polyline"===t.editGeometryOperations.data.type&&(0===r.index||r.index===n.vertices.length-1))return i;if("line"!==p?.type||o&&"line"!==o.type)return i;const a=o?.rightVertex??(n.autoClose?n.getFirstVertex():null);if(!a)return i;const{view:l}=this,m=s(p.leftVertex.pos,l,t),c=s(a.pos,l,t);return this._processCandidateProposal(m,c,e,t,i),i}_processCandidateProposal(i,s,a,g,h){if(!this.exceedsShortLineThreshold(i,s,g))return;const u=e(f,n(i),n(s),.5),x=.5*t(n(i),n(s)),y=d(f,n(a),u,x),v=o(p(y[0],y[1],a[2])),{spatialReference:j,pointer:S}=g,w=c(a,j,r,this.view);if(l(w,c(v,j,r,this.view))<this.squaredProximityThreshold(S)){if(this.isVertical(i,v,g)||this.isVertical(v,s,g))return;h.push(new m({targetPoint:v,point1:i,point2:s,isDraped:"on-the-ground"===g.elevationInfo?.mode}))}}}const f=i();export{g as RightAngleTriangleSnapper};
2
+ import{lerp as t,distance as e}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{absoluteHeightElevationInfo as i}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as o,asVec2 as s,markAsTarget as n,fromValues as p}from"../sketch/normalizedPoint.js";import{SnappingAlgorithm as a}from"./SnappingAlgorithm.js";import"../../../core/RandomLCG.js";import"../../../core/Logger.js";import"../../../core/accessorSupport/watch.js";import"../../../core/has.js";import"../../../core/accessorSupport/tracking/SimpleTrackingTarget.js";import"../../../core/sql/UnknownTimeZone.js";import"../../../time/constants.js";import"luxon";import"../../../intl/date.js";import"../../../rest/support/Query.js";import"../../input/InputManager.js";import"../keybindings.js";import{squaredScreenDistance as m}from"../../../core/screenUtils.js";import{RightAngleTriangleSnappingCandidate as c}from"./candidates/RightAngleTriangleSnappingCandidate.js";import{vectorToScreenPoint as l}from"../support/viewUtils.js";import{projectPointToCircle as g}from"../../support/geometry2dUtils.js";class d extends a{async snapNewVertex(t,e){const r=e.editGeometryOperations.data.parts.at(-1),i=[];if(!r)return i;const s=r.vertices.length;if("polygon"!==e.editGeometryOperations.data.type||s<2)return i;const{view:n}=this,p=r.vertices[0],a=r.vertices[s-1];if(a.leftSegment&&"line"!==a.leftSegment.type||a.rightSegment&&"line"!==a.rightSegment.type)return i;const m=o(p.pos,n,e),c=o(a.pos,n,e);return this._processCandidateProposal(m,c,t,e,i),i}async snapExistingVertex(t,e){const r=[],i=e.vertexHandle,{part:s,rightSegment:n,leftSegment:p}=i;if(s.segments.length<2)return r;if("polyline"===e.editGeometryOperations.data.type&&(0===i.index||i.index===s.vertices.length-1))return r;if("line"!==p?.type||n&&"line"!==n.type)return r;const a=n?.rightVertex??(s.autoClose?s.getFirstVertex():null);if(!a)return r;const{view:m}=this,c=o(p.leftVertex.pos,m,e),l=o(a.pos,m,e);return this._processCandidateProposal(c,l,t,e,r),r}_processCandidateProposal(r,o,a,d,f){if(!this.exceedsShortLineThreshold(r,o,d))return;const u=t(h,s(r),s(o),.5),j=.5*e(s(r),s(o)),y=g(h,s(a),u,j),x=n(p(y[0],y[1],a[2])),{spatialReference:v,pointer:S}=d,w=l(a,v,i,this.view);if(m(w,l(x,v,i,this.view))<this.squaredProximityThreshold(S)){if(this.isVertical(r,x,d)||this.isVertical(x,o,d))return;f.push(new c({targetPoint:x,point1:r,point2:o,isDraped:"on-the-ground"===d.elevationInfo?.mode}))}}}const h=r();export{d as RightAngleTriangleSnapper};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{getMetersPerUnitForSR as e}from"../../../core/units.js";import{distance as t}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{absoluteHeightElevationInfo as s}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as r,asVec2 as i}from"../sketch/normalizedPoint.js";import{defaults as o}from"./Settings.js";import{squaredScreenDistance as h}from"./snappingUtils.js";import{vectorToScreenPoint as n}from"../support/viewUtils.js";class l{constructor(e,t){this.view=e,this.options=t,this.squaredShortLineThreshold=o.shortLineThreshold*o.shortLineThreshold}async snap(e,t){return null!=t.vertexHandle?"vertex"!==t.vertexHandle.type?[]:this.snapExistingVertex(e,t):this.snapNewVertex(e,t)}edgeExceedsShortLineThreshold(e,t){return this.exceedsShortLineThreshold(r(e.leftVertex.pos,this.view,t),r(e.rightVertex.pos,this.view,t),t)}exceedsShortLineThreshold(e,t,{spatialReference:r}){return 0===this.squaredShortLineThreshold||h(n(t,r,s,this.view),n(e,r,s,this.view))>this.squaredShortLineThreshold}isVertical(s,r,{spatialReference:h}){const n=e(h);return t(i(s),i(r))*n<o.verticalLineThresholdMeters}squaredProximityThreshold(e){return"touch"===e?this._squaredTouchProximityThreshold:this._squaredMouseProximityThreshold}get _squaredMouseProximityThreshold(){return this.options.distance*this.options.distance}get _squaredTouchProximityThreshold(){const{distance:e,touchSensitivityMultiplier:t}=this.options,s=e*t;return s*s}}export{l as SnappingAlgorithm};
2
+ import{getMetersPerUnitForSR as e}from"../../../core/units.js";import{distance as r}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{absoluteHeightElevationInfo as t}from"../../../support/elevationInfoUtils.js";import{fromAnyMapPoint as s,asVec2 as i}from"../sketch/normalizedPoint.js";import{defaults as o}from"./Settings.js";import"../../../core/RandomLCG.js";import"../../../core/Logger.js";import"../../../core/accessorSupport/watch.js";import"../../../core/has.js";import"../../../core/accessorSupport/tracking/SimpleTrackingTarget.js";import"../../../core/sql/UnknownTimeZone.js";import"../../../time/constants.js";import"luxon";import"../../../intl/date.js";import"../../../rest/support/Query.js";import"../../input/InputManager.js";import"../keybindings.js";import{squaredScreenDistance as h}from"../../../core/screenUtils.js";import{vectorToScreenPoint as n}from"../support/viewUtils.js";class p{constructor(e,r){this.view=e,this.options=r,this.squaredShortLineThreshold=o.shortLineThreshold*o.shortLineThreshold}async snap(e,r){return null!=r.vertexHandle?"vertex"!==r.vertexHandle.type?[]:this.snapExistingVertex(e,r):this.snapNewVertex(e,r)}edgeExceedsShortLineThreshold(e,r){return this.exceedsShortLineThreshold(s(e.leftVertex.pos,this.view,r),s(e.rightVertex.pos,this.view,r),r)}exceedsShortLineThreshold(e,r,{spatialReference:s}){return 0===this.squaredShortLineThreshold||h(n(r,s,t,this.view),n(e,s,t,this.view))>this.squaredShortLineThreshold}isVertical(t,s,{spatialReference:h}){const n=e(h);return r(i(t),i(s))*n<o.verticalLineThresholdMeters}squaredProximityThreshold(e){return"touch"===e?this._squaredTouchProximityThreshold:this._squaredMouseProximityThreshold}get _squaredMouseProximityThreshold(){return this.options.distance*this.options.distance}get _squaredTouchProximityThreshold(){const{distance:e,touchSensitivityMultiplier:r}=this.options,t=e*r;return t*t}}export{p as SnappingAlgorithm};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{createTask as t}from"../../../core/asyncUtils.js";import n from"../../../core/Error.js";import{EventedAccessor as i}from"../../../core/Evented.js";import"../../../core/has.js";import{throwIfAborted as s,isAborted as a}from"../../../core/promiseUtils.js";import{watch as r,syncAndInitial as o,sync as p}from"../../../core/reactiveUtils.js";import{property as d,subclass as c}from"../../../core/accessorSupport/decorators.js";import{project as h,initializeProjection as l}from"../../../geometry/projectionUtils.js";import{absoluteHeightElevationInfo as u}from"../../../support/elevationInfoUtils.js";import{fromPoint as f,markAsTarget as g,toElevationAlignedDehydratedPoint as _}from"../sketch/normalizedPoint.js";import{defaults as S}from"./Settings.js";import m from"./SnappingOptions.js";import{sortCandidatesInPlace as v,squaredScreenDistance as y}from"./snappingUtils.js";import{DrapedEdgeSnappingCandidate as w}from"./candidates/DrapedEdgeSnappingCandidate.js";import{EdgeSnappingCandidate as C}from"./candidates/EdgeSnappingCandidate.js";import{IntersectionSnappingCandidate as P}from"./candidates/IntersectionSnappingCandidate.js";import{LineSnappingCandidate as T}from"./candidates/LineSnappingCandidate.js";import{ParallelLineSnappingCandidate as E}from"./candidates/ParallelLineSnappingCandidate.js";import{RightAngleSnappingCandidate as j}from"./candidates/RightAngleSnappingCandidate.js";import{RightAngleTriangleSnappingCandidate as R}from"./candidates/RightAngleTriangleSnappingCandidate.js";import{VertexSnappingCandidate as M}from"./candidates/VertexSnappingCandidate.js";import{DehydratedVertexSnappingCandidate as q}from"./candidates/dehydrated/DehydratedVertexSnappingCandidate.js";import{vectorToScreenPoint as x}from"../support/viewUtils.js";let b=class extends i{constructor(e){super(e),this.options=new m,this._engineCache=new Map,this._loadTask=null,this._engines=[],this._currentMainCandidate=null,this._currentOtherActiveCandidates=[],this._currentSnappedType=0,this._currentSpatialReference=null}initialize(){this.addHandles([r(()=>{const{distance:e,touchSensitivityMultiplier:t,effectiveSelfEnabled:n,effectiveFeatureEnabled:i,effectiveGridEnabled:s}=this.options;return{selfEnabled:n,featureEnabled:i,gridEnabled:"2d"===this.view.type&&s,viewReady:this.view.ready,viewSpatialReference:this.view.spatialReference,distance:e,touchSensitivityMultiplier:t}},(e,n)=>{n&&(this.doneSnapping(),this.emit("changed")),this._loadTask?.abort(),this._loadTask=t(t=>this._updateEngines(e,n,t))},o),r(()=>this.options,e=>{for(const t of this._engines)t.options=e},p)])}destroy(){this._loadTask?.abort(),this._destroyEngines()}get updating(){return this._engines.some(e=>e.updating)||!this._loadTask?.finished}_destroyEngines(){this._engineCache.forEach(e=>e.destroy()),this._engineCache.clear(),this._engines=[]}async _updateEngines(e,t,n){if(!e.viewReady)return void this._destroyEngines();t?.viewSpatialReference!==e.viewSpatialReference&&this._destroyEngines();const i=this._engineCache,s=await Promise.allSettled([e.featureEnabled&&!i.has("feature")?this._createFeatureSnappingEngine(n):void 0,e.selfEnabled&&!i.has("self")?this._createSelfSnappingEngine(n):void 0,e.gridEnabled&&!i.has("grid")?this._createGridSnappingEngine(n):void 0]);if(n.aborted)for(const a of s)"fulfilled"===a.status&&a.value?.engine.destroy();else{for(const e of s)"fulfilled"===e.status&&e.value&&i.set(e.value.type,e.value.engine);this._engines=Array.from(i.values())}}async _createSelfSnappingEngine(e){const{SelfSnappingEngine:t}=await import("./SelfSnappingEngine.js");return s(e),{type:"self",engine:new t({view:this.view,options:this.options})}}async _createGridSnappingEngine(e){const{view:t}=this;if("2d"!==t.type)return;const{GridSnappingEngine:n}=await import("./GridSnappingEngine.js");return s(e),{type:"grid",engine:new n({view:t,options:this.options})}}async _createFeatureSnappingEngine(e){const{FeatureSnappingEngine:t}=await import("./FeatureSnappingEngine.js");s(e);const{view:n,options:i}=this,{spatialReference:a}=n;return{type:"feature",engine:new t({view:n,options:i,spatialReference:a})}}get _squaredMouseProximityThreshold(){return this.options.distance*this.options.distance}get _squaredTouchProximityThreshold(){const{distance:e,touchSensitivityMultiplier:t}=this.options,n=e*t;return n*n}getVertexCandidates(){const e=this._currentSpatialReference;if(!e)return[];const t=new Set;this._currentMainCandidate&&D(t,this._currentMainCandidate);for(const n of this._currentOtherActiveCandidates)D(t,n);return Array.from(t).map(t=>new q(t.objectId,t.layer,t.originalTargetPoint,e))}snap(e){return U(e)?this._snapMultiPoint(e):this._snapSinglePoint(e)}update(e){const{point:t,context:i}=e;this._removeVisualization();const s=this._currentMainCandidate;if(null==s)return t;const a=this._selectUpdateInput(e);if(null==a)return t;const{spatialReference:r}=i;if(!r.equals(this._currentSpatialReference))throw new n("snapping:mismatched-spatial-reference","Cannot update with the given spatial reference, as the current snapping candidates are in a different spatial reference.");const o=h(a,r);if(null==o)return t;const{view:p}=this,{elevationInfo:d,visualizer:c}=i,l=[],u=f(o,p,d),S=s.constraint.closestTo(u);if(!this._arePointsWithinScreenThreshold(u,S,i)||!I(s,i.drawConstraints))return this._resetSnappingState(),t;s.targetPoint=g(S),l.push(...s.hints);for(const n of this._currentOtherActiveCandidates)I(n,i.drawConstraints)&&!V(s,n)&&(n.targetPoint=g(S),l.push(...n.hints));return null!=c&&this.addHandles(c.draw(l,{spatialReference:r,elevationInfo:k(i),view:p,selfSnappingZ:i.selfSnappingZ}),z),_(S,p,t,i)}doneSnapping(){this._removeVisualization(),this._resetSnappingState()}_selectUpdateInput({point:e,scenePoint:t}){switch(this._currentSnappedType){case 0:return e;case 1:return t}}_resetSnappingState(){this._currentMainCandidate=null,this._currentOtherActiveCandidates=[],this._currentSnappedType=0,this._currentSpatialReference=null}_removeVisualization(){this.removeHandles(z)}async _snapSinglePoint({point:e,context:t,signal:n}){const{view:i}=this,{elevationInfo:s}=t,a=f(e,i,s),r=await this._fetchCandidates(a,3,t,n);return this._createSnapResult(a,0,r,i,e,t,n)}async _snapMultiPoint({point:e,scenePoint:t,context:n,signal:i}){const{view:s}=this,{coordinateHelper:a,elevationInfo:r,spatialReference:o}=n;await l(t.spatialReference,o);const p=h(t,o),d=f(p,s,r),c=await this._fetchCandidates(d,1,n,i);if(c.length>0){const e=await this._fetchCandidates(d,2,n,i);return this._createSnapResult(d,1,[...c,...e],s,p,n,i)}const u=f(e,s,r),g=await this._fetchCandidates(u,2,n,i);return this._createSnapResult(u,0,g,s,{z:a.hasZ()&&e.hasZ?e.z??0:void 0,m:a.hasM()&&e.hasM?e.m??0:void 0},n,i)}async _fetchCandidates(e,t,n,i){return(await Promise.all(this._engines.map(s=>s.fetchCandidates(e,t,n,i)))).flat()}_createSnapResult(e,t,n,i,s,r,o){return{get valid(){return!a(o)},apply:()=>{const{spatialReference:a}=r,{snappedPoint:o,hints:p}=this._processCandidates(e,t,n,r);return this._removeVisualization(),null!=r.visualizer&&this.addHandles(r.visualizer.draw(p,{spatialReference:a,elevationInfo:u,view:i,selfSnappingZ:r.selfSnappingZ}),z),_(o,i,s,r)}}}_processCandidates(e,t,n,i){if(n.length<1)return this.doneSnapping(),{snappedPoint:e,hints:[]};this._currentSnappedType!==t&&this._resetSnappingState(),v(e,n);const s=this._currentMainCandidate;if(null!=s){const a=A(s,n);if(a>=0){if(!(n[a]instanceof P))return this._intersectWithOtherCandidates(a,n,e,t,i);if(this._arePointsWithinScreenThreshold(e,s.targetPoint,i))return this._updateSnappingCandidate(s,t,n,i)}}return this._intersectWithOtherCandidates(0,n,e,t,i)}_intersectWithOtherCandidates(e,t,n,i,s){const{coordinateHelper:a}=s,r=t[e],o=[];for(let p=0;p<t.length;++p){if(p===e)continue;const i=t[p],s=r.constraint.intersect(i.constraint);if(s)for(const e of s.closestPoints(r.targetPoint))o.push([new P(g(e),r,i,i.isDraped),this._squaredScreenDistance(n,e,a)])}return o.length>0&&(o.sort((e,t)=>e[1]-t[1]),o[0][1]<this._squaredPointProximityThreshold(s.pointer))?this._updateSnappingCandidate(o[0][0],i,t,s):I(r,s.drawConstraints)?this._updateSnappingCandidate(r,i,t,s):{snappedPoint:n,hints:[]}}_updateSnappingCandidate(e,t,n,i){this.doneSnapping(),this._currentMainCandidate=e,this._currentSnappedType=t,this._currentSpatialReference=i.spatialReference;const s=this._currentMainCandidate.targetPoint,a=[];a.push(...e.hints);for(const r of n){if(V(e,r)){this._currentOtherActiveCandidates.push(r);continue}const t=r.constraint.closestTo(s);this._squaredScreenDistance(t,s,i.coordinateHelper)<O()&&(r.targetPoint=s,this._currentOtherActiveCandidates.push(r),a.push(...r.hints))}return{snappedPoint:s,hints:a}}_squaredPointProximityThreshold(e){return"touch"===e?this._squaredTouchProximityThreshold:this._squaredMouseProximityThreshold}_arePointsWithinScreenThreshold(e,t,n){return this._squaredScreenDistance(e,t,n.coordinateHelper)<this._squaredPointProximityThreshold(n.pointer)}_squaredScreenDistance(e,t,n){return y(this._toScreen(e,n),this._toScreen(t,n))}_toScreen(e,t){return x(e,t.spatialReference,u,this.view)}get test(){}};e([d({constructOnly:!0})],b.prototype,"view",void 0),e([d()],b.prototype,"options",void 0),e([d({readOnly:!0})],b.prototype,"updating",null),e([d()],b.prototype,"_loadTask",void 0),e([d()],b.prototype,"_engines",void 0),e([d()],b.prototype,"_squaredMouseProximityThreshold",null),e([d()],b.prototype,"_squaredTouchProximityThreshold",null),b=e([c("esri.views.interactive.snapping.SnappingManager")],b);const z="visualization-handle";function O(){return S.satisfiesConstraintScreenThreshold*S.satisfiesConstraintScreenThreshold}function I(e,t){return!t||null==t.direction&&null==t.distance||!(e instanceof w||e instanceof C||e instanceof T||e instanceof E||e instanceof R)&&(!(e instanceof j)||null==t.direction&&1===e.selfSnappingType)}function A(e,t){return e instanceof P?H(t,e.first)>=0&&H(t,e.second)>=0?0:-1:H(t,e)}function H(e,t){let n=-1;for(let i=0;i<e.length;++i)if(t.constraint.equals(e[i].constraint)){n=i;break}return n}function U(e){return null!=e.scenePoint}function k({coordinateHelper:e,elevationInfo:t}){return e.hasZ()?u:t}function D(e,t){t instanceof P&&(D(e,t.first),D(e,t.second)),t instanceof M&&null!=t.layer&&e.add(t)}function V(e,t){return e instanceof P?t.constraint.equals(e.first.constraint)||t.constraint.equals(e.second.constraint):t.constraint.equals(e.constraint)}export{b as SnappingManager};
2
+ import{__decorate as e}from"tslib";import{createTask as t}from"../../../core/asyncUtils.js";import n from"../../../core/Error.js";import{EventedAccessor as i}from"../../../core/Evented.js";import"../../../core/has.js";import{throwIfAborted as s,isAborted as a}from"../../../core/promiseUtils.js";import{watch as r,syncAndInitial as o,sync as p}from"../../../core/reactiveUtils.js";import{property as d,subclass as c}from"../../../core/accessorSupport/decorators.js";import{project as h,initializeProjection as l}from"../../../geometry/projectionUtils.js";import{absoluteHeightElevationInfo as u}from"../../../support/elevationInfoUtils.js";import{fromPoint as f,markAsTarget as g,toElevationAlignedDehydratedPoint as _}from"../sketch/normalizedPoint.js";import{defaults as S}from"./Settings.js";import m from"./SnappingOptions.js";import{sortCandidatesInPlace as v}from"./snappingUtils.js";import{DrapedEdgeSnappingCandidate as y}from"./candidates/DrapedEdgeSnappingCandidate.js";import{EdgeSnappingCandidate as w}from"./candidates/EdgeSnappingCandidate.js";import{IntersectionSnappingCandidate as C}from"./candidates/IntersectionSnappingCandidate.js";import{LineSnappingCandidate as P}from"./candidates/LineSnappingCandidate.js";import{ParallelLineSnappingCandidate as T}from"./candidates/ParallelLineSnappingCandidate.js";import{RightAngleSnappingCandidate as E}from"./candidates/RightAngleSnappingCandidate.js";import{RightAngleTriangleSnappingCandidate as j}from"./candidates/RightAngleTriangleSnappingCandidate.js";import{VertexSnappingCandidate as R}from"./candidates/VertexSnappingCandidate.js";import{DehydratedVertexSnappingCandidate as M}from"./candidates/dehydrated/DehydratedVertexSnappingCandidate.js";import{vectorToScreenPoint as q}from"../support/viewUtils.js";import{squaredScreenDistance as x}from"../../../core/screenUtils.js";let b=class extends i{constructor(e){super(e),this.options=new m,this._engineCache=new Map,this._loadTask=null,this._engines=[],this._currentMainCandidate=null,this._currentOtherActiveCandidates=[],this._currentSnappedType=0,this._currentSpatialReference=null}initialize(){this.addHandles([r(()=>{const{distance:e,touchSensitivityMultiplier:t,effectiveSelfEnabled:n,effectiveFeatureEnabled:i,effectiveGridEnabled:s}=this.options;return{selfEnabled:n,featureEnabled:i,gridEnabled:"2d"===this.view.type&&s,viewReady:this.view.ready,viewSpatialReference:this.view.spatialReference,distance:e,touchSensitivityMultiplier:t}},(e,n)=>{n&&(this.doneSnapping(),this.emit("changed")),this._loadTask?.abort(),this._loadTask=t(t=>this._updateEngines(e,n,t))},o),r(()=>this.options,e=>{for(const t of this._engines)t.options=e},p)])}destroy(){this._loadTask?.abort(),this._destroyEngines()}get updating(){return this._engines.some(e=>e.updating)||!this._loadTask?.finished}_destroyEngines(){this._engineCache.forEach(e=>e.destroy()),this._engineCache.clear(),this._engines=[]}async _updateEngines(e,t,n){if(!e.viewReady)return void this._destroyEngines();t?.viewSpatialReference!==e.viewSpatialReference&&this._destroyEngines();const i=this._engineCache,s=await Promise.allSettled([e.featureEnabled&&!i.has("feature")?this._createFeatureSnappingEngine(n):void 0,e.selfEnabled&&!i.has("self")?this._createSelfSnappingEngine(n):void 0,e.gridEnabled&&!i.has("grid")?this._createGridSnappingEngine(n):void 0]);if(n.aborted)for(const a of s)"fulfilled"===a.status&&a.value?.engine.destroy();else{for(const e of s)"fulfilled"===e.status&&e.value&&i.set(e.value.type,e.value.engine);this._engines=Array.from(i.values())}}async _createSelfSnappingEngine(e){const{SelfSnappingEngine:t}=await import("./SelfSnappingEngine.js");return s(e),{type:"self",engine:new t({view:this.view,options:this.options})}}async _createGridSnappingEngine(e){const{view:t}=this;if("2d"!==t.type)return;const{GridSnappingEngine:n}=await import("./GridSnappingEngine.js");return s(e),{type:"grid",engine:new n({view:t,options:this.options})}}async _createFeatureSnappingEngine(e){const{FeatureSnappingEngine:t}=await import("./FeatureSnappingEngine.js");s(e);const{view:n,options:i}=this,{spatialReference:a}=n;return{type:"feature",engine:new t({view:n,options:i,spatialReference:a})}}get _squaredMouseProximityThreshold(){return this.options.distance*this.options.distance}get _squaredTouchProximityThreshold(){const{distance:e,touchSensitivityMultiplier:t}=this.options,n=e*t;return n*n}getVertexCandidates(){const e=this._currentSpatialReference;if(!e)return[];const t=new Set;this._currentMainCandidate&&D(t,this._currentMainCandidate);for(const n of this._currentOtherActiveCandidates)D(t,n);return Array.from(t).map(t=>new M(t.objectId,t.layer,t.originalTargetPoint,e))}snap(e){return H(e)?this._snapMultiPoint(e):this._snapSinglePoint(e)}update(e){const{point:t,context:i}=e;this._removeVisualization();const s=this._currentMainCandidate;if(null==s)return t;const a=this._selectUpdateInput(e);if(null==a)return t;const{spatialReference:r}=i;if(!r.equals(this._currentSpatialReference))throw new n("snapping:mismatched-spatial-reference","Cannot update with the given spatial reference, as the current snapping candidates are in a different spatial reference.");const o=h(a,r);if(null==o)return t;const{view:p}=this,{elevationInfo:d,visualizer:c}=i,l=[],u=f(o,p,d),S=s.constraint.closestTo(u);if(!this._arePointsWithinScreenThreshold(u,S,i)||!I(s,i.drawConstraints))return this._resetSnappingState(),t;s.targetPoint=g(S),l.push(...s.hints);for(const n of this._currentOtherActiveCandidates)I(n,i.drawConstraints)&&!V(s,n)&&(n.targetPoint=g(S),l.push(...n.hints));return null!=c&&this.addHandles(c.draw(l,{spatialReference:r,elevationInfo:k(i),view:p,selfSnappingZ:i.selfSnappingZ}),z),_(S,p,t,i)}doneSnapping(){this._removeVisualization(),this._resetSnappingState()}_selectUpdateInput({point:e,scenePoint:t}){switch(this._currentSnappedType){case 0:return e;case 1:return t}}_resetSnappingState(){this._currentMainCandidate=null,this._currentOtherActiveCandidates=[],this._currentSnappedType=0,this._currentSpatialReference=null}_removeVisualization(){this.removeHandles(z)}async _snapSinglePoint({point:e,context:t,signal:n}){const{view:i}=this,{elevationInfo:s}=t,a=f(e,i,s),r=await this._fetchCandidates(a,3,t,n);return this._createSnapResult(a,0,r,i,e,t,n)}async _snapMultiPoint({point:e,scenePoint:t,context:n,signal:i}){const{view:s}=this,{coordinateHelper:a,elevationInfo:r,spatialReference:o}=n;await l(t.spatialReference,o);const p=h(t,o),d=f(p,s,r),c=await this._fetchCandidates(d,1,n,i);if(c.length>0){const e=await this._fetchCandidates(d,2,n,i);return this._createSnapResult(d,1,[...c,...e],s,p,n,i)}const u=f(e,s,r),g=await this._fetchCandidates(u,2,n,i);return this._createSnapResult(u,0,g,s,{z:a.hasZ()&&e.hasZ?e.z??0:void 0,m:a.hasM()&&e.hasM?e.m??0:void 0},n,i)}async _fetchCandidates(e,t,n,i){return(await Promise.all(this._engines.map(s=>s.fetchCandidates(e,t,n,i)))).flat()}_createSnapResult(e,t,n,i,s,r,o){return{get valid(){return!a(o)},apply:()=>{const{spatialReference:a}=r,{snappedPoint:o,hints:p}=this._processCandidates(e,t,n,r);return this._removeVisualization(),null!=r.visualizer&&this.addHandles(r.visualizer.draw(p,{spatialReference:a,elevationInfo:u,view:i,selfSnappingZ:r.selfSnappingZ}),z),_(o,i,s,r)}}}_processCandidates(e,t,n,i){if(n.length<1)return this.doneSnapping(),{snappedPoint:e,hints:[]};this._currentSnappedType!==t&&this._resetSnappingState(),v(e,n);const s=this._currentMainCandidate;if(null!=s){const a=A(s,n);if(a>=0){if(!(n[a]instanceof C))return this._intersectWithOtherCandidates(a,n,e,t,i);if(this._arePointsWithinScreenThreshold(e,s.targetPoint,i))return this._updateSnappingCandidate(s,t,n,i)}}return this._intersectWithOtherCandidates(0,n,e,t,i)}_intersectWithOtherCandidates(e,t,n,i,s){const{coordinateHelper:a}=s,r=t[e],o=[];for(let p=0;p<t.length;++p){if(p===e)continue;const i=t[p],s=r.constraint.intersect(i.constraint);if(s)for(const e of s.closestPoints(r.targetPoint))o.push([new C(g(e),r,i,i.isDraped),this._squaredScreenDistance(n,e,a)])}return o.length>0&&(o.sort((e,t)=>e[1]-t[1]),o[0][1]<this._squaredPointProximityThreshold(s.pointer))?this._updateSnappingCandidate(o[0][0],i,t,s):I(r,s.drawConstraints)?this._updateSnappingCandidate(r,i,t,s):{snappedPoint:n,hints:[]}}_updateSnappingCandidate(e,t,n,i){this.doneSnapping(),this._currentMainCandidate=e,this._currentSnappedType=t,this._currentSpatialReference=i.spatialReference;const s=this._currentMainCandidate.targetPoint,a=[];a.push(...e.hints);for(const r of n){if(V(e,r)){this._currentOtherActiveCandidates.push(r);continue}const t=r.constraint.closestTo(s);this._squaredScreenDistance(t,s,i.coordinateHelper)<O()&&(r.targetPoint=s,this._currentOtherActiveCandidates.push(r),a.push(...r.hints))}return{snappedPoint:s,hints:a}}_squaredPointProximityThreshold(e){return"touch"===e?this._squaredTouchProximityThreshold:this._squaredMouseProximityThreshold}_arePointsWithinScreenThreshold(e,t,n){return this._squaredScreenDistance(e,t,n.coordinateHelper)<this._squaredPointProximityThreshold(n.pointer)}_squaredScreenDistance(e,t,n){return x(this._toScreen(e,n),this._toScreen(t,n))}_toScreen(e,t){return q(e,t.spatialReference,u,this.view)}get test(){}};e([d({constructOnly:!0})],b.prototype,"view",void 0),e([d()],b.prototype,"options",void 0),e([d({readOnly:!0})],b.prototype,"updating",null),e([d()],b.prototype,"_loadTask",void 0),e([d()],b.prototype,"_engines",void 0),e([d()],b.prototype,"_squaredMouseProximityThreshold",null),e([d()],b.prototype,"_squaredTouchProximityThreshold",null),b=e([c("esri.views.interactive.snapping.SnappingManager")],b);const z="visualization-handle";function O(){return S.satisfiesConstraintScreenThreshold*S.satisfiesConstraintScreenThreshold}function I(e,t){return!t||null==t.direction&&null==t.distance||!(e instanceof y||e instanceof w||e instanceof P||e instanceof T||e instanceof j)&&(!(e instanceof E)||null==t.direction&&1===e.selfSnappingType)}function A(e,t){return e instanceof C?U(t,e.first)>=0&&U(t,e.second)>=0?0:-1:U(t,e)}function U(e,t){let n=-1;for(let i=0;i<e.length;++i)if(t.constraint.equals(e[i].constraint)){n=i;break}return n}function H(e){return null!=e.scenePoint}function k({coordinateHelper:e,elevationInfo:t}){return e.hasZ()?u:t}function D(e,t){t instanceof C&&(D(e,t.first),D(e,t.second)),t instanceof R&&null!=t.layer&&e.add(t)}function V(e,t){return e instanceof C?t.constraint.equals(e.first.constraint)||t.constraint.equals(e.second.constraint):t.constraint.equals(e.constraint)}export{b as SnappingManager};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{watch as e,syncAndInitial as t}from"../../../core/reactiveUtils.js";import{intersection as r}from"../../../core/SetUtils.js";import{sqlAnd as n}from"../../../core/sql.js";import{mergeTimeExtents as o}from"../../../core/timeUtils.js";import{squaredDistance as i}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{makeDehydratedPoint as s}from"../../../layers/graphics/dehydratedPoint.js";import a from"../../../rest/support/Query.js";import{ViewEventPriorities as l}from"../../input/InputManager.js";import{snappingKeys as p}from"../keybindings.js";import{fromAnyMapPoint as c}from"../sketch/normalizedPoint.js";import{isWebMap as m}from"../../../webmap/utils.js";const g=Symbol("grid-placement-graphic");function u(e,t){const r=e.length===t.length&&e[0]===t[0]&&e[1]===t[1];switch(e.length){case 2:return r;case 3:return r&&e[2]===t[2];case 4:return r&&e[2]===t[2]&&e[3]===t[3]}return!1}function d(e,t){const r=e.x-t.x,n=e.y-t.y;return r*r+n*n}function f(e,t){return Math.sqrt(d(e,t))}function y(e,t){t.sort((t,r)=>i(t.targetPoint,e)-i(r.targetPoint,e))}function h({parameters:{point:e,distance:t,returnEdge:r,vertexMode:i,coordinateHelper:{spatialReference:l},filter:p},returnZ:c,filter:m}){const g=m?.clone()??new a({where:"1=1"});return g.returnZ=c,p&&(g.geometry=p.geometry,g.distance=p.distance,g.spatialRelationship=p.spatialRelationship,g.where=n(g.where,p.where),g.timeExtent=o(g.timeExtent,p.timeExtent),g.objectIds=w(g.objectIds,p.objectIds)),{point:s(e[0],e[1],e[2],l.toJSON()),distance:t,returnEdge:r,vertexMode:i,query:g.toJSON()}}function w(e,t){return e||t?t?e?Array.from(r(new Set(e),new Set(t))):t:e:null}function j(e,t,r){return{left:c(e.leftVertex.pos,t,r),right:c(e.rightVertex.pos,t,r)}}const b=Symbol("snapping-toggle");function x(r,n=()=>{}){const o=e(()=>({view:r.view,snappingOptions:r.snappingOptions}),({view:e,snappingOptions:t})=>{if(r.removeHandles(b),!e||!t)return;const o=l.TOOL,i=[e.on("key-down",e=>{e.key!==p.toggle||e.repeat||(t.enabledToggled=!0,n())},o),e.on("key-up",e=>{e.key===p.toggle&&(t.enabledToggled=!1,n())},o),e.on("pointer-move",e=>{const r=e.native.ctrlKey;t.enabledToggled!==r&&(t.enabledToggled=r,n())},o)];r.addHandles(i,b)},t);r.addHandles(o)}function v(e){return m(e)&&"utilityNetworks"in e&&!!e.utilityNetworks?.length}function k(e){return"line"===e?.type}export{j as editEdgeToSnappingEdge,g as gridPlacementGraphicSymbol,k as isLine,v as isUtilityNetworkWebMap,h as makeSnappingQuery,u as objectEqual,f as screenDistance,x as setupSnappingToggleHandles,y as sortCandidatesInPlace,d as squaredScreenDistance};
2
+ import{watch as e,syncAndInitial as t}from"../../../core/reactiveUtils.js";import{intersection as r}from"../../../core/SetUtils.js";import{sqlAnd as n}from"../../../core/sql.js";import{mergeTimeExtents as o}from"../../../core/timeUtils.js";import{squaredDistance as i}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{makeDehydratedPoint as s}from"../../../layers/graphics/dehydratedPoint.js";import a from"../../../rest/support/Query.js";import{ViewEventPriorities as l}from"../../input/InputManager.js";import{snappingKeys as c}from"../keybindings.js";import{fromAnyMapPoint as p}from"../sketch/normalizedPoint.js";import{isWebMap as m}from"../../../webmap/utils.js";export{screenDistance,squaredScreenDistance}from"../../../core/screenUtils.js";const g=Symbol("grid-placement-graphic");function d(e,t){const r=e.length===t.length&&e[0]===t[0]&&e[1]===t[1];switch(e.length){case 2:return r;case 3:return r&&e[2]===t[2];case 4:return r&&e[2]===t[2]&&e[3]===t[3]}return!1}function u(e,t){t.sort((t,r)=>i(t.targetPoint,e)-i(r.targetPoint,e))}function f({parameters:{point:e,distance:t,returnEdge:r,vertexMode:i,coordinateHelper:{spatialReference:l},filter:c},returnZ:p,filter:m}){const g=m?.clone()??new a({where:"1=1"});return g.returnZ=p,c&&(g.geometry=c.geometry,g.distance=c.distance,g.spatialRelationship=c.spatialRelationship,g.where=n(g.where,c.where),g.timeExtent=o(g.timeExtent,c.timeExtent),g.objectIds=h(g.objectIds,c.objectIds)),{point:s(e[0],e[1],e[2],l.toJSON()),distance:t,returnEdge:r,vertexMode:i,query:g.toJSON()}}function h(e,t){return e||t?t?e?Array.from(r(new Set(e),new Set(t))):t:e:null}function y(e,t,r){return{left:p(e.leftVertex.pos,t,r),right:p(e.rightVertex.pos,t,r)}}const j=Symbol("snapping-toggle");function w(r,n=()=>{}){const o=e(()=>({view:r.view,snappingOptions:r.snappingOptions}),({view:e,snappingOptions:t})=>{if(r.removeHandles(j),!e||!t)return;const o=l.TOOL,i=[e.on("key-down",e=>{e.key!==c.toggle||e.repeat||(t.enabledToggled=!0,n())},o),e.on("key-up",e=>{e.key===c.toggle&&(t.enabledToggled=!1,n())},o),e.on("pointer-move",e=>{const r=e.native.ctrlKey;t.enabledToggled!==r&&(t.enabledToggled=r,n())},o)];r.addHandles(i,j)},t);r.addHandles(o)}function b(e){return m(e)&&"utilityNetworks"in e&&!!e.utilityNetworks?.length}function v(e){return"line"===e?.type}export{y as editEdgeToSnappingEdge,g as gridPlacementGraphicSymbol,v as isLine,b as isUtilityNetworkWebMap,f as makeSnappingQuery,d as objectEqual,w as setupSnappingToggleHandles,u as sortCandidatesInPlace};
@@ -277,7 +277,7 @@ export default abstract class FeatureLikeLayerView extends LayerView {
277
277
  */
278
278
  get hasAllFeaturesInView(): boolean;
279
279
  /**
280
- * Indicates whether the LayerView contains geometries at full resolution.
280
+ * Indicates whether the layer view contains geometries at full resolution.
281
281
  * After the layer finishes loading and [fetching](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLayerView/#dataUpdating) its data,
282
282
  * this property reflects whether all geometries were loaded at full resolution without quantization.
283
283
  *
@@ -289,6 +289,30 @@ export default abstract class FeatureLikeLayerView extends LayerView {
289
289
  * @see [queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#queryFeatures)
290
290
  */
291
291
  get hasFullGeometries(): boolean;
292
+ /**
293
+ * Indicates whether the layer view has m aware geometries. The presence of m-values in the geometries of a layer view is determined by the
294
+ * layer's [returnM](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#returnM) property.
295
+ *
296
+ * - When `true`: The layer view has m aware features. M-values are part of the geometry.
297
+ * - When `false`: The layer view does not have m aware features. M-values are not part of the geometry.
298
+ *
299
+ * @default false
300
+ * @see [FeatureLayerBase.returnM](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#returnM) for details regarding fetching m-values with features from a layer
301
+ * @see [Linear referencing](https://pro.arcgis.com/en/pro-app/latest/help/data/linear-referencing/introduction-to-linear-referencing.htm)
302
+ */
303
+ get hasM(): boolean;
304
+ /**
305
+ * Indicates whether the layer view has z aware geometries. The presence of z-values in the geometries of a layer view is determined by the
306
+ * layer's [returnZ](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#returnZ) property.
307
+ *
308
+ * - When `true`: The layer view has z aware features. Z-values are part of the geometry.
309
+ * - When `false`: The layer view does not have z aware features. Z-values are not part of the geometry.
310
+ *
311
+ * @default false
312
+ * @since 5.1
313
+ * @see [FeatureLayerBase.returnZ](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#returnZ) for details regarding fetching z-values with features from a layer
314
+ */
315
+ get hasZ(): boolean;
292
316
  /**
293
317
  * Options for configuring the highlight. Use the [highlight()](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#highlight) method on the layer view to highlight a feature
294
318
  *