@arcgis/core 5.2.0-next.146 → 5.2.0-next.148

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 (253) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/03afeefb9d16b6f1d844.js +1 -0
  3. package/assets/esri/core/workers/chunks/{79c83f4e066682543ca1.js → 0a078721c7e0e24027f0.js} +1 -1
  4. package/assets/esri/core/workers/chunks/{72019baeba520edb6bb0.js → 112befb3b5b406f29298.js} +1 -1
  5. package/assets/esri/core/workers/chunks/131e89663014bc76c4ee.js +1 -0
  6. package/assets/esri/core/workers/chunks/14a3808427deaaa85bf2.js +1 -0
  7. package/assets/esri/core/workers/chunks/{392bcef780df52fb4cca.js → 16053ce50642c5ffbfa9.js} +1 -1
  8. package/assets/esri/core/workers/chunks/19689c66776b39cec234.js +1 -0
  9. package/assets/esri/core/workers/chunks/{ba46869e700ba1d2787f.js → 1b3f59fcad6e14c4d0e0.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{6dd0b79fa3a629ab4f27.js → 1bca39e0e651426bdbb5.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{305a718719ef15fda90c.js → 20458fffda7692c78135.js} +1 -1
  12. package/assets/esri/core/workers/chunks/219d0935ce281902a49f.js +1 -0
  13. package/assets/esri/core/workers/chunks/2416518db4a0117541a8.js +1 -0
  14. package/assets/esri/core/workers/chunks/{8b1c17cc52d989924313.js → 27a425d87c57b91489b3.js} +1 -1
  15. package/assets/esri/core/workers/chunks/2d9a1f23ec6ce90723ac.js +1 -0
  16. package/assets/esri/core/workers/chunks/{06e7400f5ebe0719b81c.js → 2e75df54852d65e71330.js} +1 -1
  17. package/assets/esri/core/workers/chunks/39d1d2fbe94afcd0a590.js +1 -0
  18. package/assets/esri/core/workers/chunks/{d01381b548c204835509.js → 3e9f056e4d1f0d067fc6.js} +1 -1
  19. package/assets/esri/core/workers/chunks/407f1e8176f3b0af73b4.js +1 -0
  20. package/assets/esri/core/workers/chunks/{1ba0dfbe0958cdbd7c9f.js → 42fd2a7b22b03dacc6a7.js} +1 -1
  21. package/assets/esri/core/workers/chunks/43321f244effd3d67069.js +1 -0
  22. package/assets/esri/core/workers/chunks/{d201fbf3ceff946d2bd6.js → 44d5508042cacdfcac47.js} +1 -1
  23. package/assets/esri/core/workers/chunks/47e6b5631a625298db5b.js +1 -0
  24. package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +1 -0
  25. package/assets/esri/core/workers/chunks/4fc337240e7cddd0e988.js +1 -0
  26. package/assets/esri/core/workers/chunks/52c25809edf7ac008a52.js +1 -0
  27. package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +1 -0
  28. package/assets/esri/core/workers/chunks/561c48cb4d49b150765b.js +1 -0
  29. package/assets/esri/core/workers/chunks/{5c855af73ee3c3e764fb.js → 5732fdf6d8b87739aeea.js} +1 -1
  30. package/assets/esri/core/workers/chunks/5924ec3167a2941ebb1f.js +1 -0
  31. package/assets/esri/core/workers/chunks/5f0c06f59121e09091f7.js +1 -0
  32. package/assets/esri/core/workers/chunks/5fa1ec357c3ad1f91bc7.js +1 -0
  33. package/assets/esri/core/workers/chunks/606ea251075fe81a1206.js +1 -0
  34. package/assets/esri/core/workers/chunks/{ceb680688fe7e570a774.js → 608be1172a908e92b9f1.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{6f358116f79021ff9687.js → 612104dff305ff062dfa.js} +2 -2
  36. package/assets/esri/core/workers/chunks/68be3fb88ca61f82fb90.js +1 -0
  37. package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +1 -0
  38. package/assets/esri/core/workers/chunks/6eb5cc8ddf772c0062e6.js +1 -0
  39. package/assets/esri/core/workers/chunks/709e019885822b1f6f3e.js +1 -0
  40. package/assets/esri/core/workers/chunks/70ee81ba22badbbf045c.js +1 -0
  41. package/assets/esri/core/workers/chunks/731018c0deffc41ffc97.js +1 -0
  42. package/assets/esri/core/workers/chunks/7320a4913b6cad7cc5d7.js +1 -0
  43. package/assets/esri/core/workers/chunks/7a4f1484b119ebafc2e7.js +1 -0
  44. package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +1 -0
  45. package/assets/esri/core/workers/chunks/{c18189710d6198516175.js → 830ab9b8d000169da675.js} +1 -1
  46. package/assets/esri/core/workers/chunks/8602b3587d4bdd9cc9f5.js +1 -0
  47. package/assets/esri/core/workers/chunks/{956a40f40bde416efe93.js → 898f43feeec74acde1ec.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{700b1d5bc67b7e1b3ff3.js → 8aa80b892fde552577e8.js} +1 -1
  49. package/assets/esri/core/workers/chunks/8ef802ef8d108ae2e473.js +1 -0
  50. package/assets/esri/core/workers/chunks/900181f68449d8f82eeb.js +1 -0
  51. package/assets/esri/core/workers/chunks/925271bb763607a326ae.js +1 -0
  52. package/assets/esri/core/workers/chunks/937824bc7948f7bc7845.js +1 -0
  53. package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +1 -0
  54. package/assets/esri/core/workers/chunks/{a52bf03bffb6ffac3b54.js → a101b89c18488f213d80.js} +1 -1
  55. package/assets/esri/core/workers/chunks/a337ca943862b30b978d.js +1 -0
  56. package/assets/esri/core/workers/chunks/ac03976b8450331aa31e.js +1 -0
  57. package/assets/esri/core/workers/chunks/af349c7bc8ef41a0e1bd.js +1 -0
  58. package/assets/esri/core/workers/chunks/afc3b2af20e9d1dfd260.js +1 -0
  59. package/assets/esri/core/workers/chunks/{97dbbedea9fe03bd1306.js → b0fd7cd5fc9526d30ddc.js} +1 -1
  60. package/assets/esri/core/workers/chunks/b3e812c3a06b486f05d2.js +1 -0
  61. package/assets/esri/core/workers/chunks/{6883a5c6883eccaddf64.js → b6ba66a05030d3815dfd.js} +1 -1
  62. package/assets/esri/core/workers/chunks/{9ab25ee06041f907b9a2.js → c2c1f51a4668055c2838.js} +1 -1
  63. package/assets/esri/core/workers/chunks/c598b22f78ccc57f9d6d.js +1 -0
  64. package/assets/esri/core/workers/chunks/c5d85be6e16bc895e7fb.js +1 -0
  65. package/assets/esri/core/workers/chunks/c62738f84c914671b143.js +1 -0
  66. package/assets/esri/core/workers/chunks/{820f41d66b2056a3ebc8.js → c7699edd14497d174445.js} +1 -1
  67. package/assets/esri/core/workers/chunks/cfae60b9d2f2939e9c16.js +1 -0
  68. package/assets/esri/core/workers/chunks/{a7985d20fa6e8d4878e7.js → d0f5bee9db1ad51ae687.js} +1 -1
  69. package/assets/esri/core/workers/chunks/dbcac8c1a76d4a9db13d.js +1 -0
  70. package/assets/esri/core/workers/chunks/{4ed8655770a3e018e366.js → de8d7f11f5a078c01b83.js} +1 -1
  71. package/assets/esri/core/workers/chunks/e0351753f6b4d1adf11e.js +1 -0
  72. package/assets/esri/core/workers/chunks/{534186fc921a0ccf58dc.js → e1f5d00878f27e1d413e.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{4479a166b5ac8db1e12e.js → f2b69bd704db62915a6b.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{711cfb84659cb4437679.js → f528ac5c648ca6a98582.js} +1 -1
  75. package/assets/esri/core/workers/chunks/fdbf6208df5c58746d9d.js +1 -0
  76. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
  77. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
  78. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
  79. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
  80. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
  81. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
  82. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
  83. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
  84. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
  85. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
  86. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
  87. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
  88. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
  89. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
  90. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
  91. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
  92. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
  93. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
  94. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
  95. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
  96. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
  97. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
  98. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
  99. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
  100. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
  101. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
  102. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
  103. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
  104. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
  105. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
  106. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
  107. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
  108. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
  109. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
  110. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
  111. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
  112. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
  113. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
  114. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
  115. package/config.js +1 -1
  116. package/geometry/support/TileClipper.js +1 -1
  117. package/geometry/support/meshUtils.d.ts +1 -1
  118. package/geometry/support/scaleUtils.js +1 -1
  119. package/kernel.js +1 -1
  120. package/layers/CSVLayer.d.ts +1 -1
  121. package/layers/CatalogLayer.d.ts +1 -1
  122. package/layers/FeatureLayer.d.ts +1 -1
  123. package/layers/GeoJSONLayer.d.ts +1 -1
  124. package/layers/OrientedImageryLayer.js +1 -1
  125. package/layers/ParquetLayer.d.ts +4 -3
  126. package/layers/ParquetLayer.js +1 -1
  127. package/layers/SceneLayer.d.ts +4 -5
  128. package/layers/SceneLayer.js +1 -1
  129. package/layers/SketchLayer.d.ts +0 -1
  130. package/layers/SubtypeGroupLayer.d.ts +1 -1
  131. package/layers/WFSLayer.d.ts +1 -1
  132. package/layers/buildingSublayers/BuildingComponentSublayer.d.ts +1 -1
  133. package/layers/catalog/CatalogFootprintLayer.d.ts +1 -1
  134. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  135. package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +1 -1
  136. package/layers/mixins/ArcGISImageService.d.ts +1 -1
  137. package/layers/mixins/PortalLayer.js +1 -1
  138. package/layers/mixins/ScaleRangeLayer.js +1 -1
  139. package/layers/mixins/SublayersOwner.js +1 -1
  140. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  141. package/layers/orientedImagery/core/utils.js +1 -1
  142. package/layers/support/FeatureFilter.d.ts +1 -1
  143. package/layers/support/ParquetPortalItemData.js +1 -1
  144. package/layers/support/PortalItemData.js +1 -1
  145. package/layers/support/Sublayer.js +1 -1
  146. package/layers/support/SubtypeSublayer.d.ts +1 -1
  147. package/layers/support/SubtypeSublayer.js +1 -1
  148. package/package.json +2 -2
  149. package/popup/FeaturesModel.d.ts +26 -5
  150. package/popup/FeaturesModel.js +1 -1
  151. package/portal/support/layersLoader.js +1 -1
  152. package/portal/support/portalLayers.js +1 -1
  153. package/rest/print.js +1 -1
  154. package/rest/support/printTaskUtils.js +1 -1
  155. package/symbols/cim/CIMSymbolHelper.js +1 -1
  156. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
  157. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  158. package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.js +1 -1
  159. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  160. package/views/2d/layers/LayerView2D.js +1 -1
  161. package/views/2d/layers/features/sources/FeatureSource.js +1 -1
  162. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  163. package/views/3d/analysis/Viewshed/types.d.ts +3 -1
  164. package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
  165. package/views/3d/layers/BuildingSceneLayerView3D.js +1 -1
  166. package/views/3d/layers/DynamicLayerView3D.js +1 -1
  167. package/views/3d/layers/FeatureLikeLayerViewBase3D.js +1 -1
  168. package/views/3d/layers/FlowSubView3D.js +1 -1
  169. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  170. package/views/3d/layers/GraphicsLayerView3D.js +1 -1
  171. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  172. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  173. package/views/3d/layers/MediaLayerView3D.js +1 -1
  174. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  175. package/views/3d/layers/RouteLayerView3D.js +1 -1
  176. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  177. package/views/3d/layers/SceneLayerView3D.js +1 -1
  178. package/views/3d/layers/TiledLayerView3D.js +1 -1
  179. package/views/3d/layers/VoxelLayerView3D.js +1 -1
  180. package/views/3d/layers/graphics/Graphics3DScaleVisibility.js +1 -1
  181. package/views/3d/layers/graphics/Labeler.js +1 -1
  182. package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
  183. package/views/3d/support/popupHitTest.js +1 -1
  184. package/views/View2D.d.ts +1 -1
  185. package/views/interactive/snapping/FeatureSnappingSourceInfo.js +1 -1
  186. package/views/interactive/snapping/SnappingOptions.d.ts +1 -1
  187. package/views/layers/FeatureLikeLayerView.d.ts +1 -1
  188. package/views/layers/LayerView.js +1 -1
  189. package/views/layers/LineOfSightLayerView.d.ts +3 -4
  190. package/views/layers/ParquetLayerView.js +1 -1
  191. package/views/layers/PointCloudLayerView.d.ts +1 -1
  192. package/views/layers/SceneLayerView.d.ts +1 -1
  193. package/views/layers/ViewshedLayerView.d.ts +5 -6
  194. package/views/support/layerViewUtils.js +1 -1
  195. package/webdoc/support/saveUtils.js +1 -1
  196. package/webdoc/support/unsupportedErrors.js +1 -1
  197. package/widgets/Editor.d.ts +10 -0
  198. package/widgets/Legend.d.ts +1 -0
  199. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  200. package/widgets/OrientedImageryViewer/adapters/draw/HeightMeasurementAdapter.js +1 -1
  201. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  202. package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
  203. package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
  204. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  205. package/widgets/support/SnappingControls.d.ts +1 -1
  206. package/assets/esri/core/workers/chunks/00a600c71ceebe7bfeee.js +0 -1
  207. package/assets/esri/core/workers/chunks/0193df3f9fb23633da87.js +0 -1
  208. package/assets/esri/core/workers/chunks/050c4b212f2b5691db34.js +0 -1
  209. package/assets/esri/core/workers/chunks/07aa6d36f1006b6ab7ff.js +0 -1
  210. package/assets/esri/core/workers/chunks/0bb11751efa2023ec937.js +0 -1
  211. package/assets/esri/core/workers/chunks/222af8522773c7dc80b1.js +0 -1
  212. package/assets/esri/core/workers/chunks/303fde8f3459dde16555.js +0 -1
  213. package/assets/esri/core/workers/chunks/347bf269c2b1583d2dca.js +0 -1
  214. package/assets/esri/core/workers/chunks/350540770781b281c39a.js +0 -1
  215. package/assets/esri/core/workers/chunks/3b017b718ea2d4ed498f.js +0 -1
  216. package/assets/esri/core/workers/chunks/3e81dfc9d621ece038fe.js +0 -1
  217. package/assets/esri/core/workers/chunks/46b2d4addfc73f9183a4.js +0 -1
  218. package/assets/esri/core/workers/chunks/4d82db661365daa513a6.js +0 -1
  219. package/assets/esri/core/workers/chunks/4f48d45baa8ada16f579.js +0 -1
  220. package/assets/esri/core/workers/chunks/50ca55ad2f5421acc492.js +0 -1
  221. package/assets/esri/core/workers/chunks/532a1b6ff9a7c950e325.js +0 -1
  222. package/assets/esri/core/workers/chunks/5450f339f97b2b042ee2.js +0 -1
  223. package/assets/esri/core/workers/chunks/55cc8581978c71b17998.js +0 -1
  224. package/assets/esri/core/workers/chunks/58c252289411b0d86473.js +0 -1
  225. package/assets/esri/core/workers/chunks/633a9051580c5302d2f7.js +0 -1
  226. package/assets/esri/core/workers/chunks/641d196a554bd07f729e.js +0 -1
  227. package/assets/esri/core/workers/chunks/655c3afda1eef01611dd.js +0 -1
  228. package/assets/esri/core/workers/chunks/6569797d3c22442e5e97.js +0 -1
  229. package/assets/esri/core/workers/chunks/70793967db45fb142962.js +0 -1
  230. package/assets/esri/core/workers/chunks/798a63653f82c0e842c5.js +0 -1
  231. package/assets/esri/core/workers/chunks/84fcbf7a1d04f01685d1.js +0 -1
  232. package/assets/esri/core/workers/chunks/8e511079918e2fd9261f.js +0 -1
  233. package/assets/esri/core/workers/chunks/8fcfd515ee1b18c902e5.js +0 -1
  234. package/assets/esri/core/workers/chunks/9001e9a1e81bce175ddd.js +0 -1
  235. package/assets/esri/core/workers/chunks/9401cc22373566e1171e.js +0 -1
  236. package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +0 -1
  237. package/assets/esri/core/workers/chunks/9c0fd8baa00ee9733ba4.js +0 -1
  238. package/assets/esri/core/workers/chunks/9c1e69ac82e2bf746191.js +0 -1
  239. package/assets/esri/core/workers/chunks/a010d2e4e34eb7bc1fec.js +0 -1
  240. package/assets/esri/core/workers/chunks/a05790444115e4cf1bcc.js +0 -1
  241. package/assets/esri/core/workers/chunks/a7edf7541569fef77cb3.js +0 -1
  242. package/assets/esri/core/workers/chunks/b2c29bc48c7b3b0c9357.js +0 -1
  243. package/assets/esri/core/workers/chunks/b61008f28b788f759e2a.js +0 -1
  244. package/assets/esri/core/workers/chunks/b7d77dd2abb255fd2e5a.js +0 -1
  245. package/assets/esri/core/workers/chunks/b8054adc45bca069b948.js +0 -1
  246. package/assets/esri/core/workers/chunks/ca7fb75e2c62e7d37122.js +0 -1
  247. package/assets/esri/core/workers/chunks/d21257d2e2a37266c0f7.js +0 -1
  248. package/assets/esri/core/workers/chunks/d270cc9807161033686e.js +0 -1
  249. package/assets/esri/core/workers/chunks/d4f038e04c42aed588c1.js +0 -1
  250. package/assets/esri/core/workers/chunks/e32b96c08cb272a59851.js +0 -1
  251. package/assets/esri/core/workers/chunks/e7c60bd85abbd36cdc64.js +0 -1
  252. package/assets/esri/core/workers/chunks/f0a68d2900d24f56afa0.js +0 -1
  253. package/assets/esri/core/workers/chunks/f511a304e9dea9eb3e01.js +0 -1
@@ -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{forEach as n,result as r}from"../../../../core/asyncUtils.js";import"../../../../core/has.js";import i from"../../../../core/Logger.js";import{disposeMaybe as a,abortMaybe as o}from"../../../../core/maybe.js";import{throwIfAborted as s,isAbortError as c}from"../../../../core/promiseUtils.js";import l from"../../../../core/Queue.js";import{watch as u}from"../../../../core/reactiveUtils.js";import{property as d,subclass as f}from"../../../../core/accessorSupport/decorators.js";import{fromValues as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{hydrateGraphic as m}from"../../../../layers/graphics/hydratedFeatures.js";import{createLabelFunction as h}from"../../../../layers/support/labelFormatUtils.js";import{hasCalloutSupport as g}from"../../../../symbols/callouts/calloutUtils.js";import{make as _}from"./Graphics3DCalloutSymbolLayerFactory.js";import{LineCalloutCreationContext as v,LineCalloutSymbolLayerRenderingInfo as y}from"./Graphics3DLineCalloutSymbolLayer.js";import{getGraphics3DSymbol as b}from"./graphicSymbolUtils.js";import{LabelInfo as x}from"./LabelInfo.js";import{LabelParameters as S}from"./LabelParameters.js";import{horizontalPlacementFromAnchor as C,verticalPlacementFromAnchor as w,textRenderAlignmentFromHorizontalPlacement as T}from"./placementUtils.js";import{placePointOnGeometry as E}from"./pointUtils.js";import{TextRenderer as D}from"../../webgl-engine/lib/TextRenderer.js";import{TextRenderParameters as O}from"../../webgl-engine/lib/TextRenderParameters.js";import{TextTextureAtlas as k}from"../../webgl-engine/lib/TextTextureAtlas.js";import{WebGLLayer as A}from"../../webgl-engine/lib/WebGLLayer.js";import{hasLayerBasedScaleVisibility as j,isInEffectiveScaleRange as M}from"../../../support/layerViewUtils.js";import{TaskPriority as N}from"../../../support/Scheduler.js";import{Yield as P}from"../../../support/Yield.js";class F{constructor(e,t){this.labelingContext=e,this.graphics3DGraphic=t,this.hasGraphics3DResources=!1,this.visible=!1,this.textureAtlasHandles=[],this.textInitialized=!1,this.textRenderers=[],this.textLabelPlacements=[]}}class I{constructor(e,t,n,r,i){this.labelClass=e,this.graphics3DSymbol=t,this.graphics3DCalloutSymbolLayer=n,this.textRenderParameters=r,this.labelFunction=i,this.calloutSymbolLayerIndex=0,this.graphics=new Map,this.scaleVisibility=null}}class L{constructor(e,t,n,r,i,a,o,s){this.layer=t,this.graphics3DCore=n,this.scaleVisibility=r,this.emptySymbolLabelSupported=i,this.elevationInfoOverride=a,this.disablePlacement=o,this.active=s,this.labelClassAbortController=new AbortController,this._labelClassContexts=[],this.graphics=new Map,this.labelsToInitialize=new Map,this.stageLayer=new A(e,{pickable:!0},n.owner.layerViewUid)}destroy(){this.stageLayer.destroy()}get labelClassContexts(){return this._labelClassContexts}setLabelClassContext(e,t){this._labelClassContexts[e]=t}resetLabelClassContext(){this._labelClassContexts.length=0}}let R=class extends t{constructor(e){super(e),this._hudMaterials=new Map,this._calloutMaterials=new Map,this._dirty=!1,this._focusAreasLabelsQueue=new l,this._labels=new Map,this._labelingContexts=[]}setup(){this.dispose(),this.addHandles([u(()=>this.view.state?.camera,()=>this.setDirty()),u(()=>this.view.state?.rasterPixelRatio,()=>this._resetAllLabels()),u(()=>this.view.timeZone,()=>this._resetArcadeLabels()),u(()=>this.view.focusAreasView?.polygons,()=>this._updateFocus()),this.view.resourceController.scheduler.registerTask(N.LABELER,this)]),j()&&this.addHandles(u(()=>this.view.scale,()=>this._updateScaleVisibility())),this._textTextureAtlas=new k({view:this.view})}dispose(){this.removeAllHandles(),this._textTextureAtlas=a(this._textTextureAtlas),this._hudMaterials.clear(),this._calloutMaterials.clear(),this._labelingContexts.length=0,this._labels.clear()}destroy(){this.dispose(),G.graphic=null,G.renderingInfo=null,G.layer=null}_updateFocus(){this._focusAreasLabelsQueue.clear(),this._labelingContexts.forEach(e=>{e.graphics.forEach(t=>{this._focusAreasLabelsQueue.push({graphic3DGraphic:t,labelingContext:e})})})}_activateLabelingContext(e){e.graphics.forEach((t,n)=>{let r=new F(e,t);this._labels.set(n,r),e.labelsToInitialize.set(n,r),t.setVisibilityFlag(16,1,!0)}),e.active=!0}_deactivateLabelingContext(e){e.graphics.forEach((e,t)=>{e.setVisibilityFlag(16,1,!1),this.setLabelGraphicVisibility(e,!1),e.clearLabelGraphics(),this._labels.delete(t)}),e.active=!1}_addLabelTextureToAtlas(e){if(this._textTextureAtlas)for(let t of e.graphics3DGraphic.labelLayers){if(!t.labelClass)continue;let n=e.textRenderers[t.labelClassContextIndex];n&&(e.textureAtlasHandles.push(this._textTextureAtlas.addText(n,e=>B(t.stageObject,e))),z(t.stageObject,n))}}_removeLabelTextureFromAtlas(e){e.textureAtlasHandles.forEach(e=>e.remove()),e.textureAtlasHandles.length=0}get readyToRun(){return this.view.ready&&(this._dirty||this.deconflictor.readyToRun||this._focusAreasLabelsQueue.length>0)}runTask(e){return this._updateLabels(e),this._applyFocusAreasUpdates(e),!this._dirty&&this.deconflictor.readyToRun&&this.deconflictor.runTask(e),P}_updateLabels(e){if(this._dirty){this._dirty=!1;for(let t of this._labelingContexts)if(t.active){if(V(t)){this._dirty=!0;continue}if(H(t.labelClassContexts)){if(t.labelClassContexts===null){this._deactivateLabelingContext(t);continue}this._createLabelClassContext(t),this._dirty=!0;continue}for(let[n,r]of t.labelsToInitialize)if(this._ensureGraphics3DResources(r)&&(this._labels.set(n,r),this.deconflictor.setDirty(),e.madeProgress()),(r.visible&&r.textInitialized||!r.visible&&r.hasGraphics3DResources)&&(t.labelsToInitialize.delete(n),e.madeProgress()),e.done){this._dirty=!0;break}}this._dirty||this.notifyChange(`updating`)}}_applyFocusAreasUpdates(e){for(;this._focusAreasLabelsQueue.length>0&&!e.done;){e.madeProgress();let{graphic3DGraphic:t,labelingContext:n}=this._focusAreasLabelsQueue.pop();if(t.labelLayers.length===0||!n.active)continue;let r=E(t.graphic.geometry);if(r==null)continue;let i=this.view.focusAreasView?.containsGeometry(r)??!0;t.labelLayers.forEach(e=>{e.stageObject.geometries.some(e=>e.material.parameters.focusAreaStyle==null!==i)&&(this._removeGraphic(n,t),this._addGraphic(n,t),this.setDirty())})}this._focusAreasLabelsQueue.length===0&&(this.notifyChange(`readyToRun`),this.notifyChange(`updating`))}async _createLabelClassContextAsync(e){let t=e.labelClassAbortController?.signal;e.layer.when&&await e.layer.when(),s(t),e.scaleVisibility?.updateScaleRangeActive();let a=e.graphics3DCore,o=a.layer.labelingInfo?.filter(e=>!!e.symbol);o&&o.length!==0&&(await n(o,async(n,o)=>{let c=n.symbol,l=b(a.getOrCreateGraphics3DSymbol(c));if(l==null){i.getLogger(this).error(`Failed to create Graphics3DSymbol for label`);return}await l.load(),s(t);let u=null;g(c)&&c.hasVisibleCallout()&&(u=_(c,a.symbolCreationContext),await u.load(),s(t));let d=await r(h(n,e.layer.fieldsIndex,this.view.spatialReference));if(s(t),d.ok===!0){let r=await this._createTextRenderParameters(l.symbol);s(t);let i=new I(n,l,u,r,d.value);this._updateLabelClassContextVisibility(i),e.setLabelClassContext(o,i)}else i.getLogger(this).error(`Label expression failed to evaluate: ${d.error}`)}),s(t))}async _createLabelClassContext(e){return e.labelClassPromise??(e.labelClassPromise=this._createLabelClassContextAsync(e).catch(t=>{if(c(t))throw t;e.resetLabelClassContext()}).then(()=>{e.labelClassAbortController=null,this.notifyChange(`updating`)}).catch(()=>{}),this.notifyChange(`updating`)),e.labelClassPromise}async _createTextRenderParameters(e){let t=e.symbolLayers.at(0);return t?.type===`text`?O.fromSymbol(t,this.view.state.rasterPixelRatio):null}_destroyLabelClassContext(e){for(let t of e.labelClassContexts)t&&--t.graphics3DSymbol.referenced;let t=e.labelClassAbortController;e.labelClassAbortController=new AbortController,o(t),e.resetLabelClassContext(),e.labelClassPromise=null,this.notifyChange(`updating`)}_createTextSymbolGraphic(e,t,n,r,i,a){if(!this._textTextureAtlas)return null;let o=new S(n,C(n.anchor),w(n.anchor),e.text,p(e.displayWidth,e.displayHeight));return G.graphic=t,G.layer=r,G.renderingInfo=null,i.createLabel(G,o,this._hudMaterials,this._textTextureAtlas,()=>a.placement?.elevationOffset??null)}_createLineCalloutGraphic(e,t,n,r,i){G.graphic=e,G.layer=i;let a=r.screenOffset[0];return G.renderingInfo=new y(null,t,r.translation,r.centerOffset,r.groundDistance,a,r.centerOffsetUnits,r.elevationOffset),n.createGraphics3DGraphic(G,this._calloutMaterials)}_ensureGraphics3DResources(e){if(e.hasGraphics3DResources)return!1;let t=e.graphics3DGraphic;if(t.destroyed)return!1;this._ensureTextTextureResources(e);let n=e.labelingContext,r=n.labelClassContexts;if(H(r)||!n.emptySymbolLabelSupported&&t.layers.length===0)return!1;let i=!1,a=t.graphic,o=n.layer,s=W(n.layer);for(let c=0;c<r.length;c++){let l=e.textRenderers[c],u=e.textLabelPlacements[c],d=r[c];if(l==null||u==null||d==null)continue;let f=d.graphics3DSymbol,p=U(f),m=f.symbolLayers[0];if(!m)continue;m.setElevationInfoOverride(n.elevationInfoOverride);let h=new x(t,p,d.labelClass),g=this._createTextSymbolGraphic(l,a,u,o,m,h);if(g==null)return!1;g.labelClass=d.labelClass,g.labelClassContextIndex=c,t.addLabelGraphic(g,n.stageLayer),this.deconflictor.setPriority(t,d.textRenderParameters?.definition.size??0),t.setVisibilityFlag(16,1,s),t.setVisibilityFlag(16,2,d.scaleVisibility??!0),t.setVisibilityFlag(16,8,!1),j()&&d.graphics.set(a.uid,t),i=!0;let _=d.graphics3DCalloutSymbolLayer;if(_&&u.hasLabelVerticalOffset){_.setElevationInfoOverride(n.elevationInfoOverride);let e=this._createLineCalloutGraphic(a,p,_,u,o);e!=null&&(d.calloutSymbolLayerIndex=t.labelLayers.length,t.addLabelGraphic(e,n.stageLayer))}break}return i&&n.scaleVisibility?.updateGraphicLabelScaleVisibility(t),e.hasGraphics3DResources=!0,!0}_destroyGraphics3DResources(e){let t=e.labelingContext.labelClassContexts;for(let n of e.graphics3DGraphic.labelLayers)n.labelClass!=null&&t[n.labelClassContextIndex].graphics3DSymbol.symbolLayers[0]?.onRemoveGraphic(n);e.graphics3DGraphic.clearLabelGraphics(),e.hasGraphics3DResources=!1}_ensureTextTextureResources(e){if(e.textInitialized)return;let t=e.labelingContext,n=t.labelClassContexts;if(H(n))return;let r=e.graphics3DGraphic.graphic;for(let i=0;i<n.length;i++){let a=n[i];if(e.textRenderers[i]=null,e.textLabelPlacements[i]=null,a?.textRenderParameters==null)continue;let o=a.labelFunction,s;if(o.type===`arcade`)try{let e=o.needsHydrationToEvaluate()?m(r,t.layer,null):r;s=o.evaluate(e,this.view.timeZone)}catch{s=null}else s=o.evaluate(r);if(s==null||s===``||/^\s+$/.test(s))continue;let c=a.graphics3DSymbol;if(!c.symbolLayers[0])continue;let l=e.graphics3DGraphic,u=c.symbol?.type===`label-3d`?c.symbol:null,d=a.labelClass,f=t.disablePlacement,p=new x(l,u,d,f).placement;if(p==null)continue;let h=C(p.anchor),g=T(h);e.textRenderers[i]=new D(s,g,a.textRenderParameters,k.maxSize),e.textLabelPlacements[i]=p}e.textInitialized=!0}_destroyTextTextureResources(e){e.textInitialized=!1,e.textRenderers.length=0,e.textLabelPlacements.length=0}_addGraphic(e,t){let n=t.graphic.uid;if(e.graphics.set(n,t),e.active){let r=new F(e,t);this._labels.set(n,r),e.labelsToInitialize.set(n,r)}this.setDirty(),this.deconflictor.setDirty()}_updateGraphicGeometry(e,t){let n=t.graphic.uid,r=this._labels.get(n);if(!r)return!0;for(let n of r.graphics3DGraphic.labelLayers)if(n.labelClass!=null&&!e.labelClassContexts[n.labelClassContextIndex].graphics3DSymbol.symbolLayers[0].updateGeometry(t.graphic,n))return!1;return this.setDirty(),this.deconflictor.setDirty(),!0}_removeGraphic(e,t){let n=t.graphic.uid,r=this._labels.get(n);e.graphics.delete(n),e.labelClassContexts.forEach(e=>e?.graphics.delete(n)),r&&(this._destroyGraphic(r,n),e.labelsToInitialize.delete(n),this.setDirty(),this.deconflictor.setDirty())}_destroyGraphic(e,t){this._labels.delete(t),e.textureAtlasHandles.length&&this._removeLabelTextureFromAtlas(e),this._destroyTextTextureResources(e),e.hasGraphics3DResources&&this._destroyGraphics3DResources(e)}async _labelingInfoChange(e,t){if(t){for(let n of t){let t=e.graphics.get(n);t&&(this._removeGraphic(e,t),this._addGraphic(e,t))}return}return this._visibilityInfoChange(e),this._resetLabels(e),this._createLabelClassContext(e)}_globalPropertyChanged(e,t){for(let n of t.labelClassContexts){if(!n)continue;let r=new Map;t.graphics.forEach(e=>r.set(e.graphic.uid,e)),n.graphics3DSymbol.symbolLayers[0].globalPropertyChanged(e,r,e=>e.labelLayers[0]),n.graphics3DCalloutSymbolLayer&&n.graphics3DCalloutSymbolLayer.globalPropertyChanged(e,r,e=>e.labelLayers[n.calloutSymbolLayerIndex])}}_visibilityInfoChange(e){let t=W(e.layer);t&&!e.active&&this._activateLabelingContext(e),!t&&e.active&&this._deactivateLabelingContext(e),this.setDirty()}_resetAllLabels(){for(let e of this._labelingContexts)this._resetLabels(e)}_resetArcadeLabels(){for(let e of this._labelingContexts)e.labelClassContexts.some(e=>e?.labelFunction.type===`arcade`)&&this._resetLabels(e)}_resetLabels(e){e.graphics.forEach((t,n)=>{let r=this._labels.get(n);r&&(this._destroyGraphic(r,n),r.visible=!1,e.labelsToInitialize.set(n,r))}),this._destroyLabelClassContext(e),this.setDirty(),this.deconflictor.setDirty()}_findLabelingContext(e){for(let t of this._labelingContexts)if(t.graphics3DCore===e)return t;return null}addGraphicsOwner(e,t,n){let r=n?.emptySymbolLabelSupported||!1,i=n?.elevationInfoOverride||null,a=n?.disablePlacement||null;if(this._findLabelingContext(e))return;let o=e.layer,s=new L(this.view.stage,o,e,t,r,i,a,W(o));return this._labelingContexts.push(s),this.setDirty(),{addGraphic:e=>this._addGraphic(s,e),removeGraphic:e=>this._removeGraphic(s,e),updateGraphicGeometry:e=>this._updateGraphicGeometry(s,e),layerLabelsEnabled:()=>W(s.layer),labelingInfoChange:e=>this._labelingInfoChange(s,e),elevationInfoChange:()=>this._globalPropertyChanged(`elevationInfo`,s),screenSizePerspectiveEnabledChanged:()=>this._globalPropertyChanged(`screenSizePerspectiveEnabled`,s),slicePlaneEnabledChange:()=>this._globalPropertyChanged(`slicePlaneEnabled`,s),visibilityInfoChange:()=>this._visibilityInfoChange(s),reset:()=>this._resetLabels(s),remove:()=>this._removeGraphicsOwner(e),setDirty:()=>this.setDirty()}}_removeGraphicsOwner(e){let t=this._findLabelingContext(e);if(!t)return;let n=this._labelingContexts.indexOf(t);this._labelingContexts.splice(n,1),t.graphics.forEach(e=>this._removeGraphic(t,e)),t.destroy(),this.setDirty()}_updateScaleVisibility(){for(let e of this._labelingContexts)if(e.active&&!V(e))for(let t of e.labelClassContexts)this._updateLabelClassContextVisibility(t)}_updateLabelClassContextVisibility(e){if(!e||!j())return;let{labelClass:t,graphics:n}=e,r={minScale:t.minScale,maxScale:t.maxScale},i=M(r,this.view.scale),a=e.scaleVisibility==null||e.scaleVisibility!==i;e.scaleVisibility=i,a&&n.size&&(n.forEach(e=>e.setVisibilityFlag(16,2,i)),this.deconflictor.setDirty(),this.setDirty())}setLabelGraphicVisibility(e,t){let n=e.graphic.uid,r=this._labels.get(n);r&&r.visible!==t&&(t&&!r.textureAtlasHandles.length?(this._addLabelTextureToAtlas(r),r.textInitialized||r.labelingContext.labelsToInitialize.set(n,r)):!t&&r.textureAtlasHandles.length&&this._removeLabelTextureFromAtlas(r),r.visible=t,this.setDirty())}setDirty(){!this._dirty&&this._labelingContexts.length>0&&(this._dirty=!0,this.notifyChange(`updating`))}get updating(){return this._dirty||this._textTextureAtlas?.updating||this.deconflictor.updating||this._labelingContexts.some(e=>V(e))||this._focusAreasLabelsQueue.length>0}get updatingProgress(){if(!this.updating||!this._textTextureAtlas)return 1;let e=this._labelingContexts.length>0?this._labelingContexts.reduce((e,t)=>e+ +!V(t),0)/this._labelingContexts.length:1;return(this._dirty?0:.3)+(this._textTextureAtlas.updating?0:.1)+e*.1+this.deconflictor.updatingProgress*.5}get usedMemory(){return this._textTextureAtlas?.usedMemory??0}get test(){}};e([d({constructOnly:!0})],R.prototype,`view`,void 0),e([d({constructOnly:!0})],R.prototype,`deconflictor`,void 0),e([d()],R.prototype,`_textTextureAtlas`,void 0),e([d({type:Boolean,readOnly:!0})],R.prototype,`updating`,null),R=e([f(`esri.views.3d.layers.graphics.Labeler`)],R);function z(e,t){e.geometries[0].setAttributeData(`size`,[t.displayWidth,t.displayHeight]),e.geometryVertexAttributeUpdated(e.geometries[0],`size`)}function B(e,t){e.geometries[0].setAttributeData(`uvi`,t),e.geometryVertexAttributeUpdated(e.geometries[0],`uvi`,!0)}function V(e){return!!e.labelClassPromise&&!!e.labelClassAbortController}function H(e){return(e?.length??0)===0}function U(e){return e.symbol?.type===`label-3d`?e.symbol:null}function W(e){return!!e.labelsVisible&&!!e.labelingInfo?.some(e=>!!e.symbol)}const G=new v(null,null,null);export{R as Labeler,W as areLabelsVisible};
2
+ import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{forEach as n,result as r}from"../../../../core/asyncUtils.js";import"../../../../core/has.js";import i from"../../../../core/Logger.js";import{disposeMaybe as a,abortMaybe as o}from"../../../../core/maybe.js";import{throwIfAborted as s,isAbortError as c}from"../../../../core/promiseUtils.js";import l from"../../../../core/Queue.js";import{watch as u}from"../../../../core/reactiveUtils.js";import{property as d,subclass as f}from"../../../../core/accessorSupport/decorators.js";import{fromValues as p}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{isInEffectiveScaleRange as m}from"../../../../geometry/support/scaleUtils.js";import{hydrateGraphic as h}from"../../../../layers/graphics/hydratedFeatures.js";import{createLabelFunction as g}from"../../../../layers/support/labelFormatUtils.js";import{hasCalloutSupport as _}from"../../../../symbols/callouts/calloutUtils.js";import{make as v}from"./Graphics3DCalloutSymbolLayerFactory.js";import{LineCalloutCreationContext as y,LineCalloutSymbolLayerRenderingInfo as b}from"./Graphics3DLineCalloutSymbolLayer.js";import{getGraphics3DSymbol as x}from"./graphicSymbolUtils.js";import{LabelInfo as S}from"./LabelInfo.js";import{LabelParameters as C}from"./LabelParameters.js";import{horizontalPlacementFromAnchor as w,verticalPlacementFromAnchor as T,textRenderAlignmentFromHorizontalPlacement as E}from"./placementUtils.js";import{placePointOnGeometry as D}from"./pointUtils.js";import{TextRenderer as O}from"../../webgl-engine/lib/TextRenderer.js";import{TextRenderParameters as k}from"../../webgl-engine/lib/TextRenderParameters.js";import{TextTextureAtlas as A}from"../../webgl-engine/lib/TextTextureAtlas.js";import{WebGLLayer as j}from"../../webgl-engine/lib/WebGLLayer.js";import{hasLayerBasedScaleVisibility as M}from"../../../support/layerViewUtils.js";import{TaskPriority as N}from"../../../support/Scheduler.js";import{Yield as P}from"../../../support/Yield.js";class F{constructor(e,t){this.labelingContext=e,this.graphics3DGraphic=t,this.hasGraphics3DResources=!1,this.visible=!1,this.textureAtlasHandles=[],this.textInitialized=!1,this.textRenderers=[],this.textLabelPlacements=[]}}class I{constructor(e,t,n,r,i){this.labelClass=e,this.graphics3DSymbol=t,this.graphics3DCalloutSymbolLayer=n,this.textRenderParameters=r,this.labelFunction=i,this.calloutSymbolLayerIndex=0,this.graphics=new Map,this.scaleVisibility=null}}class L{constructor(e,t,n,r,i,a,o,s){this.layer=t,this.graphics3DCore=n,this.scaleVisibility=r,this.emptySymbolLabelSupported=i,this.elevationInfoOverride=a,this.disablePlacement=o,this.active=s,this.labelClassAbortController=new AbortController,this._labelClassContexts=[],this.graphics=new Map,this.labelsToInitialize=new Map,this.stageLayer=new j(e,{pickable:!0},n.owner.layerViewUid)}destroy(){this.stageLayer.destroy()}get labelClassContexts(){return this._labelClassContexts}setLabelClassContext(e,t){this._labelClassContexts[e]=t}resetLabelClassContext(){this._labelClassContexts.length=0}}let R=class extends t{constructor(e){super(e),this._hudMaterials=new Map,this._calloutMaterials=new Map,this._dirty=!1,this._focusAreasLabelsQueue=new l,this._labels=new Map,this._labelingContexts=[]}setup(){this.dispose(),this.addHandles([u(()=>this.view.state?.camera,()=>this.setDirty()),u(()=>this.view.state?.rasterPixelRatio,()=>this._resetAllLabels()),u(()=>this.view.timeZone,()=>this._resetArcadeLabels()),u(()=>this.view.focusAreasView?.polygons,()=>this._updateFocus()),this.view.resourceController.scheduler.registerTask(N.LABELER,this)]),M()&&this.addHandles(u(()=>this.view.scale,()=>this._updateScaleVisibility())),this._textTextureAtlas=new A({view:this.view})}dispose(){this.removeAllHandles(),this._textTextureAtlas=a(this._textTextureAtlas),this._hudMaterials.clear(),this._calloutMaterials.clear(),this._labelingContexts.length=0,this._labels.clear()}destroy(){this.dispose(),G.graphic=null,G.renderingInfo=null,G.layer=null}_updateFocus(){this._focusAreasLabelsQueue.clear(),this._labelingContexts.forEach(e=>{e.graphics.forEach(t=>{this._focusAreasLabelsQueue.push({graphic3DGraphic:t,labelingContext:e})})})}_activateLabelingContext(e){e.graphics.forEach((t,n)=>{let r=new F(e,t);this._labels.set(n,r),e.labelsToInitialize.set(n,r),t.setVisibilityFlag(16,1,!0)}),e.active=!0}_deactivateLabelingContext(e){e.graphics.forEach((e,t)=>{e.setVisibilityFlag(16,1,!1),this.setLabelGraphicVisibility(e,!1),e.clearLabelGraphics(),this._labels.delete(t)}),e.active=!1}_addLabelTextureToAtlas(e){if(this._textTextureAtlas)for(let t of e.graphics3DGraphic.labelLayers){if(!t.labelClass)continue;let n=e.textRenderers[t.labelClassContextIndex];n&&(e.textureAtlasHandles.push(this._textTextureAtlas.addText(n,e=>B(t.stageObject,e))),z(t.stageObject,n))}}_removeLabelTextureFromAtlas(e){e.textureAtlasHandles.forEach(e=>e.remove()),e.textureAtlasHandles.length=0}get readyToRun(){return this.view.ready&&(this._dirty||this.deconflictor.readyToRun||this._focusAreasLabelsQueue.length>0)}runTask(e){return this._updateLabels(e),this._applyFocusAreasUpdates(e),!this._dirty&&this.deconflictor.readyToRun&&this.deconflictor.runTask(e),P}_updateLabels(e){if(this._dirty){this._dirty=!1;for(let t of this._labelingContexts)if(t.active){if(V(t)){this._dirty=!0;continue}if(H(t.labelClassContexts)){if(t.labelClassContexts===null){this._deactivateLabelingContext(t);continue}this._createLabelClassContext(t),this._dirty=!0;continue}for(let[n,r]of t.labelsToInitialize)if(this._ensureGraphics3DResources(r)&&(this._labels.set(n,r),this.deconflictor.setDirty(),e.madeProgress()),(r.visible&&r.textInitialized||!r.visible&&r.hasGraphics3DResources)&&(t.labelsToInitialize.delete(n),e.madeProgress()),e.done){this._dirty=!0;break}}this._dirty||this.notifyChange(`updating`)}}_applyFocusAreasUpdates(e){for(;this._focusAreasLabelsQueue.length>0&&!e.done;){e.madeProgress();let{graphic3DGraphic:t,labelingContext:n}=this._focusAreasLabelsQueue.pop();if(t.labelLayers.length===0||!n.active)continue;let r=D(t.graphic.geometry);if(r==null)continue;let i=this.view.focusAreasView?.containsGeometry(r)??!0;t.labelLayers.forEach(e=>{e.stageObject.geometries.some(e=>e.material.parameters.focusAreaStyle==null!==i)&&(this._removeGraphic(n,t),this._addGraphic(n,t),this.setDirty())})}this._focusAreasLabelsQueue.length===0&&(this.notifyChange(`readyToRun`),this.notifyChange(`updating`))}async _createLabelClassContextAsync(e){let t=e.labelClassAbortController?.signal;e.layer.when&&await e.layer.when(),s(t),e.scaleVisibility?.updateScaleRangeActive();let a=e.graphics3DCore,o=a.layer.labelingInfo?.filter(e=>!!e.symbol);o&&o.length!==0&&(await n(o,async(n,o)=>{let c=n.symbol,l=x(a.getOrCreateGraphics3DSymbol(c));if(l==null){i.getLogger(this).error(`Failed to create Graphics3DSymbol for label`);return}await l.load(),s(t);let u=null;_(c)&&c.hasVisibleCallout()&&(u=v(c,a.symbolCreationContext),await u.load(),s(t));let d=await r(g(n,e.layer.fieldsIndex,this.view.spatialReference));if(s(t),d.ok===!0){let r=await this._createTextRenderParameters(l.symbol);s(t);let i=new I(n,l,u,r,d.value);this._updateLabelClassContextVisibility(i),e.setLabelClassContext(o,i)}else i.getLogger(this).error(`Label expression failed to evaluate: ${d.error}`)}),s(t))}async _createLabelClassContext(e){return e.labelClassPromise??(e.labelClassPromise=this._createLabelClassContextAsync(e).catch(t=>{if(c(t))throw t;e.resetLabelClassContext()}).then(()=>{e.labelClassAbortController=null,this.notifyChange(`updating`)}).catch(()=>{}),this.notifyChange(`updating`)),e.labelClassPromise}async _createTextRenderParameters(e){let t=e.symbolLayers.at(0);return t?.type===`text`?k.fromSymbol(t,this.view.state.rasterPixelRatio):null}_destroyLabelClassContext(e){for(let t of e.labelClassContexts)t&&--t.graphics3DSymbol.referenced;let t=e.labelClassAbortController;e.labelClassAbortController=new AbortController,o(t),e.resetLabelClassContext(),e.labelClassPromise=null,this.notifyChange(`updating`)}_createTextSymbolGraphic(e,t,n,r,i,a){if(!this._textTextureAtlas)return null;let o=new C(n,w(n.anchor),T(n.anchor),e.text,p(e.displayWidth,e.displayHeight));return G.graphic=t,G.layer=r,G.renderingInfo=null,i.createLabel(G,o,this._hudMaterials,this._textTextureAtlas,()=>a.placement?.elevationOffset??null)}_createLineCalloutGraphic(e,t,n,r,i){G.graphic=e,G.layer=i;let a=r.screenOffset[0];return G.renderingInfo=new b(null,t,r.translation,r.centerOffset,r.groundDistance,a,r.centerOffsetUnits,r.elevationOffset),n.createGraphics3DGraphic(G,this._calloutMaterials)}_ensureGraphics3DResources(e){if(e.hasGraphics3DResources)return!1;let t=e.graphics3DGraphic;if(t.destroyed)return!1;this._ensureTextTextureResources(e);let n=e.labelingContext,r=n.labelClassContexts;if(H(r)||!n.emptySymbolLabelSupported&&t.layers.length===0)return!1;let i=!1,a=t.graphic,o=n.layer,s=W(n.layer);for(let c=0;c<r.length;c++){let l=e.textRenderers[c],u=e.textLabelPlacements[c],d=r[c];if(l==null||u==null||d==null)continue;let f=d.graphics3DSymbol,p=U(f),m=f.symbolLayers[0];if(!m)continue;m.setElevationInfoOverride(n.elevationInfoOverride);let h=new S(t,p,d.labelClass),g=this._createTextSymbolGraphic(l,a,u,o,m,h);if(g==null)return!1;g.labelClass=d.labelClass,g.labelClassContextIndex=c,t.addLabelGraphic(g,n.stageLayer),this.deconflictor.setPriority(t,d.textRenderParameters?.definition.size??0),t.setVisibilityFlag(16,1,s),t.setVisibilityFlag(16,2,d.scaleVisibility??!0),t.setVisibilityFlag(16,8,!1),M()&&d.graphics.set(a.uid,t),i=!0;let _=d.graphics3DCalloutSymbolLayer;if(_&&u.hasLabelVerticalOffset){_.setElevationInfoOverride(n.elevationInfoOverride);let e=this._createLineCalloutGraphic(a,p,_,u,o);e!=null&&(d.calloutSymbolLayerIndex=t.labelLayers.length,t.addLabelGraphic(e,n.stageLayer))}break}return i&&n.scaleVisibility?.updateGraphicLabelScaleVisibility(t),e.hasGraphics3DResources=!0,!0}_destroyGraphics3DResources(e){let t=e.labelingContext.labelClassContexts;for(let n of e.graphics3DGraphic.labelLayers)n.labelClass!=null&&t[n.labelClassContextIndex].graphics3DSymbol.symbolLayers[0]?.onRemoveGraphic(n);e.graphics3DGraphic.clearLabelGraphics(),e.hasGraphics3DResources=!1}_ensureTextTextureResources(e){if(e.textInitialized)return;let t=e.labelingContext,n=t.labelClassContexts;if(H(n))return;let r=e.graphics3DGraphic.graphic;for(let i=0;i<n.length;i++){let a=n[i];if(e.textRenderers[i]=null,e.textLabelPlacements[i]=null,a?.textRenderParameters==null)continue;let o=a.labelFunction,s;if(o.type===`arcade`)try{let e=o.needsHydrationToEvaluate()?h(r,t.layer,null):r;s=o.evaluate(e,this.view.timeZone)}catch{s=null}else s=o.evaluate(r);if(s==null||s===``||/^\s+$/.test(s))continue;let c=a.graphics3DSymbol;if(!c.symbolLayers[0])continue;let l=e.graphics3DGraphic,u=c.symbol?.type===`label-3d`?c.symbol:null,d=a.labelClass,f=t.disablePlacement,p=new S(l,u,d,f).placement;if(p==null)continue;let m=w(p.anchor),g=E(m);e.textRenderers[i]=new O(s,g,a.textRenderParameters,A.maxSize),e.textLabelPlacements[i]=p}e.textInitialized=!0}_destroyTextTextureResources(e){e.textInitialized=!1,e.textRenderers.length=0,e.textLabelPlacements.length=0}_addGraphic(e,t){let n=t.graphic.uid;if(e.graphics.set(n,t),e.active){let r=new F(e,t);this._labels.set(n,r),e.labelsToInitialize.set(n,r)}this.setDirty(),this.deconflictor.setDirty()}_updateGraphicGeometry(e,t){let n=t.graphic.uid,r=this._labels.get(n);if(!r)return!0;for(let n of r.graphics3DGraphic.labelLayers)if(n.labelClass!=null&&!e.labelClassContexts[n.labelClassContextIndex].graphics3DSymbol.symbolLayers[0].updateGeometry(t.graphic,n))return!1;return this.setDirty(),this.deconflictor.setDirty(),!0}_removeGraphic(e,t){let n=t.graphic.uid,r=this._labels.get(n);e.graphics.delete(n),e.labelClassContexts.forEach(e=>e?.graphics.delete(n)),r&&(this._destroyGraphic(r,n),e.labelsToInitialize.delete(n),this.setDirty(),this.deconflictor.setDirty())}_destroyGraphic(e,t){this._labels.delete(t),e.textureAtlasHandles.length&&this._removeLabelTextureFromAtlas(e),this._destroyTextTextureResources(e),e.hasGraphics3DResources&&this._destroyGraphics3DResources(e)}async _labelingInfoChange(e,t){if(t){for(let n of t){let t=e.graphics.get(n);t&&(this._removeGraphic(e,t),this._addGraphic(e,t))}return}return this._visibilityInfoChange(e),this._resetLabels(e),this._createLabelClassContext(e)}_globalPropertyChanged(e,t){for(let n of t.labelClassContexts){if(!n)continue;let r=new Map;t.graphics.forEach(e=>r.set(e.graphic.uid,e)),n.graphics3DSymbol.symbolLayers[0].globalPropertyChanged(e,r,e=>e.labelLayers[0]),n.graphics3DCalloutSymbolLayer&&n.graphics3DCalloutSymbolLayer.globalPropertyChanged(e,r,e=>e.labelLayers[n.calloutSymbolLayerIndex])}}_visibilityInfoChange(e){let t=W(e.layer);t&&!e.active&&this._activateLabelingContext(e),!t&&e.active&&this._deactivateLabelingContext(e),this.setDirty()}_resetAllLabels(){for(let e of this._labelingContexts)this._resetLabels(e)}_resetArcadeLabels(){for(let e of this._labelingContexts)e.labelClassContexts.some(e=>e?.labelFunction.type===`arcade`)&&this._resetLabels(e)}_resetLabels(e){e.graphics.forEach((t,n)=>{let r=this._labels.get(n);r&&(this._destroyGraphic(r,n),r.visible=!1,e.labelsToInitialize.set(n,r))}),this._destroyLabelClassContext(e),this.setDirty(),this.deconflictor.setDirty()}_findLabelingContext(e){for(let t of this._labelingContexts)if(t.graphics3DCore===e)return t;return null}addGraphicsOwner(e,t,n){let r=n?.emptySymbolLabelSupported||!1,i=n?.elevationInfoOverride||null,a=n?.disablePlacement||null;if(this._findLabelingContext(e))return;let o=e.layer,s=new L(this.view.stage,o,e,t,r,i,a,W(o));return this._labelingContexts.push(s),this.setDirty(),{addGraphic:e=>this._addGraphic(s,e),removeGraphic:e=>this._removeGraphic(s,e),updateGraphicGeometry:e=>this._updateGraphicGeometry(s,e),layerLabelsEnabled:()=>W(s.layer),labelingInfoChange:e=>this._labelingInfoChange(s,e),elevationInfoChange:()=>this._globalPropertyChanged(`elevationInfo`,s),screenSizePerspectiveEnabledChanged:()=>this._globalPropertyChanged(`screenSizePerspectiveEnabled`,s),slicePlaneEnabledChange:()=>this._globalPropertyChanged(`slicePlaneEnabled`,s),visibilityInfoChange:()=>this._visibilityInfoChange(s),reset:()=>this._resetLabels(s),remove:()=>this._removeGraphicsOwner(e),setDirty:()=>this.setDirty()}}_removeGraphicsOwner(e){let t=this._findLabelingContext(e);if(!t)return;let n=this._labelingContexts.indexOf(t);this._labelingContexts.splice(n,1),t.graphics.forEach(e=>this._removeGraphic(t,e)),t.destroy(),this.setDirty()}_updateScaleVisibility(){for(let e of this._labelingContexts)if(e.active&&!V(e))for(let t of e.labelClassContexts)this._updateLabelClassContextVisibility(t)}_updateLabelClassContextVisibility(e){if(!e||!M())return;let{labelClass:t,graphics:n}=e,r={minScale:t.minScale,maxScale:t.maxScale},i=m(r,this.view.scale),a=e.scaleVisibility==null||e.scaleVisibility!==i;e.scaleVisibility=i,a&&n.size&&(n.forEach(e=>e.setVisibilityFlag(16,2,i)),this.deconflictor.setDirty(),this.setDirty())}setLabelGraphicVisibility(e,t){let n=e.graphic.uid,r=this._labels.get(n);r&&r.visible!==t&&(t&&!r.textureAtlasHandles.length?(this._addLabelTextureToAtlas(r),r.textInitialized||r.labelingContext.labelsToInitialize.set(n,r)):!t&&r.textureAtlasHandles.length&&this._removeLabelTextureFromAtlas(r),r.visible=t,this.setDirty())}setDirty(){!this._dirty&&this._labelingContexts.length>0&&(this._dirty=!0,this.notifyChange(`updating`))}get updating(){return this._dirty||this._textTextureAtlas?.updating||this.deconflictor.updating||this._labelingContexts.some(e=>V(e))||this._focusAreasLabelsQueue.length>0}get updatingProgress(){if(!this.updating||!this._textTextureAtlas)return 1;let e=this._labelingContexts.length>0?this._labelingContexts.reduce((e,t)=>e+ +!V(t),0)/this._labelingContexts.length:1;return(this._dirty?0:.3)+(this._textTextureAtlas.updating?0:.1)+e*.1+this.deconflictor.updatingProgress*.5}get usedMemory(){return this._textTextureAtlas?.usedMemory??0}get test(){}};e([d({constructOnly:!0})],R.prototype,`view`,void 0),e([d({constructOnly:!0})],R.prototype,`deconflictor`,void 0),e([d()],R.prototype,`_textTextureAtlas`,void 0),e([d({type:Boolean,readOnly:!0})],R.prototype,`updating`,null),R=e([f(`esri.views.3d.layers.graphics.Labeler`)],R);function z(e,t){e.geometries[0].setAttributeData(`size`,[t.displayWidth,t.displayHeight]),e.geometryVertexAttributeUpdated(e.geometries[0],`size`)}function B(e,t){e.geometries[0].setAttributeData(`uvi`,t),e.geometryVertexAttributeUpdated(e.geometries[0],`uvi`,!0)}function V(e){return!!e.labelClassPromise&&!!e.labelClassAbortController}function H(e){return(e?.length??0)===0}function U(e){return e.symbol?.type===`label-3d`?e.symbol:null}function W(e){return!!e.labelsVisible&&!!e.labelingInfo?.some(e=>!!e.symbol)}const G=new y(null,null,null);export{R as Labeler,W as areLabelsVisible};
@@ -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{makeHandle as n}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import r from"../../../../core/Logger.js";import{estimateFixedArrayMemory as i,estimateNumberMemory as a,estimateAttributesMemory as o}from"../../../../core/memoryEstimations.js";import{EsriPromise as s}from"../../../../core/Promise.js";import{initial as c,sync as l,watch as u}from"../../../../core/reactiveUtils.js";import{pt2px as d}from"../../../../core/screenUtils.js";import{property as f,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as h}from"../../../../core/support/UpdatingHandles.js";import{projectPointToVector as g}from"../../../../geometry/projection/projectPointToVector.js";import{getContinuousIndexArray as _}from"../../../../geometry/support/Indices.js";import{getResolutionForScale as v}from"../../../../geometry/support/scaleUtils.js";import{getObjectId as y}from"../../../../layers/graphics/dehydratedFeatures.js";import{convertFromPoint as b}from"../../../../layers/graphics/featureConversionUtils.js";import{OptimizedFeature as x}from"../../../../layers/graphics/OptimizedFeature.js";import S from"../../../../layers/graphics/data/FeatureStore.js";import{isNumericField as C}from"../../../../layers/support/fieldUtils.js";import{generateGradient as w}from"../../../../renderers/support/heatmapUtils.js";import{DisplayFeatureLimit as T}from"../graphics/DisplayFeatureLimit.js";import{GraphicsCorePerformanceInfo as E}from"../graphics/GraphicsCorePerformanceInfo.js";import{FeatureVisibilityFilter as D}from"./FeatureVisibilityFilter.js";import{emptyHighlightHandle as O}from"./highlightUtils.js";import{Attribute as k}from"../../webgl-engine/lib/Attribute.js";import{DrapedHeatmapRenderer as A}from"../../webgl-engine/lib/DrapedHeatmapRenderer.js";import{Geometry as j}from"../../webgl-engine/lib/Geometry.js";import{GeometryBaseInstance as M}from"../../webgl-engine/lib/GeometryBaseInstance.js";import{RenderGeometry as N}from"../../webgl-engine/lib/RenderGeometry.js";import{HeatmapDensityMaterial as P}from"../../webgl-engine/materials/HeatmapDensityMaterial.js";import{scaleBoundsPredicate as F,isScaleRangeActive as I}from"../../../support/layerViewUtils.js";import{PixelType as L}from"../../../webgl/enums.js";import{loadHeatmapTextureConfiguration as R,fallBackHeatmapConfiguration as z}from"../../../webgl/heatmapTextureUtils.js";const B=112;let V=class extends s{constructor(e){super(e),this.type=`heatmap`,this.preferredUpdatePolicy=0,this.dataExtent=null,this.drapeSourceType=1,this._renderGeometries=new Map,this._fieldTotal=0,this._drapeSourceRenderer=null,this._dataType=L.HALF_FLOAT,this._pixelFormat=6408,this._baseInstance=new M([]),this._updatingHandles=new h}initialize(){let e;try{e=R(this._renderView.renderingContext,r.getLogger(this))}catch(t){this.addResolvingPromise(Promise.reject(t)),e=z}let{dataType:t,samplingMode:i,pixelFormat:a,internalFormat:o}=e;this._featureStore=new S({geometryType:`esriGeometryPoint`,hasZ:this.hasZ,hasM:this.hasM}),this._dataType=t,this._pixelFormat=a;let s=t!==L.FLOAT,d=this.view.overlayManager,f={...this._rendererParameters,stage:this.view.stage,dataType:t,samplingMode:i,pixelFormat:a,internalFormat:o,rendererContext:d.renderer,drapeSource:this};this._drapeSourceRenderer=new A(f),d.registerDrapeSource(this,this._drapeSourceRenderer),this._material=new P({usesHalfFloats:s}),this._materialWithField=new P({usesHalfFloats:s,isAttributeDriven:!0}),this._filterVisibility=new D({context:{configuration:this.owner,featureStore:this.featureStore,getFeatureCount:()=>this._loadedPointGraphics.length,setAllFeaturesVisibility:e=>this._setAllFeaturesVisibility(e),clearFeaturesVisibility:()=>this._setAllFeaturesVisibility(!0),updateFeatureVisibilities:e=>this._updateFeatureVisibilities(e)}}),this._updatingHandles.addOnCollectionChange(()=>this._loadedPointGraphics,e=>this._onLoadedFeaturesChange(e),c),this._updatingHandles.addWhen(()=>this._materialParameters,e=>this._forEachMaterial(t=>t.setParameters(e)),c),this._updatingHandles.add(()=>this._rendererParameters,e=>this._drapeSourceRenderer.set(e)),this._updatingHandles.add(()=>this._heatmapRendererField,()=>{this._recreate()},l),this._updatingHandles.add(()=>({fieldName:this._heatmapRendererFieldName,numeric:this._heatmapRendererFieldIsNumeric}),({fieldName:e,numeric:t})=>{if(e!=null&&t){let t=0;this._featureStore.forEach(n=>t+=n.attributes[e]??0),this._fieldTotal=t}else this._fieldTotal=this._featureStore.numFeatures},c),this.addHandles([u(()=>({fieldName:this._heatmapRendererFieldName,field:this._heatmapRendererField}),({fieldName:e,field:t})=>{e&&!t&&r.getLogger(this).warn(`Heatmap renderer field '${e}' for layer '${this.layer.title??this.layer.id}' not found`)}),u(()=>({field:this._heatmapRendererField,numeric:this._heatmapRendererFieldIsNumeric}),({field:e,numeric:t})=>{e!=null&&!t&&r.getLogger(this).warn(`Heatmap renderer field '${e.name}' for layer '${this.layer.title??this.layer.id}' does not contain numeric values and cannot be used to drive the heatmap density`)}),n(()=>this.view.overlayManager.unregisterDrapeSource(this))])}destroy(){this._renderGeometries.clear(),this._material=null,this._materialWithField=null,this._featureStore.clear(),this._featureStore=null,this._updatingHandles.destroy(),this._baseInstance=null}get layer(){return this.owner.layer}get featureStore(){return this._featureStore}get updating(){return this._updatingHandles.updating||this.filterVisibility.updating}get updatingRemaining(){return 0}get suspendInfo(){return{}}get legendEnabled(){return!0}get filterVisibility(){return this._filterVisibility}get displayFeatureLimit(){let e=this.owner?.view?.quality??1,t=this.owner?.view?.qualitySettings,n=t?Math.ceil(t.graphics3D.maxTotalNumberOfFeatures*e):0,r=n*6;return new T(r,n)}get hasZ(){return`hasZ`in this.layer&&this.layer.hasZ===!0}get hasM(){return`hasM`in this.layer&&this.layer.hasM}get view(){return this.owner.view}get fullOpacity(){return this.owner.fullOpacity}get updatePolicy(){return this.owner.updatePolicy}get scaleVisibilitySuspended(){if(!this._isScaleRangeActive)return!1;let{minScale:e,maxScale:t}=this.layer.effectiveScaleRange,{scale:n}=this.view;return!F(n,e??0,t??0)}get usedMemory(){let e=this.usedMemoryPerFeature*this._featureStore.numFeatures,t=this._pixelFormat===6403?1:4,n=this._dataType===L.FLOAT?4:2,r=Math.ceil((this._overlayRenderer?.overlays[0]?.resolution??0)*this._densityMapPixelRatio)??0;return r*r*t*n+e+H}get usedMemoryPerFeature(){let e=this._loadedPointGraphics.find(()=>!0);if(e==null)return 0;let t=o(e);return i([0,0],a)+(this._heatmapRendererFieldIsNumeric?a:0)+t}get loadedFeatures(){return this._featureStore.numFeatures}get unprocessedMemoryEstimate(){return 0}get performanceInfo(){return new E(this._renderGeometries.size,this._visibleFeatures,0,0)}get renderer(){return this._heatmapRenderer}get _overlayRenderer(){return this.view.overlayManager.renderer}get _overlaySpatialReference(){return this.view.overlayManager.spatialReference}get _rendererParameters(){return{...this._radiusParameter,...this._densityParameters,...this._colorRampParameter,...this._pixelRatioParameter}}get _materialParameters(){return{...this._radiusParameter,...this._resolutionForScaleParameter}}get _densityParameters(){let e=this._heatmapRenderer;if(e==null)return null;let{minDensity:t,maxDensity:n}=e;return{minDensity:t,maxDensity:n,fieldTotal:this._fieldTotal}}get _radiusParameter(){let e=this._heatmapRenderer;return e?{searchRadius:d(this._clampSearchRadius(e.radius))}:null}get _resolutionForScaleParameter(){let e=this._heatmapRenderer;if(!e)return null;let{referenceScale:t}=e;return{resolutionForScale:t===0?0:v(t,this.view.spatialReference)}}get _colorRampParameter(){let e=this._heatmapRenderer;return e?{colorRampData:w(e.colorStops)}:null}get _pixelRatioParameter(){return{pixelRatio:this._densityMapPixelRatio}}get _densityMapPixelRatio(){return this.owner?.view?.qualitySettings.heatmap.pixelRatio??1}get _renderView(){return this.view.stage.renderView}get _featuresArePoints(){return this.layer.geometryType===`point`}get _loadedPointGraphics(){return this.owner.loadedGraphics}get _heatmapRenderer(){let e=this.layer.renderer;return e?.type===`heatmap`?e:null}get _heatmapRendererFieldName(){return this._heatmapRenderer?.field}get _heatmapRendererField(){let e=this._heatmapRendererFieldName;return e==null?null:this.layer.fieldsIndex.get(e)}get _heatmapRendererFieldIsNumeric(){let e=this._heatmapRendererField;return e!=null&&C(e)}get _isScaleRangeActive(){let{layer:e}=this;if(!(`effectiveScaleRange`in e))return!1;let{minScale:t,maxScale:n}=e.effectiveScaleRange;return I(t,n)}get _visibleFeatures(){return this._renderGeometries.values().reduce((e,{visible:t})=>e+ +!!t,0)}async whenGraphicBounds(){return null}computeAttachmentOrigin(){return null}highlightByGraphics(){return O}highlightByObjectIds(){return O}maskOccludee(){return n()}setObjectIdVisibility(){}refreshFilter(){this.filterVisibility.reapply()}_onLoadedFeaturesChange(e){if(!this._featuresArePoints)return;let{objectIdField:n}=this.layer;this._featureStore.removeManyById(e.removed.map(e=>y(e,n))),this._featureStore.addMany(e.added.map(e=>{let{attributes:t,centroid:r,geometry:i}=e,a=new x(b(i),t,r?b(r):null,y(e,n));return a.displayId=e.uid,a}));let r=e.added,i=e.removed;this._fieldTotal+=this._computeFieldTotalChange(r,i);let a=i.map(({uid:e})=>{let t=this._renderGeometries.get(e);return this._renderGeometries.delete(e),t}).filter(t),o=r.map(e=>{let t=this._pointGraphicToRenderGeometry(e);return this._renderGeometries.set(e.uid,t),t});a.length>0&&this._drapeSourceRenderer.removeGeometries(a,2),o.length>0&&this._drapeSourceRenderer.addGeometries(o,0),(o.length>0||a.length>0)&&(this.filterVisibility.reapply(),this._renderView.requestRender())}_recreate(){if(!this._loadedPointGraphics)return;let e=this._loadedPointGraphics.toArray();this._onLoadedFeaturesChange({added:e,removed:e})}_pointGraphicToRenderGeometry(e){let t=this._heatmapRendererFieldName,n=t==null?this._material:this._materialWithField,r=m();g(e.geometry,r,this._overlaySpatialReference);let i=_(1),a=[[`position`,new k([r[0],r[1]],i,2)]],o=this._heatmapRendererFieldIsNumeric;t!=null&&a.push([`featureAttribute`,new k([o?e.attributes[t]??0:0],i,1)]);let s=new N(new j(n,a,null,void 0,this._baseInstance),{layerViewUid:this.owner.layerViewUid,graphicUid:e.uid});return s.visible=this.filterVisibility.defaultVisibility,s}_forEachMaterial(e){e(this._material),e(this._materialWithField)}_computeFieldTotalChange(e,t){if(this._heatmapRendererFieldName==null||!this._heatmapRendererFieldIsNumeric)return e.length-t.length;let n=this._heatmapRendererFieldName,r=(e,t)=>e+(t.attributes[n]??0);return e.reduce(r,0)-t.reduce(r,0)}_clampSearchRadius(e){return e>112&&r.getLogger(this).warnOnce(`SceneView supports a maximum radius of 112 pt for HeatmapRenderer.`),Math.min(e,112)}_updateFeatureVisibilities(e){let t=[];this._featureStore.forEach(({objectId:n,displayId:r})=>{let i=e(n),a=this._renderGeometries.get(r);a&&a.visible!==i&&(t.push(a),a.visible=i)}),this._drapeSourceRenderer.modifyGeometries(t,1)}_setAllFeaturesVisibility(e){let t=[];for(let n of this._renderGeometries.values())n.visible!==e&&(t.push(n),n.visible=e);this._drapeSourceRenderer.modifyGeometries(t,1)}get test(){}};e([f()],V.prototype,`type`,void 0),e([f({constructOnly:!0})],V.prototype,`owner`,void 0),e([f()],V.prototype,`layer`,null),e([f()],V.prototype,`featureStore`,null),e([f()],V.prototype,`updating`,null),e([f()],V.prototype,`updatingRemaining`,null),e([f()],V.prototype,`suspendInfo`,null),e([f()],V.prototype,`legendEnabled`,null),e([f()],V.prototype,`filterVisibility`,null),e([f()],V.prototype,`displayFeatureLimit`,null),e([f()],V.prototype,`preferredUpdatePolicy`,void 0),e([f()],V.prototype,`hasZ`,null),e([f()],V.prototype,`hasM`,null),e([f()],V.prototype,`dataExtent`,void 0),e([f()],V.prototype,`view`,null),e([f()],V.prototype,`fullOpacity`,null),e([f()],V.prototype,`updatePolicy`,null),e([f()],V.prototype,`drapeSourceType`,void 0),e([f()],V.prototype,`scaleVisibilitySuspended`,null),e([f()],V.prototype,`renderer`,null),e([f()],V.prototype,`_featureStore`,void 0),e([f()],V.prototype,`_filterVisibility`,void 0),e([f()],V.prototype,`_overlayRenderer`,null),e([f()],V.prototype,`_overlaySpatialReference`,null),e([f()],V.prototype,`_rendererParameters`,null),e([f()],V.prototype,`_materialParameters`,null),e([f()],V.prototype,`_densityParameters`,null),e([f()],V.prototype,`_radiusParameter`,null),e([f()],V.prototype,`_resolutionForScaleParameter`,null),e([f()],V.prototype,`_colorRampParameter`,null),e([f()],V.prototype,`_pixelRatioParameter`,null),e([f()],V.prototype,`_densityMapPixelRatio`,null),e([f()],V.prototype,`_renderGeometries`,void 0),e([f()],V.prototype,`_material`,void 0),e([f()],V.prototype,`_materialWithField`,void 0),e([f()],V.prototype,`_renderView`,null),e([f()],V.prototype,`_featuresArePoints`,null),e([f()],V.prototype,`_loadedPointGraphics`,null),e([f()],V.prototype,`_heatmapRenderer`,null),e([f()],V.prototype,`_heatmapRendererFieldName`,null),e([f()],V.prototype,`_heatmapRendererField`,null),e([f()],V.prototype,`_heatmapRendererFieldIsNumeric`,null),e([f()],V.prototype,`_fieldTotal`,void 0),e([f()],V.prototype,`_drapeSourceRenderer`,void 0),e([f()],V.prototype,`_isScaleRangeActive`,null),V=e([p(`esri.views.3d.layers.support.HeatmapFeatureProcessor`)],V);const H=i([0,0,0,0,0,0,0,0],a);export{V as HeatmapFeatureProcessor,B as maxRadiusPt};
2
+ import{__decorate as e}from"tslib";import{isSome as t}from"../../../../core/arrayUtils.js";import{makeHandle as n}from"../../../../core/handleUtils.js";import"../../../../core/has.js";import r from"../../../../core/Logger.js";import{estimateFixedArrayMemory as i,estimateNumberMemory as a,estimateAttributesMemory as o}from"../../../../core/memoryEstimations.js";import{EsriPromise as s}from"../../../../core/Promise.js";import{initial as c,sync as l,watch as u}from"../../../../core/reactiveUtils.js";import{pt2px as d}from"../../../../core/screenUtils.js";import{property as f,subclass as p}from"../../../../core/accessorSupport/decorators.js";import{create as m}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as h}from"../../../../core/support/UpdatingHandles.js";import{projectPointToVector as g}from"../../../../geometry/projection/projectPointToVector.js";import{getContinuousIndexArray as _}from"../../../../geometry/support/Indices.js";import{scaleBoundsPredicate as v,getResolutionForScale as y,isScaleRangeActive as b}from"../../../../geometry/support/scaleUtils.js";import{getObjectId as x}from"../../../../layers/graphics/dehydratedFeatures.js";import{convertFromPoint as S}from"../../../../layers/graphics/featureConversionUtils.js";import{OptimizedFeature as C}from"../../../../layers/graphics/OptimizedFeature.js";import w from"../../../../layers/graphics/data/FeatureStore.js";import{isNumericField as T}from"../../../../layers/support/fieldUtils.js";import{generateGradient as E}from"../../../../renderers/support/heatmapUtils.js";import{DisplayFeatureLimit as D}from"../graphics/DisplayFeatureLimit.js";import{GraphicsCorePerformanceInfo as O}from"../graphics/GraphicsCorePerformanceInfo.js";import{FeatureVisibilityFilter as k}from"./FeatureVisibilityFilter.js";import{emptyHighlightHandle as A}from"./highlightUtils.js";import{Attribute as j}from"../../webgl-engine/lib/Attribute.js";import{DrapedHeatmapRenderer as M}from"../../webgl-engine/lib/DrapedHeatmapRenderer.js";import{Geometry as N}from"../../webgl-engine/lib/Geometry.js";import{GeometryBaseInstance as P}from"../../webgl-engine/lib/GeometryBaseInstance.js";import{RenderGeometry as F}from"../../webgl-engine/lib/RenderGeometry.js";import{HeatmapDensityMaterial as I}from"../../webgl-engine/materials/HeatmapDensityMaterial.js";import{PixelType as L}from"../../../webgl/enums.js";import{loadHeatmapTextureConfiguration as R,fallBackHeatmapConfiguration as z}from"../../../webgl/heatmapTextureUtils.js";const B=112;let V=class extends s{constructor(e){super(e),this.type=`heatmap`,this.preferredUpdatePolicy=0,this.dataExtent=null,this.drapeSourceType=1,this._renderGeometries=new Map,this._fieldTotal=0,this._drapeSourceRenderer=null,this._dataType=L.HALF_FLOAT,this._pixelFormat=6408,this._baseInstance=new P([]),this._updatingHandles=new h}initialize(){let e;try{e=R(this._renderView.renderingContext,r.getLogger(this))}catch(t){this.addResolvingPromise(Promise.reject(t)),e=z}let{dataType:t,samplingMode:i,pixelFormat:a,internalFormat:o}=e;this._featureStore=new w({geometryType:`esriGeometryPoint`,hasZ:this.hasZ,hasM:this.hasM}),this._dataType=t,this._pixelFormat=a;let s=t!==L.FLOAT,d=this.view.overlayManager,f={...this._rendererParameters,stage:this.view.stage,dataType:t,samplingMode:i,pixelFormat:a,internalFormat:o,rendererContext:d.renderer,drapeSource:this};this._drapeSourceRenderer=new M(f),d.registerDrapeSource(this,this._drapeSourceRenderer),this._material=new I({usesHalfFloats:s}),this._materialWithField=new I({usesHalfFloats:s,isAttributeDriven:!0}),this._filterVisibility=new k({context:{configuration:this.owner,featureStore:this.featureStore,getFeatureCount:()=>this._loadedPointGraphics.length,setAllFeaturesVisibility:e=>this._setAllFeaturesVisibility(e),clearFeaturesVisibility:()=>this._setAllFeaturesVisibility(!0),updateFeatureVisibilities:e=>this._updateFeatureVisibilities(e)}}),this._updatingHandles.addOnCollectionChange(()=>this._loadedPointGraphics,e=>this._onLoadedFeaturesChange(e),c),this._updatingHandles.addWhen(()=>this._materialParameters,e=>this._forEachMaterial(t=>t.setParameters(e)),c),this._updatingHandles.add(()=>this._rendererParameters,e=>this._drapeSourceRenderer.set(e)),this._updatingHandles.add(()=>this._heatmapRendererField,()=>{this._recreate()},l),this._updatingHandles.add(()=>({fieldName:this._heatmapRendererFieldName,numeric:this._heatmapRendererFieldIsNumeric}),({fieldName:e,numeric:t})=>{if(e!=null&&t){let t=0;this._featureStore.forEach(n=>t+=n.attributes[e]??0),this._fieldTotal=t}else this._fieldTotal=this._featureStore.numFeatures},c),this.addHandles([u(()=>({fieldName:this._heatmapRendererFieldName,field:this._heatmapRendererField}),({fieldName:e,field:t})=>{e&&!t&&r.getLogger(this).warn(`Heatmap renderer field '${e}' for layer '${this.layer.title??this.layer.id}' not found`)}),u(()=>({field:this._heatmapRendererField,numeric:this._heatmapRendererFieldIsNumeric}),({field:e,numeric:t})=>{e!=null&&!t&&r.getLogger(this).warn(`Heatmap renderer field '${e.name}' for layer '${this.layer.title??this.layer.id}' does not contain numeric values and cannot be used to drive the heatmap density`)}),n(()=>this.view.overlayManager.unregisterDrapeSource(this))])}destroy(){this._renderGeometries.clear(),this._material=null,this._materialWithField=null,this._featureStore.clear(),this._featureStore=null,this._updatingHandles.destroy(),this._baseInstance=null}get layer(){return this.owner.layer}get featureStore(){return this._featureStore}get updating(){return this._updatingHandles.updating||this.filterVisibility.updating}get updatingRemaining(){return 0}get suspendInfo(){return{}}get legendEnabled(){return!0}get filterVisibility(){return this._filterVisibility}get displayFeatureLimit(){let e=this.owner?.view?.quality??1,t=this.owner?.view?.qualitySettings,n=t?Math.ceil(t.graphics3D.maxTotalNumberOfFeatures*e):0,r=n*6;return new D(r,n)}get hasZ(){return`hasZ`in this.layer&&this.layer.hasZ===!0}get hasM(){return`hasM`in this.layer&&this.layer.hasM}get view(){return this.owner.view}get fullOpacity(){return this.owner.fullOpacity}get updatePolicy(){return this.owner.updatePolicy}get scaleVisibilitySuspended(){if(!this._isScaleRangeActive)return!1;let{minScale:e,maxScale:t}=this.layer.effectiveScaleRange,{scale:n}=this.view;return!v(n,e??0,t??0)}get usedMemory(){let e=this.usedMemoryPerFeature*this._featureStore.numFeatures,t=this._pixelFormat===6403?1:4,n=this._dataType===L.FLOAT?4:2,r=Math.ceil((this._overlayRenderer?.overlays[0]?.resolution??0)*this._densityMapPixelRatio)??0;return r*r*t*n+e+H}get usedMemoryPerFeature(){let e=this._loadedPointGraphics.find(()=>!0);if(e==null)return 0;let t=o(e);return i([0,0],a)+(this._heatmapRendererFieldIsNumeric?a:0)+t}get loadedFeatures(){return this._featureStore.numFeatures}get unprocessedMemoryEstimate(){return 0}get performanceInfo(){return new O(this._renderGeometries.size,this._visibleFeatures,0,0)}get renderer(){return this._heatmapRenderer}get _overlayRenderer(){return this.view.overlayManager.renderer}get _overlaySpatialReference(){return this.view.overlayManager.spatialReference}get _rendererParameters(){return{...this._radiusParameter,...this._densityParameters,...this._colorRampParameter,...this._pixelRatioParameter}}get _materialParameters(){return{...this._radiusParameter,...this._resolutionForScaleParameter}}get _densityParameters(){let e=this._heatmapRenderer;if(e==null)return null;let{minDensity:t,maxDensity:n}=e;return{minDensity:t,maxDensity:n,fieldTotal:this._fieldTotal}}get _radiusParameter(){let e=this._heatmapRenderer;return e?{searchRadius:d(this._clampSearchRadius(e.radius))}:null}get _resolutionForScaleParameter(){let e=this._heatmapRenderer;if(!e)return null;let{referenceScale:t}=e;return{resolutionForScale:t===0?0:y(t,this.view.spatialReference)}}get _colorRampParameter(){let e=this._heatmapRenderer;return e?{colorRampData:E(e.colorStops)}:null}get _pixelRatioParameter(){return{pixelRatio:this._densityMapPixelRatio}}get _densityMapPixelRatio(){return this.owner?.view?.qualitySettings.heatmap.pixelRatio??1}get _renderView(){return this.view.stage.renderView}get _featuresArePoints(){return this.layer.geometryType===`point`}get _loadedPointGraphics(){return this.owner.loadedGraphics}get _heatmapRenderer(){let e=this.layer.renderer;return e?.type===`heatmap`?e:null}get _heatmapRendererFieldName(){return this._heatmapRenderer?.field}get _heatmapRendererField(){let e=this._heatmapRendererFieldName;return e==null?null:this.layer.fieldsIndex.get(e)}get _heatmapRendererFieldIsNumeric(){let e=this._heatmapRendererField;return e!=null&&T(e)}get _isScaleRangeActive(){let{layer:e}=this;if(!(`effectiveScaleRange`in e))return!1;let{minScale:t,maxScale:n}=e.effectiveScaleRange;return b(t,n)}get _visibleFeatures(){return this._renderGeometries.values().reduce((e,{visible:t})=>e+ +!!t,0)}async whenGraphicBounds(){return null}computeAttachmentOrigin(){return null}highlightByGraphics(){return A}highlightByObjectIds(){return A}maskOccludee(){return n()}setObjectIdVisibility(){}refreshFilter(){this.filterVisibility.reapply()}_onLoadedFeaturesChange(e){if(!this._featuresArePoints)return;let{objectIdField:n}=this.layer;this._featureStore.removeManyById(e.removed.map(e=>x(e,n))),this._featureStore.addMany(e.added.map(e=>{let{attributes:t,centroid:r,geometry:i}=e,a=new C(S(i),t,r?S(r):null,x(e,n));return a.displayId=e.uid,a}));let r=e.added,i=e.removed;this._fieldTotal+=this._computeFieldTotalChange(r,i);let a=i.map(({uid:e})=>{let t=this._renderGeometries.get(e);return this._renderGeometries.delete(e),t}).filter(t),o=r.map(e=>{let t=this._pointGraphicToRenderGeometry(e);return this._renderGeometries.set(e.uid,t),t});a.length>0&&this._drapeSourceRenderer.removeGeometries(a,2),o.length>0&&this._drapeSourceRenderer.addGeometries(o,0),(o.length>0||a.length>0)&&(this.filterVisibility.reapply(),this._renderView.requestRender())}_recreate(){if(!this._loadedPointGraphics)return;let e=this._loadedPointGraphics.toArray();this._onLoadedFeaturesChange({added:e,removed:e})}_pointGraphicToRenderGeometry(e){let t=this._heatmapRendererFieldName,n=t==null?this._material:this._materialWithField,r=m();g(e.geometry,r,this._overlaySpatialReference);let i=_(1),a=[[`position`,new j([r[0],r[1]],i,2)]],o=this._heatmapRendererFieldIsNumeric;t!=null&&a.push([`featureAttribute`,new j([o?e.attributes[t]??0:0],i,1)]);let s=new F(new N(n,a,null,void 0,this._baseInstance),{layerViewUid:this.owner.layerViewUid,graphicUid:e.uid});return s.visible=this.filterVisibility.defaultVisibility,s}_forEachMaterial(e){e(this._material),e(this._materialWithField)}_computeFieldTotalChange(e,t){if(this._heatmapRendererFieldName==null||!this._heatmapRendererFieldIsNumeric)return e.length-t.length;let n=this._heatmapRendererFieldName,r=(e,t)=>e+(t.attributes[n]??0);return e.reduce(r,0)-t.reduce(r,0)}_clampSearchRadius(e){return e>112&&r.getLogger(this).warnOnce(`SceneView supports a maximum radius of 112 pt for HeatmapRenderer.`),Math.min(e,112)}_updateFeatureVisibilities(e){let t=[];this._featureStore.forEach(({objectId:n,displayId:r})=>{let i=e(n),a=this._renderGeometries.get(r);a&&a.visible!==i&&(t.push(a),a.visible=i)}),this._drapeSourceRenderer.modifyGeometries(t,1)}_setAllFeaturesVisibility(e){let t=[];for(let n of this._renderGeometries.values())n.visible!==e&&(t.push(n),n.visible=e);this._drapeSourceRenderer.modifyGeometries(t,1)}get test(){}};e([f()],V.prototype,`type`,void 0),e([f({constructOnly:!0})],V.prototype,`owner`,void 0),e([f()],V.prototype,`layer`,null),e([f()],V.prototype,`featureStore`,null),e([f()],V.prototype,`updating`,null),e([f()],V.prototype,`updatingRemaining`,null),e([f()],V.prototype,`suspendInfo`,null),e([f()],V.prototype,`legendEnabled`,null),e([f()],V.prototype,`filterVisibility`,null),e([f()],V.prototype,`displayFeatureLimit`,null),e([f()],V.prototype,`preferredUpdatePolicy`,void 0),e([f()],V.prototype,`hasZ`,null),e([f()],V.prototype,`hasM`,null),e([f()],V.prototype,`dataExtent`,void 0),e([f()],V.prototype,`view`,null),e([f()],V.prototype,`fullOpacity`,null),e([f()],V.prototype,`updatePolicy`,null),e([f()],V.prototype,`drapeSourceType`,void 0),e([f()],V.prototype,`scaleVisibilitySuspended`,null),e([f()],V.prototype,`renderer`,null),e([f()],V.prototype,`_featureStore`,void 0),e([f()],V.prototype,`_filterVisibility`,void 0),e([f()],V.prototype,`_overlayRenderer`,null),e([f()],V.prototype,`_overlaySpatialReference`,null),e([f()],V.prototype,`_rendererParameters`,null),e([f()],V.prototype,`_materialParameters`,null),e([f()],V.prototype,`_densityParameters`,null),e([f()],V.prototype,`_radiusParameter`,null),e([f()],V.prototype,`_resolutionForScaleParameter`,null),e([f()],V.prototype,`_colorRampParameter`,null),e([f()],V.prototype,`_pixelRatioParameter`,null),e([f()],V.prototype,`_densityMapPixelRatio`,null),e([f()],V.prototype,`_renderGeometries`,void 0),e([f()],V.prototype,`_material`,void 0),e([f()],V.prototype,`_materialWithField`,void 0),e([f()],V.prototype,`_renderView`,null),e([f()],V.prototype,`_featuresArePoints`,null),e([f()],V.prototype,`_loadedPointGraphics`,null),e([f()],V.prototype,`_heatmapRenderer`,null),e([f()],V.prototype,`_heatmapRendererFieldName`,null),e([f()],V.prototype,`_heatmapRendererField`,null),e([f()],V.prototype,`_heatmapRendererFieldIsNumeric`,null),e([f()],V.prototype,`_fieldTotal`,void 0),e([f()],V.prototype,`_drapeSourceRenderer`,void 0),e([f()],V.prototype,`_isScaleRangeActive`,null),V=e([p(`esri.views.3d.layers.support.HeatmapFeatureProcessor`)],V);const H=i([0,0,0,0,0,0,0,0],a);export{V as HeatmapFeatureProcessor,B as maxRadiusPt};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isScreenRect as e,createScreenPoint as t}from"../../../core/screenUtils.js";import{isTiledLayer as n,isLayerWithFlowRenderer as r}from"../../../layers/support/layerUtils.js";import{hitTestSelectSimilarDistance as i}from"../../support/hitTestSelectUtils.js";import{isScaleRangeActive as a,scaleBoundsPredicate as o}from"../../support/layerViewUtils.js";async function s(s,d){let f=await i(s,d),{results:p}=f,m=f.ground,h=e(d)?s.toMap(t(d.x+d.width/2,d.y+d.height/2)):m.mapPoint,g=h!=null,_=[],v=u(s),y=m.layer==null,b=g?c(s,v,y):l,x=0,S=0,C=()=>{let e=b.layerViews[S++];if(!g||!e||!(`fetchPopupFeaturesAtTarget`in e))return;let t=h,i=e.layer;if(n(i)&&`effectiveScaleRange`in i){let{minScale:e,maxScale:n}=i.effectiveScaleRange;if(a(e,n)){if(r(i)&&!o(s.scale,e,n))return;let a=s.basemapTerrain.getScale(t);if(!o(a,e,n))return}}_.push({geometry:t,layerView:e})},w=null;for(;x<p.length||S<b.layerViews.length;){let e=p[x];if(e&&e.type!==`graphic`){++x;continue}if(e?.layer?.type===`scene`&&e?.layer?.parent===s?.map?.basemap){++x;continue}if(e){let t=e.layer?.uid,n=b.layerUids.has(t)&&e.distance===m.distance,r=v.get(e.layer?.uid);if(w??=e.mapPoint,S<b.layerViews.length&&(n||(e.distance??0)>m.distance)&&b.layerViews[S]!==r){C();continue}_.push({graphic:e.graphic,layerView:r}),++x}else C()}return w??=h,{hits:_,location:w}}function c(e,t,n){let r=new Set,i=new Set,a=e=>{e&&(r.add(e.layer.uid),i.add(e))};if(n){let{basemapTerrain:t}=e,n=t.numLayers(1);for(let e=n-1;e>=0;e--)a(t.layerViewByIndex(e,1))}let o=e.overlayManager.renderer.layers;for(let{uid:e}of o)a(t.get(e));return{layerUids:r,layerViews:Array.from(i).reverse()}}const l={layerUids:new Set,layerViews:[]};function u(e){let t=new Map;for(let n of e.allLayerViews){let e=n.layer.uid;t.set(e,n)}return t}export{s as popupHitTest};
2
+ import{isScreenRect as e,createScreenPoint as t}from"../../../core/screenUtils.js";import{isScaleRangeActive as n,scaleBoundsPredicate as r}from"../../../geometry/support/scaleUtils.js";import{isTiledLayer as i,isLayerWithFlowRenderer as a}from"../../../layers/support/layerUtils.js";import{hitTestSelectSimilarDistance as o}from"../../support/hitTestSelectUtils.js";async function s(s,d){let f=await o(s,d),{results:p}=f,m=f.ground,h=e(d)?s.toMap(t(d.x+d.width/2,d.y+d.height/2)):m.mapPoint,g=h!=null,_=[],v=u(s),y=m.layer==null,b=g?c(s,v,y):l,x=0,S=0,C=()=>{let e=b.layerViews[S++];if(!g||!e||!(`fetchPopupFeaturesAtTarget`in e))return;let t=h,o=e.layer;if(i(o)&&`effectiveScaleRange`in o){let{minScale:e,maxScale:i}=o.effectiveScaleRange;if(n(e,i)){if(a(o)&&!r(s.scale,e,i))return;let n=s.basemapTerrain.getScale(t);if(!r(n,e,i))return}}_.push({geometry:t,layerView:e})},w=null;for(;x<p.length||S<b.layerViews.length;){let e=p[x];if(e&&e.type!==`graphic`){++x;continue}if(e?.layer?.type===`scene`&&e?.layer?.parent===s?.map?.basemap){++x;continue}if(e){let t=e.layer?.uid,n=b.layerUids.has(t)&&e.distance===m.distance,r=v.get(e.layer?.uid);if(w??=e.mapPoint,S<b.layerViews.length&&(n||(e.distance??0)>m.distance)&&b.layerViews[S]!==r){C();continue}_.push({graphic:e.graphic,layerView:r}),++x}else C()}return w??=h,{hits:_,location:w}}function c(e,t,n){let r=new Set,i=new Set,a=e=>{e&&(r.add(e.layer.uid),i.add(e))};if(n){let{basemapTerrain:t}=e,n=t.numLayers(1);for(let e=n-1;e>=0;e--)a(t.layerViewByIndex(e,1))}let o=e.overlayManager.renderer.layers;for(let{uid:e}of o)a(t.get(e));return{layerUids:r,layerViews:Array.from(i).reverse()}}const l={layerUids:new Set,layerViews:[]};function u(e){let t=new Map;for(let n of e.allLayerViews){let e=n.layer.uid;t.set(e,n)}return t}export{s as popupHitTest};
package/views/View2D.d.ts CHANGED
@@ -903,7 +903,7 @@ export default abstract class View2D extends View2DSuperclass {
903
903
  * | Layer type | Hit test behavior |
904
904
  * | :--- | :--- |
905
905
  * | [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/), [CatalogFootprintLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/catalog/CatalogFootprintLayer/), [CSVLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CSVLayer/), [GeoJSONLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GeoJSONLayer/), [OGCFeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/OGCFeatureLayer/), [OrientedImageryLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/OrientedImageryLayer/), [ParquetLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ParquetLayer/), [StreamLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/StreamLayer/), [SubtypeGroupLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SubtypeGroupLayer/), [WFSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WFSLayer/) | Returns all intersecting [features](https://developers.arcgis.com/javascript/latest/references/core/views/types/#GraphicHit) at the hit location. |
906
- * | [GeoRSSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GeoRSSLayer/), [GraphicsLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GraphicsLayer/), [KMLLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KMLLayer/), [MapNotesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapNotesLayer/) | Returns all intersecting [features](https://developers.arcgis.com/javascript/latest/references/core/views/types/#GraphicHit) at the hit location. |
906
+ * | [GeoRSSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GeoRSSLayer/), [GraphicsLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GraphicsLayer/), [KMLLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KMLLayer/), [MapNotesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapNotesLayer/), [SketchLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SketchLayer/) | Returns all intersecting [features](https://developers.arcgis.com/javascript/latest/references/core/views/types/#GraphicHit) at the hit location. |
907
907
  * | [ImageryLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/), [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryTileLayer/)| Returns [result](https://developers.arcgis.com/javascript/latest/references/core/views/types/#RasterHit) containing raster pixel value used in rendering and bandId info on intersecting pixels. Support was added in version 5.1. The `screenRect` hitTarget returns hit result at the center of the rectangle. |
908
908
  * | [VectorTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/VectorTileLayer/) | Returns a result for all intersecting [features](https://developers.arcgis.com/javascript/latest/references/core/views/types/#GraphicHit) containing attributes of style layers (as of version 4.29; in prior releases, only the topmost style layer result was returned). In addition, the graphic's [origin](https://developers.arcgis.com/javascript/latest/references/core/Graphic/#origin) contains the style layer's [id](https://maplibre.org/maplibre-style-spec/layers/#id) and layer index within the [vector tile style](https://doc.arcgis.com/en/arcgis-online/reference/tile-layers.htm#ESRI_SECTION1_8F68399EB47B48FF9EF46719FCC96978). Spatial information about the actual feature represented in the style layer is returned only if the style layer is a [symbol layer](https://maplibre.org/maplibre-style-spec/layers/#symbol). Otherwise, the graphic's geometry is `null`. |
909
909
  * | [MediaLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MediaLayer/) | Returns [result](https://developers.arcgis.com/javascript/latest/references/core/views/types/#MediaHit) containing all media elements if the hit is made on intersecting elements. |
@@ -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 has from"../../../core/has.js";import n from"../../../core/Logger.js";import{watch as r,syncAndInitial as i}from"../../../core/reactiveUtils.js";import{sqlAnd as a}from"../../../core/sql.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import c from"../../../layers/support/FeatureFilter.js";import{getFloorFilterClause as l}from"../../../layers/support/floorFilterUtils.js";import{isSubtypeGroupLayer as u,isFeatureLayer as d}from"../../../layers/support/layerUtils.js";import{isUtilityNetworkWebMap as f}from"./snappingUtils.js";import{scaleBoundsPredicate as p}from"../../support/layerViewUtils.js";let m=class extends t{set attributeRulesEnabled(e){this._set(`attributeRulesEnabled`,e),e&&this.loadRules()}get layerView(){return this.view?.allLayerViews?.find(e=>e.layer===this.layer)}get valid(){let{_valid:e,snappingSource:t,layer:n}=this;return!t||!n?!1:e}get subtypeFilter(){let{layer:e,snappingSource:t}=this;if(!u(e)||!e.subtypes?.length||!t)return{mode:`not-in-use`,filter:null};let n=t.layerSource.sublayerSources.filter(e=>e.enabled&&e.layer.visible&&p(this.view?.scale,e.layer.effectiveScaleRange.minScale,e.layer.effectiveScaleRange.maxScale)).map(e=>e.layer.subtypeCode);if(!n.length)return{mode:`none-visible`,filter:null};if(n.length===e.subtypes.length)return{mode:`all-visible`,filter:null};let r=e.fieldsIndex.get(e.subtypeField)?.name??e.subtypeField;return n.length===1?{mode:`in-use`,filter:`${r} = ${n.getItemAt(0)}`}:{mode:`in-use`,filter:`${r} IN (${n.join(`, `)})`}}get floorFilter(){let{view:e,layer:t}=this;return!e||!t?null:l({view:e,layer:t})}constructor(e){super(e),this.layer=null,this.snappingSource=null,this.rulesTable=null,this._valid=null}initialize(){if(!this.snappingSource||!this.layer){this._valid=!1;return}let{layer:e,snappingSource:t}=this;if(`refresh`in e){let n=e;this.addHandles(n.on(`refresh`,()=>t.refresh()))}this.loadRules(),this.addHandles([r(()=>t.updating,e=>t.layerSource.updating=e,i),r(()=>t.availability,e=>t.layerSource.availability=e,i)])}getFetchCandidatesParameters(e,t,n){if(!this.valid)return[];let{layer:r,layerView:i,floorFilter:o,rulesTable:s,subtypeFilter:l}=this,p={distance:n,mode:this.view?.type??`2d`,point:e,coordinateHelper:t.coordinateHelper,...h(),filter:i&&`filter`in i?i.filter:null};if(o&&(p.filter=g(p.filter,o)),l.mode!==`not-in-use`&&l.mode!==`all-visible`){if(l.mode===`none-visible`)return[];p.filter?p.filter.where=a(p.filter.where,l.mode):p.filter=new c({where:l.filter})}if(!this.attributeRulesEnabled)return[p];let m=t.feature,_=m?.sourceLayer?.type===`subtype-sublayer`?m.sourceLayer.parent:m?.sourceLayer;if(s&&m&&f(this.view?.map)&&(d(r)||u(r))&&(d(_)||u(_))&&this.view.map.utilityNetworks?.find(e=>e.isUtilityLayer(_))){if(s.loadStatus!==`loaded`)return[];let e=[],t=r.layerId,n=s.getFeatureSQL(_,m)?.[t];if(!n)return[];let i=n.anyVertex,a=n.endVertex;return a&&i&&a===i&&(a=``),a&&e.push({...p,returnEdge:!1,vertexMode:`ends`,filter:g(p.filter,a)}),i&&e.push({...p,returnEdge:has(`snapping-include-edges-when-applying-any-vertex-rule`)??!1,vertexMode:`all`,filter:g(p.filter,i)}),e}return[p]}async loadRules(){this._valid=null;let{layer:e,view:t,attributeRulesEnabled:r}=this;if(r&&e&&t&&f(t?.map)&&(d(e)||u(e)))try{await Promise.allSettled(t.map.utilityNetworks?.map(e=>e.load())??[]);let n=t.map.utilityNetworks?.find(t=>t.isUtilityLayer(e));n&&(this.rulesTable=await n.getRulesTable(),await this.rulesTable?.load())}catch{this._valid=!1,n.getLogger(`esri.views.interactive.snapping.FeatureSnappingSourceInfo`).error(`Failed to load rules table for snapping source`,e.title);return}this._valid=!0}remove(){this.destroy()}destroy(){this.snappingSource?.destroy()}};e([o({constructOnly:!0})],m.prototype,`layer`,void 0),e([o({constructOnly:!0})],m.prototype,`snappingSource`,void 0),e([o({constructOnly:!0})],m.prototype,`view`,void 0),e([o({value:!1})],m.prototype,`attributeRulesEnabled`,null),e([o()],m.prototype,`layerView`,null),e([o()],m.prototype,`rulesTable`,void 0),e([o()],m.prototype,`valid`,null),e([o()],m.prototype,`subtypeFilter`,null),e([o()],m.prototype,`floorFilter`,null),e([o()],m.prototype,`_valid`,void 0),m=e([s(`esri.views.interactive.snapping.FeatureSnappingSourceInfo`)],m);function h(){return{returnEdge:!0,vertexMode:`all`}}function g(e,t){return e==null?new c({where:t}):e.where?new c({where:a(e.where,t)}):new c({where:t})}export{m as FeatureSnappingSourceInfo};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import has from"../../../core/has.js";import n from"../../../core/Logger.js";import{watch as r,syncAndInitial as i}from"../../../core/reactiveUtils.js";import{sqlAnd as a}from"../../../core/sql.js";import{property as o,subclass as s}from"../../../core/accessorSupport/decorators.js";import{scaleBoundsPredicate as c}from"../../../geometry/support/scaleUtils.js";import l from"../../../layers/support/FeatureFilter.js";import{getFloorFilterClause as u}from"../../../layers/support/floorFilterUtils.js";import{isSubtypeGroupLayer as d,isFeatureLayer as f}from"../../../layers/support/layerUtils.js";import{isUtilityNetworkWebMap as p}from"./snappingUtils.js";let m=class extends t{set attributeRulesEnabled(e){this._set(`attributeRulesEnabled`,e),e&&this.loadRules()}get layerView(){return this.view?.allLayerViews?.find(e=>e.layer===this.layer)}get valid(){let{_valid:e,snappingSource:t,layer:n}=this;return!t||!n?!1:e}get subtypeFilter(){let{layer:e,snappingSource:t}=this;if(!d(e)||!e.subtypes?.length||!t)return{mode:`not-in-use`,filter:null};let n=t.layerSource.sublayerSources.filter(e=>e.enabled&&e.layer.visible&&c(this.view?.scale,e.layer.effectiveScaleRange.minScale,e.layer.effectiveScaleRange.maxScale)).map(e=>e.layer.subtypeCode);if(!n.length)return{mode:`none-visible`,filter:null};if(n.length===e.subtypes.length)return{mode:`all-visible`,filter:null};let r=e.fieldsIndex.get(e.subtypeField)?.name??e.subtypeField;return n.length===1?{mode:`in-use`,filter:`${r} = ${n.getItemAt(0)}`}:{mode:`in-use`,filter:`${r} IN (${n.join(`, `)})`}}get floorFilter(){let{view:e,layer:t}=this;return!e||!t?null:u({view:e,layer:t})}constructor(e){super(e),this.layer=null,this.snappingSource=null,this.rulesTable=null,this._valid=null}initialize(){if(!this.snappingSource||!this.layer){this._valid=!1;return}let{layer:e,snappingSource:t}=this;if(`refresh`in e){let n=e;this.addHandles(n.on(`refresh`,()=>t.refresh()))}this.loadRules(),this.addHandles([r(()=>t.updating,e=>t.layerSource.updating=e,i),r(()=>t.availability,e=>t.layerSource.availability=e,i)])}getFetchCandidatesParameters(e,t,n){if(!this.valid)return[];let{layer:r,layerView:i,floorFilter:o,rulesTable:s,subtypeFilter:c}=this,u={distance:n,mode:this.view?.type??`2d`,point:e,coordinateHelper:t.coordinateHelper,...h(),filter:i&&`filter`in i?i.filter:null};if(o&&(u.filter=g(u.filter,o)),c.mode!==`not-in-use`&&c.mode!==`all-visible`){if(c.mode===`none-visible`)return[];u.filter?u.filter.where=a(u.filter.where,c.mode):u.filter=new l({where:c.filter})}if(!this.attributeRulesEnabled)return[u];let m=t.feature,_=m?.sourceLayer?.type===`subtype-sublayer`?m.sourceLayer.parent:m?.sourceLayer;if(s&&m&&p(this.view?.map)&&(f(r)||d(r))&&(f(_)||d(_))&&this.view.map.utilityNetworks?.find(e=>e.isUtilityLayer(_))){if(s.loadStatus!==`loaded`)return[];let e=[],t=r.layerId,n=s.getFeatureSQL(_,m)?.[t];if(!n)return[];let i=n.anyVertex,a=n.endVertex;return a&&i&&a===i&&(a=``),a&&e.push({...u,returnEdge:!1,vertexMode:`ends`,filter:g(u.filter,a)}),i&&e.push({...u,returnEdge:has(`snapping-include-edges-when-applying-any-vertex-rule`)??!1,vertexMode:`all`,filter:g(u.filter,i)}),e}return[u]}async loadRules(){this._valid=null;let{layer:e,view:t,attributeRulesEnabled:r}=this;if(r&&e&&t&&p(t?.map)&&(f(e)||d(e)))try{await Promise.allSettled(t.map.utilityNetworks?.map(e=>e.load())??[]);let n=t.map.utilityNetworks?.find(t=>t.isUtilityLayer(e));n&&(this.rulesTable=await n.getRulesTable(),await this.rulesTable?.load())}catch{this._valid=!1,n.getLogger(`esri.views.interactive.snapping.FeatureSnappingSourceInfo`).error(`Failed to load rules table for snapping source`,e.title);return}this._valid=!0}remove(){this.destroy()}destroy(){this.snappingSource?.destroy()}};e([o({constructOnly:!0})],m.prototype,`layer`,void 0),e([o({constructOnly:!0})],m.prototype,`snappingSource`,void 0),e([o({constructOnly:!0})],m.prototype,`view`,void 0),e([o({value:!1})],m.prototype,`attributeRulesEnabled`,null),e([o()],m.prototype,`layerView`,null),e([o()],m.prototype,`rulesTable`,void 0),e([o()],m.prototype,`valid`,null),e([o()],m.prototype,`subtypeFilter`,null),e([o()],m.prototype,`floorFilter`,null),e([o()],m.prototype,`_valid`,void 0),m=e([s(`esri.views.interactive.snapping.FeatureSnappingSourceInfo`)],m);function h(){return{returnEdge:!0,vertexMode:`all`}}function g(e,t){return e==null?new l({where:t}):e.where?new l({where:a(e.where,t)}):new l({where:t})}export{m as FeatureSnappingSourceInfo};
@@ -32,7 +32,7 @@ export interface SnappingOptionsProperties extends BaseSnappingOptionsProperties
32
32
  * > **Things to consider:**
33
33
  * > Layer types currently supported for snapping are: [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/), [GraphicsLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GraphicsLayer/) (except Mesh geometries),
34
34
  * > [GeoJSONLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/GeoJSONLayer/), [WFSLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WFSLayer/), [CSVLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CSVLayer/),
35
- * > [MapNotesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapNotesLayer/) (2D only), [3D Object SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) (3D only), and
35
+ * > [MapNotesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapNotesLayer/) (2D only), [SketchLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SketchLayer/) (2D only), [3D Object SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) (3D only), and
36
36
  * > [BuildingSceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/BuildingSceneLayer/) (3D only).
37
37
  * > Snapping is not yet implemented when using the [Sketch widget's](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/) circle tool. It will be addressed in a future release.
38
38
  * > Enabling snapping via the `CTRL` key is not currently supported using the [Sketch widget's](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/) rectangle and circle tools. However, snapping can still be activated by setting the [enabled](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/snapping/SnappingOptions/#enabled) property to `true` in the [Sketch widget](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/) or its [view model](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/). *Note that this enables snapping for all tools. This behavior is subject to change in a future release.*
@@ -377,7 +377,7 @@ export default abstract class FeatureLikeLayerView extends LayerView {
377
377
  */
378
378
  get maximumNumberOfFeaturesExceeded(): boolean;
379
379
  /**
380
- * Creates query parameter object that can be used to [fetch aggregate features](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#queryAggregates) as they are being
380
+ * Creates a query parameter object that can be used to [fetch aggregate features](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLikeLayerView/#queryAggregates) as they are being
381
381
  * displayed. It sets the query parameter's [Query.outFields](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outFields)
382
382
  * property to `["*"]` and [Query.returnGeometry](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#returnGeometry) to `true`.
383
383
  * The output spatial reference [Query.outSpatialReference](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outSpatialReference)
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{equals as t}from"../../core/arrayUtils.js";import{createTask as n}from"../../core/asyncUtils.js";import{EventedAccessor as r}from"../../core/Evented.js";import{IdentifiableMixin as i}from"../../core/Identifiable.js";import a from"../../core/Logger.js";import{destroyMaybe as o,removeMaybe as s}from"../../core/maybe.js";import{EsriPromiseMixin as c}from"../../core/Promise.js";import{throwIfAborted as l}from"../../core/promiseUtils.js";import{property as u,subclass as d}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as f}from"../../core/support/UpdatingHandles.js";import{getAttributionItemFromUserCopyright as p,isDynamicAttributionLayer as m,createAttributionIndex as h,getAttributionItemsFromIndex as g,getAttributionItemFromAccessInformation as _,getAttributionItemFromLayerCopyright as v}from"../support/attributionUtils.js";import{validateScaleRange as y}from"../support/layerViewUtils.js";let b=class extends i(c(r)){get spatialReferenceSupported(){return!0}constructor(e){super(e),this._updatingHandles=new f,this._attributionIndexTask=null,this.layer=null,this.parent=null}initialize(){this.when().catch(e=>{if(e?.name!==`layerview:create-error`){let t=this.layer&&this.layer.id||`no id`,n=this.layer?.title||`no title`;a.getLogger(this).error(`#resolve()`,`Failed to resolve layer view (layer title: '${n}', id: '${t}')`,e)}})}destroy(){this._updatingHandles=o(this._updatingHandles),this._attributionIndexTask=s(this._attributionIndexTask),this._set(`parent`,null)}get attributionItems(){let e=this._get(`attributionItems`)??[];if(this.suspended||!this.layer?.attributionVisible)return e.length===0?e:[];if(!this.view.stationary)return e;let n=this.getAttributionItems();return t(e,n,(e,t)=>e.text===t.text)?e:n}get attributionUpdating(){return this._attributionIndexTask?!this._attributionIndexTask.finished:!1}get fullOpacity(){return(this.layer?.opacity??1)*(this.parent?.fullOpacity??1)}get suspended(){return this.destroyed||!this.canResume()}get suspendInfo(){return this.getSuspendInfo()}get legendEnabled(){return!this.suspended&&this.layer?.legendEnabled===!0}get updating(){return!!(this._updatingHandles?.updating||this.isUpdating())}get updatingProgress(){return+!this.updating}get updateSuspended(){return this.suspended}get visible(){return this.layer?.visible===!0}set visible(e){this._overrideIfSome(`visible`,e)}get visibleAtCurrentScale(){return!0}get visibleAtCurrentTimeExtent(){let e=this.view.timeExtent,t=this.layer?.visibilityTimeExtent;return!e||!t||!e.intersection(t).isEmpty}canResume(){let e=this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null;return this.visible&&this.layer?.loaded&&this.parent&&!this.parent.suspended&&this.view?.ready&&y(e)&&this.visibleAtCurrentScale&&this.visibleAtCurrentTimeExtent||!1}getSuspendInfo(){let e=this.parent?.suspended?this.parent.suspendInfo:{};this.view?.ready||(e.viewNotReady=!0),(!this.layer||!this.layer.loaded)&&(e.layerNotLoaded=!0);let t=this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null;return(!y(t)||!this.visibleAtCurrentScale)&&(e.outsideScaleRange=!0),this.visibleAtCurrentTimeExtent||(e.outsideVisibilityTimeExtent=!0),this.visible||(e.layerInvisible=!0),e}isUpdating(){return!1}getAttributionItems(){let e=p(this.layer);if(e)return[e];if(m(this.layer)&&(this._attributionIndexTask||(this._attributionIndexTask=n(async e=>{let t=await this.layer.fetchAttributionData();return l(e),h(t)}),this._updatingHandles.consumePromise(this._attributionIndexTask.promise)),this._attributionIndexTask?.finished&&this._attributionIndexTask.value))return g(this._attributionIndexTask.value,this.layer.tileInfo,this.view.scale,this.view.extent);let t=_(this.layer);if(t)return[t];let r=v(this.layer);return r?[r]:[]}};e([u({readOnly:!0})],b.prototype,`spatialReferenceSupported`,null),e([u()],b.prototype,`view`,void 0),e([u({readOnly:!0})],b.prototype,`attributionItems`,null),e([u({readOnly:!0})],b.prototype,`attributionUpdating`,null),e([u()],b.prototype,`fullOpacity`,null),e([u()],b.prototype,`layer`,void 0),e([u()],b.prototype,`parent`,void 0),e([u({readOnly:!0})],b.prototype,`suspended`,null),e([u({readOnly:!0})],b.prototype,`suspendInfo`,null),e([u({readOnly:!0})],b.prototype,`legendEnabled`,null),e([u({type:Boolean,readOnly:!0})],b.prototype,`updating`,null),e([u({readOnly:!0})],b.prototype,`updatingProgress`,null),e([u()],b.prototype,`updateSuspended`,null),e([u()],b.prototype,`visible`,null),e([u({readOnly:!0})],b.prototype,`visibleAtCurrentScale`,null),e([u({readOnly:!0})],b.prototype,`visibleAtCurrentTimeExtent`,null),b=e([d(`esri.views.layers.LayerView`)],b);export{b as default};
2
+ import{__decorate as e}from"tslib";import{equals as t}from"../../core/arrayUtils.js";import{createTask as n}from"../../core/asyncUtils.js";import{EventedAccessor as r}from"../../core/Evented.js";import{IdentifiableMixin as i}from"../../core/Identifiable.js";import a from"../../core/Logger.js";import{destroyMaybe as o,removeMaybe as s}from"../../core/maybe.js";import{EsriPromiseMixin as c}from"../../core/Promise.js";import{throwIfAborted as l}from"../../core/promiseUtils.js";import{property as u,subclass as d}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as f}from"../../core/support/UpdatingHandles.js";import{validateScaleRange as p}from"../../geometry/support/scaleUtils.js";import{getAttributionItemFromUserCopyright as m,isDynamicAttributionLayer as h,createAttributionIndex as g,getAttributionItemsFromIndex as _,getAttributionItemFromAccessInformation as v,getAttributionItemFromLayerCopyright as y}from"../support/attributionUtils.js";let b=class extends i(c(r)){get spatialReferenceSupported(){return!0}constructor(e){super(e),this._updatingHandles=new f,this._attributionIndexTask=null,this.layer=null,this.parent=null}initialize(){this.when().catch(e=>{if(e?.name!==`layerview:create-error`){let t=this.layer&&this.layer.id||`no id`,n=this.layer?.title||`no title`;a.getLogger(this).error(`#resolve()`,`Failed to resolve layer view (layer title: '${n}', id: '${t}')`,e)}})}destroy(){this._updatingHandles=o(this._updatingHandles),this._attributionIndexTask=s(this._attributionIndexTask),this._set(`parent`,null)}get attributionItems(){let e=this._get(`attributionItems`)??[];if(this.suspended||!this.layer?.attributionVisible)return e.length===0?e:[];if(!this.view.stationary)return e;let n=this.getAttributionItems();return t(e,n,(e,t)=>e.text===t.text)?e:n}get attributionUpdating(){return this._attributionIndexTask?!this._attributionIndexTask.finished:!1}get fullOpacity(){return(this.layer?.opacity??1)*(this.parent?.fullOpacity??1)}get suspended(){return this.destroyed||!this.canResume()}get suspendInfo(){return this.getSuspendInfo()}get legendEnabled(){return!this.suspended&&this.layer?.legendEnabled===!0}get updating(){return!!(this._updatingHandles?.updating||this.isUpdating())}get updatingProgress(){return+!this.updating}get updateSuspended(){return this.suspended}get visible(){return this.layer?.visible===!0}set visible(e){this._overrideIfSome(`visible`,e)}get visibleAtCurrentScale(){return!0}get visibleAtCurrentTimeExtent(){let e=this.view.timeExtent,t=this.layer?.visibilityTimeExtent;return!e||!t||!e.intersection(t).isEmpty}canResume(){let e=this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null;return this.visible&&this.layer?.loaded&&this.parent&&!this.parent.suspended&&this.view?.ready&&p(e)&&this.visibleAtCurrentScale&&this.visibleAtCurrentTimeExtent||!1}getSuspendInfo(){let e=this.parent?.suspended?this.parent.suspendInfo:{};this.view?.ready||(e.viewNotReady=!0),(!this.layer||!this.layer.loaded)&&(e.layerNotLoaded=!0);let t=this.layer&&`effectiveScaleRange`in this.layer?this.layer.effectiveScaleRange:null;return(!p(t)||!this.visibleAtCurrentScale)&&(e.outsideScaleRange=!0),this.visibleAtCurrentTimeExtent||(e.outsideVisibilityTimeExtent=!0),this.visible||(e.layerInvisible=!0),e}isUpdating(){return!1}getAttributionItems(){let e=m(this.layer);if(e)return[e];if(h(this.layer)&&(this._attributionIndexTask||(this._attributionIndexTask=n(async e=>{let t=await this.layer.fetchAttributionData();return l(e),g(t)}),this._updatingHandles.consumePromise(this._attributionIndexTask.promise)),this._attributionIndexTask?.finished&&this._attributionIndexTask.value))return _(this._attributionIndexTask.value,this.layer.tileInfo,this.view.scale,this.view.extent);let t=v(this.layer);if(t)return[t];let r=y(this.layer);return r?[r]:[]}};e([u({readOnly:!0})],b.prototype,`spatialReferenceSupported`,null),e([u()],b.prototype,`view`,void 0),e([u({readOnly:!0})],b.prototype,`attributionItems`,null),e([u({readOnly:!0})],b.prototype,`attributionUpdating`,null),e([u()],b.prototype,`fullOpacity`,null),e([u()],b.prototype,`layer`,void 0),e([u()],b.prototype,`parent`,void 0),e([u({readOnly:!0})],b.prototype,`suspended`,null),e([u({readOnly:!0})],b.prototype,`suspendInfo`,null),e([u({readOnly:!0})],b.prototype,`legendEnabled`,null),e([u({type:Boolean,readOnly:!0})],b.prototype,`updating`,null),e([u({readOnly:!0})],b.prototype,`updatingProgress`,null),e([u()],b.prototype,`updateSuspended`,null),e([u()],b.prototype,`visible`,null),e([u({readOnly:!0})],b.prototype,`visibleAtCurrentScale`,null),e([u({readOnly:!0})],b.prototype,`visibleAtCurrentTimeExtent`,null),b=e([d(`esri.views.layers.LayerView`)],b);export{b as default};
@@ -2,8 +2,7 @@ import type Collection from "../../core/Collection.js";
2
2
  import type LineOfSightLayer from "../../layers/LineOfSightLayer.js";
3
3
  import type LineOfSightAnalysisResult from "../3d/analysis/LineOfSightAnalysisResult.js";
4
4
  import type LayerView from "./LayerView.js";
5
- import type { AbortOptions } from "../../core/promiseUtils.js";
6
- import type { LineOfSightPlacementResult } from "../3d/analysis/LineOfSight/types.js";
5
+ import type { LineOfSightPlacementOptions, LineOfSightPlacementResult } from "../3d/analysis/LineOfSight/types.js";
7
6
  import type { LayerViewProperties } from "./LayerView.js";
8
7
 
9
8
  export interface LineOfSightLayerViewProperties extends LayerViewProperties, Partial<Pick<LineOfSightLayerView, "interactive">> {}
@@ -86,7 +85,7 @@ export default abstract class LineOfSightLayerView extends LayerView {
86
85
  *
87
86
  * Calling this method sets [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/layers/LineOfSightLayerView/#interactive) to `true`.
88
87
  *
89
- * @param options - An object specifying additional options.
88
+ * @param options - Additional placement options, including elevation information and an abort signal.
90
89
  * @returns A promise
91
90
  * which resolves when the operation is completed successfully - i.e. the user places an observer and/or target(s),
92
91
  * leaving the analysis in a valid state. Otherwise, the promise is rejected.
@@ -105,5 +104,5 @@ export default abstract class LineOfSightLayerView extends LayerView {
105
104
  * // cancel the placement operation at some later point
106
105
  * abortController.abort();
107
106
  */
108
- place(options?: AbortOptions | null | undefined): Promise<LineOfSightPlacementResult>;
107
+ place(options?: LineOfSightPlacementOptions | null | undefined): Promise<LineOfSightPlacementResult>;
109
108
  }
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"./FeatureLikeLayerView.js";class t extends e{constructor(){super(...arguments),this.layer=null}}export{t as default};
2
+ import e from"./FeatureLikeLayerView.js";class t extends e{constructor(){super(...arguments),this.layer=null}async _updateHasZM(){let e=this.layer.hasZ,t=this.layer.hasM;this.hasZ!==e&&this._set(`hasZ`,e),this.hasM!==t&&this._set(`hasM`,t)}}export{t as default};
@@ -36,7 +36,7 @@ export abstract class PointCloudLayerViewMixin {
36
36
  /** The point cloud layer being viewed. */
37
37
  get layer(): PointCloudLayer;
38
38
  /**
39
- * Creates query parameter object that can be used to fetch points as they are being
39
+ * Creates a query parameter object that can be used to fetch points as they are being
40
40
  * displayed. It sets the query parameter's [Query.outFields](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outFields)
41
41
  * property to `["*"]` and [Query.returnGeometry](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#returnGeometry) to `true`.
42
42
  * The output spatial reference is set to the spatial reference of the view.
@@ -112,7 +112,7 @@ export default abstract class SceneLayerView extends LayerView {
112
112
  */
113
113
  get maximumNumberOfFeaturesExceeded(): boolean;
114
114
  /**
115
- * Creates query parameter object that can be used to fetch features as they are being
115
+ * Creates a query parameter object that can be used to fetch features as they are being
116
116
  * displayed. It sets the query parameter's [Query.outFields](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#outFields)
117
117
  * property to `["*"]` and [Query.returnGeometry](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#returnGeometry) to `true`.
118
118
  * The output spatial reference is set to the spatial reference of the view. The filter that currently
@@ -1,8 +1,7 @@
1
1
  import type Viewshed from "../../analysis/Viewshed.js";
2
2
  import type ViewshedLayer from "../../layers/ViewshedLayer.js";
3
3
  import type LayerView from "./LayerView.js";
4
- import type { AbortOptions } from "../../core/promiseUtils.js";
5
- import type { ViewshedPlacementResult } from "../3d/analysis/Viewshed/types.js";
4
+ import type { ViewshedPlacementOptions, ViewshedPlacementResult } from "../3d/analysis/Viewshed/types.js";
6
5
  import type { LayerViewProperties } from "./LayerView.js";
7
6
 
8
7
  export interface ViewshedLayerViewProperties extends LayerViewProperties, Partial<Pick<ViewshedLayerView, "interactive" | "selectedViewshed">> {}
@@ -68,7 +67,7 @@ export default abstract class ViewshedLayerView extends LayerView {
68
67
  *
69
68
  * Calling this method sets [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/layers/ViewshedLayerView/#interactive) to `true`.
70
69
  *
71
- * @param options - An object specifying additional options.
70
+ * @param options - Additional placement options, including elevation information and an abort signal.
72
71
  * @returns A promise which resolves when creation is completed successfully or rejected if it is
73
72
  * canceled.
74
73
  * @example
@@ -85,7 +84,7 @@ export default abstract class ViewshedLayerView extends LayerView {
85
84
  * // cancel the placement operation at some later point
86
85
  * abortController.abort();
87
86
  */
88
- createViewsheds(options?: AbortOptions | null | undefined): Promise<void>;
87
+ createViewsheds(options?: ViewshedPlacementOptions | null | undefined): Promise<void>;
89
88
  /**
90
89
  * Starts the interactive placement of a single viewshed, adding it to the [layer](https://developers.arcgis.com/javascript/latest/references/core/views/layers/ViewshedLayerView/#layer)'s
91
90
  * [ViewshedLayer.source](https://developers.arcgis.com/javascript/latest/references/core/layers/ViewshedLayer/#source).
@@ -97,7 +96,7 @@ export default abstract class ViewshedLayerView extends LayerView {
97
96
  *
98
97
  * Calling this method sets [interactive](https://developers.arcgis.com/javascript/latest/references/core/views/layers/ViewshedLayerView/#interactive) to `true`.
99
98
  *
100
- * @param options - An object specifying additional options.
99
+ * @param options - Additional placement options, including elevation information and an abort signal.
101
100
  * @returns A promise which
102
101
  * resolves when the operation is completed successfully or rejected if it is canceled.
103
102
  * @since 4.33
@@ -115,5 +114,5 @@ export default abstract class ViewshedLayerView extends LayerView {
115
114
  * // cancel the placement operation at some later point
116
115
  * abortController.abort();
117
116
  */
118
- place(options?: AbortOptions | null | undefined): Promise<ViewshedPlacementResult>;
117
+ place(options?: ViewshedPlacementOptions | null | undefined): Promise<ViewshedPlacementResult>;
119
118
  }
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../core/Error.js";import has from"../../core/has.js";function t(e){return e&&typeof e.highlight==`function`}function n(e){return e&&typeof e.maskOccludee==`function`}function r(e,t,n){return e==null||e>=n&&(t===0||e<=t)}function i(e,t){if(t&&e){let{minScale:n,maxScale:i}=e;if(a(n,i))return r(t,n,i)}return!0}function a(e,t){return e!=null&&e>0||t!=null&&t>0}function o(e){return!e?.minScale||!e.maxScale||e.minScale>=e.maxScale}const s=()=>!has(`disable-feature:layer-based-scale-visibility`);function c(e){return typeof e==`object`&&!!e&&`createQuery`in e&&`queryFeatures`in e&&`layer`in e&&`view`in e}function l(t,n,r){return new e(`layerview:spatial-reference-incompatible`,`The spatial reference of this ${t} (wkid: ${n??`undefined`}) is incompatible with the spatial reference of the view (wkid: ${r??`undefined`}).`,{})}function u(e){return e.type===`integrated-mesh-3d`||e.type===`integrated-mesh-3dtiles`}export{s as hasLayerBasedScaleVisibility,t as highlightsSupported,i as isInEffectiveScaleRange,u as isIntegratedMeshLayerView,a as isScaleRangeActive,c as isSelectableLayerView2D,n as occludeesSupported,r as scaleBoundsPredicate,l as spatialReferenceIncompatibleError,o as validateScaleRange};
2
+ import e from"../../core/Error.js";import has from"../../core/has.js";function t(e){return e&&typeof e.highlight==`function`}function n(e){return e&&typeof e.maskOccludee==`function`}const r=()=>!has(`disable-feature:layer-based-scale-visibility`);function i(e){return typeof e==`object`&&!!e&&`createQuery`in e&&`queryFeatures`in e&&`layer`in e&&`view`in e}function a(t,n,r){return new e(`layerview:spatial-reference-incompatible`,`The spatial reference of this ${t} (wkid: ${n??`undefined`}) is incompatible with the spatial reference of the view (wkid: ${r??`undefined`}).`,{})}function o(e){return e.type===`integrated-mesh-3d`||e.type===`integrated-mesh-3dtiles`}export{r as hasLayerBasedScaleVisibility,t as highlightsSupported,o as isIntegratedMeshLayerView,i as isSelectableLayerView2D,n as occludeesSupported,a as spatialReferenceIncompatibleError};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../core/Error.js";import{getLayersWithChartSupport as t}from"../../layers/support/layerUtils.js";import{newUnsupportedError as n,webDocUnsupportedErrorSet as r}from"./unsupportedErrors.js";async function i(e){let t=[];for(let n of e.allLayers)if(`beforeSave`in n&&typeof n.beforeSave==`function`){let e=n.beforeSave();e&&t.push(e)}await Promise.allSettled(t)}function a(t,i,a){let o=(t.messages??[]).filter(({type:e})=>e===`error`).map(({name:t,message:n,details:r})=>new e(t,n,r));if(t.blockedRelativeUrls&&(o=o.concat(t.blockedRelativeUrls.map(e=>n(`url`,`Relative url '${e}' is not supported`)))),a){let{ignoreUnsupported:e,supplementalUnsupportedErrors:t=[],requiredPropertyChecksDisabled:n}=a;e&&(o=o.filter(({name:e})=>!(r.has(e)||t.includes(e)))),n&&(o=o.filter(e=>e.name!==`web-document-write:property-required`))}if(o.length>0)throw new e(i.errorName,`Failed to save due to unsupported or invalid content. See 'details.errors' for more detailed information`,{errors:o})}function o(e){return t(e).some(e=>!!e.charts?.length)}export{i as beforeSave,a as evaluateWriteErrors,o as hasCharts};
2
+ import e from"../../core/Error.js";import{hasSamePortal as t}from"../../core/urlUtils.js";import{getLayersWithChartSupport as n}from"../../layers/support/layerUtils.js";import r from"../../portal/Portal.js";import{newUnsupportedError as i,webDocUnsupportedErrorSet as a}from"./unsupportedErrors.js";async function o(e){let t=[];for(let n of e.allLayers)if(`beforeSave`in n&&typeof n.beforeSave==`function`){let e=n.beforeSave();e&&t.push(e)}await Promise.allSettled(t)}function s(t,n,r){let o=(t.messages??[]).filter(({type:e})=>e===`error`).map(({name:t,message:n,details:r})=>new e(t,n,r));if(t.blockedRelativeUrls&&(o=o.concat(t.blockedRelativeUrls.map(e=>i(`url`,`Relative url '${e}' is not supported`)))),r){let{ignoreUnsupported:e,supplementalUnsupportedErrors:t=[],requiredPropertyChecksDisabled:n}=r;e&&(o=o.filter(({name:e})=>!(a.has(e)||t.includes(e)))),n&&(o=o.filter(e=>e.name!==`web-document-write:property-required`))}if(o.length>0)throw new e(n.errorName,`Failed to save due to unsupported or invalid content. See 'details.errors' for more detailed information`,{errors:o})}function c(e){return n(e).some(e=>!!e.charts?.length)}function l(e,n){let i=n?.portal,a=e?.id&&(e.portal||r.getDefault());return!!i&&!!a&&!t(a.restUrl,i.restUrl)}export{o as beforeSave,s as evaluateWriteErrors,c as hasCharts,l as isCrossPortalWrite};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../core/Error.js";import t from"../../core/Warning.js";const n=[`layer`,`property`,`renderer`,`symbol`,`symbol-layer`,`url`,`visual-variable`,`type`,`elevation-profile-line`,`field-configuration-field-format`].map(e=>`${e}:unsupported`),r=new Set(n);function i(e,t,n){if(!e)return;let r=`${e.origin}/${e.layerContainerType||`operational-layers`}`;e?.messages?.push(c(`layer`,`Layer (${t.title}, ${t.id}) of type '${t.declaredClass}' is not supported in the context of '${r}'${n?`: ${n}`:``}`,{layer:t}))}function a(e,t,n){if(!e)return;let r=`${e.origin}/${e.layerContainerType||`operational-layers`}`;e?.messages?.push(c(`property`,`Property '${t}' is not supported in the context of '${r}'${n?`: ${n}`:``}`))}function o(e,t,n,r){if(!e)return;let i=`${e.origin}/${e.layerContainerType||`operational-layers`}`;e?.messages?.push(c(`symbol`,`Symbol '${t.declaredClass}' is not supported in the context of '${i}'${n?`: ${n}`:``}`,r))}function s(n,r,i,a,o){n&&n?.messages?.push(l(r===`warning`?t:e,i,a,o))}function c(t,n,r){return l(e,t,n,r)}function l(e,t,n,r){return new e(`${t}:unsupported`,n,r)}export{i as addLayerUnsupportedError,a as addPropertyUnsupportedError,o as addSymbolUnsupportedError,s as addUnsupportedMessage,c as newUnsupportedError,r as webDocUnsupportedErrorSet};
2
+ import e from"../../core/Error.js";import t from"../../core/Warning.js";const n=[`layer`,`property`,`renderer`,`symbol`,`symbol-layer`,`url`,`visual-variable`,`type`,`elevation-profile-line`,`field-configuration-field-format`,`parquet-data`].map(e=>`${e}:unsupported`),r=new Set(n);function i(e,t,n){if(!e)return;let r=`${e.origin}/${e.layerContainerType||`operational-layers`}`;e?.messages?.push(c(`layer`,`Layer (${t.title}, ${t.id}) of type '${t.declaredClass}' is not supported in the context of '${r}'${n?`: ${n}`:``}`,{layer:t}))}function a(e,t,n){if(!e)return;let r=`${e.origin}/${e.layerContainerType||`operational-layers`}`;e?.messages?.push(c(`property`,`Property '${t}' is not supported in the context of '${r}'${n?`: ${n}`:``}`))}function o(e,t,n,r){if(!e)return;let i=`${e.origin}/${e.layerContainerType||`operational-layers`}`;e?.messages?.push(c(`symbol`,`Symbol '${t.declaredClass}' is not supported in the context of '${i}'${n?`: ${n}`:``}`,r))}function s(n,r,i,a,o){n&&n?.messages?.push(l(r===`warning`?t:e,i,a,o))}function c(t,n,r){return l(e,t,n,r)}function l(e,t,n,r){return new e(`${t}:unsupported`,n,r)}export{i as addLayerUnsupportedError,a as addPropertyUnsupportedError,o as addSymbolUnsupportedError,s as addUnsupportedMessage,c as newUnsupportedError,r as webDocUnsupportedErrorSet};
@@ -5,12 +5,14 @@ import type SketchLabelOptions from "../views/interactive/sketch/SketchLabelOpti
5
5
  import type SketchTooltipOptions from "../views/interactive/sketch/SketchTooltipOptions.js";
6
6
  import type SketchValueOptions from "../views/interactive/sketch/SketchValueOptions.js";
7
7
  import type SnappingOptions from "../views/interactive/snapping/SnappingOptions.js";
8
+ import type SelectionOperation from "../views/selection/SelectionOperation.js";
8
9
  import type Widget from "./Widget.js";
9
10
  import type EditorViewModel from "./Editor/EditorViewModel.js";
10
11
  import type VisibleElements from "./Editor/VisibleElements.js";
11
12
  import type EditorItem from "./Editor/support/EditorItem.js";
12
13
  import type { Icon } from "@esri/calcite-components/components/calcite-icon";
13
14
  import type { MapViewOrSceneView } from "../views/MapViewOrSceneView.js";
15
+ import type { SelectionToolName } from "../views/selection/types.js";
14
16
  import type { WidgetProperties } from "./Widget.js";
15
17
  import type { EditorViewModelEvents, EditorViewModelProperties } from "./Editor/EditorViewModel.js";
16
18
  import type { CancelWorkflowOptions, CreationInfo, EditorStartCreateFeaturesWorkflowAtFeatureEditParameters, EditorStartCreateFeaturesWorkflowAtFeatureTypeSelectionParameters, EditorStartMergeFeaturesWorkflowOptions, EditorStartSplitFeatureWorkflowOptions, FeatureInfo, LayerInfo, SupportingWidgetDefaults } from "./Editor/types.js";
@@ -629,6 +631,14 @@ export default class Editor extends Widget {
629
631
  */
630
632
  get visibleElements(): VisibleElements;
631
633
  set visibleElements(value: VisibleElementsProperties);
634
+ /**
635
+ * Activates a selection tool specified by name. Additionally, cancels the previously active selection operation.
636
+ *
637
+ * @param toolName - The name of the selection tool to activate.
638
+ * @returns A reference to the active selection operation.
639
+ * @since 5.2
640
+ */
641
+ activateSelectionTool(toolName: SelectionToolName): SelectionOperation | undefined;
632
642
  /**
633
643
  * Cancels any active selection operation.
634
644
  *
@@ -119,6 +119,7 @@ export type LegendStyle = CardView | ClassicView;
119
119
  * > [KMLLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KMLLayer/),
120
120
  * > [MapNotesLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/MapNotesLayer/),
121
121
  * > [OpenStreetMapLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/OpenStreetMapLayer/),
122
+ * > [SketchLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SketchLayer/),
122
123
  * > [VectorTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/VectorTileLayer/),
123
124
  * > [VideoLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/VideoLayer/), and
124
125
  * > [WebTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/WebTileLayer/).