@arcgis/core 5.2.0-next.112 → 5.2.0-next.113

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 (419) hide show
  1. package/Ground.d.ts +4 -5
  2. package/Ground.js +1 -1
  3. package/arcgisGlobal.d.ts +5 -0
  4. package/assets/esri/core/workers/RemoteClient.js +1 -1
  5. package/assets/esri/core/workers/chunks/01ca17092545d72be7b6.js +1 -0
  6. package/assets/esri/core/workers/chunks/{f5a988bb850f7a7af143.js → 05b373a663cb5d4d722f.js} +1 -1
  7. package/assets/esri/core/workers/chunks/{36f8caeb574dcd5c0ed5.js → 0b727d7bf3e36e146725.js} +1 -1
  8. package/assets/esri/core/workers/chunks/0c65862e3dd810015491.js +1 -0
  9. package/assets/esri/core/workers/chunks/0e3e58ba8e2d358121a5.js +1 -0
  10. package/assets/esri/core/workers/chunks/0edebc6c516f0b9dac7b.js +1 -0
  11. package/assets/esri/core/workers/chunks/1004e77593dfa506cd5d.js +1 -0
  12. package/assets/esri/core/workers/chunks/184942ea601237c8241a.js +1 -0
  13. package/assets/esri/core/workers/chunks/20de0ea9fa08a6545978.js +1 -0
  14. package/assets/esri/core/workers/chunks/214d63813d268afc265d.js +1 -0
  15. package/assets/esri/core/workers/chunks/22e85819e23202a8ba90.js +1 -0
  16. package/assets/esri/core/workers/chunks/{6e677505d257e0848075.js → 23f9ab77e4e263f82636.js} +1 -1
  17. package/assets/esri/core/workers/chunks/28a04887ecaee5445d14.js +1 -0
  18. package/assets/esri/core/workers/chunks/{2fc5c1504691badc7792.js → 2ac2d0a7623dd060c144.js} +1 -1
  19. package/assets/esri/core/workers/chunks/2afce71e8b6ae86e0792.js +1 -0
  20. package/assets/esri/core/workers/chunks/36792b8a85e88044cb49.js +1 -0
  21. package/assets/esri/core/workers/chunks/36a7e19f43517aa94577.js +1 -0
  22. package/assets/esri/core/workers/chunks/{6e6cdff4bbe1ff2f44ac.js → 3ab25279aaa30f035038.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{e6dae16208f6978b59e0.js → 3b499cfc89c8f87cdb20.js} +1 -1
  24. package/assets/esri/core/workers/chunks/445b0ca1b70730c9a2e6.js +1 -0
  25. package/assets/esri/core/workers/chunks/{24673aac70d6c949b6fa.js → 4bf2cc4d092601ff2b86.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{d45483dd0dc2853b18b7.js → 4bfd63f3cf9208eb839b.js} +33 -33
  27. package/assets/esri/core/workers/chunks/501df20cdd09384f6ee2.js +1 -0
  28. package/assets/esri/core/workers/chunks/510a190a6f0a60ae38c3.js +1 -0
  29. package/assets/esri/core/workers/chunks/{89a785f8b61263e2d592.js → 552c92b01a5f02a115c5.js} +1 -1
  30. package/assets/esri/core/workers/chunks/564fdf0d663b773806cc.js +1 -0
  31. package/assets/esri/core/workers/chunks/{d9270f4935eb0d044db3.js → 57328c206f1e699ac06f.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{50951fb13013b11b8a24.js → 58e62c8ce1292f4d3b06.js} +1 -1
  33. package/assets/esri/core/workers/chunks/5aee7739afb5160d4ace.js +1 -0
  34. package/assets/esri/core/workers/chunks/5b9925f23d4b10a7087e.js +1 -0
  35. package/assets/esri/core/workers/chunks/5f79ba5639067f734791.js +1 -0
  36. package/assets/esri/core/workers/chunks/{b013b70e40dfb6ce013e.js → 60c61f34733063730386.js} +1 -1
  37. package/assets/esri/core/workers/chunks/62b1f94f4fa978d4da48.js +1 -0
  38. package/assets/esri/core/workers/chunks/6b264006b96cbf93d8ed.js +1 -0
  39. package/assets/esri/core/workers/chunks/6b9d29ca568590358478.js +1 -0
  40. package/assets/esri/core/workers/chunks/{7c5310e0104c22da0261.js → 6c7cb7974969e3167f2b.js} +1 -1
  41. package/assets/esri/core/workers/chunks/6c82cbcd504c711a7450.js +1 -0
  42. package/assets/esri/core/workers/chunks/{e98b785e8f4edc8bd3ff.js → 6eceeca33fac8e900d9d.js} +1 -1
  43. package/assets/esri/core/workers/chunks/7232fc11b23777b6be94.js +1 -0
  44. package/assets/esri/core/workers/chunks/726ca458b98bb4334431.js +1 -0
  45. package/assets/esri/core/workers/chunks/785206da3962ba23de16.js +1 -0
  46. package/assets/esri/core/workers/chunks/{1c70620f40be02f532b5.js → 7b169eabafcc03bfaee6.js} +1 -1
  47. package/assets/esri/core/workers/chunks/7bbc3d22383388d11345.js +1 -0
  48. package/assets/esri/core/workers/chunks/{082069f80eee0407b828.js → 7edf57e31ff07af9032b.js} +1 -1
  49. package/assets/esri/core/workers/chunks/83ed38468e316302b157.js +1 -0
  50. package/assets/esri/core/workers/chunks/85c876ee9e63d5732937.js +1 -0
  51. package/assets/esri/core/workers/chunks/8f0ecf4d06ec7b67d4ed.js +1 -0
  52. package/assets/esri/core/workers/chunks/8f1c5f5e70d4b33d021d.js +1 -0
  53. package/assets/esri/core/workers/chunks/{a1916bca1af5c65be4b0.js → 90ab3c47138875070a53.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{10389c87d9c6a43363ce.js → 917dec9c004218c58950.js} +1 -1
  55. package/assets/esri/core/workers/chunks/91f451b98e0f696043df.js +1 -0
  56. package/assets/esri/core/workers/chunks/943d0026ca4d49eb3ac2.js +1 -0
  57. package/assets/esri/core/workers/chunks/982a396bd4fffa62e911.js +1 -0
  58. package/assets/esri/core/workers/chunks/98a5327fd96d9542b39f.js +1 -0
  59. package/assets/esri/core/workers/chunks/9b9a60f1e0c48aa701f0.js +1 -0
  60. package/assets/esri/core/workers/chunks/9d92e6f0beed9a8580fa.js +1 -0
  61. package/assets/esri/core/workers/chunks/9df379041e8860fe7f01.js +1 -0
  62. package/assets/esri/core/workers/chunks/{1e8ceb4a4b28625236e3.js → a42505b978d54d36d3b6.js} +1 -1
  63. package/assets/esri/core/workers/chunks/{bfbe6ff786435fe1e7cf.js → a86a4e550a92f770d6d5.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{a34eee4c9d4c1c2b8c49.js → ab60f3bc18b5ea504f70.js} +1 -1
  65. package/assets/esri/core/workers/chunks/{18b9ec6ba7a6c0fa2ac6.js → b1880d9f5eafd50ce84b.js} +1 -1
  66. package/assets/esri/core/workers/chunks/{777fc163530448eea13e.js → b4222152efaf73b37b53.js} +1 -1
  67. package/assets/esri/core/workers/chunks/b6ca73c1384f07b30b74.js +1 -0
  68. package/assets/esri/core/workers/chunks/bb4cbf6b7c35e8c78cc7.js +1 -0
  69. package/assets/esri/core/workers/chunks/bb831d23422acfb00ae2.js +1 -0
  70. package/assets/esri/core/workers/chunks/c0855be20ffcd52c7026.js +1 -0
  71. package/assets/esri/core/workers/chunks/{a0f742fd947104662d37.js → c6277236ec47586dca00.js} +1 -1
  72. package/assets/esri/core/workers/chunks/{3be33a129d3ae7dc4f06.js → caf38cf4d8542fb11c46.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{2728eda8178e02fbca47.js → cd0f5cd0fefe7f49e3d8.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{48a53bfeef11c32dadcc.js → d25fb32a233d2128afbe.js} +1 -1
  75. package/assets/esri/core/workers/chunks/d629708bf23da24ee523.js +1 -0
  76. package/assets/esri/core/workers/chunks/db141122060d8d9b38da.js +1 -0
  77. package/assets/esri/core/workers/chunks/dc1944a7601b518a9c48.js +1 -0
  78. package/assets/esri/core/workers/chunks/{573ee2e59d26bc75201e.js → dc8670f32bb0b93c1473.js} +1 -1
  79. package/assets/esri/core/workers/chunks/e1f2b07be33e33117313.js +1 -0
  80. package/assets/esri/core/workers/chunks/e52f30dfb7c82491a7f2.js +1 -0
  81. package/assets/esri/core/workers/chunks/e5906b28b981199fd489.js +1 -0
  82. package/assets/esri/core/workers/chunks/{b3293ee9f221423a6825.js → e611e452f04a9ce64cf8.js} +1 -1
  83. package/assets/esri/core/workers/chunks/{0f20c458f873564faff2.js → ec4f887153c24ab83f2c.js} +1 -1
  84. package/assets/esri/core/workers/chunks/{707b4ae689c4329cad3b.js → f40ceb5e03c699605302.js} +1 -1
  85. package/assets/esri/core/workers/chunks/{547a073c789fdfb78310.js → f42243c62dd0b6993816.js} +1 -1
  86. package/assets/esri/core/workers/chunks/f91cab9904020cf25d50.js +1 -0
  87. package/assets/esri/core/workers/chunks/f9b29d2ce1cd31c0fce1.js +1 -0
  88. package/assets/esri/core/workers/chunks/fdf5ceffec9d5185953d.js +1 -0
  89. package/assets/esri/views/3d/environment/resources/milkyway-band.ktx2 +0 -0
  90. package/chunks/DeepSky.glsl.js +1 -1
  91. package/chunks/FocusArea.glsl.js +1 -1
  92. package/chunks/GaussianSplatDepth.glsl.js +3 -3
  93. package/chunks/RibbonLine.glsl.js +15 -13
  94. package/config.js +1 -1
  95. package/geometry/Extent.js +1 -1
  96. package/geometry/operators/affineTransformOperator.d.ts +9 -3
  97. package/geometry/operators/affineTransformOperator.js +1 -1
  98. package/geometry/operators/alphaShapeOperator.d.ts +14 -4
  99. package/geometry/operators/alphaShapeOperator.js +1 -1
  100. package/geometry/operators/areaOperator.d.ts +11 -3
  101. package/geometry/operators/areaOperator.js +1 -1
  102. package/geometry/operators/autoCompleteOperator.d.ts +6 -2
  103. package/geometry/operators/autoCompleteOperator.js +1 -1
  104. package/geometry/operators/boundaryOperator.d.ts +9 -3
  105. package/geometry/operators/boundaryOperator.js +1 -1
  106. package/geometry/operators/bufferOperator.d.ts +19 -5
  107. package/geometry/operators/bufferOperator.js +1 -1
  108. package/geometry/operators/centroidOperator.d.ts +6 -2
  109. package/geometry/operators/centroidOperator.js +1 -1
  110. package/geometry/operators/clipOperator.d.ts +9 -3
  111. package/geometry/operators/clipOperator.js +1 -1
  112. package/geometry/operators/containsOperator.d.ts +9 -3
  113. package/geometry/operators/containsOperator.js +1 -1
  114. package/geometry/operators/convexHullOperator.d.ts +17 -5
  115. package/geometry/operators/convexHullOperator.js +1 -1
  116. package/geometry/operators/crossesOperator.d.ts +9 -3
  117. package/geometry/operators/crossesOperator.js +1 -1
  118. package/geometry/operators/cutOperator.d.ts +6 -2
  119. package/geometry/operators/cutOperator.js +1 -1
  120. package/geometry/operators/densifyOperator.d.ts +14 -4
  121. package/geometry/operators/densifyOperator.js +1 -1
  122. package/geometry/operators/differenceOperator.d.ts +9 -3
  123. package/geometry/operators/differenceOperator.js +1 -1
  124. package/geometry/operators/disjointOperator.d.ts +9 -3
  125. package/geometry/operators/disjointOperator.js +1 -1
  126. package/geometry/operators/distanceOperator.d.ts +11 -3
  127. package/geometry/operators/distanceOperator.js +1 -1
  128. package/geometry/operators/equalsOperator.d.ts +9 -3
  129. package/geometry/operators/equalsOperator.js +1 -1
  130. package/geometry/operators/extendOperator.d.ts +11 -3
  131. package/geometry/operators/extendOperator.js +1 -1
  132. package/geometry/operators/generalizeOperator.d.ts +14 -4
  133. package/geometry/operators/generalizeOperator.js +1 -1
  134. package/geometry/operators/geodesicBufferOperator.d.ts +25 -7
  135. package/geometry/operators/geodesicBufferOperator.js +1 -1
  136. package/geometry/operators/geodesicProximityOperator.d.ts +28 -8
  137. package/geometry/operators/geodesicProximityOperator.js +1 -1
  138. package/geometry/operators/geodeticAreaOperator.d.ts +17 -5
  139. package/geometry/operators/geodeticAreaOperator.js +1 -1
  140. package/geometry/operators/geodeticDensifyOperator.d.ts +20 -6
  141. package/geometry/operators/geodeticDensifyOperator.js +1 -1
  142. package/geometry/operators/geodeticDistanceOperator.d.ts +17 -5
  143. package/geometry/operators/geodeticDistanceOperator.js +1 -1
  144. package/geometry/operators/geodeticLengthOperator.d.ts +17 -5
  145. package/geometry/operators/geodeticLengthOperator.js +1 -1
  146. package/geometry/operators/geodeticUtilsOperator.d.ts +17 -5
  147. package/geometry/operators/geodeticUtilsOperator.js +1 -1
  148. package/geometry/operators/graphicBufferOperator.d.ts +11 -3
  149. package/geometry/operators/graphicBufferOperator.js +1 -1
  150. package/geometry/operators/integrateOperator.d.ts +6 -2
  151. package/geometry/operators/integrateOperator.js +1 -1
  152. package/geometry/operators/intersectionOperator.d.ts +12 -4
  153. package/geometry/operators/intersectionOperator.js +1 -1
  154. package/geometry/operators/intersectsOperator.d.ts +9 -3
  155. package/geometry/operators/intersectsOperator.js +1 -1
  156. package/geometry/operators/isNearOperator.d.ts +11 -3
  157. package/geometry/operators/isNearOperator.js +1 -1
  158. package/geometry/operators/json/bufferOperator.js +1 -1
  159. package/geometry/operators/json/containsOperator.js +1 -1
  160. package/geometry/operators/json/convexHullOperator.js +1 -1
  161. package/geometry/operators/json/crossesOperator.js +1 -1
  162. package/geometry/operators/json/disjointOperator.js +1 -1
  163. package/geometry/operators/json/generalizeOperator.js +1 -1
  164. package/geometry/operators/json/geodesicBufferOperator.js +1 -1
  165. package/geometry/operators/json/graphicBufferOperator.js +1 -1
  166. package/geometry/operators/json/intersectionOperator.js +1 -1
  167. package/geometry/operators/json/intersectsOperator.js +1 -1
  168. package/geometry/operators/json/lengthOperator.js +1 -1
  169. package/geometry/operators/json/offsetOperator.js +1 -1
  170. package/geometry/operators/json/overlapsOperator.js +1 -1
  171. package/geometry/operators/json/projectOperator.js +1 -1
  172. package/geometry/operators/json/simplifyOperator.js +1 -1
  173. package/geometry/operators/json/simplifyOperatorOGC.js +1 -1
  174. package/geometry/operators/json/touchesOperator.js +1 -1
  175. package/geometry/operators/json/unionOperator.js +1 -1
  176. package/geometry/operators/json/withinOperator.js +1 -1
  177. package/geometry/operators/labelPointOperator.d.ts +9 -3
  178. package/geometry/operators/labelPointOperator.js +1 -1
  179. package/geometry/operators/lengthOperator.d.ts +11 -3
  180. package/geometry/operators/lengthOperator.js +1 -1
  181. package/geometry/operators/linesToPolygonsOperator.d.ts +6 -2
  182. package/geometry/operators/linesToPolygonsOperator.js +1 -1
  183. package/geometry/operators/locateBetweenOperator.d.ts +6 -2
  184. package/geometry/operators/locateBetweenOperator.js +1 -1
  185. package/geometry/operators/minimumBoundingCircleOperator.d.ts +14 -4
  186. package/geometry/operators/minimumBoundingCircleOperator.js +1 -1
  187. package/geometry/operators/multiPartToSinglePartOperator.d.ts +11 -3
  188. package/geometry/operators/multiPartToSinglePartOperator.js +1 -1
  189. package/geometry/operators/offsetOperator.d.ts +14 -4
  190. package/geometry/operators/offsetOperator.js +1 -1
  191. package/geometry/operators/overlapsOperator.d.ts +9 -3
  192. package/geometry/operators/overlapsOperator.js +1 -1
  193. package/geometry/operators/polygonOverlayOperator.d.ts +11 -3
  194. package/geometry/operators/polygonOverlayOperator.js +1 -1
  195. package/geometry/operators/polygonSlicerOperator.d.ts +22 -6
  196. package/geometry/operators/polygonSlicerOperator.js +1 -1
  197. package/geometry/operators/projectOperator.d.ts +15 -5
  198. package/geometry/operators/projectOperator.js +1 -1
  199. package/geometry/operators/proximityOperator.d.ts +22 -6
  200. package/geometry/operators/proximityOperator.js +1 -1
  201. package/geometry/operators/relateOperator.d.ts +12 -4
  202. package/geometry/operators/relateOperator.js +1 -1
  203. package/geometry/operators/reshapeOperator.d.ts +6 -2
  204. package/geometry/operators/reshapeOperator.js +1 -1
  205. package/geometry/operators/shapePreservingProjectOperator.d.ts +20 -6
  206. package/geometry/operators/shapePreservingProjectOperator.js +1 -1
  207. package/geometry/operators/simplifyOGCOperator.d.ts +3 -1
  208. package/geometry/operators/simplifyOGCOperator.js +1 -1
  209. package/geometry/operators/simplifyOperator.d.ts +12 -4
  210. package/geometry/operators/simplifyOperator.js +1 -1
  211. package/geometry/operators/singlePartToMultiPartOperator.js +1 -1
  212. package/geometry/operators/support/deprecatedOperator.js +2 -0
  213. package/geometry/operators/symmetricDifferenceOperator.d.ts +9 -3
  214. package/geometry/operators/symmetricDifferenceOperator.js +1 -1
  215. package/geometry/operators/touchesOperator.d.ts +9 -3
  216. package/geometry/operators/touchesOperator.js +1 -1
  217. package/geometry/operators/unionOperator.d.ts +9 -3
  218. package/geometry/operators/unionOperator.js +1 -1
  219. package/geometry/operators/withinOperator.d.ts +9 -3
  220. package/geometry/operators/withinOperator.js +1 -1
  221. package/geometry/support/intersectsBase.js +1 -1
  222. package/geometry/support/normalizeUtils.js +1 -1
  223. package/kernel.js +1 -1
  224. package/layers/IntegratedMesh3DTilesLayer.js +1 -1
  225. package/layers/IntegratedMeshLayer.js +1 -1
  226. package/layers/SceneLayer.js +1 -1
  227. package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
  228. package/layers/list/BasemapItemCollection.d.ts +40 -14
  229. package/layers/list/BasemapItemCollection.js +1 -1
  230. package/layers/list/CatalogItemCollection.d.ts +29 -11
  231. package/layers/list/CatalogItemCollection.js +1 -1
  232. package/layers/list/Item.d.ts +66 -122
  233. package/layers/list/Item.js +1 -1
  234. package/layers/list/ItemPanel.d.ts +23 -34
  235. package/layers/list/LayerItemCollection.d.ts +33 -43
  236. package/layers/list/LayerItemCollection.js +1 -1
  237. package/layers/list/TableItem.d.ts +42 -53
  238. package/layers/list/TableItem.js +1 -1
  239. package/layers/list/TableItemCollection.d.ts +25 -55
  240. package/layers/list/TableItemCollection.js +1 -1
  241. package/layers/list/TableItemPanel.d.ts +25 -23
  242. package/layers/list/support/layerListUtils.js +1 -1
  243. package/layers/list/types.d.ts +158 -37
  244. package/layers/support/ElevationQuery.js +1 -1
  245. package/layers/support/FeatureFilter.d.ts +2 -1
  246. package/layers/support/FeatureFilter.js +1 -1
  247. package/package.json +2 -2
  248. package/rest/knowledgeGraph/GraphDeleteNamedTypeResult.d.ts +0 -1
  249. package/support/revision.js +1 -1
  250. package/symbols/LineSymbol3DLayer.d.ts +9 -3
  251. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  252. package/symbols/cim/CIMSymbolHelper.js +1 -1
  253. package/symbols/cim/OverrideHelper.js +1 -1
  254. package/symbols/cim/Rasterizer.js +1 -1
  255. package/symbols/cim/cimAnalyzer.js +1 -1
  256. package/symbols/cim/dashUtils.js +2 -0
  257. package/symbols/cim/effects/EffectDashes.js +1 -1
  258. package/symbols/cim/fromCIMFontStyle.js +2 -0
  259. package/symbols/cim/richTextUtils.js +1 -1
  260. package/symbols/cim/utils.js +1 -1
  261. package/symbols/patterns/LinePattern3D.d.ts +10 -4
  262. package/symbols/patterns/LinePattern3D.js +1 -1
  263. package/symbols/patterns/LineTemplatePattern3D.d.ts +48 -0
  264. package/symbols/patterns/LineTemplatePattern3D.js +2 -0
  265. package/symbols/patterns/utils.js +1 -1
  266. package/symbols/support/Symbol3DOutline.js +1 -1
  267. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  268. package/views/2d/engine/webgl/FeatureDisplayList.js +1 -1
  269. package/views/2d/engine/webgl/GlyphMosaic.js +1 -1
  270. package/views/2d/engine/webgl/GlyphWorker.js +1 -1
  271. package/views/2d/engine/webgl/TextureManager.js +1 -1
  272. package/views/2d/engine/webgl/decorGlyphRect.js +2 -0
  273. package/views/2d/engine/webgl/definitions.js +1 -1
  274. package/views/2d/engine/webgl/effects/highlight/HighlightGradient.js +1 -1
  275. package/views/2d/engine/webgl/effects/highlight/MultiHighlightGradient.js +1 -1
  276. package/views/2d/engine/webgl/hashMosaic.js +2 -0
  277. package/views/2d/engine/webgl/shaderGraph/techniques/featureTechniqueUtils.js +1 -1
  278. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
  279. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ShaderHighlight.js +1 -1
  280. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/utils.js +1 -1
  281. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  282. package/views/2d/layers/GraphicsLayerView2D.js +1 -1
  283. package/views/2d/layers/ImageryLayerView2D.js +1 -1
  284. package/views/2d/layers/LayerView2D.js +1 -1
  285. package/views/2d/layers/MapImageLayerView2D.js +1 -1
  286. package/views/2d/layers/MapNotesLayerView2D.js +1 -1
  287. package/views/2d/layers/RouteLayerView2D.js +1 -1
  288. package/views/2d/layers/TileLayerView2D.js +1 -1
  289. package/views/2d/layers/features/FeatureContainer.js +1 -1
  290. package/views/2d/layers/features/FeaturePipelineWorker.js +1 -1
  291. package/views/2d/layers/features/Processor.js +1 -1
  292. package/views/2d/layers/features/processor/AProcessorStrategy.js +1 -1
  293. package/views/2d/layers/features/processor/AggregateStrategy.js +1 -1
  294. package/views/2d/layers/features/processor/FeatureUpdateStrategy.js +1 -1
  295. package/views/2d/layers/features/processor/bins/BinLevelState.js +1 -1
  296. package/views/2d/layers/features/processor/clusters/ClusterLevelState.js +1 -1
  297. package/views/2d/layers/features/processor/tracks/TrackLevelState.js +1 -1
  298. package/views/2d/layers/features/schema/processor/SimpleProcessorSchema.js +1 -1
  299. package/views/2d/layers/features/sources/FeatureSource.js +1 -1
  300. package/views/2d/layers/features/support/AttributeStore.js +1 -1
  301. package/views/2d/layers/graphics/AGraphicContainer.js +1 -1
  302. package/views/2d/layers/graphics/GraphicBoundsRenderer.js +1 -1
  303. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  304. package/views/2d/layers/support/FeatureCommandQueue.js +1 -1
  305. package/views/2d/layers/support/FilterSchema.js +2 -0
  306. package/views/2d/layers/support/HighlightRegistry.js +2 -0
  307. package/views/2d/layers/support/annodime/dimensionUtils.js +1 -1
  308. package/views/2d/layers/support/util.js +1 -1
  309. package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
  310. package/views/3d/input/SceneInputManager.js +1 -1
  311. package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
  312. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  313. package/views/3d/layers/I3SMeshView3D.js +1 -1
  314. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  315. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  316. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  317. package/views/3d/layers/graphics/Graphics3DFeatureStore.js +1 -1
  318. package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
  319. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  320. package/views/3d/layers/support/Tiles3DMeshIntersectionHandler.js +1 -1
  321. package/views/3d/navigation/Navigation3D.d.ts +16 -0
  322. package/views/3d/navigation/Navigation3D.js +2 -0
  323. package/views/3d/navigation/modes/DefaultNavigationMode3D.d.ts +4 -0
  324. package/views/3d/navigation/modes/DefaultNavigationMode3D.js +2 -0
  325. package/views/3d/navigation/modes/GroundNavigationMode3D.d.ts +4 -0
  326. package/views/3d/navigation/modes/GroundNavigationMode3D.js +2 -0
  327. package/views/3d/navigation/modes/NavigationMode3D.d.ts +4 -0
  328. package/views/3d/navigation/modes/NavigationMode3D.js +2 -0
  329. package/views/3d/navigation/modes/NavigationMode3DUnion.d.ts +5 -0
  330. package/views/3d/state/ConstraintsManager.js +1 -1
  331. package/views/3d/support/QualityProfile.js +1 -1
  332. package/views/3d/support/hitTest.js +1 -1
  333. package/views/3d/terrain/ExtentHelper.js +1 -1
  334. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  335. package/views/3d/webgl-engine/effects/AmbientIllumination.js +2 -0
  336. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  337. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  338. package/views/3d/webgl-engine/effects/glow/BlurEmission.js +1 -1
  339. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  340. package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
  341. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  342. package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
  343. package/views/3d/webgl-engine/lib/GaussianSplatDepthRenderer.js +1 -1
  344. package/views/3d/webgl-engine/lib/RenderFeature.js +1 -1
  345. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  346. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  347. package/views/3d/webgl-engine/materials/lineStippleUtils.js +1 -1
  348. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  349. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +12 -8
  350. package/views/3d/webgl-engine/shaders/GaussianSplatTechniqueConfiguration.js +1 -1
  351. package/views/PopupView.js +1 -1
  352. package/views/SceneView.js +1 -1
  353. package/views/View.js +1 -1
  354. package/views/layers/FeatureLikeLayerView.js +1 -1
  355. package/widgets/LayerList/LayerListViewModel.d.ts +1 -0
  356. package/widgets/LayerList/LayerListViewModel.js +1 -1
  357. package/widgets/LayerList/ListItem.d.ts +4 -0
  358. package/widgets/LayerList/ListItemPanel.d.ts +3 -0
  359. package/widgets/OrientedImageryViewer/types.d.ts +2 -2
  360. package/widgets/OrientedImageryViewer.d.ts +20 -1
  361. package/widgets/OrientedImageryViewer.js +1 -1
  362. package/widgets/Sketch/SketchViewModel.js +1 -1
  363. package/widgets/support/iconUtils.js +1 -1
  364. package/assets/esri/core/workers/chunks/03601be8b0763f82e88f.js +0 -1
  365. package/assets/esri/core/workers/chunks/0bff8d589312be6588fe.js +0 -1
  366. package/assets/esri/core/workers/chunks/0de90b1ad8118457fd5a.js +0 -1
  367. package/assets/esri/core/workers/chunks/0e1a067ab243900d0371.js +0 -1
  368. package/assets/esri/core/workers/chunks/0ee6109e6578395a7900.js +0 -1
  369. package/assets/esri/core/workers/chunks/0ee7376c29e0fd8f676c.js +0 -1
  370. package/assets/esri/core/workers/chunks/13551987fbeaae154df8.js +0 -1
  371. package/assets/esri/core/workers/chunks/186350d720352bd5ff33.js +0 -1
  372. package/assets/esri/core/workers/chunks/25ecf94d776c3b6db0f3.js +0 -1
  373. package/assets/esri/core/workers/chunks/262052dfaec3af8a58b9.js +0 -1
  374. package/assets/esri/core/workers/chunks/2c01477b69c38f691e19.js +0 -1
  375. package/assets/esri/core/workers/chunks/307297e025eed110095f.js +0 -1
  376. package/assets/esri/core/workers/chunks/33422dca6f4bcaa0ea74.js +0 -1
  377. package/assets/esri/core/workers/chunks/33e583166ab3943ecf0e.js +0 -1
  378. package/assets/esri/core/workers/chunks/37ae52c71bf9c70fbb92.js +0 -1
  379. package/assets/esri/core/workers/chunks/3daddcb106a7009c5a70.js +0 -1
  380. package/assets/esri/core/workers/chunks/3de6e54b6ed0feae1940.js +0 -1
  381. package/assets/esri/core/workers/chunks/448f068a14f24f2f8a43.js +0 -1
  382. package/assets/esri/core/workers/chunks/4c088c26d5d546c95c90.js +0 -1
  383. package/assets/esri/core/workers/chunks/5134241be1f1bf25231a.js +0 -1
  384. package/assets/esri/core/workers/chunks/56163189fbe63aa11e94.js +0 -1
  385. package/assets/esri/core/workers/chunks/571cf99c3eab8e517542.js +0 -1
  386. package/assets/esri/core/workers/chunks/5762746cfb02a4119d82.js +0 -1
  387. package/assets/esri/core/workers/chunks/5830deda121e4c95d199.js +0 -1
  388. package/assets/esri/core/workers/chunks/58e4aecabca047f1d229.js +0 -1
  389. package/assets/esri/core/workers/chunks/5c8f423812a23c02c1fd.js +0 -1
  390. package/assets/esri/core/workers/chunks/5eb726317b6602f1e206.js +0 -1
  391. package/assets/esri/core/workers/chunks/6e2075bd4832ff0db68c.js +0 -1
  392. package/assets/esri/core/workers/chunks/7608de0d942b4c16b2f6.js +0 -1
  393. package/assets/esri/core/workers/chunks/7610dd0b46948b7bd840.js +0 -1
  394. package/assets/esri/core/workers/chunks/7737ab739eba6d81282d.js +0 -1
  395. package/assets/esri/core/workers/chunks/7be56ac60e580c806a5d.js +0 -1
  396. package/assets/esri/core/workers/chunks/7d9468e38f3bf006f86e.js +0 -1
  397. package/assets/esri/core/workers/chunks/7efc51324cfc8e08c756.js +0 -1
  398. package/assets/esri/core/workers/chunks/84dc2afd89263a311b81.js +0 -1
  399. package/assets/esri/core/workers/chunks/852649460d664b0a1a1d.js +0 -1
  400. package/assets/esri/core/workers/chunks/ab332bd411d6c7d4190c.js +0 -1
  401. package/assets/esri/core/workers/chunks/bc9b96a539f28afcb8cb.js +0 -1
  402. package/assets/esri/core/workers/chunks/be69e2dda75b079362b2.js +0 -1
  403. package/assets/esri/core/workers/chunks/bf9eba555aebca2c132b.js +0 -1
  404. package/assets/esri/core/workers/chunks/c18de0f6cbeecee4ce34.js +0 -1
  405. package/assets/esri/core/workers/chunks/c9df18e9ff7367a004b6.js +0 -1
  406. package/assets/esri/core/workers/chunks/d33d08cb6856cd2eb35e.js +0 -1
  407. package/assets/esri/core/workers/chunks/e688e6e816824b53a25e.js +0 -1
  408. package/assets/esri/core/workers/chunks/ea068c797e3e462f4518.js +0 -1
  409. package/assets/esri/core/workers/chunks/eaf1d38f09744b7e84f5.js +0 -1
  410. package/assets/esri/core/workers/chunks/eff99e45d818e58fd443.js +0 -1
  411. package/assets/esri/core/workers/chunks/f219ba010c480bb75684.js +0 -1
  412. package/assets/esri/core/workers/chunks/f60d5ce49c173d5381ec.js +0 -1
  413. package/assets/esri/core/workers/chunks/f72f4413fc7461e11a2a.js +0 -1
  414. package/assets/esri/core/workers/chunks/f834aa732c3f06525089.js +0 -1
  415. package/assets/esri/core/workers/chunks/fae14e30fa7d81bf706e.js +0 -1
  416. package/assets/esri/core/workers/chunks/fb6f1b562ee0983c8c6e.js +0 -1
  417. package/assets/esri/core/workers/chunks/fc1658eae7b312502fab.js +0 -1
  418. package/views/2d/engine/webgl/Utils.js +0 -2
  419. package/views/2d/layers/support/HighlightCounter.js +0 -2
@@ -1,29 +1,47 @@
1
- import type Item from "./Item.js";
2
- import type ActionButton from "../../support/actions/ActionButton.js";
3
- import type ActionToggle from "../../support/actions/ActionToggle.js";
4
-
5
1
  /**
6
- * Identifies a displayable part of [TrackInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TrackInfo/).
2
+ * Shared types for layer list workflows.
7
3
  *
8
4
  * @beta
9
5
  * @since 5.2
10
6
  */
11
- export type TrackInfoType = "latestObservations" | "previousObservations" | "trackLines";
7
+ import type Layer from "../Layer.js";
8
+ import type SubtypeGroupLayer from "../SubtypeGroupLayer.js";
9
+ import type Item from "./Item.js";
10
+ import type ItemPanel from "./ItemPanel.js";
11
+ import type LayerItemCollection from "./LayerItemCollection.js";
12
+ import type TableItem from "./TableItem.js";
13
+ import type TableItemCollection from "./TableItemCollection.js";
14
+ import type TableItemPanel from "./TableItemPanel.js";
15
+ import type Sublayer from "../support/Sublayer.js";
16
+ import type SubtypeSublayer from "../support/SubtypeSublayer.js";
17
+ import type ActionButton from "../../support/actions/ActionButton.js";
18
+ import type ActionToggle from "../../support/actions/ActionToggle.js";
19
+ import type LayerView from "../../views/layers/LayerView.js";
20
+ import type { StreamLayerViewConnectionStatus } from "../../views/layers/StreamLayerView.js";
21
+
22
+ /** An action element that can be associated with a list item. */
23
+ export type Action = ActionButton | ActionToggle;
12
24
 
13
25
  /**
14
- * Identifies a displayable telemetry element of [VideoLayer.telemetryDisplay](https://developers.arcgis.com/javascript/latest/references/core/layers/VideoLayer/#telemetryDisplay).
26
+ * Represents a layer view for stream layers that provides connection status information.
27
+ * Used to determine the current connection state of a stream layer in the view.
15
28
  *
16
- * @beta
17
- * @since 5.2
29
+ * @see [Item.connectionStatus](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/#connectionStatus)
18
30
  */
19
- export type TelemetryDisplayType = "frame" | "frameCenter" | "frameOutline" | "lineOfSight" | "sensorLocation" | "sensorPath" | "sensorTrail";
31
+ export type ConnectedLayerView = LayerView
32
+ & {
33
+ /** The current connection status of the stream layer view. */
34
+ connectionStatus: StreamLayerViewConnectionStatus;
35
+ };
20
36
 
21
37
  /**
22
- * Identifies the content represented by a [Item](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/).
38
+ * A function used to filter which [Item](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/) objects are included.
23
39
  *
24
- * @beta
25
- * @since 5.2
40
+ * @param item - The list item to evaluate for inclusion.
26
41
  */
42
+ export type FilterPredicate = (item: Item) => boolean;
43
+
44
+ /** Identifies the content represented by a [Item](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/). */
27
45
  export type ItemContent = { type: "layer"; } | {
28
46
  type: "track-info";
29
47
  name: TrackInfoType;
@@ -33,53 +51,156 @@ export type ItemContent = { type: "layer"; } | {
33
51
  };
34
52
 
35
53
  /**
36
- * Specifies the style of the visibility toggle displayed by list UIs.
54
+ * A function for customizing a list item as it is created.
37
55
  *
38
- * @since 5.2
56
+ * @param event - The event containing the list item to customize.
39
57
  */
40
- export type VisibilityAppearance = "default" | "checkbox";
58
+ export type ItemModifier = (event: ItemModifierEvent) => void;
41
59
 
42
60
  /**
43
- * A function used to filter which [Item](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/) objects are included.
61
+ * Event object passed to [ItemModifier](https://developers.arcgis.com/javascript/latest/references/core/layers/list/types/#ItemModifier).
62
+ * Provides access to the list item being created.
63
+ */
64
+ export interface ItemModifierEvent {
65
+ /** The list item instance being created. */
66
+ item: Item;
67
+ }
68
+
69
+ /**
70
+ * Arbitrary data associated with the panel.
44
71
  *
45
- * @param item - The list item to evaluate for inclusion.
46
- * @since 5.2
72
+ * @see [ItemPanel.content](https://developers.arcgis.com/javascript/latest/references/core/layers/list/ItemPanel/#content)
47
73
  */
48
- export type FilterPredicate = (item: Item) => boolean;
74
+ export type ItemPanelContent = "legend" | HTMLElement | string;
49
75
 
50
76
  /**
51
- * A function for customizing a list item as it is created.
77
+ * Defines one or more panel content values.
52
78
  *
53
- * @param event - The event containing the list item to customize.
54
- * @since 5.2
79
+ * @see [ItemPanel.content](https://developers.arcgis.com/javascript/latest/references/core/layers/list/ItemPanel/#content)
55
80
  */
56
- export type ItemModifier = (event: ItemModifierEvent) => void;
81
+ export type ItemPanelContents = ItemPanelContent | ItemPanelContent[];
82
+
83
+ /** Properties used to construct a [ItemPanel](https://developers.arcgis.com/javascript/latest/references/core/layers/list/ItemPanel/). */
84
+ export type ItemPanelProperties = Partial<Pick<ItemPanel, "content" | "disabled" | "flowEnabled" | "icon" | "image" | "listItem" | "open" | "title" | "visible">>;
85
+
86
+ /** Properties used to construct a [Item](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/). */
87
+ export type ItemProperties = Partial<Pick<Item, "actionsExpanded" | "actionsOpen" | "actionsSections" | "checkPublishStatusEnabled" | "children" | "childrenSortable" | "connectionStatus" | "content" | "error" | "expanded" | "hidden" | "layer" | "layerView" | "listItemCreatedFunction" | "listModeDisabled" | "open" | "panel" | "parent" | "sortable" | "title" | "view" | "visible">>;
57
88
 
58
89
  /**
59
- * Event object passed to [ItemModifier](https://developers.arcgis.com/javascript/latest/references/core/layers/list/types/#ItemModifier).
60
- * Provides access to the list item being created.
90
+ * Defines how the visibility of child layers is managed within a list item.
61
91
  *
62
- * @since 5.2
92
+ * - `independent`: Each child layer's visibility is controlled separately.
93
+ * - `inherited`: Child layers inherit the visibility from their parent layer.
94
+ * - `exclusive`: Only one child layer can be visible at a time.
95
+ *
96
+ * @see [Item.visibilityMode](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/#visibilityMode)
63
97
  */
64
- export interface ItemModifierEvent {
98
+ export type ItemVisibilityMode = "independent" | "inherited" | "exclusive";
99
+
100
+ /** Properties used to construct a [LayerItemCollection](https://developers.arcgis.com/javascript/latest/references/core/layers/list/LayerItemCollection/). */
101
+ export type LayerItemCollectionProperties = Partial<Pick<LayerItemCollection, "listItemCreatedFunction" | "operationalItems" | "view">>;
102
+
103
+ /** The event object for the `trigger-action` event in the layer lists. */
104
+ export interface LayerItemCollectionTriggerActionEvent {
105
+ /** The action that was clicked by the user. */
106
+ action: Action;
107
+ /** The list item associated with the action. */
108
+ item: Item;
109
+ }
110
+
111
+ /**
112
+ * Represents a layer view that supports spatial referencing. Used to indicate whether the
113
+ * associated layer view can operate with a spatial reference in the current view context.
114
+ *
115
+ * @see [Item.layerView](https://developers.arcgis.com/javascript/latest/references/core/layers/list/Item/#layerView)
116
+ */
117
+ export type SpatiallyReferencedLayerView = LayerView
118
+ & {
119
+ /** Indicates if the layer view supports the current spatial reference. */
120
+ spatialReferenceSupported: boolean;
121
+ };
122
+
123
+ /** Describes the current state of list item processing. */
124
+ export type State = "ready" | "loading" | "disabled";
125
+
126
+ /** @internal */
127
+ export type TableItemCollectionLayer = TableItemLayer;
128
+
129
+ /** @internal */
130
+ export type TableItemCollectionProperties = Partial<Pick<TableItemCollection, "listItemCreatedFunction" | "map" | "tableItems" | "tables">>;
131
+
132
+ /**
133
+ * The event object for the `trigger-action` event in the table list.
134
+ *
135
+ * @internal
136
+ */
137
+ export interface TableItemCollectionTriggerActionEvent {
65
138
  /**
66
- * The list item instance being created.
139
+ * The action clicked by the user.
67
140
  *
68
- * @since 5.2
141
+ * @internal
69
142
  */
70
- item: Item;
143
+ action: Action;
144
+ /**
145
+ * An item associated with the action.
146
+ *
147
+ * @internal
148
+ */
149
+ item: TableItem;
71
150
  }
72
151
 
152
+ /** @internal */
153
+ export type TableItemLayer = Layer | Layer | Sublayer | SubtypeGroupLayer | SubtypeSublayer;
154
+
73
155
  /**
74
- * An action element that can be associated with a list item.
156
+ * Function used to customize table list items during creation.
75
157
  *
76
- * @since 5.2
158
+ * @param event - The event containing the table list item being created.
159
+ * @internal
77
160
  */
78
- export type Action = ActionButton | ActionToggle;
161
+ export type TableItemModifier = (event: TableItemModifierEvent) => void;
79
162
 
80
163
  /**
81
- * Describes the current state of list item processing.
164
+ * Event object passed to a table list item creation callback.
82
165
  *
83
- * @since 5.2
166
+ * @internal
167
+ */
168
+ export interface TableItemModifierEvent {
169
+ /**
170
+ * The table list item being created.
171
+ *
172
+ * @internal
173
+ */
174
+ item: TableItem;
175
+ }
176
+
177
+ /**
178
+ * The content associated with a table list item panel.
179
+ *
180
+ * @internal
181
+ * @see [TableItemPanel.content](https://developers.arcgis.com/javascript/latest/references/core/layers/list/TableItemPanel/#content)
84
182
  */
85
- export type State = "ready" | "loading" | "disabled";
183
+ export type TableItemPanelContent = "legend" | HTMLElement | string;
184
+
185
+ /**
186
+ * Defines one or more content values for a table list item panel.
187
+ *
188
+ * @internal
189
+ * @see [TableItemPanel.content](https://developers.arcgis.com/javascript/latest/references/core/layers/list/TableItemPanel/#content)
190
+ */
191
+ export type TableItemPanelContents = TableItemPanelContent | TableItemPanelContent[];
192
+
193
+ /** @internal */
194
+ export type TableItemPanelProperties = Partial<Pick<TableItemPanel, "content" | "disabled" | "flowEnabled" | "icon" | "image" | "listItem" | "open" | "title" | "visible">>;
195
+
196
+ /** @internal */
197
+ export type TableItemProperties = Partial<Pick<TableItem, "actionsOpen" | "actionsSections" | "checkPublishStatusEnabled" | "children" | "error" | "hidden" | "layer" | "listItemCreatedFunction" | "listModeDisabled" | "open" | "panel" | "parent" | "publishing" | "sortable" | "title">>;
198
+
199
+ /** Identifies a displayable telemetry element of [VideoLayer.telemetryDisplay](https://developers.arcgis.com/javascript/latest/references/core/layers/VideoLayer/#telemetryDisplay). */
200
+ export type TelemetryDisplayType = "frame" | "frameCenter" | "frameOutline" | "lineOfSight" | "sensorLocation" | "sensorPath" | "sensorTrail";
201
+
202
+ /** Identifies a displayable part of [TrackInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/TrackInfo/). */
203
+ export type TrackInfoType = "latestObservations" | "previousObservations" | "trackLines";
204
+
205
+ /** Specifies the style of the visibility toggle displayed by list UIs. */
206
+ export type VisibilityAppearance = "default" | "checkbox";
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{result as e}from"../../core/asyncUtils.js";import t from"../../core/Error.js";import{assertIsSome as a}from"../../core/maybe.js";import{whenOrAbort as n,throwIfAbortError as o}from"../../core/promiseUtils.js";import{getMetersPerUnitForSR as i}from"../../core/units.js";import{initializeProjection as l,project as r}from"../../geometry/projectionUtils.js";import{fromExtent as s}from"../../geometry/support/aaBoundingRect.js";import{GeometryQueryContext as c,ExtentQueryContext as u,isTileInfoTilemapCache as m,getLods as f}from"./ElevationQueryContext.js";import{ElevationTile as p}from"./ElevationTile.js";import y from"./ElevationTileData.js";import{GeometryDescriptor as d}from"./GeometryDescriptor.js";import{TileElevationSampler as w}from"./TileElevationSampler.js";import{TileKey as h}from"./TileKey.js";async function v(e,a,n){if(e=n?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice(),!e.length)throw new t(N,"Elevation queries require at least one elevation layer to fetch tiles from");const o=d.fromGeometry(a),i={...j,...n,returnSampleInfo:!0},l=e.pop(),r=await g(l,o,i),s=await I(e,r,i);return s.geometry=s.geometry.export(),n?.returnSampleInfo||delete s.sampleInfo,s}async function g(e,a,n){if(!e)throw new t(N,"Elevation queries require an elevation layer to fetch tiles from");if(!a||!(a instanceof d)&&"point"!==a.type&&"multipoint"!==a.type&&"polyline"!==a.type)throw new t("elevation-query:invalid-geometry","Only point, polyline and multipoint geometries can be used to query elevation");const o={...j,...n},i=o.signal;if("integrated-mesh-3dtiles"===e.type){const t=d.fromGeometry(a);if(e.queryElevationCallback&&e.replacesTerrain){const l=12.9*(n?.minDemResolution||0)+.71,r=await e.queryElevationCallback(t,{signal:i,maxGeometricError:l}),s=t.coordinates.map(()=>({demResolution:1,source:e})),c=await r.project(a.spatialReference,i);if(c){if(void 0!==o.noDataValue&&o.noDataValue!==Number.MAX_VALUE)for(const e of c.coordinates)e.z===Number.MAX_VALUE&&(e.z=o.noDataValue);return{geometry:c.export(),noDataValue:o.noDataValue??Number.MAX_VALUE,sampleInfo:s}}}const l=t.coordinates.map(()=>({demResolution:-1,source:e}));return{geometry:t.export(),noDataValue:Number.MAX_VALUE,sampleInfo:l}}const l=new c(e,a.spatialReference,o);return await e.load({signal:i}),await C(l,a,i),await R(l,i),await k(l,i),$(l),z(l,i)}async function T(e,a,n){if(e=Array.isArray(e)?e:[e],0===(e=n?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice()).length)throw new t(N,"Elevation queries require at least one elevation layer to fetch tiles from");if(!a||"extent"!==a.type)throw new t("elevation-query:invalid-extent","Invalid or undefined extent");const o={...j,...n,returnSampleInfo:!0},i=E(e[e.length-1],a,o);if(1===e.length)return i;return D(e,a,await i,o)}async function E(e,t,a,n){const o=a.signal;await e.load({signal:o});const i=t.spatialReference,s=e.tileInfo.spatialReference;i.equals(s)||(await l([{source:i,dest:s}],{signal:o}),t=r(t,s));const c=new u(e,t,a,n);await R(c,o),await k(c,o);const m=c.elevationTiles,f=c.layer.tileInfo,p=c.parameters.noDataValue;return new w({noDataValue:p,tiles:m,tileInfo:f})}async function D(e,t,a,n){if(e.pop(),!e.length)return a;const o=a.samplers.filter(e=>!e.tile.hasNoDataValues).map(e=>s(e.extent)),i=await E(e[e.length-1],t,n,o);if(0===i.samplers.length)return a;const l=a.samplers.concat(i.samplers),r=n.noDataValue;return D(e,t,new w({samplers:l,noDataValue:r}),n)}async function I(e,t,n){const o=t.geometry.coordinates,i=t.sampleInfo;a(i);const l=new Array,r=new Array;for(let a=0;a<o.length;a++){i[a].demResolution<0&&e.length&&(l.push(o[a]),r.push(a))}const s=e.pop();if(null==s||0===l.length)return t;const c=t.geometry.clone(l),u=await g(s,c,n),m=u.sampleInfo;if(!m)throw new Error("no sampleInfo");return r.forEach((e,t)=>{o[e].z=u.geometry.coordinates[t].z,i[e].demResolution=m[t].demResolution,i[e].source=m[t].source}),I(e,t,n)}async function R(e,a){"geometry"===e.type&&L(e);const n=e.parameters.demResolution;if("number"==typeof n)U(e,n);else if("finest-contiguous"===n)await x(e,a);else{if("auto"!==n)throw new t("elevation-query:invalid-dem-resolution",`Invalid dem resolution value '${n}', expected a number, "finest-contiguous" or "auto"`);await A(e,a)}}async function x(e,t){const{tileInfo:a,tilemapCache:n}=e.layer,o=q(a,n,e.parameters.minDemResolution);await V(e,o,t)}async function V(e,a,i){const l=e.layer;if(e.selectTilesAtLOD(a),a<0)return;const r=l.tilemapCache,s=e.getTilesToFetch();try{if(r&&!m(r))await n(Promise.all(s.map(e=>r.fetchAvailability(e.level,e.row,e.col,{signal:i}))),i);else if(await k(e,i),!e.allElevationTilesFetched())throw e.clearElevationTiles(),new t("elevation-query:has-unavailable-tiles","Some elevation tiles are unavailable")}catch(c){o(c),await V(e,a-1,i)}}async function A(t,a){F(t),M(t);const i=t.layer.tilemapCache;if(!i||m(i))return b(t,a);const l=t.getTilesToFetch(),r={},s=l.map(async t=>{const n=new h(0,0,0),l=await e(i.fetchAvailabilityUpsample(t.level,t.row,t.col,n,{signal:a}));!1!==l.ok?null!=t.id&&(r[t.id]=n):o(l.error)});await n(Promise.all(s),a),t.remapTiles(r)}async function b(e,t){const a=e.layer.tileInfo;await k(e,t);let n=!1;e.forEachTileToFetch((e,t)=>{a.upsampleTile(e)?n=!0:t()}),n&&await b(e,t)}function q(e,t,a=0){const n=f(e,t);let o=n.length-1;if(a>0){const t=a/i(e.spatialReference),l=n.findIndex(e=>e.resolution<t);0===l?o=0:l>0&&(o=l-1)}return o}const j={maximumAutoTileRequests:20,noDataValue:0,returnSampleInfo:!1,demResolution:"auto",minDemResolution:0,signal:null};async function C(e,a,n){let o;const i=e.layer.tileInfo.spatialReference;if(a instanceof d?o=await a.project(i,n):(await l([{source:a.spatialReference,dest:i}],{signal:n}),o=r(a,i)),!o)throw new t("elevation-query:spatial-reference-mismatch",`Cannot query elevation in '${a.spatialReference.wkid}' on an elevation service in '${i.wkid}'`);e.geometry=d.fromGeometry(o)}function L(e){if(null==e.layer.fullExtent)return;const t=new p(new h(-1,-1,-1));t.sample=()=>e.parameters.noDataValue,e.outsideExtentTile=t;const a=e.layer.fullExtent;e.geometry.coordinates.forEach(e=>{const n=e.x,o=e.y;(n<a.xmin||n>a.xmax||o<a.ymin||o>a.ymax)&&(e.elevationTile=t)})}function S(e,t){const{tileInfo:a,tilemapCache:n}=e.layer,o=t/i(a.spatialReference),l=f(a,n);let r=l[0],s=0;for(let i=1;i<l.length;i++){const e=l[i];Math.abs(e.resolution-o)<Math.abs(r.resolution-o)&&(r=e,s=i)}return s}function U(e,t){const a=S(e,t);e.selectTilesAtLOD(a)}function F(e){const{tileInfo:t,tilemapCache:a}=e.layer,n=q(t,a,e.parameters.minDemResolution);e.selectTilesAtLOD(n,e.parameters.maximumAutoTileRequests)}async function k(e,t){const a=e.getTilesToFetch(),o={},i=e.parameters.cache,l=e.parameters.noDataValue,r={noDataValue:l,signal:t},s=a.map(async t=>{if(null==t.id)return;const a=`${e.layer.uid}:${t.id}:${l}`,n=i?.get(a),s=n??y.from(await e.layer.fetchTile(t.level,t.row,t.col,r));i?.put(a,s),o[t.id]=new p(t,s)});await n(Promise.allSettled(s),t),e.populateElevationTiles(o)}function M(e){const t=e.layer.tileInfo;let a=0;const n={},o=e=>{null!=e.id&&(e.id in n?n[e.id]++:(n[e.id]=1,a++))},i=e=>{if(null==e.id)return;const t=n[e.id];1===t?(delete n[e.id],a--):n[e.id]=t-1};e.forEachTileToFetch(o,i);let l=!0;for(;l&&(l=!1,e.forEachTileToFetch(n=>{a<=e.parameters.maximumAutoTileRequests||(i(n),t.upsampleTile(n)&&(l=!0),o(n))},i),l););}function $(e){e.geometry.coordinates.forEach(t=>{const a=t.elevationTile;let n=e.parameters.noDataValue;if(a){const e=a.sample(t.x,t.y);null==e?t.elevationTile=null:n=e}t.z=n})}async function z(e,t){const n=await e.geometry.project(e.outSpatialReference,t);a(n);const o={geometry:n.export(),noDataValue:e.parameters.noDataValue};return e.parameters.returnSampleInfo&&(o.sampleInfo=G(e)),e.geometry.coordinates.forEach(e=>{e.tile=null,e.elevationTile=null}),o}function G(e){const t=e.layer.tileInfo,a=i(t.spatialReference);return e.geometry.coordinates.map(n=>{let o=-1;if(n.elevationTile&&n.elevationTile!==e.outsideExtentTile){o=t.lodAt(n.elevationTile.key.level).resolution*a}return{demResolution:o,source:-1===o?void 0:e.layer}})}const N="elevation-query:invalid-layer";export{N as InvalidLayerError,T as createSampler,j as defaultOptions,q as getFinestLodIndex,g as query,v as queryAll};
2
+ import{result as e}from"../../core/asyncUtils.js";import t from"../../core/Error.js";import has from"../../core/has.js";import{assertIsSome as a}from"../../core/maybe.js";import{whenOrAbort as o,throwIfAbortError as n}from"../../core/promiseUtils.js";import{getMetersPerUnitForSR as i}from"../../core/units.js";import{initializeProjection as r,project as l}from"../../geometry/projectionUtils.js";import{fromExtent as s}from"../../geometry/support/aaBoundingRect.js";import{GeometryQueryContext as c,ExtentQueryContext as u,isTileInfoTilemapCache as m,getLods as f}from"./ElevationQueryContext.js";import{ElevationTile as p}from"./ElevationTile.js";import y from"./ElevationTileData.js";import{GeometryDescriptor as d}from"./GeometryDescriptor.js";import{TileElevationSampler as w}from"./TileElevationSampler.js";import{TileKey as h}from"./TileKey.js";async function g(e,a,o){if(e=o?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice(),!e.length)throw new t(z,"Elevation queries require at least one elevation layer to fetch tiles from");const n=d.fromGeometry(a),i={...j,...o,returnSampleInfo:!0},r=e.pop(),l=await v(r,n,i),s=await I(e,l,i);return s.geometry=s.geometry.export(),o?.returnSampleInfo||delete s.sampleInfo,s}async function v(e,a,o){if(!e)throw new t(z,"Elevation queries require an elevation layer to fetch tiles from");if(!a||!(a instanceof d)&&"point"!==a.type&&"multipoint"!==a.type&&"polyline"!==a.type)throw new t("elevation-query:invalid-geometry","Only point, polyline and multipoint geometries can be used to query elevation");const n={...j,...o},i=n.signal;if("integrated-mesh-3dtiles"===e.type){const t=d.fromGeometry(a);if(e.queryElevationCallback&&(has("enable-feature:im-as-ground")?e.isUsedAsGroundLayer:e.replacesTerrain)){const r=12.9*(o?.minDemResolution||0)+.71,l=await e.queryElevationCallback(t,{signal:i,maxGeometricError:r}),s=t.coordinates.map(()=>({demResolution:1,source:e})),c=await l.project(a.spatialReference,i);if(c){if(void 0!==n.noDataValue&&n.noDataValue!==Number.MAX_VALUE)for(const e of c.coordinates)e.z===Number.MAX_VALUE&&(e.z=n.noDataValue);return{geometry:c.export(),noDataValue:n.noDataValue??Number.MAX_VALUE,sampleInfo:s}}}const r=t.coordinates.map(()=>({demResolution:-1,source:e}));return{geometry:t.export(),noDataValue:Number.MAX_VALUE,sampleInfo:r}}if("integrated-mesh"===e.type){const t=d.fromGeometry(a),o=t.coordinates.map(()=>({demResolution:-1,source:e}));return{geometry:t.export(),noDataValue:Number.MAX_VALUE,sampleInfo:o}}const r=new c(e,a.spatialReference,n);return await e.load({signal:i}),await L(r,a,i),await R(r,i),await G(r,i),k(r),N(r,i)}async function T(e,a,o){if(e=Array.isArray(e)?e:[e],0===(e=o?.ignoreInvisibleLayers?e.filter(e=>e.visible):e.slice()).length)throw new t(z,"Elevation queries require at least one elevation layer to fetch tiles from");if(!a||"extent"!==a.type)throw new t("elevation-query:invalid-extent","Invalid or undefined extent");const n={...j,...o,returnSampleInfo:!0},i=E(e[e.length-1],a,n);if(1===e.length)return i;return D(e,a,await i,n)}async function E(e,t,a,o){const n=a.signal;await e.load({signal:n});const i=t.spatialReference,s=e.tileInfo.spatialReference;i.equals(s)||(await r([{source:i,dest:s}],{signal:n}),t=l(t,s));const c=new u(e,t,a,o);await R(c,n),await G(c,n);const m=c.elevationTiles,f=c.layer.tileInfo,p=c.parameters.noDataValue;return new w({noDataValue:p,tiles:m,tileInfo:f})}async function D(e,t,a,o){if(e.pop(),!e.length)return a;const n=a.samplers.filter(e=>!e.tile.hasNoDataValues).map(e=>s(e.extent)),i=await E(e[e.length-1],t,o,n);if(0===i.samplers.length)return a;const r=a.samplers.concat(i.samplers),l=o.noDataValue;return D(e,t,new w({samplers:r,noDataValue:l}),o)}async function I(e,t,o){const n=t.geometry.coordinates,i=t.sampleInfo;a(i);const r=new Array,l=new Array;for(let a=0;a<n.length;a++){i[a].demResolution<0&&e.length&&(r.push(n[a]),l.push(a))}const s=e.pop();if(null==s||0===r.length)return t;const c=t.geometry.clone(r),u=await v(s,c,o),m=u.sampleInfo;if(!m)throw new Error("no sampleInfo");return l.forEach((e,t)=>{n[e].z=u.geometry.coordinates[t].z,i[e].demResolution=m[t].demResolution,i[e].source=m[t].source}),I(e,t,o)}async function R(e,a){"geometry"===e.type&&U(e);const o=e.parameters.demResolution;if("number"==typeof o)S(e,o);else if("finest-contiguous"===o)await x(e,a);else{if("auto"!==o)throw new t("elevation-query:invalid-dem-resolution",`Invalid dem resolution value '${o}', expected a number, "finest-contiguous" or "auto"`);await V(e,a)}}async function x(e,t){const{tileInfo:a,tilemapCache:o}=e.layer,n=q(a,o,e.parameters.minDemResolution);await A(e,n,t)}async function A(e,a,i){const r=e.layer;if(e.selectTilesAtLOD(a),a<0)return;const l=r.tilemapCache,s=e.getTilesToFetch();try{if(l&&!m(l))await o(Promise.all(s.map(e=>l.fetchAvailability(e.level,e.row,e.col,{signal:i}))),i);else if(await G(e,i),!e.allElevationTilesFetched())throw e.clearElevationTiles(),new t("elevation-query:has-unavailable-tiles","Some elevation tiles are unavailable")}catch(c){n(c),await A(e,a-1,i)}}async function V(t,a){F(t),M(t);const i=t.layer.tilemapCache;if(!i||m(i))return b(t,a);const r=t.getTilesToFetch(),l={},s=r.map(async t=>{const o=new h(0,0,0),r=await e(i.fetchAvailabilityUpsample(t.level,t.row,t.col,o,{signal:a}));!1!==r.ok?null!=t.id&&(l[t.id]=o):n(r.error)});await o(Promise.all(s),a),t.remapTiles(l)}async function b(e,t){const a=e.layer.tileInfo;await G(e,t);let o=!1;e.forEachTileToFetch((e,t)=>{a.upsampleTile(e)?o=!0:t()}),o&&await b(e,t)}function q(e,t,a=0){const o=f(e,t);let n=o.length-1;if(a>0){const t=a/i(e.spatialReference),r=o.findIndex(e=>e.resolution<t);0===r?n=0:r>0&&(n=r-1)}return n}const j={maximumAutoTileRequests:20,noDataValue:0,returnSampleInfo:!1,demResolution:"auto",minDemResolution:0,signal:null};async function L(e,a,o){let n;const i=e.layer.tileInfo.spatialReference;if(a instanceof d?n=await a.project(i,o):(await r([{source:a.spatialReference,dest:i}],{signal:o}),n=l(a,i)),!n)throw new t("elevation-query:spatial-reference-mismatch",`Cannot query elevation in '${a.spatialReference.wkid}' on an elevation service in '${i.wkid}'`);e.geometry=d.fromGeometry(n)}function U(e){if(null==e.layer.fullExtent)return;const t=new p(new h(-1,-1,-1));t.sample=()=>e.parameters.noDataValue,e.outsideExtentTile=t;const a=e.layer.fullExtent;e.geometry.coordinates.forEach(e=>{const o=e.x,n=e.y;(o<a.xmin||o>a.xmax||n<a.ymin||n>a.ymax)&&(e.elevationTile=t)})}function C(e,t){const{tileInfo:a,tilemapCache:o}=e.layer,n=t/i(a.spatialReference),r=f(a,o);let l=r[0],s=0;for(let i=1;i<r.length;i++){const e=r[i];Math.abs(e.resolution-n)<Math.abs(l.resolution-n)&&(l=e,s=i)}return s}function S(e,t){const a=C(e,t);e.selectTilesAtLOD(a)}function F(e){const{tileInfo:t,tilemapCache:a}=e.layer,o=q(t,a,e.parameters.minDemResolution);e.selectTilesAtLOD(o,e.parameters.maximumAutoTileRequests)}async function G(e,t){const a=e.getTilesToFetch(),n={},i=e.parameters.cache,r=e.parameters.noDataValue,l={noDataValue:r,signal:t},s=a.map(async t=>{if(null==t.id)return;const a=`${e.layer.uid}:${t.id}:${r}`,o=i?.get(a),s=o??y.from(await e.layer.fetchTile(t.level,t.row,t.col,l));i?.put(a,s),n[t.id]=new p(t,s)});await o(Promise.allSettled(s),t),e.populateElevationTiles(n)}function M(e){const t=e.layer.tileInfo;let a=0;const o={},n=e=>{null!=e.id&&(e.id in o?o[e.id]++:(o[e.id]=1,a++))},i=e=>{if(null==e.id)return;const t=o[e.id];1===t?(delete o[e.id],a--):o[e.id]=t-1};e.forEachTileToFetch(n,i);let r=!0;for(;r&&(r=!1,e.forEachTileToFetch(o=>{a<=e.parameters.maximumAutoTileRequests||(i(o),t.upsampleTile(o)&&(r=!0),n(o))},i),r););}function k(e){e.geometry.coordinates.forEach(t=>{const a=t.elevationTile;let o=e.parameters.noDataValue;if(a){const e=a.sample(t.x,t.y);null==e?t.elevationTile=null:o=e}t.z=o})}async function N(e,t){const o=await e.geometry.project(e.outSpatialReference,t);a(o);const n={geometry:o.export(),noDataValue:e.parameters.noDataValue};return e.parameters.returnSampleInfo&&(n.sampleInfo=$(e)),e.geometry.coordinates.forEach(e=>{e.tile=null,e.elevationTile=null}),n}function $(e){const t=e.layer.tileInfo,a=i(t.spatialReference);return e.geometry.coordinates.map(o=>{let n=-1;if(o.elevationTile&&o.elevationTile!==e.outsideExtentTile){n=t.lodAt(o.elevationTile.key.level).resolution*a}return{demResolution:n,source:-1===n?void 0:e.layer}})}const z="elevation-query:invalid-layer";export{z as InvalidLayerError,T as createSampler,j as defaultOptions,q as getFinestLodIndex,v as query,g as queryAll};
@@ -1,6 +1,7 @@
1
1
  import type Query from "../../rest/support/Query.js";
2
2
  import type { JSONSupport } from "../../core/JSONSupport.js";
3
3
  import type { QueryProperties } from "../../rest/support/Query.js";
4
+ import type { ObjectId } from "../../views/types.js";
4
5
 
5
6
  export interface FeatureFilterProperties extends Partial<Pick<FeatureFilter, "objectIds">> {
6
7
  /**
@@ -202,7 +203,7 @@ export default class FeatureFilter extends JSONSupport {
202
203
  * const oidsArray = layerView.queryObjectIds(query);
203
204
  * layerView.filter = oidsArray.length > 0 ? { objectIds: oidsArray } : { where: "1=0" };
204
205
  */
205
- accessor objectIds: number[] | null | undefined;
206
+ accessor objectIds: ObjectId[] | null | undefined;
206
207
  /**
207
208
  * For spatial filters, this parameter defines the spatial relationship to filter features in the layer view
208
209
  * against the filter [geometry](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FeatureFilter/#geometry). The spatial relationships discover how features are spatially related to each other.
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{JSONMap as t}from"../../core/jsonMap.js";import{JSONSupport as i}from"../../core/JSONSupport.js";import{clone as r}from"../../core/lang.js";import{property as s,subclass as o}from"../../core/accessorSupport/decorators.js";import{geometryTypes as n}from"../../geometry/support/typeUtils.js";import l from"../../rest/support/Query.js";import a from"../../time/TimeExtent.js";var p;const c=new t({esriSpatialRelIntersects:"intersects",esriSpatialRelContains:"contains",esriSpatialRelCrosses:"crosses",esriSpatialRelDisjoint:"disjoint",esriSpatialRelEnvelopeIntersects:"envelope-intersects",esriSpatialRelIndexIntersects:"index-intersects",esriSpatialRelOverlaps:"overlaps",esriSpatialRelTouches:"touches",esriSpatialRelWithin:"within",esriSpatialRelRelation:"relation"}),u=new t({esriSRUnit_Meter:"meters",esriSRUnit_Kilometer:"kilometers",esriSRUnit_Foot:"feet",esriSRUnit_StatuteMile:"miles",esriSRUnit_NauticalMile:"nautical-miles",esriSRUnit_USNauticalMile:"us-nautical-miles"});let m=p=class extends i{constructor(e){super(e),this.where=null,this.geometry=null,this.spatialRelationship="intersects",this.distance=void 0,this.objectIds=null,this.units=null,this.timeExtent=null}createQuery(e={}){const{where:t,geometry:i,spatialRelationship:s,timeExtent:o,objectIds:n,units:a,distance:p}=this;return new l({geometry:r(i),objectIds:r(n),spatialRelationship:s,timeExtent:r(o),where:t,units:a,distance:p,...e})}clone(){const{where:e,geometry:t,spatialRelationship:i,timeExtent:s,objectIds:o,units:n,distance:l}=this;return new p({geometry:r(t),objectIds:r(o),spatialRelationship:i,timeExtent:r(s),where:e,units:n,distance:l})}};e([s({type:String,json:{write:!0}})],m.prototype,"where",void 0),e([s({types:n,json:{write:!0}})],m.prototype,"geometry",void 0),e([s({type:c.apiValues,json:{name:"spatialRel",read:{reader:c.read},write:{allowNull:!1,writer:c.write,overridePolicy(){return{enabled:null!=this.geometry}}}}})],m.prototype,"spatialRelationship",void 0),e([s({type:Number,json:{write:{overridePolicy(e){return{enabled:null!=e&&null!=this.geometry}}}}})],m.prototype,"distance",void 0),e([s({type:[Number],json:{write:!0}})],m.prototype,"objectIds",void 0),e([s({type:u.apiValues,json:{read:u.read,write:{writer:u.write,overridePolicy(e){return{enabled:null!=e&&null!=this.geometry}}}}})],m.prototype,"units",void 0),e([s({type:a,json:{write:!0}})],m.prototype,"timeExtent",void 0),m=p=e([o("esri.layers.support.FeatureFilter")],m);const d=m;export{d as default};
2
+ import{__decorate as e}from"tslib";import{JSONMap as t}from"../../core/jsonMap.js";import{JSONSupport as i}from"../../core/JSONSupport.js";import{clone as r}from"../../core/lang.js";import{property as s,subclass as o}from"../../core/accessorSupport/decorators.js";import{geometryTypes as n}from"../../geometry/support/typeUtils.js";import l from"../../rest/support/Query.js";import a from"../../time/TimeExtent.js";var p;const c=new t({esriSpatialRelIntersects:"intersects",esriSpatialRelContains:"contains",esriSpatialRelCrosses:"crosses",esriSpatialRelDisjoint:"disjoint",esriSpatialRelEnvelopeIntersects:"envelope-intersects",esriSpatialRelIndexIntersects:"index-intersects",esriSpatialRelOverlaps:"overlaps",esriSpatialRelTouches:"touches",esriSpatialRelWithin:"within",esriSpatialRelRelation:"relation"}),u=new t({esriSRUnit_Meter:"meters",esriSRUnit_Kilometer:"kilometers",esriSRUnit_Foot:"feet",esriSRUnit_StatuteMile:"miles",esriSRUnit_NauticalMile:"nautical-miles",esriSRUnit_USNauticalMile:"us-nautical-miles"});let m=p=class extends i{constructor(e){super(e),this.where=null,this.geometry=null,this.spatialRelationship="intersects",this.distance=void 0,this.objectIds=null,this.units=null,this.timeExtent=null}createQuery(e={}){const{where:t,geometry:i,spatialRelationship:s,timeExtent:o,objectIds:n,units:a,distance:p}=this;return new l({geometry:r(i),objectIds:r(n),spatialRelationship:s,timeExtent:r(o),where:t,units:a,distance:p,...e})}clone(){const{where:e,geometry:t,spatialRelationship:i,timeExtent:s,objectIds:o,units:n,distance:l}=this;return new p({geometry:r(t),objectIds:r(o),spatialRelationship:i,timeExtent:r(s),where:e,units:n,distance:l})}};e([s({type:String,json:{write:!0}})],m.prototype,"where",void 0),e([s({types:n,json:{write:!0}})],m.prototype,"geometry",void 0),e([s({type:c.apiValues,json:{name:"spatialRel",read:{reader:c.read},write:{allowNull:!1,writer:c.write,overridePolicy(){return{enabled:null!=this.geometry}}}}})],m.prototype,"spatialRelationship",void 0),e([s({type:Number,json:{write:{overridePolicy(e){return{enabled:null!=e&&null!=this.geometry}}}}})],m.prototype,"distance",void 0),e([s({json:{write:!0}})],m.prototype,"objectIds",void 0),e([s({type:u.apiValues,json:{read:u.read,write:{writer:u.write,overridePolicy(e){return{enabled:null!=e&&null!=this.geometry}}}}})],m.prototype,"units",void 0),e([s({type:a,json:{write:!0}})],m.prototype,"timeExtent",void 0),m=p=e([o("esri.layers.support.FeatureFilter")],m);const d=m;export{d as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "5.2.0-next.112",
3
+ "version": "5.2.0-next.113",
4
4
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
5
5
  "keywords": [
6
6
  "ArcGIS",
@@ -20,7 +20,7 @@
20
20
  "license": "SEE LICENSE IN LICENSE.md",
21
21
  "dependencies": {
22
22
  "@amcharts/amcharts5": "~5.20.5",
23
- "@arcgis/toolkit": "5.2.0-next.112",
23
+ "@arcgis/toolkit": "5.2.0-next.113",
24
24
  "@esri/arcgis-html-sanitizer": "~4.1.0",
25
25
  "@esri/calcite-components": "^5.2.0-next.73",
26
26
  "@vaadin/grid": "~25.2.11",
@@ -16,7 +16,6 @@ export default class GraphDeleteNamedTypeResult extends GraphDataModelOperationR
16
16
  /**
17
17
  * Any warnings returned while processing the delete operation for this named type.
18
18
  *
19
- * @property
20
19
  * @since 5.1
21
20
  */
22
21
  accessor warnings: EsriError[];
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const c="20260915",a="7a09763fc97c7e9f0c62643e91a616dd6cda31c1";export{c as buildDate,a as revision};
2
+ const e="20260916",b="ff3e375b4dda2e2e2ccdef9c48894884bd7b1bf3";export{e as buildDate,b as revision};
@@ -1,10 +1,12 @@
1
1
  import type LineStyleMarker3D from "./LineStyleMarker3D.js";
2
2
  import type Symbol3DLayer from "./Symbol3DLayer.js";
3
3
  import type LineStylePattern3D from "./patterns/LineStylePattern3D.js";
4
+ import type LineTemplatePattern3D from "./patterns/LineTemplatePattern3D.js";
4
5
  import type Symbol3DMaterial from "./support/Symbol3DMaterial.js";
5
6
  import type { LineStyleMarker3DProperties } from "./LineStyleMarker3D.js";
6
7
  import type { LineCap, LineJoin } from "./types.js";
7
8
  import type { LineStylePattern3DProperties } from "./patterns/LineStylePattern3D.js";
9
+ import type { LineTemplatePattern3DProperties } from "./patterns/LineTemplatePattern3D.js";
8
10
  import type { Symbol3DMaterialProperties } from "./support/Symbol3DMaterial.js";
9
11
  import type { Symbol3DLayerProperties } from "./Symbol3DLayer.js";
10
12
 
@@ -65,6 +67,8 @@ export interface LineSymbol3DLayerProperties extends Symbol3DLayerProperties, Pa
65
67
  material?: Symbol3DMaterialProperties | null;
66
68
  /**
67
69
  * The pattern used to render the line stroke. By default, the lines are shown as solid.
70
+ * Use [LineStylePattern3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/patterns/LineStylePattern3D/) to pick from a set of predefined patterns
71
+ * and [LineTemplatePattern3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/patterns/LineTemplatePattern3D/) to define a custom pattern using a template.
68
72
  *
69
73
  * @since 4.22
70
74
  * @example
@@ -81,7 +85,7 @@ export interface LineSymbol3DLayerProperties extends Symbol3DLayerProperties, Pa
81
85
  * }]
82
86
  * };
83
87
  */
84
- pattern?: (LineStylePattern3DProperties & { type: "style" }) | null;
88
+ pattern?: (LineStylePattern3DProperties & { type: "style" }) | (LineTemplatePattern3DProperties & { type: "template" }) | null;
85
89
  /**
86
90
  * The width of the line.
87
91
  *
@@ -244,6 +248,8 @@ export default class LineSymbol3DLayer extends Symbol3DLayer {
244
248
  set material(value: Symbol3DMaterialProperties | null | undefined);
245
249
  /**
246
250
  * The pattern used to render the line stroke. By default, the lines are shown as solid.
251
+ * Use [LineStylePattern3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/patterns/LineStylePattern3D/) to pick from a set of predefined patterns
252
+ * and [LineTemplatePattern3D](https://developers.arcgis.com/javascript/latest/references/core/symbols/patterns/LineTemplatePattern3D/) to define a custom pattern using a template.
247
253
  *
248
254
  * @since 4.22
249
255
  * @example
@@ -260,8 +266,8 @@ export default class LineSymbol3DLayer extends Symbol3DLayer {
260
266
  * }]
261
267
  * };
262
268
  */
263
- get pattern(): LineStylePattern3D | null | undefined;
264
- set pattern(value: (LineStylePattern3DProperties & { type: "style" }) | null | undefined);
269
+ get pattern(): LineStylePattern3D | LineTemplatePattern3D | null | undefined;
270
+ set pattern(value: (LineStylePattern3DProperties & { type: "style" }) | (LineTemplatePattern3DProperties & { type: "template" }) | null | undefined);
265
271
  /**
266
272
  * The width of the line.
267
273
  *
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{defaultFontFamily as t}from"../../core/fontUtils.js";import has from"../../core/has.js";import{clone as e}from"../../core/lang.js";import i from"../../core/Logger.js";import{deg2rad as s}from"../../core/mathUtils.js";import r from"../../core/ObjectPool.js";import{px2pt as a,pt2px as n}from"../../core/screenUtils.js";import{GeometryCursor as o}from"../../geometry/GeometryCursor.js";import{empty as l,expandPointInPlace as h,center as c,width as m,height as f,diagonal as u,fromValues as d,create as p}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as g}from"../../geometry/support/boundsUtils.js";import{polygonCentroid as _}from"../../geometry/support/centroid.js";import{targetIntersectsPolygon as y,pointInPolygon as P,nearLine as x}from"../../geometry/support/intersectsBase.js";import{isPolygon as S,isPolyline as w,isExtent as M,isMultipoint as b,isPoint as T}from"../../geometry/support/jsonTypeUtils.js";import{SimpleEffectCursor as k}from"./CIMEffects.js";import C from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as v,getPlacementOperator as I}from"./CIMOperators.js";import{Placement as R}from"./CIMPlacements.js";import{defaultCIMValues as z}from"./defaultCIMValues.js";import{getFirstFrame as L}from"./imageUtils.js";import{rotate as U}from"./mathUtils.js";import{addColorStops as F}from"./rasterizingUtils.js";import A from"./Rect.js";import{parseRichTextRuns as j,hasRichTextFormattingTags as D}from"./richTextUtils.js";import G from"./TextRasterizer.js";import{getNumericValue as H,isSVGImage as E,getRelativeGradientSize as B,getEffectsInflateSize as X,fromCIMFontDecoration as J,fromCIMFontStyle as N,fromCIMHorizontalAlignment as O,fromCIMVerticalAlignment as q,getFillColor as V,getStrokeColor as Y,getStrokeWidth as W,getFontWeight as K,getFontStyle as $,isCIMFill as Q,getSize as Z}from"./utils.js";import{destroyHiddenSvg as tt,createHiddenSvg as et,createSvgElement as it}from"../../views/2d/engine/svgUtils.js";import{magicLabelLineHeight as st,glyphSize as rt,hittestToleranceSmallSymbol as at,hittestSmallSymbolThreshold as nt}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as ot}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as lt,getLineWidth as ht}from"../../views/2d/layers/graphics/graphicsUtils.js";const ct=Math.PI/180,mt=.5,ft=()=>i.getLogger("esri.symbols.cim.CIMSymbolDrawHelper");class ut{constructor(t){this._t=t}static createIdentity(){return new ut([1,0,0,0,1,0])}clone(){const t=this._t;return new ut(t.slice())}transform(t){const e=this._t;return[e[0]*t[0]+e[1]*t[1]+e[2],e[3]*t[0]+e[4]*t[1]+e[5]]}static createScale(t,e){return new ut([t,0,0,0,e,0])}scale(t,e){const i=this._t;return i[0]*=t,i[1]*=t,i[2]*=t,i[3]*=e,i[4]*=e,i[5]*=e,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(t,e){return new ut([0,0,t,0,0,e])}translate(t,e){const i=this._t;return i[2]+=t,i[5]+=e,this}static createRotate(t){const e=Math.cos(t),i=Math.sin(t);return new ut([e,-i,0,i,e,0])}rotate(t){return ut.multiply(this,ut.createRotate(t),this)}angle(){const t=this._t[0],e=this._t[3],i=Math.sqrt(t*t+e*e);return[t/i,e/i]}static multiply(t,e,i){const s=t._t,r=e._t,a=s[0]*r[0]+s[3]*r[1],n=s[1]*r[0]+s[4]*r[1],o=s[2]*r[0]+s[5]*r[1]+r[2],l=s[0]*r[3]+s[3]*r[4],h=s[1]*r[3]+s[4]*r[4],c=s[2]*r[3]+s[5]*r[4]+r[5],m=i._t;return m[0]=a,m[1]=n,m[2]=o,m[3]=l,m[4]=h,m[5]=c,i}invert(){const t=this._t;let e=t[0]*t[4]-t[1]*t[3];if(0===e)return new ut([0,0,0,0,0,0]);e=1/e;const i=(t[1]*t[5]-t[2]*t[4])*e,s=(t[2]*t[3]-t[0]*t[5])*e,r=t[4]*e,a=-t[1]*e,n=-t[3]*e,o=t[0]*e;return new ut([r,a,i,n,o,s])}}class dt{constructor(t,e){this._resourceManager=t,this._transfos=[],this._sizeTransfos=[],this._textScaling=[],this._geomUnitsPerPoint=1,this._placementPool=new r(()=>new R,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(e||ut.createIdentity()),this._sizeTransfos.push(e?e.scaleRatio():1),this._textScaling.push(1)}setTransform(t,e){this._transfos=[t||ut.createIdentity()],this._sizeTransfos=[e||(t?t.scaleRatio():1)],this._textScaling=[1]}setGeomUnitsPerPoint(t){this._geomUnitsPerPoint=t}transformPt(t){return this._transfos[this._transfos.length-1].transform(t)}transformSize(t){return t*this._sizeTransfos[this._sizeTransfos.length-1]}scaleText(t){return t*this._textScaling[this._textScaling.length-1]}reverseTransformPt(t){return this._transfos[this._transfos.length-1].invert().transform(t)}reverseTransformSize(t){return t/this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformScalar(t){return t/this._transfos[this._transfos.length-1].scaleRatio()}reverseScaleText(t){return t/this._textScaling[this._textScaling.length-1]}getTransformAngle(){return this._transfos[this._transfos.length-1].angle()}geomUnitsPerPoint(){return this.isEmbedded()?1:this._geomUnitsPerPoint}prevGeomUnitsPerPoint(){return this._transfos.length>2?1:this._geomUnitsPerPoint}isEmbedded(){return this._transfos.length>1}back(){return this._transfos[this._transfos.length-1]}push(t,e=!1,i=1){const s=e?t.scaleRatio():1;ut.multiply(t,this.back(),t),this._transfos.push(t),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*s),this._textScaling.push(this._textScaling[this._textScaling.length-1]*i)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1),this._textScaling.splice(-1,1)}drawSymbol(t,e,i){if(t)switch(t.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this.drawMultiLayerSymbol(t,e);break;case"CIMTextSymbol":this.drawTextSymbol(t,e,i)}}drawMultiLayerSymbol(t,e){if(!t||!e)return;const i=t.symbolLayers;if(!i)return;const s=t.effects;if(s&&s.length>0){const t=this.executeEffects(s,e);if(t){let e=t.next();for(;e;)this.drawSymbolLayers(i,e.asJSON()),e=t.next()}}else this.drawSymbolLayers(i,e)}executeEffects(t,e){const i=this.geomUnitsPerPoint(),s=null,r=X(t),a=!1;let n=new k(o.fromJSONCIM(e));for(const o of t){const t=v(o);t&&(n=t.execute(n,o,{geomUnitsPerPoint:i,tileKey:s,maxInflateSize:r,scale:null,spatialReference:e.spatialReference,preventClipping:a}))}return n}drawSymbolLayers(t,e){let i=t.length;for(;i--;){const s=t[i];if(!s||!1===s.enable)continue;const r=s.effects;if(r&&r.length>0){const t=this.executeEffects(r,e);if(t){let e=null;for(;(e=t.next())&&(this.drawSymbolLayer(s,e.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(s,e);if(this._earlyReturn)return}}drawSymbolLayer(t,e){switch(t.type){case"CIMSolidFill":this.drawSolidFill(e,t.color,t.path);break;case"CIMHatchFill":this.drawHatchFill(e,t);break;case"CIMPictureFill":this.drawPictureFill(e,t);break;case"CIMGradientFill":this.drawGradientFill(e,t);break;case"CIMSolidStroke":this.drawSolidStroke(e,t.color,t.width,t.capStyle,t.joinStyle,t.miterLimit,t.path);break;case"CIMPictureStroke":this.drawPictureStroke(e,t);break;case"CIMGradientStroke":this.drawGradientStroke(e,t);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":this.drawMarkerLayer(t,e)}}drawHatchFill(t,e){const i=yt(e,t,this.geomUnitsPerPoint());i&&(this.pushClipPath(t),this.drawMultiLayerSymbol(e.lineSymbol,i),this.popClipPath())}drawPictureFill(t,e){}drawGradientFill(t,e){}drawPictureStroke(t,e){}drawGradientStroke(t,e){}drawMarkerLayer(t,e){const i=t.markerPlacement;if(i){const s=I(i);if(s){const r="CIMMarkerPlacementInsidePolygon"===i.type||"CIMMarkerPlacementPolygonCenter"===i.type&&i.clipAtBoundary;r&&this.pushClipPath(e);const a=s.execute(o.fromJSONCIM(e),i,this.geomUnitsPerPoint(),null);if(a){let e=null;for(;(e=a.next())&&(this.drawMarker(t,e),!this._earlyReturn););}r&&this.popClipPath()}}else{const i=this._placementPool.acquire();if(T(e))i.tx=e.x,i.ty=e.y,this.drawMarker(t,i);else if(S(e)){const s=_(e);s&&([i.tx,i.ty]=s,this.drawMarker(t,i))}else if(w(e)){for(const s of e.paths)for(const e of s)if(i.tx=e[0],i.ty=e[1],this.drawMarker(t,i),this._earlyReturn)break}else for(const s of e.points)if(i.tx=s[0],i.ty=s[1],this.drawMarker(t,i),this._earlyReturn)break;this._placementPool.release(i)}}drawMarker(t,e){switch(t.type){case"CIMCharacterMarker":case"CIMPictureMarker":this.drawPictureMarker(t,e);break;case"CIMVectorMarker":this.drawVectorMarker(t,e)}}drawPictureMarker(t,e){if(!t)return;const i=this._resourceManager.getResource(t.url),s=H(t.size,z.CIMPictureMarker.size);if(null==i||s<=0)return;const r=i.width,a=i.height;if(!r||!a)return;const n=r/a,o=H(t.scaleX,1),l=ut.createIdentity(),h=t.anchorPoint;if(h){let e=h.x,i=h.y;"Absolute"!==t.anchorPointUnits&&(e*=s*n*o,i*=s),l.translate(-e,-i)}let c=H(t.rotation);t.rotateClockwise&&(c=-c),this._mapRotation&&(c+=this._mapRotation),c&&l.rotate(c*ct);let m=H(t.offsetX),f=H(t.offsetY);if(m||f){if(this._mapRotation){const t=ct*this._mapRotation,e=Math.cos(t),i=Math.sin(t),s=m*i+f*e;m=m*e-f*i,f=s}l.translate(m,f)}const u=this.geomUnitsPerPoint();1!==u&&l.scale(u,u);const d=e.getAngle();d&&l.rotate(d),l.translate(e.tx,e.ty),this.push(l),this.drawImage(t,s),this.pop()}drawVectorMarker(t,e){if(!t)return;const i=t.markerGraphics;if(!i)return;const s=H(t.size,z.CIMVectorMarker.size),r=t.frame,a=r?r.ymax-r.ymin:0,n=s&&a?s/a:1,o=ut.createIdentity();r&&o.translate(.5*-(r.xmax+r.xmin),.5*-(r.ymax+r.ymin));const l=t.anchorPoint;if(l){let e=l.x,i=l.y;"Absolute"!==t.anchorPointUnits?r&&(e*=r.xmax-r.xmin,i*=r.ymax-r.ymin):(e/=n,i/=n),o.translate(-e,-i)}1!==n&&o.scale(n,n);let h=H(t.rotation);t.rotateClockwise&&(h=-h),this._mapRotation&&(h+=this._mapRotation),h&&o.rotate(h*ct);let c=H(t.offsetX),m=H(t.offsetY);if(c||m){if(this._mapRotation){const t=ct*this._mapRotation,e=Math.cos(t),i=Math.sin(t),s=c*i+m*e;c=c*e-m*i,m=s}o.translate(c,m)}const f=this.geomUnitsPerPoint();1!==f&&o.scale(f,f);const u=e.getAngle();u&&o.rotate(u),o.translate(e.tx,e.ty);const d=t.scaleSymbolsProportionally?1:n;this.push(o,t.scaleSymbolsProportionally,d);for(const p of i){p?.symbol&&p.geometry||ft().error("Invalid marker graphic",p);let t=p.textString;if("number"==typeof t&&(t=t.toString()),this.drawSymbol(p.symbol,p.geometry,t),this._earlyReturn)break}this.pop()}drawTextSymbol(t,e,i){if(!t)return;if(!T(e))return;if(H(t.height,z.CIMTextSymbol.height)<=0)return;const s=ut.createIdentity();let r=H(t.angle);r=-r,r&&s.rotate(r*ct);const a=H(t.offsetX),n=H(t.offsetY);(a||n)&&s.translate(a,n);const o=this.geomUnitsPerPoint();1!==o&&s.scale(o,o),s.translate(e.x,e.y),this.push(s),this.drawText(t,i),this.pop()}}class pt extends dt{constructor(t,e){super(t,e),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new A(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return d(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(t){if(t&&!(this._clipCount>0))if(S(t))this._processPath(t.rings,0);else if(w(t))this._processPath(t.paths,0);else if(M(t)){const e=xt(t);e&&this._processPath(e.rings,0)}else console.error("drawSolidFill Unexpected geometry type!")}drawSolidStroke(t,e,i){if(!t||this._clipCount>0||null==i||i<=0)return;const s=Math.max(.5*this.transformSize(H(i,z.CIMSolidStroke.width)),.5*mt);if(S(t))this._processPath(t.rings,s);else if(w(t))this._processPath(t.paths,s);else if(M(t)){const e=xt(t);e&&this._processPath(e.rings,s)}else console.error("drawSolidStroke unexpected geometry type!")}drawMarkerLayer(t,e){S(e)&&t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._processPath(e.rings,0):super.drawMarkerLayer(t,e)}drawHatchFill(t,e){this.drawSolidFill(t)}drawPictureFill(t,e){this.drawSolidFill(t)}drawGradientFill(t,e){this.drawSolidFill(t)}drawPictureStroke(t,e){this.drawSolidStroke(t,null,e.width)}drawGradientStroke(t,e){this.drawSolidStroke(t,null,e.width)}pushClipPath(t){this.drawSolidFill(t),this._clipCount++}popClipPath(){this._clipCount--}drawImage(t,e){const{url:i}=t,s=H(t.scaleX,1);let r=s*e,a=e;const n=this._resourceManager.getResource(i);if(null!=n){const t=n.height/n.width;r=s*(e?t>1?e:e/t:n.width),a=e?t>1?e*t:e:n.height}this._merge(this.transformPt([-r/2,-a/2]),0),this._merge(this.transformPt([-r/2,a/2]),0),this._merge(this.transformPt([r/2,-a/2]),0),this._merge(this.transformPt([r/2,a/2]),0)}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new G);const i=wt(t),s=j({textString:e,font:i.font,symbol:t,supportsRichText:D(e)});let[r,n]=s?this._textRasterizer.computeRichTextSize(s,i):this._textRasterizer.computeTextSize(e,i);r=a(r),n=a(n);const o=this.transformSize(1)*this.reverseTransformScalar(1);r*=o,n*=o;const l=t.horizontalAlignment??z.CIMTextSymbol.horizontalalignment,h=t.verticalAlignment??z.CIMTextSymbol.verticalalignment;let c=0;switch(l){case"Left":c=r/2;break;case"Right":c=-r/2}let m=0;switch(h){case"Bottom":m=n/2;break;case"Top":m=-n/2;break;case"Baseline":m=n/6}this._merge(this.transformPt([-r/2+c,-n/2+m]),0),this._merge(this.transformPt([-r/2+c,n/2+m]),0),this._merge(this.transformPt([r/2+c,-n/2+m]),0),this._merge(this.transformPt([r/2+c,n/2+m]),0)}_processPath(t,e){if(t)for(const i of t){const t=i?i.length:0;if(t>1){this._merge(this.transformPt(i[0]),e);for(let s=1;s<t;s++)this._merge(this.transformPt(i[s]),e)}}}_merge(t,e){t[0]-e<this._xmin&&(this._xmin=t[0]-e),t[0]+e>this._xmax&&(this._xmax=t[0]+e),t[1]-e<this._ymin&&(this._ymin=t[1]-e),t[1]+e>this._ymax&&(this._ymax=t[1]+e)}}class gt extends dt{constructor(){super(...arguments),this._hittestType="point",this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null,this._svg=null,this._path=null,this._canvas=null}destroy(){this._svg=tt(this._svg),this._path=null,this._canvas=null}hitTest(t,e,i,s){const{textInfo:r,mapRotation:o,resolution:l,searchDist:h,hittestType:c,isScreenAligned:m}=s;this._resetHittest();const f=l*n(1);switch(this.setGeomUnitsPerPoint(f),c){case"point":if(1!==t.length)return ft().error("Unexpected hittest area",t),!1;this._hittestType="point",this._searchDistPoint=h/2/f,this._searchTarget=[[t[0].x,t[0].y]];break;case"rect":if(4!==t.length)return ft().error("Unexpected hittest area",t),!1;this._hittestType="rect",this._searchDistPoint=0,this._searchTarget=t.map(t=>[t.x,t.y]);break;case"polygon":this._hittestType="polygon",this._searchDistPoint=0,this._searchTarget=t.map(t=>[t.x,t.y])}if(this._textInfo=r,this._mapRotation=m?o:0,!has("esri-mobile")){const t=a(at*window.devicePixelRatio),i=a(nt);!(("CIMLineSymbol"===e?.type||"CIMPolygonSymbol"===e?.type)&&e.symbolLayers?.some(Q))&&"CIMMeshSymbol"!==e?.type&&(Z(e)??0)<i&&(this._searchDistPoint=t)}return this._earlyReturn=!1,this.drawSymbol(e,i),this._earlyReturn}executeEffects(t,e){return"CIMGeometricEffectDashes"===t.at(-1)?.type&&(t=t.slice(0,-1)),super.executeEffects(t,e)}drawSolidFill(t,e,i){null!=i?this._hittestSvgPath(t,i,!0):this._hitTestFill(t)}drawHatchFill(t,e){this._hitTestFill(t)}drawPictureFill(t,e){this._hitTestFill(t)}drawGradientFill(t,e){this._hitTestFill(t)}drawSolidStroke(t,e,i,s,r,a,n){null!=n?this._hittestSvgPath(t,n,!1,i):this._hitTestStroke(t,i)}drawPictureStroke(t,e){this._hitTestStroke(t,e.width)}drawGradientStroke(t,e){this._hitTestStroke(t,e.width)}drawMarkerLayer(t,e){t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._hitTestFill(e):super.drawMarkerLayer(t,e)}drawTextSymbol(t,e,i){if(!t||!T(e))return;if(H(t.height,z.CIMTextSymbol.height)<=0)return;const s=ut.createIdentity(),r=this.geomUnitsPerPoint();1!==r&&s.scale(r,r),s.translate(e.x,e.y),this.push(s),this.drawText(t,i),this.pop()}pushClipPath(t){}popClipPath(){}drawImage(t,e){const{url:i}=t,s=H(t.scaleX,1),r=this._resourceManager.getResource(i);if(null==r||0===r.height||0===e)return;const a=e*this.geomUnitsPerPoint(),n=a*s*(r.width/r.height);if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]),e=this._searchDistPoint;Math.abs(t[0])<n/2+e&&Math.abs(t[1])<a/2+e&&(this._earlyReturn=!0)}else{const t=n/2,e=a/2,i=[[-t,e],[t,e],[t,-e],[-t,-e],[-t,e]],s=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(s,[i])&&(this._earlyReturn=!0)}}drawText(t,e){const i=this._textInfo;if(!i)return;const s=i.get(t);if(!s)return;if(!u(s.glyphMosaicItems))return;const r=lt(H(t.height,z.CIMTextSymbol.height)),{lineGapType:a,lineGap:n}=t,o=a?St(a,H(n),r):0,l=t.horizontalAlignment??z.CIMTextSymbol.horizontalalignment,h=t.verticalAlignment??z.CIMTextSymbol.verticalalignment,c="CIMBackgroundCallout"===t.callout?.type,m=ot(s.glyphMosaicItems,{scale:r/rt,angle:H(t.angle),xOffset:H(t.offsetX),yOffset:H(t.offsetY),horizontalAlignment:l,verticalAlignment:h,maxLineWidth:ht(t.lineWidth),lineHeight:st*Math.max(.25,Math.min(o||1,4)),decoration:t.font.decoration||"none",useCIMAngleBehavior:!1,hasBackground:c}),f=this.reverseScaleText(1);for(const d of m.glyphs){const t=d.offsets,e=[[t.topLeft[0]*f,-t.topLeft[1]*f],[t.topRight[0]*f,-t.topRight[1]*f],[t.bottomRight[0]*f,-t.bottomRight[1]*f],[t.bottomLeft[0]*f,-t.bottomLeft[1]*f],[t.topLeft[0]*f,-t.topLeft[1]*f]];if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]);P(t,[e])&&(this._earlyReturn=!0)}else{const t=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(t,[e])&&(this._earlyReturn=!0)}}function u(t){return"glyphs"===t.type?t.glyphs.length>0:t.runs.some(t=>t.glyphs.glyphs.length>0)}}_hitTestFill(t){let e=null;if(M(t)){const i=t;e=[[[i.xmin,i.ymin],[i.xmin,i.ymax],[i.xmax,i.ymax],[i.xmax,i.ymin],[i.xmin,i.ymin]]]}else if(S(t))e=t.rings;else{if(!w(t))return;e=t.paths}if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]);if(P(t,e)&&(this._earlyReturn=!0),!this._earlyReturn){const i=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();x(t,e,i)&&(this._earlyReturn=!0)}}else{const t=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(t,e)&&(this._earlyReturn=!0)}}_getSvgPath(){return null!=this._svg&&null!=this._path||(this._svg??=et(),this._path??=it("path"),this._svg.appendChild(this._path)),this._path}_getCanvasContext(t,e){return this._canvas??=document.createElement("canvas"),this._canvas.width=t,this._canvas.height=e,this._canvas.getContext("2d",{willReadFrequently:!0})}_hittestSvgPath(t,e,i,s=0){const r=p();g(r,t);const a={x:r[0],y:r[1],width:r[2]-r[0],height:r[3]-r[1]},n=this._getSvgPath();n.setAttribute("d",e);const o=n.getBBox();if("point"===this._hittestType){const t=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint(),r=this.reverseTransformPt(this._searchTarget[0]);let n=Math.max(o.width/a.width,o.height/a.height),l=1;const h=2*t*n;h<1&&(l=2/h,n*=l,o.x*=l,o.y*=l,o.width*=l,o.height*=l);const c=1+s*n/2,m=this._getCanvasContext(o.width+2*c,o.height+2*c);m.setTransform(l,0,0,l,-o.x+c,-o.y+c);const f=new Path2D(e);i?m.fill(f):(m.lineWidth=s*(n/l),m.stroke(f));const u=(a.width*n-o.width)/2,d=(a.height*n-o.height)/2,p=Math.floor((r[0]-a.x-t)*n-u+c),g=Math.floor((a.height-(r[1]-a.y)-t)*n+d+c),_=Math.ceil(2*t*n),y=Math.ceil(2*t*n),P=m.getImageData(p,g,_,y).data;for(let e=3;e<P.length;e+=4)if(P[e]>127.5)return void(this._earlyReturn=!0)}else{const t=[[a.x,a.y],[a.x,a.y+a.height],[a.x+a.width,a.y+a.height],[a.x+a.width,a.y],[a.x,a.y]],e=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;if(y(e,[t]))return void(this._earlyReturn=!0)}}_hitTestStroke(t,e){let i=null;if(M(t)){const e=t;i=[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}else if(S(t))i=t.rings;else{if(!w(t))return;i=t.paths}if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]),s=H(e,z.CIMSolidStroke.width)*this.geomUnitsPerPoint(),r=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();x(t,i,s/2+r)&&(this._earlyReturn=!0)}else{const t=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(t,i)&&(this._earlyReturn=!0)}}_resetHittest(){this.setTransform(),this._hittestType="point",this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null}}class _t extends dt{constructor(t,e,i,s){super(e,i),this._applyAdditionalRenderProps=s,this._colorSubstitutionHelper=new C,this._ctx=t}drawSolidFill(t,e){if(!t)return;if(S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!0);else if(M(t))this._buildPath(xt(t).rings,!0);else{if(!b(t))return;console.log("CanvasDrawHelper.drawSolidFill - No implementation!")}const i=this._ctx;i.fillStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",i.fill("evenodd")}drawSolidStroke(t,e,i,s,r,a){if(!t||!e||0===i)return;if(S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!1);else{if(!M(t))return void console.log("CanvasDrawHelper.drawSolidStroke isn't implemented!");this._buildPath(xt(t).rings,!0)}const n=this._ctx;n.strokeStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",n.lineWidth=Math.max(this.transformSize(i),mt),this._setCapStyle(s),this._setJoinStyle(r),n.miterLimit=a,n.stroke()}pushClipPath(t){if(this._ctx.save(),S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!0);else{if(!M(t))return;this._buildPath(xt(t).rings,!0)}this._ctx.clip("evenodd")}popClipPath(){this._ctx.restore()}drawImage(t,e){const{colorSubstitutions:i,url:s,tintColor:r}=t,a=H(t.scaleX,1),n=this._resourceManager.getResource(s);if(null==n)return;let o=e*(n.width/n.height),l=e;e||(o=n.width,l=n.height);const h=E(s)||"src"in n&&E(n.src);let c="getFrame"in n?L(n):n;i&&(c=this._colorSubstitutionHelper.applyColorSubstitution(c,i)),this._applyAdditionalRenderProps&&!h&&r&&(c=this._colorSubstitutionHelper.tintImageData(c,r));const m=this.transformPt([0,0]),[f,u]=this.getTransformAngle(),d=this.transformSize(1),p=this._ctx;p.save(),p.setTransform({m11:a*d*f,m12:a*d*u,m21:-d*u,m22:d*f,m41:m[0],m42:m[1]}),p.drawImage(c,-o/2,-l/2,o,l),p.restore()}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new G);const i=wt(t,this.transformSize(a(1))),s=j({textString:e,font:i.font,symbol:t,supportsRichText:D(e)}),r=s?this._textRasterizer.rasterizeRichText(s,i):this._textRasterizer.rasterizeText(e,i);if(!r)return;const{size:n,anchorX:o,anchorY:l,canvas:h}=r,c=n[0]*(o+.5),m=n[1]*(l-.5),f=this._ctx,u=this.transformPt([0,0]),[d,p]=this.getTransformAngle(),g=1;f.save(),f.setTransform({m11:g*d,m12:g*p,m21:-g*p,m22:g*d,m41:u[0]-g*c,m42:u[1]+g*m}),f.drawImage(h,0,0),f.restore()}drawPictureFill(t,e){if(!t)return;let{colorSubstitutions:i,height:s,offsetX:r,offsetY:a,rotation:n,scaleX:o,tintColor:l,url:h}=e;const c=this._resourceManager.getResource(h);if(null==c)return;if(S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!0);else if(M(t))this._buildPath(xt(t).rings,!0);else{if(!b(t))return;console.log("CanvasDrawHelper.drawPictureFill - No implementation!")}const m=this._ctx,f=E(h)||"src"in c&&E(c.src);let u,d="getFrame"in c?L(c):c;if(i&&(d=this._colorSubstitutionHelper.applyColorSubstitution(d,i)),this._applyAdditionalRenderProps){f||l&&(d=this._colorSubstitutionHelper.tintImageData(d,l)),u=m.createPattern(d,"repeat");const t=this.transformSize(1);n||(n=0),r?r*=t:r=0,a?a*=t:a=0,s&&(s*=t);const e=s?s/c.height:1,i=o&&s?o*s/c.width:1;if(0!==n||1!==e||1!==i||0!==r||0!==a){const t=new DOMMatrix;t.rotateSelf(0,0,-n).translateSelf(r,a).scaleSelf(i,e,1),u.setTransform(t)}}else u=m.createPattern(d,"repeat");m.save(),m.fillStyle=u,m.fill("evenodd"),m.restore()}drawPictureStroke(t,i){if(!t)return;let{colorSubstitutions:s,capStyle:r,joinStyle:a,miterLimit:o,tintColor:l,url:h,width:c}=i;const m=this._resourceManager.getResource(h);if(null==m)return;let f;if(S(t))f=t.rings;else if(w(t))f=t.paths;else{if(!M(t))return b(t)?void console.log("CanvasDrawHelper.drawPictureStroke - No implementation!"):void 0;f=xt(t).rings}c||(c=m.width);const u=E(h)||"src"in m&&E(m.src);let d="getFrame"in m?L(m):m;s&&(d=this._colorSubstitutionHelper.applyColorSubstitution(d,s)),this._applyAdditionalRenderProps&&(u||l&&(d=this._colorSubstitutionHelper.tintImageData(d,l)));const p=Math.max(this.transformSize(n(c)),.5),g=p/d.width,_=this._ctx,y=_.createPattern(d,"repeat-y");let P,x;_.save(),this._setCapStyle(r),this._setJoinStyle(a),void 0!==o&&(_.miterLimit=o),_.lineWidth=p;for(let n of f)if(n=e(n),bt(n),n&&!(n.length<=1)){P=this.transformPt(n[0]);for(let t=1;t<n.length;t++){x=this.transformPt(n[t]);const e=Pt(P,x),i=new DOMMatrix;i.translateSelf(0,P[1]-p/2).scaleSelf(g,g,1).rotateSelf(0,0,90-e),y.setTransform(i),_.strokeStyle=y,_.beginPath(),_.moveTo(P[0],P[1]),_.lineTo(x[0],x[1]),_.stroke(),P=x}}_.restore()}drawGradientFill(t,e){if(!t)return;let i;if(S(t))i=t.rings;else if(w(t))i=t.paths;else{if(!M(t))return void ft().error("Unable to draw gradient fill");i=xt(t).rings}this._buildPath(i,!0);const{angle:r,gradientMethod:a,gradientSize:o,gradientSizeUnits:d}=e,p=z.CIMGradientFill,g=e.gradientType??p.gradientType,_=-s(r??0),y=l();for(const s of i){const t=s?s.length:0;if(t>1)for(let e=0;e<t;e++){let t=this.transformPt(s[e]);"Linear"!==a&&"Rectangular"!==a||(t=U(t,-_)),h(y,t)}}const[P,x,b,T]=y,k=this._ctx;switch(k.save(),a){case"Buffered":ft().error(`Gradient method "${a}" currently unsupported.`);break;case"Linear":{const t=(x+T)/2,i="Absolute"===d?this.transformSize(n(o)):B(o,p.gradientSize)*(b-P),[s,r]="Discrete"===g?[b,b-i]:[P+i,P],a=U([s,t],_),l=U([r,t],_),h=k.createLinearGradient(a[0],a[1],l[0],l[1]);F(h,e),k.fillStyle=h,k.fill("evenodd");break}case"Circular":{const t=c(y),i=u(y)/2,s="Absolute"===d?this.transformSize(n(o)):B(o,p.gradientSize)*i,[r,a]="Discrete"===g?[i,i-s]:[s,0],l=k.createRadialGradient(t[0],t[1],r,t[0],t[1],a);F(l,e),k.fillStyle=l,k.fill("evenodd");break}case"Rectangular":{const i=c(y),s=i[0],r=i[1],a=U(i,_),l=(i,s,r,n,o,l,h,c)=>{k.save(),this.pushClipPath(t);const m=U([o,l],_),f=U([h,c],_);k.beginPath(),k.moveTo(a[0],a[1]),k.lineTo(m[0],m[1]),k.lineTo(f[0],f[1]),k.lineTo(a[0],a[1]),k.clip();const u=U([i,s],_),d=U([r,n],_),p=k.createLinearGradient(u[0],u[1],d[0],d[1]);F(p,e),k.fillStyle=p,k.fill("evenodd"),k.restore()};let h="Absolute"===d?this.transformSize(n(o)):B(o,p.gradientSize)*(m(y)/2),[u,S]="Discrete"===g?[b,b-h]:[s+h,s];l(u,r,S,r,b,x,b,T),[u,S]="Discrete"===g?[P,P+h]:[s-h,s],l(u,r,S,r,P,T,P,x),h="Absolute"===d?this.transformSize(n(o)):B(o,p.gradientSize)*(f(y)/2);let[w,M]="Discrete"===g?[T,T-h]:[r+h,r];l(s,w,s,M,b,T,P,T),[w,M]="Discrete"===g?[x,x+h]:[r-h,r],l(s,w,s,M,P,x,b,x);break}}k.restore()}drawGradientStroke(t,i){const{capStyle:s,gradientMethod:r,gradientSize:a,gradientSizeUnits:o,joinStyle:l,miterLimit:h,width:c}=i;if(!t||0===c)return;let m;if(S(t))m=t.rings;else if(w(t))m=t.paths;else{if(!M(t))return void ft().error("Unable to draw gradient stroke");m=xt(t).rings}const f=i.gradientType??z.CIMGradientStroke.gradientType,u=Math.max(this.transformSize(n(c)),.5),d=this._ctx;let p,g;d.save(),this._setCapStyle(s),this._setJoinStyle(l),void 0!==h&&(d.miterLimit=h),d.lineWidth=u;for(let _ of m){if(_=e(_),bt(_),!_||_.length<=1)continue;let t=0;p=this.transformPt(_[0]);for(let e=1;e<_.length;e++){g=this.transformPt(_[e]);const i=g[0]-p[0],s=g[1]-p[1];t+=Math.sqrt(i*i+s*s),p=g}const s="Absolute"===o?this.transformSize(n(a)):B(a,z.CIMGradientStroke.gradientSize)*("AcrossLine"===r?u:t);let l=0;p=this.transformPt(_[0]);for(let e=1;e<_.length;e++){g=this.transformPt(_[e]);const a=g[0]-p[0],n=g[1]-p[1],o=Math.sqrt(a*a+n*n);let h,c,m,y;switch(r){case"AcrossLine":{const[t,e]=U([a/o,n/o],-Math.PI/2),i=u/2,r="Discrete"===f?i:s-i;h=(p[0]+g[0])/2+t*r,c=(p[1]+g[1])/2+e*r,m=h-t*s,y=c-e*s;break}case"AlongLine":{const e=a/o,i=n/o;"Discrete"===f?(h=p[0]-e*l,c=p[1]-i*l,m=h+e*s,y=c+i*s):(m=p[0]+e*(t-l),y=p[1]+i*(t-l),h=m-e*s,c=y-i*s);break}default:return ft().error("Unrecognized gradient method:",r),void d.restore()}const P=d.createLinearGradient(h,c,m,y);F(P,i),d.strokeStyle=P,d.beginPath(),d.moveTo(p[0],p[1]),d.lineTo(g[0],g[1]),d.stroke(),l+=o,p=g}}d.restore()}_buildPath(t,e){const i=this._ctx;if(i.beginPath(),t)for(const s of t){const t=s?s.length:0;if(t>1){let r=this.transformPt(s[0]);i.moveTo(r[0],r[1]);for(let e=1;e<t;e++)r=this.transformPt(s[e]),i.lineTo(r[0],r[1]);e&&i.closePath()}}}_setCapStyle(t){switch(t){case"Butt":this._ctx.lineCap="butt";break;case"Round":this._ctx.lineCap="round";break;case"Square":this._ctx.lineCap="square"}}_setJoinStyle(t){switch(t){case"Bevel":this._ctx.lineJoin="bevel";break;case"Round":this._ctx.lineJoin="round";break;case"Miter":this._ctx.lineJoin="miter"}}}function yt(t,e,i){let s=H(t.separation,z.CIMHatchFill.separation)*i,r=H(t.rotation);if(0===s)return null;s<0&&(s=-s);let a=0;const n=.5*s;for(;a>n;)a-=s;for(;a<-n;)a+=s;const o=p();g(o,e),o[0]-=n,o[1]-=n,o[2]+=n,o[3]+=n;const l=[[o[0],o[1]],[o[0],o[3]],[o[2],o[3]],[o[2],o[1]]];for(;r>180;)r-=180;for(;r<0;)r+=180;const h=Math.cos(r*ct),c=Math.sin(r*ct),m=-s*c,f=s*h;let u,d,_,y;a=H(t.offsetX)*i*c-H(t.offsetY)*i*h,u=_=Number.MAX_VALUE,d=y=-Number.MAX_VALUE;for(const p of l){const t=p[0],e=p[1],i=h*t+c*e,s=-c*t+h*e;u=Math.min(u,i),_=Math.min(_,s),d=Math.max(d,i),y=Math.max(y,s)}_=Math.floor(_/s)*s;let P=h*u-c*_-m*a/s,x=c*u+h*_-f*a/s,S=h*d-c*_-m*a/s,w=c*d+h*_-f*a/s;const M=1+Math.round((y-_)/s),b=[];for(let p=0;p<M;p++)P+=m,x+=f,S+=m,w+=f,b.push([[P,x],[S,w]]);return{paths:b}}function Pt(t,e){const i=e[0]-t[0],s=e[1]-t[1];return 180/Math.PI*Math.atan2(s,i)}const xt=t=>t?{spatialReference:t.spatialReference,rings:[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}:null,St=(t,e,i)=>{switch(t){case"ExtraLeading":return 1+e/i;case"Multiple":return e;case"Exact":return e/i}};function wt(e,i=1){const s=J(e),r=N(e.fontStyleName),a=e.fontFamilyName??t,{weight:n,style:o}=r,l=i*(e.height||5),h=O(e.horizontalAlignment),c=q(e.verticalAlignment),m=V(e),f=V(e.haloSymbol),u=null!=f?i*(e.haloSize??0):0,d=Y(e.symbol),p=i*(W(e.symbol)||0),g="CIMBackgroundCallout"===e.callout?.type?e.callout.backgroundSymbol:null,_=V(g),y=W(g),P=Y(g);return{color:m,size:l,horizontalAlignment:h,verticalAlignment:c,font:{family:a,style:$(o),weight:K(n),decoration:s},outline:{size:p||0,color:d},halo:{size:u||0,color:f,style:o},backgroundColor:_,borderLine:null!=y&&null!=P?{size:y,color:P}:null,pixelRatio:1,premultiplyColors:!0}}const Mt=1e-4;function bt(t){let e,i,s,r,a,n=t[0],o=1;for(;o<t.length;)e=t[o][0]-n[0],i=t[o][1]-n[1],r=0!==e?i/e:Math.PI/2,void 0!==s&&Math.abs(r-s)<=Mt?(t.splice(o-1,1),n=a):(a=n,n=t[o],o++),s=r}export{dt as CIMSymbolDrawHelper,_t as CanvasDrawHelper,pt as EnvDrawHelper,gt as HittestDrawHelper,ut as Transformation,ct as cDegToRad,St as lineGapType2LineHeight};
2
+ import{defaultFontFamily as t}from"../../core/fontUtils.js";import has from"../../core/has.js";import{clone as e}from"../../core/lang.js";import i from"../../core/Logger.js";import{deg2rad as s}from"../../core/mathUtils.js";import r from"../../core/ObjectPool.js";import{px2pt as a,pt2px as o}from"../../core/screenUtils.js";import{GeometryCursor as n}from"../../geometry/GeometryCursor.js";import{empty as l,expandPointInPlace as h,center as c,width as m,height as f,diagonal as u,fromValues as d,create as p}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as g}from"../../geometry/support/boundsUtils.js";import{polygonCentroid as _}from"../../geometry/support/centroid.js";import{targetIntersectsPolygon as y,pointInPolygon as P,nearLine as x}from"../../geometry/support/intersectsBase.js";import{isPolygon as S,isPolyline as w,isExtent as M,isMultipoint as b,isPoint as T}from"../../geometry/support/jsonTypeUtils.js";import{SimpleEffectCursor as k}from"./CIMEffects.js";import C from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as v,getPlacementOperator as I}from"./CIMOperators.js";import{Placement as R}from"./CIMPlacements.js";import{defaultCIMValues as z}from"./defaultCIMValues.js";import{fromCIMFontStyle as L}from"./fromCIMFontStyle.js";import{getFirstFrame as U}from"./imageUtils.js";import{rotate as F}from"./mathUtils.js";import{addColorStops as A}from"./rasterizingUtils.js";import j from"./Rect.js";import{parseRichTextRuns as D,hasRichTextFormattingTags as G}from"./richTextUtils.js";import H from"./TextRasterizer.js";import{getNumericValue as E,isSVGImage as B,getRelativeGradientSize as X,getEffectsInflateSize as J,fromCIMFontDecoration as N,fromCIMHorizontalAlignment as O,fromCIMVerticalAlignment as q,getFillColor as V,getStrokeColor as Y,getStrokeWidth as W,getFontWeight as K,getFontStyle as $,isCIMFill as Q,getSize as Z}from"./utils.js";import{destroyHiddenSvg as tt,createHiddenSvg as et,createSvgElement as it}from"../../views/2d/engine/svgUtils.js";import{magicLabelLineHeight as st,glyphSize as rt,hittestToleranceSmallSymbol as at,hittestSmallSymbolThreshold as ot}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as nt}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as lt,getLineWidth as ht}from"../../views/2d/layers/graphics/graphicsUtils.js";const ct=Math.PI/180,mt=.5,ft=()=>i.getLogger("esri.symbols.cim.CIMSymbolDrawHelper");class ut{constructor(t){this._t=t}static createIdentity(){return new ut([1,0,0,0,1,0])}clone(){const t=this._t;return new ut(t.slice())}transform(t){const e=this._t;return[e[0]*t[0]+e[1]*t[1]+e[2],e[3]*t[0]+e[4]*t[1]+e[5]]}static createScale(t,e){return new ut([t,0,0,0,e,0])}scale(t,e){const i=this._t;return i[0]*=t,i[1]*=t,i[2]*=t,i[3]*=e,i[4]*=e,i[5]*=e,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(t,e){return new ut([0,0,t,0,0,e])}translate(t,e){const i=this._t;return i[2]+=t,i[5]+=e,this}static createRotate(t){const e=Math.cos(t),i=Math.sin(t);return new ut([e,-i,0,i,e,0])}rotate(t){return ut.multiply(this,ut.createRotate(t),this)}angle(){const t=this._t[0],e=this._t[3],i=Math.sqrt(t*t+e*e);return[t/i,e/i]}static multiply(t,e,i){const s=t._t,r=e._t,a=s[0]*r[0]+s[3]*r[1],o=s[1]*r[0]+s[4]*r[1],n=s[2]*r[0]+s[5]*r[1]+r[2],l=s[0]*r[3]+s[3]*r[4],h=s[1]*r[3]+s[4]*r[4],c=s[2]*r[3]+s[5]*r[4]+r[5],m=i._t;return m[0]=a,m[1]=o,m[2]=n,m[3]=l,m[4]=h,m[5]=c,i}invert(){const t=this._t;let e=t[0]*t[4]-t[1]*t[3];if(0===e)return new ut([0,0,0,0,0,0]);e=1/e;const i=(t[1]*t[5]-t[2]*t[4])*e,s=(t[2]*t[3]-t[0]*t[5])*e,r=t[4]*e,a=-t[1]*e,o=-t[3]*e,n=t[0]*e;return new ut([r,a,i,o,n,s])}}class dt{constructor(t,e){this._resourceManager=t,this._transfos=[],this._sizeTransfos=[],this._textScaling=[],this._geomUnitsPerPoint=1,this._placementPool=new r(()=>new R,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(e||ut.createIdentity()),this._sizeTransfos.push(e?e.scaleRatio():1),this._textScaling.push(1)}setTransform(t,e){this._transfos=[t||ut.createIdentity()],this._sizeTransfos=[e||(t?t.scaleRatio():1)],this._textScaling=[1]}setGeomUnitsPerPoint(t){this._geomUnitsPerPoint=t}transformPt(t){return this._transfos[this._transfos.length-1].transform(t)}transformSize(t){return t*this._sizeTransfos[this._sizeTransfos.length-1]}scaleText(t){return t*this._textScaling[this._textScaling.length-1]}reverseTransformPt(t){return this._transfos[this._transfos.length-1].invert().transform(t)}reverseTransformSize(t){return t/this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformScalar(t){return t/this._transfos[this._transfos.length-1].scaleRatio()}reverseScaleText(t){return t/this._textScaling[this._textScaling.length-1]}getTransformAngle(){return this._transfos[this._transfos.length-1].angle()}geomUnitsPerPoint(){return this.isEmbedded()?1:this._geomUnitsPerPoint}prevGeomUnitsPerPoint(){return this._transfos.length>2?1:this._geomUnitsPerPoint}isEmbedded(){return this._transfos.length>1}back(){return this._transfos[this._transfos.length-1]}push(t,e=!1,i=1){const s=e?t.scaleRatio():1;ut.multiply(t,this.back(),t),this._transfos.push(t),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*s),this._textScaling.push(this._textScaling[this._textScaling.length-1]*i)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1),this._textScaling.splice(-1,1)}drawSymbol(t,e,i){if(t)switch(t.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this.drawMultiLayerSymbol(t,e);break;case"CIMTextSymbol":this.drawTextSymbol(t,e,i)}}drawMultiLayerSymbol(t,e){if(!t||!e)return;const i=t.symbolLayers;if(!i)return;const s=t.effects;if(s&&s.length>0){const t=this.executeEffects(s,e);if(t){let e=t.next();for(;e;)this.drawSymbolLayers(i,e.asJSON()),e=t.next()}}else this.drawSymbolLayers(i,e)}executeEffects(t,e){const i=this.geomUnitsPerPoint(),s=null,r=J(t),a=!1;let o=new k(n.fromJSONCIM(e));for(const n of t){const t=v(n);t&&(o=t.execute(o,n,{geomUnitsPerPoint:i,tileKey:s,maxInflateSize:r,scale:null,spatialReference:e.spatialReference,preventClipping:a}))}return o}drawSymbolLayers(t,e){let i=t.length;for(;i--;){const s=t[i];if(!s||!1===s.enable)continue;const r=s.effects;if(r&&r.length>0){const t=this.executeEffects(r,e);if(t){let e=null;for(;(e=t.next())&&(this.drawSymbolLayer(s,e.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(s,e);if(this._earlyReturn)return}}drawSymbolLayer(t,e){switch(t.type){case"CIMSolidFill":this.drawSolidFill(e,t.color,t.path);break;case"CIMHatchFill":this.drawHatchFill(e,t);break;case"CIMPictureFill":this.drawPictureFill(e,t);break;case"CIMGradientFill":this.drawGradientFill(e,t);break;case"CIMSolidStroke":this.drawSolidStroke(e,t.color,t.width,t.capStyle,t.joinStyle,t.miterLimit,t.path);break;case"CIMPictureStroke":this.drawPictureStroke(e,t);break;case"CIMGradientStroke":this.drawGradientStroke(e,t);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":this.drawMarkerLayer(t,e)}}drawHatchFill(t,e){const i=yt(e,t,this.geomUnitsPerPoint());i&&(this.pushClipPath(t),this.drawMultiLayerSymbol(e.lineSymbol,i),this.popClipPath())}drawPictureFill(t,e){}drawGradientFill(t,e){}drawPictureStroke(t,e){}drawGradientStroke(t,e){}drawMarkerLayer(t,e){const i=t.markerPlacement;if(i){const s=I(i);if(s){const r="CIMMarkerPlacementInsidePolygon"===i.type||"CIMMarkerPlacementPolygonCenter"===i.type&&i.clipAtBoundary;r&&this.pushClipPath(e);const a=s.execute(n.fromJSONCIM(e),i,this.geomUnitsPerPoint(),null);if(a){let e=null;for(;(e=a.next())&&(this.drawMarker(t,e),!this._earlyReturn););}r&&this.popClipPath()}}else{const i=this._placementPool.acquire();if(T(e))i.tx=e.x,i.ty=e.y,this.drawMarker(t,i);else if(S(e)){const s=_(e);s&&([i.tx,i.ty]=s,this.drawMarker(t,i))}else if(w(e)){for(const s of e.paths)for(const e of s)if(i.tx=e[0],i.ty=e[1],this.drawMarker(t,i),this._earlyReturn)break}else for(const s of e.points)if(i.tx=s[0],i.ty=s[1],this.drawMarker(t,i),this._earlyReturn)break;this._placementPool.release(i)}}drawMarker(t,e){switch(t.type){case"CIMCharacterMarker":case"CIMPictureMarker":this.drawPictureMarker(t,e);break;case"CIMVectorMarker":this.drawVectorMarker(t,e)}}drawPictureMarker(t,e){if(!t)return;const i=this._resourceManager.getResource(t.url),s=E(t.size,z.CIMPictureMarker.size);if(null==i||s<=0)return;const r=i.width,a=i.height;if(!r||!a)return;const o=r/a,n=E(t.scaleX,1),l=ut.createIdentity(),h=t.anchorPoint;if(h){let e=h.x,i=h.y;"Absolute"!==t.anchorPointUnits&&(e*=s*o*n,i*=s),l.translate(-e,-i)}let c=E(t.rotation);t.rotateClockwise&&(c=-c),this._mapRotation&&(c+=this._mapRotation),c&&l.rotate(c*ct);let m=E(t.offsetX),f=E(t.offsetY);if(m||f){if(this._mapRotation){const t=ct*this._mapRotation,e=Math.cos(t),i=Math.sin(t),s=m*i+f*e;m=m*e-f*i,f=s}l.translate(m,f)}const u=this.geomUnitsPerPoint();1!==u&&l.scale(u,u);const d=e.getAngle();d&&l.rotate(d),l.translate(e.tx,e.ty),this.push(l),this.drawImage(t,s),this.pop()}drawVectorMarker(t,e){if(!t)return;const i=t.markerGraphics;if(!i)return;const s=E(t.size,z.CIMVectorMarker.size),r=t.frame,a=r?r.ymax-r.ymin:0,o=s&&a?s/a:1,n=ut.createIdentity();r&&n.translate(.5*-(r.xmax+r.xmin),.5*-(r.ymax+r.ymin));const l=t.anchorPoint;if(l){let e=l.x,i=l.y;"Absolute"!==t.anchorPointUnits?r&&(e*=r.xmax-r.xmin,i*=r.ymax-r.ymin):(e/=o,i/=o),n.translate(-e,-i)}1!==o&&n.scale(o,o);let h=E(t.rotation);t.rotateClockwise&&(h=-h),this._mapRotation&&(h+=this._mapRotation),h&&n.rotate(h*ct);let c=E(t.offsetX),m=E(t.offsetY);if(c||m){if(this._mapRotation){const t=ct*this._mapRotation,e=Math.cos(t),i=Math.sin(t),s=c*i+m*e;c=c*e-m*i,m=s}n.translate(c,m)}const f=this.geomUnitsPerPoint();1!==f&&n.scale(f,f);const u=e.getAngle();u&&n.rotate(u),n.translate(e.tx,e.ty);const d=t.scaleSymbolsProportionally?1:o;this.push(n,t.scaleSymbolsProportionally,d);for(const p of i){p?.symbol&&p.geometry||ft().error("Invalid marker graphic",p);let t=p.textString;if("number"==typeof t&&(t=t.toString()),this.drawSymbol(p.symbol,p.geometry,t),this._earlyReturn)break}this.pop()}drawTextSymbol(t,e,i){if(!t)return;if(!T(e))return;if(E(t.height,z.CIMTextSymbol.height)<=0)return;const s=ut.createIdentity();let r=E(t.angle);r=-r,r&&s.rotate(r*ct);const a=E(t.offsetX),o=E(t.offsetY);(a||o)&&s.translate(a,o);const n=this.geomUnitsPerPoint();1!==n&&s.scale(n,n),s.translate(e.x,e.y),this.push(s),this.drawText(t,i),this.pop()}}class pt extends dt{constructor(t,e){super(t,e),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new j(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return d(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(t){if(t&&!(this._clipCount>0))if(S(t))this._processPath(t.rings,0);else if(w(t))this._processPath(t.paths,0);else if(M(t)){const e=xt(t);e&&this._processPath(e.rings,0)}else console.error("drawSolidFill Unexpected geometry type!")}drawSolidStroke(t,e,i){if(!t||this._clipCount>0||null==i||i<=0)return;const s=Math.max(.5*this.transformSize(E(i,z.CIMSolidStroke.width)),.5*mt);if(S(t))this._processPath(t.rings,s);else if(w(t))this._processPath(t.paths,s);else if(M(t)){const e=xt(t);e&&this._processPath(e.rings,s)}else console.error("drawSolidStroke unexpected geometry type!")}drawMarkerLayer(t,e){S(e)&&t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._processPath(e.rings,0):super.drawMarkerLayer(t,e)}drawHatchFill(t,e){this.drawSolidFill(t)}drawPictureFill(t,e){this.drawSolidFill(t)}drawGradientFill(t,e){this.drawSolidFill(t)}drawPictureStroke(t,e){this.drawSolidStroke(t,null,e.width)}drawGradientStroke(t,e){this.drawSolidStroke(t,null,e.width)}pushClipPath(t){this.drawSolidFill(t),this._clipCount++}popClipPath(){this._clipCount--}drawImage(t,e){const{url:i}=t,s=E(t.scaleX,1);let r=s*e,a=e;const o=this._resourceManager.getResource(i);if(null!=o){const t=o.height/o.width;r=s*(e?t>1?e:e/t:o.width),a=e?t>1?e*t:e:o.height}this._merge(this.transformPt([-r/2,-a/2]),0),this._merge(this.transformPt([-r/2,a/2]),0),this._merge(this.transformPt([r/2,-a/2]),0),this._merge(this.transformPt([r/2,a/2]),0)}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new H);const i=wt(t),s=D({textString:e,font:i.font,symbol:t,supportsRichText:G(e)});let[r,o]=s?this._textRasterizer.computeRichTextSize(s,i):this._textRasterizer.computeTextSize(e,i);r=a(r),o=a(o);const n=this.transformSize(1)*this.reverseTransformScalar(1);r*=n,o*=n;const l=t.horizontalAlignment??z.CIMTextSymbol.horizontalalignment,h=t.verticalAlignment??z.CIMTextSymbol.verticalalignment;let c=0;switch(l){case"Left":c=r/2;break;case"Right":c=-r/2}let m=0;switch(h){case"Bottom":m=o/2;break;case"Top":m=-o/2;break;case"Baseline":m=o/6}this._merge(this.transformPt([-r/2+c,-o/2+m]),0),this._merge(this.transformPt([-r/2+c,o/2+m]),0),this._merge(this.transformPt([r/2+c,-o/2+m]),0),this._merge(this.transformPt([r/2+c,o/2+m]),0)}_processPath(t,e){if(t)for(const i of t){const t=i?i.length:0;if(t>1){this._merge(this.transformPt(i[0]),e);for(let s=1;s<t;s++)this._merge(this.transformPt(i[s]),e)}}}_merge(t,e){t[0]-e<this._xmin&&(this._xmin=t[0]-e),t[0]+e>this._xmax&&(this._xmax=t[0]+e),t[1]-e<this._ymin&&(this._ymin=t[1]-e),t[1]+e>this._ymax&&(this._ymax=t[1]+e)}}class gt extends dt{constructor(){super(...arguments),this._hittestType="point",this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null,this._svg=null,this._path=null,this._canvas=null}destroy(){this._svg=tt(this._svg),this._path=null,this._canvas=null}hitTest(t,e,i,s){const{textInfo:r,mapRotation:n,resolution:l,searchDist:h,hittestType:c,isScreenAligned:m}=s;this._resetHittest();const f=l*o(1);switch(this.setGeomUnitsPerPoint(f),c){case"point":if(1!==t.length)return ft().error("Unexpected hittest area",t),!1;this._hittestType="point",this._searchDistPoint=h/2/f,this._searchTarget=[[t[0].x,t[0].y]];break;case"rect":if(4!==t.length)return ft().error("Unexpected hittest area",t),!1;this._hittestType="rect",this._searchDistPoint=0,this._searchTarget=t.map(t=>[t.x,t.y]);break;case"polygon":this._hittestType="polygon",this._searchDistPoint=0,this._searchTarget=t.map(t=>[t.x,t.y])}if(this._textInfo=r,this._mapRotation=m?n:0,!has("esri-mobile")){const t=a(at*window.devicePixelRatio),i=a(ot);!(("CIMLineSymbol"===e?.type||"CIMPolygonSymbol"===e?.type)&&e.symbolLayers?.some(Q))&&"CIMMeshSymbol"!==e?.type&&(Z(e)??0)<i&&(this._searchDistPoint=t)}return this._earlyReturn=!1,this.drawSymbol(e,i),this._earlyReturn}executeEffects(t,e){return"CIMGeometricEffectDashes"===t.at(-1)?.type&&(t=t.slice(0,-1)),super.executeEffects(t,e)}drawSolidFill(t,e,i){null!=i?this._hittestSvgPath(t,i,!0):this._hitTestFill(t)}drawHatchFill(t,e){this._hitTestFill(t)}drawPictureFill(t,e){this._hitTestFill(t)}drawGradientFill(t,e){this._hitTestFill(t)}drawSolidStroke(t,e,i,s,r,a,o){null!=o?this._hittestSvgPath(t,o,!1,i):this._hitTestStroke(t,i)}drawPictureStroke(t,e){this._hitTestStroke(t,e.width)}drawGradientStroke(t,e){this._hitTestStroke(t,e.width)}drawMarkerLayer(t,e){t.markerPlacement&&("CIMMarkerPlacementInsidePolygon"===t.markerPlacement.type||"CIMMarkerPlacementPolygonCenter"===t.markerPlacement.type&&t.markerPlacement.clipAtBoundary)?this._hitTestFill(e):super.drawMarkerLayer(t,e)}drawTextSymbol(t,e,i){if(!t||!T(e))return;if(E(t.height,z.CIMTextSymbol.height)<=0)return;const s=ut.createIdentity(),r=this.geomUnitsPerPoint();1!==r&&s.scale(r,r),s.translate(e.x,e.y),this.push(s),this.drawText(t,i),this.pop()}pushClipPath(t){}popClipPath(){}drawImage(t,e){const{url:i}=t,s=E(t.scaleX,1),r=this._resourceManager.getResource(i);if(null==r||0===r.height||0===e)return;const a=e*this.geomUnitsPerPoint(),o=a*s*(r.width/r.height);if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]),e=this._searchDistPoint;Math.abs(t[0])<o/2+e&&Math.abs(t[1])<a/2+e&&(this._earlyReturn=!0)}else{const t=o/2,e=a/2,i=[[-t,e],[t,e],[t,-e],[-t,-e],[-t,e]],s=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(s,[i])&&(this._earlyReturn=!0)}}drawText(t,e){const i=this._textInfo;if(!i)return;const s=i.get(t);if(!s)return;if(!u(s.glyphMosaicItems))return;const r=lt(E(t.height,z.CIMTextSymbol.height)),{lineGapType:a,lineGap:o}=t,n=a?St(a,E(o),r):0,l=t.horizontalAlignment??z.CIMTextSymbol.horizontalalignment,h=t.verticalAlignment??z.CIMTextSymbol.verticalalignment,c="CIMBackgroundCallout"===t.callout?.type,m=nt(s.glyphMosaicItems,{scale:r/rt,angle:E(t.angle),xOffset:E(t.offsetX),yOffset:E(t.offsetY),horizontalAlignment:l,verticalAlignment:h,maxLineWidth:ht(t.lineWidth),lineHeight:st*Math.max(.25,Math.min(n||1,4)),decoration:t.font.decoration||"none",useCIMAngleBehavior:!1,hasBackground:c}),f=this.reverseScaleText(1);for(const d of m.glyphs){const t=d.offsets,e=[[t.topLeft[0]*f,-t.topLeft[1]*f],[t.topRight[0]*f,-t.topRight[1]*f],[t.bottomRight[0]*f,-t.bottomRight[1]*f],[t.bottomLeft[0]*f,-t.bottomLeft[1]*f],[t.topLeft[0]*f,-t.topLeft[1]*f]];if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]);P(t,[e])&&(this._earlyReturn=!0)}else{const t=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(t,[e])&&(this._earlyReturn=!0)}}function u(t){return"glyphs"===t.type?t.glyphs.length>0:t.runs.some(t=>t.glyphs.glyphs.length>0)}}_hitTestFill(t){let e=null;if(M(t)){const i=t;e=[[[i.xmin,i.ymin],[i.xmin,i.ymax],[i.xmax,i.ymax],[i.xmax,i.ymin],[i.xmin,i.ymin]]]}else if(S(t))e=t.rings;else{if(!w(t))return;e=t.paths}if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]);if(P(t,e)&&(this._earlyReturn=!0),!this._earlyReturn){const i=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();x(t,e,i)&&(this._earlyReturn=!0)}}else{const t=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(t,e)&&(this._earlyReturn=!0)}}_getSvgPath(){return null!=this._svg&&null!=this._path||(this._svg??=et(),this._path??=it("path"),this._svg.appendChild(this._path)),this._path}_getCanvasContext(t,e){return this._canvas??=document.createElement("canvas"),this._canvas.width=t,this._canvas.height=e,this._canvas.getContext("2d",{willReadFrequently:!0})}_hittestSvgPath(t,e,i,s=0){const r=p();g(r,t);const a={x:r[0],y:r[1],width:r[2]-r[0],height:r[3]-r[1]},o=this._getSvgPath();o.setAttribute("d",e);const n=o.getBBox();if("point"===this._hittestType){const t=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint(),r=this.reverseTransformPt(this._searchTarget[0]);let o=Math.max(n.width/a.width,n.height/a.height),l=1;const h=2*t*o;h<1&&(l=2/h,o*=l,n.x*=l,n.y*=l,n.width*=l,n.height*=l);const c=1+s*o/2,m=this._getCanvasContext(n.width+2*c,n.height+2*c);m.setTransform(l,0,0,l,-n.x+c,-n.y+c);const f=new Path2D(e);i?m.fill(f):(m.lineWidth=s*(o/l),m.stroke(f));const u=(a.width*o-n.width)/2,d=(a.height*o-n.height)/2,p=Math.floor((r[0]-a.x-t)*o-u+c),g=Math.floor((a.height-(r[1]-a.y)-t)*o+d+c),_=Math.ceil(2*t*o),y=Math.ceil(2*t*o),P=m.getImageData(p,g,_,y).data;for(let e=3;e<P.length;e+=4)if(P[e]>127.5)return void(this._earlyReturn=!0)}else{const t=[[a.x,a.y],[a.x,a.y+a.height],[a.x+a.width,a.y+a.height],[a.x+a.width,a.y],[a.x,a.y]],e=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;if(y(e,[t]))return void(this._earlyReturn=!0)}}_hitTestStroke(t,e){let i=null;if(M(t)){const e=t;i=[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}else if(S(t))i=t.rings;else{if(!w(t))return;i=t.paths}if("point"===this._hittestType){const t=this.reverseTransformPt(this._searchTarget[0]),s=E(e,z.CIMSolidStroke.width)*this.geomUnitsPerPoint(),r=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();x(t,i,s/2+r)&&(this._earlyReturn=!0)}else{const t=this.isEmbedded()?this._searchTarget.map(t=>this.reverseTransformPt(t)):this._searchTarget;y(t,i)&&(this._earlyReturn=!0)}}_resetHittest(){this.setTransform(),this._hittestType="point",this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null}}class _t extends dt{constructor(t,e,i,s){super(e,i),this._applyAdditionalRenderProps=s,this._colorSubstitutionHelper=new C,this._ctx=t}drawSolidFill(t,e){if(!t)return;if(S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!0);else if(M(t))this._buildPath(xt(t).rings,!0);else{if(!b(t))return;console.log("CanvasDrawHelper.drawSolidFill - No implementation!")}const i=this._ctx;i.fillStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",i.fill("evenodd")}drawSolidStroke(t,e,i,s,r,a){if(!t||!e||0===i)return;if(S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!1);else{if(!M(t))return void console.log("CanvasDrawHelper.drawSolidStroke isn't implemented!");this._buildPath(xt(t).rings,!0)}const o=this._ctx;o.strokeStyle="string"==typeof e?e:"rgba("+Math.round(e[0])+","+Math.round(e[1])+","+Math.round(e[2])+","+(e[3]??255)/255+")",o.lineWidth=Math.max(this.transformSize(i),mt),this._setCapStyle(s),this._setJoinStyle(r),o.miterLimit=a,o.stroke()}pushClipPath(t){if(this._ctx.save(),S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!0);else{if(!M(t))return;this._buildPath(xt(t).rings,!0)}this._ctx.clip("evenodd")}popClipPath(){this._ctx.restore()}drawImage(t,e){const{colorSubstitutions:i,url:s,tintColor:r}=t,a=E(t.scaleX,1),o=this._resourceManager.getResource(s);if(null==o)return;let n=e*(o.width/o.height),l=e;e||(n=o.width,l=o.height);const h=B(s)||"src"in o&&B(o.src);let c="getFrame"in o?U(o):o;i&&(c=this._colorSubstitutionHelper.applyColorSubstitution(c,i)),this._applyAdditionalRenderProps&&!h&&r&&(c=this._colorSubstitutionHelper.tintImageData(c,r));const m=this.transformPt([0,0]),[f,u]=this.getTransformAngle(),d=this.transformSize(1),p=this._ctx;p.save(),p.setTransform({m11:a*d*f,m12:a*d*u,m21:-d*u,m22:d*f,m41:m[0],m42:m[1]}),p.drawImage(c,-n/2,-l/2,n,l),p.restore()}drawText(t,e){if(!e||0===e.length)return;this._textRasterizer||(this._textRasterizer=new H);const i=wt(t,this.transformSize(a(1))),s=D({textString:e,font:i.font,symbol:t,supportsRichText:G(e)}),r=s?this._textRasterizer.rasterizeRichText(s,i):this._textRasterizer.rasterizeText(e,i);if(!r)return;const{size:o,anchorX:n,anchorY:l,canvas:h}=r,c=o[0]*(n+.5),m=o[1]*(l-.5),f=this._ctx,u=this.transformPt([0,0]),[d,p]=this.getTransformAngle(),g=1;f.save(),f.setTransform({m11:g*d,m12:g*p,m21:-g*p,m22:g*d,m41:u[0]-g*c,m42:u[1]+g*m}),f.drawImage(h,0,0),f.restore()}drawPictureFill(t,e){if(!t)return;let{colorSubstitutions:i,height:s,offsetX:r,offsetY:a,rotation:o,scaleX:n,tintColor:l,url:h}=e;const c=this._resourceManager.getResource(h);if(null==c)return;if(S(t))this._buildPath(t.rings,!0);else if(w(t))this._buildPath(t.paths,!0);else if(M(t))this._buildPath(xt(t).rings,!0);else{if(!b(t))return;console.log("CanvasDrawHelper.drawPictureFill - No implementation!")}const m=this._ctx,f=B(h)||"src"in c&&B(c.src);let u,d="getFrame"in c?U(c):c;if(i&&(d=this._colorSubstitutionHelper.applyColorSubstitution(d,i)),this._applyAdditionalRenderProps){f||l&&(d=this._colorSubstitutionHelper.tintImageData(d,l)),u=m.createPattern(d,"repeat");const t=this.transformSize(1);o||(o=0),r?r*=t:r=0,a?a*=t:a=0,s&&(s*=t);const e=s?s/c.height:1,i=n&&s?n*s/c.width:1;if(0!==o||1!==e||1!==i||0!==r||0!==a){const t=new DOMMatrix;t.rotateSelf(0,0,-o).translateSelf(r,a).scaleSelf(i,e,1),u.setTransform(t)}}else u=m.createPattern(d,"repeat");m.save(),m.fillStyle=u,m.fill("evenodd"),m.restore()}drawPictureStroke(t,i){if(!t)return;let{colorSubstitutions:s,capStyle:r,joinStyle:a,miterLimit:n,tintColor:l,url:h,width:c}=i;const m=this._resourceManager.getResource(h);if(null==m)return;let f;if(S(t))f=t.rings;else if(w(t))f=t.paths;else{if(!M(t))return b(t)?void console.log("CanvasDrawHelper.drawPictureStroke - No implementation!"):void 0;f=xt(t).rings}c||(c=m.width);const u=B(h)||"src"in m&&B(m.src);let d="getFrame"in m?U(m):m;s&&(d=this._colorSubstitutionHelper.applyColorSubstitution(d,s)),this._applyAdditionalRenderProps&&(u||l&&(d=this._colorSubstitutionHelper.tintImageData(d,l)));const p=Math.max(this.transformSize(o(c)),.5),g=p/d.width,_=this._ctx,y=_.createPattern(d,"repeat-y");let P,x;_.save(),this._setCapStyle(r),this._setJoinStyle(a),void 0!==n&&(_.miterLimit=n),_.lineWidth=p;for(let o of f)if(o=e(o),bt(o),o&&!(o.length<=1)){P=this.transformPt(o[0]);for(let t=1;t<o.length;t++){x=this.transformPt(o[t]);const e=Pt(P,x),i=new DOMMatrix;i.translateSelf(0,P[1]-p/2).scaleSelf(g,g,1).rotateSelf(0,0,90-e),y.setTransform(i),_.strokeStyle=y,_.beginPath(),_.moveTo(P[0],P[1]),_.lineTo(x[0],x[1]),_.stroke(),P=x}}_.restore()}drawGradientFill(t,e){if(!t)return;let i;if(S(t))i=t.rings;else if(w(t))i=t.paths;else{if(!M(t))return void ft().error("Unable to draw gradient fill");i=xt(t).rings}this._buildPath(i,!0);const{angle:r,gradientMethod:a,gradientSize:n,gradientSizeUnits:d}=e,p=z.CIMGradientFill,g=e.gradientType??p.gradientType,_=-s(r??0),y=l();for(const s of i){const t=s?s.length:0;if(t>1)for(let e=0;e<t;e++){let t=this.transformPt(s[e]);"Linear"!==a&&"Rectangular"!==a||(t=F(t,-_)),h(y,t)}}const[P,x,b,T]=y,k=this._ctx;switch(k.save(),a){case"Buffered":ft().error(`Gradient method "${a}" currently unsupported.`);break;case"Linear":{const t=(x+T)/2,i="Absolute"===d?this.transformSize(o(n)):X(n,p.gradientSize)*(b-P),[s,r]="Discrete"===g?[b,b-i]:[P+i,P],a=F([s,t],_),l=F([r,t],_),h=k.createLinearGradient(a[0],a[1],l[0],l[1]);A(h,e),k.fillStyle=h,k.fill("evenodd");break}case"Circular":{const t=c(y),i=u(y)/2,s="Absolute"===d?this.transformSize(o(n)):X(n,p.gradientSize)*i,[r,a]="Discrete"===g?[i,i-s]:[s,0],l=k.createRadialGradient(t[0],t[1],r,t[0],t[1],a);A(l,e),k.fillStyle=l,k.fill("evenodd");break}case"Rectangular":{const i=c(y),s=i[0],r=i[1],a=F(i,_),l=(i,s,r,o,n,l,h,c)=>{k.save(),this.pushClipPath(t);const m=F([n,l],_),f=F([h,c],_);k.beginPath(),k.moveTo(a[0],a[1]),k.lineTo(m[0],m[1]),k.lineTo(f[0],f[1]),k.lineTo(a[0],a[1]),k.clip();const u=F([i,s],_),d=F([r,o],_),p=k.createLinearGradient(u[0],u[1],d[0],d[1]);A(p,e),k.fillStyle=p,k.fill("evenodd"),k.restore()};let h="Absolute"===d?this.transformSize(o(n)):X(n,p.gradientSize)*(m(y)/2),[u,S]="Discrete"===g?[b,b-h]:[s+h,s];l(u,r,S,r,b,x,b,T),[u,S]="Discrete"===g?[P,P+h]:[s-h,s],l(u,r,S,r,P,T,P,x),h="Absolute"===d?this.transformSize(o(n)):X(n,p.gradientSize)*(f(y)/2);let[w,M]="Discrete"===g?[T,T-h]:[r+h,r];l(s,w,s,M,b,T,P,T),[w,M]="Discrete"===g?[x,x+h]:[r-h,r],l(s,w,s,M,P,x,b,x);break}}k.restore()}drawGradientStroke(t,i){const{capStyle:s,gradientMethod:r,gradientSize:a,gradientSizeUnits:n,joinStyle:l,miterLimit:h,width:c}=i;if(!t||0===c)return;let m;if(S(t))m=t.rings;else if(w(t))m=t.paths;else{if(!M(t))return void ft().error("Unable to draw gradient stroke");m=xt(t).rings}const f=i.gradientType??z.CIMGradientStroke.gradientType,u=Math.max(this.transformSize(o(c)),.5),d=this._ctx;let p,g;d.save(),this._setCapStyle(s),this._setJoinStyle(l),void 0!==h&&(d.miterLimit=h),d.lineWidth=u;for(let _ of m){if(_=e(_),bt(_),!_||_.length<=1)continue;let t=0;p=this.transformPt(_[0]);for(let e=1;e<_.length;e++){g=this.transformPt(_[e]);const i=g[0]-p[0],s=g[1]-p[1];t+=Math.sqrt(i*i+s*s),p=g}const s="Absolute"===n?this.transformSize(o(a)):X(a,z.CIMGradientStroke.gradientSize)*("AcrossLine"===r?u:t);let l=0;p=this.transformPt(_[0]);for(let e=1;e<_.length;e++){g=this.transformPt(_[e]);const a=g[0]-p[0],o=g[1]-p[1],n=Math.sqrt(a*a+o*o);let h,c,m,y;switch(r){case"AcrossLine":{const[t,e]=F([a/n,o/n],-Math.PI/2),i=u/2,r="Discrete"===f?i:s-i;h=(p[0]+g[0])/2+t*r,c=(p[1]+g[1])/2+e*r,m=h-t*s,y=c-e*s;break}case"AlongLine":{const e=a/n,i=o/n;"Discrete"===f?(h=p[0]-e*l,c=p[1]-i*l,m=h+e*s,y=c+i*s):(m=p[0]+e*(t-l),y=p[1]+i*(t-l),h=m-e*s,c=y-i*s);break}default:return ft().error("Unrecognized gradient method:",r),void d.restore()}const P=d.createLinearGradient(h,c,m,y);A(P,i),d.strokeStyle=P,d.beginPath(),d.moveTo(p[0],p[1]),d.lineTo(g[0],g[1]),d.stroke(),l+=n,p=g}}d.restore()}_buildPath(t,e){const i=this._ctx;if(i.beginPath(),t)for(const s of t){const t=s?s.length:0;if(t>1){let r=this.transformPt(s[0]);i.moveTo(r[0],r[1]);for(let e=1;e<t;e++)r=this.transformPt(s[e]),i.lineTo(r[0],r[1]);e&&i.closePath()}}}_setCapStyle(t){switch(t){case"Butt":this._ctx.lineCap="butt";break;case"Round":this._ctx.lineCap="round";break;case"Square":this._ctx.lineCap="square"}}_setJoinStyle(t){switch(t){case"Bevel":this._ctx.lineJoin="bevel";break;case"Round":this._ctx.lineJoin="round";break;case"Miter":this._ctx.lineJoin="miter"}}}function yt(t,e,i){let s=E(t.separation,z.CIMHatchFill.separation)*i,r=E(t.rotation);if(0===s)return null;s<0&&(s=-s);let a=0;const o=.5*s;for(;a>o;)a-=s;for(;a<-o;)a+=s;const n=p();g(n,e),n[0]-=o,n[1]-=o,n[2]+=o,n[3]+=o;const l=[[n[0],n[1]],[n[0],n[3]],[n[2],n[3]],[n[2],n[1]]];for(;r>180;)r-=180;for(;r<0;)r+=180;const h=Math.cos(r*ct),c=Math.sin(r*ct),m=-s*c,f=s*h;let u,d,_,y;a=E(t.offsetX)*i*c-E(t.offsetY)*i*h,u=_=Number.MAX_VALUE,d=y=-Number.MAX_VALUE;for(const p of l){const t=p[0],e=p[1],i=h*t+c*e,s=-c*t+h*e;u=Math.min(u,i),_=Math.min(_,s),d=Math.max(d,i),y=Math.max(y,s)}_=Math.floor(_/s)*s;let P=h*u-c*_-m*a/s,x=c*u+h*_-f*a/s,S=h*d-c*_-m*a/s,w=c*d+h*_-f*a/s;const M=1+Math.round((y-_)/s),b=[];for(let p=0;p<M;p++)P+=m,x+=f,S+=m,w+=f,b.push([[P,x],[S,w]]);return{paths:b}}function Pt(t,e){const i=e[0]-t[0],s=e[1]-t[1];return 180/Math.PI*Math.atan2(s,i)}const xt=t=>t?{spatialReference:t.spatialReference,rings:[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}:null,St=(t,e,i)=>{switch(t){case"ExtraLeading":return 1+e/i;case"Multiple":return e;case"Exact":return e/i}};function wt(e,i=1){const s=N(e),r=L(e.fontStyleName),a=e.fontFamilyName??t,{weight:o,style:n}=r,l=i*(e.height||5),h=O(e.horizontalAlignment),c=q(e.verticalAlignment),m=V(e),f=V(e.haloSymbol),u=null!=f?i*(e.haloSize??0):0,d=Y(e.symbol),p=i*(W(e.symbol)||0),g="CIMBackgroundCallout"===e.callout?.type?e.callout.backgroundSymbol:null,_=V(g),y=W(g),P=Y(g);return{color:m,size:l,horizontalAlignment:h,verticalAlignment:c,font:{family:a,style:$(n),weight:K(o),decoration:s},outline:{size:p||0,color:d},halo:{size:u||0,color:f,style:n},backgroundColor:_,borderLine:null!=y&&null!=P?{size:y,color:P}:null,pixelRatio:1,premultiplyColors:!0}}const Mt=1e-4;function bt(t){let e,i,s,r,a,o=t[0],n=1;for(;n<t.length;)e=t[n][0]-o[0],i=t[n][1]-o[1],r=0!==e?i/e:Math.PI/2,void 0!==s&&Math.abs(r-s)<=Mt?(t.splice(n-1,1),o=a):(a=o,o=t[n],n++),s=r}export{dt as CIMSymbolDrawHelper,_t as CanvasDrawHelper,pt as EnvDrawHelper,gt as HittestDrawHelper,ut as Transformation,ct as cDegToRad,St as lineGapType2LineHeight};