@arcgis/core 6.0.0-next.1 → 6.0.0-next.10

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 (701) hide show
  1. package/analysis/AreaMeasurementAnalysis.d.ts +11 -1
  2. package/analysis/DimensionSimpleStyle.js +1 -1
  3. package/analysis/DirectLineMeasurementAnalysis.d.ts +11 -1
  4. package/analysis/DistanceMeasurementAnalysis.d.ts +8 -0
  5. package/arcade/featureSetUtils.js +1 -1
  6. package/arcade/functions/knowledgegraph.js +1 -1
  7. package/arcade/geometry/unitConversion.js +1 -1
  8. package/arcgisGlobal.d.ts +5 -5
  9. package/assets/esri/core/workers/RemoteClient.js +1 -1
  10. package/assets/esri/core/workers/chunks/01803f76bc0d9f2cd566.js +1 -0
  11. package/assets/esri/core/workers/chunks/{f09c9d9a554c33a753b4.js → 02253bdffbd580af22d8.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{5078b66ba31b770b689f.js → 037a8cc19debbaaa4e10.js} +1 -1
  13. package/assets/esri/core/workers/chunks/066550852483ab8f77bc.js +1 -0
  14. package/assets/esri/core/workers/chunks/{1ede8666d804c553803e.js → 0b6941781e35ce0f7274.js} +1 -1
  15. package/assets/esri/core/workers/chunks/0ccab50877b24f862d6e.js +1 -0
  16. package/assets/esri/core/workers/chunks/0f725cf79ce00e790a7d.js +1 -0
  17. package/assets/esri/core/workers/chunks/{a0d459bdb91ee892d4b6.js → 116293b1ee788a89ce1e.js} +1 -1
  18. package/assets/esri/core/workers/chunks/12a7997a40c77f5c9160.js +1 -0
  19. package/assets/esri/core/workers/chunks/{a7325ebb7edf3273bb34.js → 12b84262dedc6b393136.js} +1 -1
  20. package/assets/esri/core/workers/chunks/1b077c92345ffb5916c2.js +1 -0
  21. package/assets/esri/core/workers/chunks/{6dd0b79fa3a629ab4f27.js → 1bca39e0e651426bdbb5.js} +1 -1
  22. package/assets/esri/core/workers/chunks/1c0c5cb13c2590aae906.js +1 -0
  23. package/assets/esri/core/workers/chunks/{8959a825f5e1ce6f38ac.js → 1c65ab9ed611c322ce27.js} +1 -1
  24. package/assets/esri/core/workers/chunks/1e0d2715d603f48a7e0b.js +1 -0
  25. package/assets/esri/core/workers/chunks/261fea092ee7d27608a0.js +1 -0
  26. package/assets/esri/core/workers/chunks/2686fe5b62dd0be699c0.js +1 -0
  27. package/assets/esri/core/workers/chunks/2a97268000c6d03ef720.js +1 -0
  28. package/assets/esri/core/workers/chunks/{83589144eeeb08f45557.js → 2aeb5cc32284dd3e4d22.js} +1 -1
  29. package/assets/esri/core/workers/chunks/2d9a1f23ec6ce90723ac.js +1 -0
  30. package/assets/esri/core/workers/chunks/2e096537a3a5555a4a93.js +1 -0
  31. package/assets/esri/core/workers/chunks/{7a05b18f655c1167ce0a.js → 2ef5237e4c876d6a4ee0.js} +1 -1
  32. package/assets/esri/core/workers/chunks/37d6a264a3f1d8072aa0.js +1 -0
  33. package/assets/esri/core/workers/chunks/3b3e519f15ed52c83f0c.js +1 -0
  34. package/assets/esri/core/workers/chunks/3c0ed15b544df6fb0903.js +1 -0
  35. package/assets/esri/core/workers/chunks/{b612de42ee86c0d95247.js → 3d9d7d3a40b51eb7ee3d.js} +1 -1
  36. package/assets/esri/core/workers/chunks/3df5500a85345577480a.js +1 -0
  37. package/assets/esri/core/workers/chunks/3ffda5bf0b91700dc308.js +1 -0
  38. package/assets/esri/core/workers/chunks/40a584cb952e94326e9e.js +1 -0
  39. package/assets/esri/core/workers/chunks/{1317ecdfd0cfa683a493.js → 42323093827adffe56d3.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{1ba0dfbe0958cdbd7c9f.js → 42fd2a7b22b03dacc6a7.js} +1 -1
  41. package/assets/esri/core/workers/chunks/444e5f214abce3d607cd.js +1 -0
  42. package/assets/esri/core/workers/chunks/{d201fbf3ceff946d2bd6.js → 44d5508042cacdfcac47.js} +1 -1
  43. package/assets/esri/core/workers/chunks/4503b20ca6a80fb63d72.js +1 -0
  44. package/assets/esri/core/workers/chunks/45367aa8e5c5d574de94.js +1 -0
  45. package/assets/esri/core/workers/chunks/45800373650fbc8262e6.js +1 -0
  46. package/assets/esri/core/workers/chunks/{6a7ab1ef9a37e87db5ae.js → 46a7da93a63663878583.js} +1 -1
  47. package/assets/esri/core/workers/chunks/46b4fb6a7fe4877b0efc.js +1120 -0
  48. package/assets/esri/core/workers/chunks/47d074136a7f8e551a9a.js +1 -0
  49. package/assets/esri/core/workers/chunks/4911ce62421a6c3320b0.js +1 -0
  50. package/assets/esri/core/workers/chunks/4a1e23e021bac37a88ab.js +1 -0
  51. package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +1 -0
  52. package/assets/esri/core/workers/chunks/4debf2d9c3465250ef7a.js +1 -0
  53. package/assets/esri/core/workers/chunks/4e544de61f07ca660236.js +1 -0
  54. package/assets/esri/core/workers/chunks/4e8e322b469657ac22e2.js +1 -0
  55. package/assets/esri/core/workers/chunks/505227797bcf2a1d908d.js +1 -0
  56. package/assets/esri/core/workers/chunks/{67ac6b326bf80fc3d33d.js → 53be85d04cd2da4f391d.js} +1 -1
  57. package/assets/esri/core/workers/chunks/54778dec1598818d93cb.js +1 -0
  58. package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +1 -0
  59. package/assets/esri/core/workers/chunks/557671c897ca5563be6c.js +1 -0
  60. package/assets/esri/core/workers/chunks/567a65f4203f6e81f4b4.js +1 -0
  61. package/assets/esri/core/workers/chunks/5c7780f804d789cb37f5.js +1 -0
  62. package/assets/esri/core/workers/chunks/606ea251075fe81a1206.js +1 -0
  63. package/assets/esri/core/workers/chunks/{ceb680688fe7e570a774.js → 608be1172a908e92b9f1.js} +1 -1
  64. package/assets/esri/core/workers/chunks/{e521bb9ee2030245c3ce.js → 612104dff305ff062dfa.js} +2 -2
  65. package/assets/esri/core/workers/chunks/6299be5e7e26bf3c6859.js +1 -0
  66. package/assets/esri/core/workers/chunks/{3ac9dcbb0571a2580236.js → 62c8c9ad09e0166207fd.js} +1 -1
  67. package/assets/esri/core/workers/chunks/6400446b7615b97c3521.js +1 -0
  68. package/assets/esri/core/workers/chunks/6431480ba0fa8c8d487f.js +1 -0
  69. package/assets/esri/core/workers/chunks/6588725275c75fae0d9c.js +1 -0
  70. package/assets/esri/core/workers/chunks/665e31c494d2af505acc.js +1 -0
  71. package/assets/esri/core/workers/chunks/{9232f57623e1fa3ccabc.js → 67e4b5651fd7ff7d8cf0.js} +1 -1
  72. package/assets/esri/core/workers/chunks/68be3fb88ca61f82fb90.js +1 -0
  73. package/assets/esri/core/workers/chunks/6c9266120d46e8c69dbf.js +1 -0
  74. package/assets/esri/core/workers/chunks/6c9acd9e4e201dc380e9.js +1 -0
  75. package/assets/esri/core/workers/chunks/6ebe73f69ae822053b70.js +1 -0
  76. package/assets/esri/core/workers/chunks/709e019885822b1f6f3e.js +1 -0
  77. package/assets/esri/core/workers/chunks/70cc2d79653d66e85b58.js +1 -0
  78. package/assets/esri/core/workers/chunks/7449568eb2305bf2d650.js +1 -0
  79. package/assets/esri/core/workers/chunks/745a153d0cd34faa124e.js +1 -0
  80. package/assets/esri/core/workers/chunks/7572c2bc5062e66f6330.js +1 -0
  81. package/assets/esri/core/workers/chunks/76196c414e48834f7b92.js +1 -0
  82. package/assets/esri/core/workers/chunks/78472a57c2ba146fec65.js +1 -0
  83. package/assets/esri/core/workers/chunks/7ef182e24cad50815b4e.js +1 -0
  84. package/assets/esri/core/workers/chunks/7f0f9dddc44b1f1600f0.js +1 -0
  85. package/assets/esri/core/workers/chunks/814751e705c05099f864.js +1 -0
  86. package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +1 -0
  87. package/assets/esri/core/workers/chunks/8487727f1197cf7dbf50.js +1 -0
  88. package/assets/esri/core/workers/chunks/88e54449261ef94e390d.js +1 -0
  89. package/assets/esri/core/workers/chunks/8b0d5551978ab0aac0d1.js +1 -0
  90. package/assets/esri/core/workers/chunks/8d0c2de92770a1567536.js +1 -0
  91. package/assets/esri/core/workers/chunks/900181f68449d8f82eeb.js +1 -0
  92. package/assets/esri/core/workers/chunks/939942b00ba380e2957e.js +1 -0
  93. package/assets/esri/core/workers/chunks/943a0f140813ee4ab04a.js +1 -0
  94. package/assets/esri/core/workers/chunks/96c3900685cfb2a8ca12.js +1 -0
  95. package/assets/esri/core/workers/chunks/9ce91a909eccc4dfe388.js +1 -0
  96. package/assets/esri/core/workers/chunks/{c76c42c74eedd43263d3.js → 9dd1fc56eb1ea6eb705e.js} +1 -1
  97. package/assets/esri/core/workers/chunks/{86a051e9fe71aa356108.js → 9e3e442a9874ed23a043.js} +1 -1
  98. package/assets/esri/core/workers/chunks/{aa1054834738aef48bda.js → a0356702f2d3f787aeac.js} +1 -1
  99. package/assets/esri/core/workers/chunks/a40b6d8b5c73e06e14d4.js +1 -0
  100. package/assets/esri/core/workers/chunks/{1ba1f705b6ce5c8ea702.js → a655ebdb4bf0660615a2.js} +1 -1
  101. package/assets/esri/core/workers/chunks/a8286febe371dc186aaa.js +1 -0
  102. package/assets/esri/core/workers/chunks/aaba33611753c6aada68.js +1 -0
  103. package/assets/esri/core/workers/chunks/aba42885c5d6b2b5fe7f.js +1 -0
  104. package/assets/esri/core/workers/chunks/ad76f7ab2f3e6d5a5b3c.js +1 -0
  105. package/assets/esri/core/workers/chunks/ae40eac1eadd1a537bf4.js +1 -0
  106. package/assets/esri/core/workers/chunks/aeaaff7a4b1a99540f52.js +1 -0
  107. package/assets/esri/core/workers/chunks/af349c7bc8ef41a0e1bd.js +1 -0
  108. package/assets/esri/core/workers/chunks/af75747b06d79446a855.js +1 -0
  109. package/assets/esri/core/workers/chunks/b564ec4e03478f5659db.js +1 -0
  110. package/assets/esri/core/workers/chunks/bbf993dba74850bbf9d7.js +1 -0
  111. package/assets/esri/core/workers/chunks/bc0f54a2c15502b630ec.js +1 -0
  112. package/assets/esri/core/workers/chunks/{ff3a53c3f00335552317.js → c29c474c4b1049352d3e.js} +1 -1
  113. package/assets/esri/core/workers/chunks/{9ab25ee06041f907b9a2.js → c2c1f51a4668055c2838.js} +1 -1
  114. package/assets/esri/core/workers/chunks/c337fc0e6dc69c233e6d.js +1 -0
  115. package/assets/esri/core/workers/chunks/{a7985d20fa6e8d4878e7.js → d0f5bee9db1ad51ae687.js} +1 -1
  116. package/assets/esri/core/workers/chunks/d6ad4390df576198e45b.js +1 -0
  117. package/assets/esri/core/workers/chunks/d7f6021fd41b9571a02c.js +1 -0
  118. package/assets/esri/core/workers/chunks/d90a3bfd45b5ed4092e0.js +1 -0
  119. package/assets/esri/core/workers/chunks/dba280c370df13196711.js +1 -0
  120. package/assets/esri/core/workers/chunks/ddf0671976648f621269.js +1 -0
  121. package/assets/esri/core/workers/chunks/{c18189710d6198516175.js → de5ecb567bd69c613e9d.js} +1 -1
  122. package/assets/esri/core/workers/chunks/e10b57aefcc89671116e.js +1 -0
  123. package/assets/esri/core/workers/chunks/{534186fc921a0ccf58dc.js → e1f5d00878f27e1d413e.js} +1 -1
  124. package/assets/esri/core/workers/chunks/e65dfa19f030ec298437.js +1 -0
  125. package/assets/esri/core/workers/chunks/e932951598499befabf5.js +1 -0
  126. package/assets/esri/core/workers/chunks/{e1ba915dae7747932c0f.js → eb04e1717a1002cda3ab.js} +1 -1
  127. package/assets/esri/core/workers/chunks/f122c18af10e56f9ec2b.js +1 -0
  128. package/assets/esri/core/workers/chunks/f1df76f098a3cc924832.js +1 -0
  129. package/assets/esri/core/workers/chunks/f1f90adae13b04898008.js +1 -0
  130. package/assets/esri/core/workers/chunks/f46d9a19f79d4a4bd354.js +1 -0
  131. package/assets/esri/core/workers/chunks/f4f9d08b2df856e3b694.js +1 -0
  132. package/assets/esri/core/workers/chunks/{711cfb84659cb4437679.js → f528ac5c648ca6a98582.js} +1 -1
  133. package/assets/esri/core/workers/chunks/f92364afaefbac7e8f77.js +1 -0
  134. package/assets/esri/core/workers/chunks/fb444954be74c1962ced.js +1 -0
  135. package/assets/esri/core/workers/chunks/fc44227c1756f65b95df.js +1 -0
  136. package/assets/esri/core/workers/chunks/{72019baeba520edb6bb0.js → fc44d45598a7476bc606.js} +1 -1
  137. package/assets/esri/core/workers/chunks/fecaf0bc28aeea4d15db.js +1 -0
  138. package/assets/esri/libs/librust-parquet/pkg/parquet_bg.wasm +0 -0
  139. package/assets/esri/themes/base/_mixins.scss +2 -2
  140. package/assets/esri/themes/base/widgets/_Attribution.scss +1 -1
  141. package/assets/esri/themes/base/widgets/_BasemapLayerList.scss +2 -2
  142. package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +5 -5
  143. package/assets/esri/themes/base/widgets/_Bookmarks.scss +1 -1
  144. package/assets/esri/themes/base/widgets/_BuildingLevelPicker.scss +2 -2
  145. package/assets/esri/themes/base/widgets/_BuildingPhasePicker.scss +5 -5
  146. package/assets/esri/themes/base/widgets/_CatalogLayerList.scss +1 -1
  147. package/assets/esri/themes/base/widgets/_Compass.scss +0 -2
  148. package/assets/esri/themes/base/widgets/_DirectionalPad.scss +4 -10
  149. package/assets/esri/themes/base/widgets/_Directions.scss +40 -40
  150. package/assets/esri/themes/base/widgets/_Editor.scss +7 -7
  151. package/assets/esri/themes/base/widgets/_Expand.scss +1 -1
  152. package/assets/esri/themes/base/widgets/_Feature.scss +1 -1
  153. package/assets/esri/themes/base/widgets/_FeatureForm.scss +6 -6
  154. package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationLayers.scss +1 -1
  155. package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationList.scss +1 -1
  156. package/assets/esri/themes/base/widgets/_FeatureFormUtilityNetworkAssociationSettings.scss +4 -4
  157. package/assets/esri/themes/base/widgets/_FeatureTable.scss +27 -27
  158. package/assets/esri/themes/base/widgets/_FeatureTemplates.scss +1 -1
  159. package/assets/esri/themes/base/widgets/_Features.scss +6 -6
  160. package/assets/esri/themes/base/widgets/_FilterBuilder.scss +1 -1
  161. package/assets/esri/themes/base/widgets/_FilterCondition.scss +1 -1
  162. package/assets/esri/themes/base/widgets/_Grid.scss +18 -18
  163. package/assets/esri/themes/base/widgets/_GridControls.scss +11 -11
  164. package/assets/esri/themes/base/widgets/_LayerList.scss +1 -1
  165. package/assets/esri/themes/base/widgets/_Legend.scss +5 -5
  166. package/assets/esri/themes/base/widgets/_NavigationToggle.scss +4 -1
  167. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +23 -28
  168. package/assets/esri/themes/base/widgets/_ResponsiveToolbar.scss +0 -2
  169. package/assets/esri/themes/base/widgets/_SearchResultRenderer.scss +1 -1
  170. package/assets/esri/themes/base/widgets/_SelectionList.scss +15 -15
  171. package/assets/esri/themes/base/widgets/_SelectionToolbar.scss +3 -5
  172. package/assets/esri/themes/base/widgets/_ShadowCast.scss +11 -11
  173. package/assets/esri/themes/base/widgets/_Sketch.scss +1 -1
  174. package/assets/esri/themes/base/widgets/_Slice.scss +3 -3
  175. package/assets/esri/themes/base/widgets/_SnappingControls.scss +1 -1
  176. package/assets/esri/themes/base/widgets/_TimeSlider.scss +5 -5
  177. package/assets/esri/themes/base/widgets/_TimeZoneLabel.scss +5 -4
  178. package/assets/esri/themes/base/widgets/_Tooltip.scss +14 -17
  179. package/assets/esri/themes/base/widgets/_UtilityNetworkAssociations.scss +2 -2
  180. package/assets/esri/themes/base/widgets/_UtilityNetworkTrace.scss +1 -1
  181. package/assets/esri/themes/base/widgets/_UtilityNetworkValidateTopology.scss +2 -2
  182. package/assets/esri/themes/base/widgets/_ValuePicker.scss +2 -2
  183. package/assets/esri/themes/base/widgets/_VideoPlayer.scss +5 -5
  184. package/assets/esri/themes/base/widgets/_Widget.scss +5 -1
  185. package/assets/esri/themes/dark/main.css +1 -1
  186. package/assets/esri/themes/light/main.css +1 -1
  187. package/assets/esri/themes/light/view.css +1 -1
  188. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.en.json +1 -1
  189. package/{basemaps/BasemapCollection.d.ts → basemapGallery/BasemapGalleryModel.d.ts} +8 -8
  190. package/{basemaps/BasemapCollection.js → basemapGallery/BasemapGalleryModel.js} +1 -1
  191. package/{basemaps → basemapGallery}/BasemapsSource.d.ts +1 -1
  192. package/{basemaps → basemapGallery}/BasemapsSource.js +1 -1
  193. package/{basemaps → basemapGallery}/LocalBasemapsSource.d.ts +2 -2
  194. package/{basemaps → basemapGallery}/LocalBasemapsSource.js +1 -1
  195. package/{basemaps → basemapGallery}/PortalBasemapsSource.d.ts +2 -2
  196. package/{basemaps → basemapGallery}/PortalBasemapsSource.js +1 -1
  197. package/{basemaps → basemapGallery}/support/BasemapItem.d.ts +2 -2
  198. package/{basemaps → basemapGallery}/support/BasemapItem.js +1 -1
  199. package/{basemaps → basemapGallery}/types.d.ts +2 -2
  200. package/chunks/AtmosphereCompositing.glsl.js +1 -1
  201. package/chunks/ChapmanAtmosphere.glsl.js +3 -3
  202. package/chunks/CloudsComposition.glsl.js +1 -1
  203. package/chunks/Component.glsl.js +41 -41
  204. package/chunks/DefaultMaterial.glsl.js +2 -2
  205. package/chunks/EdgeShader.glsl.js +9 -9
  206. package/chunks/Fog.glsl.js +5 -5
  207. package/chunks/GaussianSplat.glsl.js +2 -2
  208. package/chunks/GlobalIllumination.glsl.js +13 -11
  209. package/chunks/GlobalIlluminationBlur.glsl.js +3 -5
  210. package/chunks/GlobalIlluminationUpscale.glsl.js +1 -1
  211. package/chunks/HUDMaterial.glsl.js +13 -13
  212. package/chunks/Haze.glsl.js +6 -6
  213. package/chunks/HazeCompositing.glsl.js +1 -1
  214. package/chunks/LaserlinePath.glsl.js +6 -6
  215. package/chunks/LineCallout.glsl.js +1 -1
  216. package/chunks/LineMarker.glsl.js +5 -5
  217. package/chunks/NavigationDepth.glsl.js +2 -2
  218. package/chunks/Path.glsl.js +1 -1
  219. package/chunks/Pattern.glsl.js +26 -26
  220. package/chunks/Precipitation.glsl.js +7 -7
  221. package/chunks/RealisticTree.glsl.js +2 -2
  222. package/chunks/RibbonLine.glsl.js +80 -73
  223. package/chunks/ShadowCastAccumulate.glsl.js +1 -1
  224. package/chunks/ShadowHighlight.glsl.js +5 -5
  225. package/chunks/ShadowHighlightBuffer.glsl.js +1 -1
  226. package/chunks/SimpleAtmosphere.glsl.js +4 -4
  227. package/chunks/Terrain.glsl.js +29 -32
  228. package/chunks/Viewshed.glsl.js +2 -2
  229. package/chunks/Water.glsl.js +2 -2
  230. package/config.js +1 -1
  231. package/core/Loadable.js +1 -1
  232. package/core/arrayUtils.js +1 -1
  233. package/core/colorUtils.js +1 -1
  234. package/core/has.js +1 -1
  235. package/core/screenUtils.js +1 -1
  236. package/core/units.js +1 -1
  237. package/core/workers/workerFactory.js +1 -1
  238. package/form/elements/inputs/DynamicChoiceInput.d.ts +35 -5
  239. package/geometry/HeightModelInfo.js +1 -1
  240. package/geometry/operators/proximityOperator.js +1 -1
  241. package/geometry/projectionUtils.js +1 -1
  242. package/geometry/support/meshUtils.d.ts +1 -1
  243. package/geometry/support/scaleUtils.js +1 -1
  244. package/geometry/support/wkt.js +2 -0
  245. package/kernel.js +1 -1
  246. package/layers/BaseDynamicLayer.d.ts +1 -0
  247. package/layers/BaseElevationLayer.d.ts +2 -0
  248. package/layers/BaseTileLayer.d.ts +12 -9
  249. package/layers/CSVLayer.d.ts +0 -15
  250. package/layers/FeatureLayer.d.ts +2 -15
  251. package/layers/GeoJSONLayer.d.ts +0 -52
  252. package/layers/GeoRSSLayer.d.ts +0 -44
  253. package/layers/GeospatialPDFLayer.d.ts +2 -5
  254. package/layers/GeospatialPDFLayer.js +1 -1
  255. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  256. package/layers/OrientedImageryLayer.js +1 -1
  257. package/layers/ParquetLayer.d.ts +100 -12
  258. package/layers/ParquetLayer.js +1 -1
  259. package/layers/SketchLayer.d.ts +0 -1
  260. package/layers/VectorTileLayer.d.ts +2 -12
  261. package/layers/geospatialPDF/renderExtentUtils.js +1 -1
  262. package/layers/graphics/data/FeatureStore.js +1 -1
  263. package/layers/graphics/data/QueryEngineResult.js +1 -1
  264. package/layers/graphics/data/geometryUtils.js +1 -1
  265. package/layers/graphics/data/projectionSupport.js +1 -1
  266. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  267. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  268. package/layers/graphics/transferFeatures.js +1 -1
  269. package/layers/knowledgeGraph/layerUtils.js +1 -1
  270. package/layers/knowledgeGraph/nodeMovementUtils.js +1 -1
  271. package/layers/mixins/PortalLayer.js +1 -1
  272. package/layers/mixins/RefreshableLayer.d.ts +1 -3
  273. package/layers/mixins/ScaleRangeLayer.js +1 -1
  274. package/layers/mixins/SublayersOwner.js +1 -1
  275. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  276. package/layers/orientedImagery/core/utils.js +1 -1
  277. package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
  278. package/layers/raster/datasets/TIFFRaster.js +1 -1
  279. package/layers/raster/datasets/byteStreamUtils.js +1 -1
  280. package/layers/raster/formats/tiffParser.js +1 -1
  281. package/layers/support/ParquetPortalItemData.d.ts +2 -0
  282. package/layers/support/ParquetPortalItemData.js +1 -1
  283. package/layers/support/PortalItemData.d.ts +21 -0
  284. package/layers/support/PortalItemData.js +1 -1
  285. package/layers/support/Sublayer.js +1 -1
  286. package/layers/support/SubtypeSublayer.js +1 -1
  287. package/layers/support/layersLoader.js +1 -1
  288. package/layers/support/parquetUtils.d.ts +1 -1
  289. package/layers/support/types.d.ts +1 -1
  290. package/package.json +3 -3
  291. package/popup/FeaturesModel.d.ts +27 -6
  292. package/popup/FeaturesModel.js +1 -1
  293. package/portal/support/layersLoader.js +1 -1
  294. package/portal/support/portalLayers.js +1 -1
  295. package/renderers/VectorFieldRenderer.d.ts +4 -4
  296. package/rest/print.d.ts +49 -3
  297. package/rest/print.js +1 -1
  298. package/rest/query/operations/pbfFlatFeatureSet.js +1 -1
  299. package/rest/support/printTaskUtils.js +1 -1
  300. package/smartMapping/renderers/color.js +1 -1
  301. package/smartMapping/renderers/dotDensity.js +1 -1
  302. package/smartMapping/renderers/heatmap.js +1 -1
  303. package/smartMapping/renderers/pieChart.js +1 -1
  304. package/smartMapping/renderers/support/spikeUtils.js +3 -3
  305. package/smartMapping/renderers/type.js +1 -1
  306. package/smartMapping/statistics/heatmapStatistics.js +1 -1
  307. package/smartMapping/statistics/histogram.js +1 -1
  308. package/smartMapping/statistics/summaryStatistics.js +1 -1
  309. package/smartMapping/statistics/summaryStatisticsForAttributes.js +1 -1
  310. package/smartMapping/statistics/uniqueValues.js +1 -1
  311. package/smartMapping/support/adapters/support/layerUtils.js +1 -1
  312. package/smartMapping/types.d.ts +3 -1
  313. package/symbols/LineSymbol3DLayer.js +1 -1
  314. package/symbols/callouts/LineCallout3D.js +1 -1
  315. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  316. package/symbols/cim/CIMSymbolHelper.js +1 -1
  317. package/symbols/cim/cimAnalyzer.js +1 -1
  318. package/symbols/edges/Edges3D.js +1 -1
  319. package/symbols/support/Symbol3DIconOutline.js +1 -1
  320. package/symbols/support/Symbol3DOutline.js +1 -1
  321. package/symbols/support/Symbol3DTextBorder.js +1 -1
  322. package/symbols/support/defaults3D.js +1 -1
  323. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  324. package/views/2d/analysis/AreaMeasurementAnalysisView2D.d.ts +6 -4
  325. package/views/2d/analysis/AreaMeasurementAnalysisView2D.js +1 -1
  326. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  327. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.d.ts +6 -4
  328. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.js +1 -1
  329. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
  330. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerMeshWriter.js +1 -1
  331. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/LineShader.js +1 -1
  332. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TexturedLineShader.js +1 -1
  333. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
  334. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  335. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  336. package/views/2d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles2D.js +1 -1
  337. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  338. package/views/2d/layers/LayerView2D.js +1 -1
  339. package/views/2d/layers/features/FeatureContainer.js +1 -1
  340. package/views/2d/layers/features/FeatureSourceEventLog.js +1 -1
  341. package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
  342. package/views/2d/layers/features/sources/FeatureSource.js +1 -1
  343. package/views/2d/layers/features/sources/FeatureSourceQueryInfo.js +1 -1
  344. package/views/2d/layers/features/sources/strategies/AFeatureTileLoadStrategy.js +1 -1
  345. package/views/2d/layers/features/sources/strategies/FeatureDrillDownTileLoadStrategy.js +1 -1
  346. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  347. package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
  348. package/views/2d/layers/features/support/FeatureSetReaderIndirect.js +1 -1
  349. package/views/2d/layers/features/support/FeatureSetReaderJSON.js +1 -1
  350. package/views/2d/layers/features/support/FeatureSetReaderPBF.js +1 -1
  351. package/views/2d/layers/features/support/FeatureSetReaderPBFHeader.js +1 -1
  352. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  353. package/views/3d/analysis/LineOfSight/LineOfSightInteractionVisuals.js +1 -1
  354. package/views/3d/analysis/LineOfSight/LineOfSightItemManipulatedObject3D.js +1 -1
  355. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  356. package/views/3d/analysis/LineOfSight/LineOfSightPlacementController.js +1 -1
  357. package/views/3d/analysis/LineOfSight/lineOfSightPlacementUtils.js +1 -1
  358. package/views/3d/analysis/ShadowCast/ShadowCastTooltip.js +1 -1
  359. package/views/3d/analysis/ShadowCastAnalysisView3D.js +1 -1
  360. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  361. package/views/3d/analysis/Viewshed/ViewshedPlacementPointPlugin.js +1 -1
  362. package/views/3d/analysis/Viewshed/placementUtils.js +1 -1
  363. package/views/3d/analysis/Viewshed/types.d.ts +3 -1
  364. package/views/3d/analysis/ViewshedAnalysisView3D.d.ts +3 -0
  365. package/views/3d/analysis/VolumeMeasurementAnalysisView3D.d.ts +2 -1
  366. package/views/3d/environment/Environment.d.ts +2 -2
  367. package/views/3d/environment/Environment.js +1 -1
  368. package/views/3d/environment/EnvironmentView.js +2 -0
  369. package/views/3d/interactive/SnappingVisualizer3D.js +1 -1
  370. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  371. package/views/3d/interactive/editingTools/originGeometryVisualElementUtils.js +1 -1
  372. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  373. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  374. package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
  375. package/views/3d/layers/BuildingComponentSublayerView3D.js +1 -1
  376. package/views/3d/layers/BuildingSceneLayerView3D.js +1 -1
  377. package/views/3d/layers/DynamicLayerView3D.js +1 -1
  378. package/views/3d/layers/FeatureLikeLayerViewBase3D.js +1 -1
  379. package/views/3d/layers/FlowSubView3D.js +1 -1
  380. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  381. package/views/3d/layers/GraphicsLayerView3D.js +1 -1
  382. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  383. package/views/3d/layers/IntegratedMeshLayerView3D.js +1 -1
  384. package/views/3d/layers/MediaLayerView3D.js +1 -1
  385. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  386. package/views/3d/layers/RouteLayerView3D.js +1 -1
  387. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  388. package/views/3d/layers/SceneLayerView3D.js +1 -1
  389. package/views/3d/layers/TiledLayerView3D.js +1 -1
  390. package/views/3d/layers/VoxelLayerView3D.js +1 -1
  391. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  392. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  393. package/views/3d/layers/graphics/Graphics3DBufferGraphicLayer.js +2 -0
  394. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  395. package/views/3d/layers/graphics/Graphics3DDrapedBufferGraphicLayer.js +2 -0
  396. package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayer.js +1 -1
  397. package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayerBase.js +2 -0
  398. package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
  399. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  400. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  401. package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
  402. package/views/3d/layers/graphics/Graphics3DScaleVisibility.js +1 -1
  403. package/views/3d/layers/graphics/Graphics3DStageObjectGraphicLayer.js +2 -0
  404. package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
  405. package/views/3d/layers/graphics/LabelInfo.js +1 -1
  406. package/views/3d/layers/graphics/Labeler.js +1 -1
  407. package/views/3d/layers/graphics/elevationAlignmentUtils.js +1 -1
  408. package/views/3d/layers/graphics/pointUtils.js +1 -1
  409. package/views/3d/layers/support/FeatureMemory.js +1 -1
  410. package/views/3d/layers/support/FeatureTile.js +1 -1
  411. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  412. package/views/3d/layers/support/HeatmapFeatureProcessor.js +1 -1
  413. package/views/3d/layers/support/ImageHighlightHelper3D.js +1 -1
  414. package/views/3d/layers/support/SampledGeometryMaxDistanceRatio.js +1 -1
  415. package/views/3d/layers/support/featureTileQuery3D.js +1 -1
  416. package/views/3d/support/PBFDecoder.js +1 -1
  417. package/views/3d/support/elevationUpdateUtils.js +1 -1
  418. package/views/3d/support/popupHitTest.js +1 -1
  419. package/views/3d/terrain/OverlayManager.js +1 -1
  420. package/views/3d/terrain/OverlayRenderer.js +1 -1
  421. package/views/3d/terrain/TerrainRenderer.js +1 -1
  422. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  423. package/views/3d/webgl-engine/core/shaderLibrary/Laserline.glsl.js +5 -5
  424. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +13 -13
  425. package/views/3d/webgl-engine/core/shaderLibrary/bindUniforms.js +2 -0
  426. package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +2 -2
  427. package/views/3d/webgl-engine/core/shaderLibrary/lastFrameUniforms.js +2 -0
  428. package/views/3d/webgl-engine/core/shaderLibrary/output/OutputHighlight.glsl.js +7 -7
  429. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +31 -29
  430. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +26 -12
  431. package/views/3d/webgl-engine/core/shaderLibrary/shading/MainLighting.glsl.js +2 -2
  432. package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +14 -14
  433. package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +1 -1
  434. package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadGlobalIllumination.glsl.js +16 -11
  435. package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceRayMarching.glsl.js +5 -5
  436. package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterColor.glsl.js +8 -8
  437. package/views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js +1 -1
  438. package/views/3d/webgl-engine/core/shaderLibrary/shading/lightingUniforms.js +2 -0
  439. package/views/3d/webgl-engine/core/shaderLibrary/shading/pbrGlobals.glsl.js +1 -1
  440. package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +6 -6
  441. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +1 -1
  442. package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +3 -3
  443. package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
  444. package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
  445. package/views/3d/webgl-engine/effects/WeatherFader.js +1 -1
  446. package/views/3d/webgl-engine/effects/atmosphere/ChapmanApproximation.glsl.js +3 -3
  447. package/views/3d/webgl-engine/effects/atmosphere/ChapmanAtmosphere.glsl.js +1 -1
  448. package/views/3d/webgl-engine/effects/atmosphere/ChapmanRaymarching.glsl.js +1 -1
  449. package/views/3d/webgl-engine/effects/atmosphere/SimpleAtmosphere.glsl.js +1 -1
  450. package/views/3d/webgl-engine/effects/clouds/CloudsComposition.glsl.js +1 -1
  451. package/views/3d/webgl-engine/effects/clouds/CloudsComposition.js +1 -1
  452. package/views/3d/webgl-engine/effects/fog/Fog.glsl.js +1 -1
  453. package/views/3d/webgl-engine/effects/fog/Fog.js +1 -1
  454. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  455. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  456. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js +2 -2
  457. package/views/3d/webgl-engine/effects/glow/applyEmissiveGlow.glsl.js +5 -5
  458. package/views/3d/webgl-engine/effects/haze/Haze.glsl.js +1 -1
  459. package/views/3d/webgl-engine/effects/haze/HazeCompositing.glsl.js +1 -1
  460. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.glsl.js +1 -1
  461. package/views/3d/webgl-engine/effects/highlight/ShadowHighlightBuffer.glsl.js +1 -1
  462. package/views/3d/webgl-engine/effects/laserlines/LaserlinePath.glsl.js +1 -1
  463. package/views/3d/webgl-engine/effects/raymarching/DistanceFalloff.glsl.js +1 -1
  464. package/views/3d/webgl-engine/effects/shadowAccumulation/ShadowCastAccumulate.glsl.js +1 -1
  465. package/views/3d/webgl-engine/lib/BufferGeometry.js +1 -1
  466. package/views/3d/webgl-engine/lib/BufferObject3D.js +1 -1
  467. package/views/3d/webgl-engine/lib/EmissionComposite.js +1 -1
  468. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  469. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  470. package/views/3d/webgl-engine/lib/affectsGeometry.js +1 -1
  471. package/views/3d/webgl-engine/lib/bufferGeometryUtils.js +2 -0
  472. package/views/3d/webgl-engine/lib/edgeRendering/AdjustProjectedPosition.glsl.js +5 -5
  473. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShader.glsl.js +1 -1
  474. package/views/3d/webgl-engine/lib/edgeRendering/EdgeUtil.glsl.js +11 -11
  475. package/views/3d/webgl-engine/materials/Path.glsl.js +1 -1
  476. package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
  477. package/views/3d/webgl-engine/shaders/AtmosphereCompositing.glsl.js +1 -1
  478. package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
  479. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  480. package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
  481. package/views/3d/webgl-engine/shaders/LineCallout.glsl.js +1 -1
  482. package/views/3d/webgl-engine/shaders/Pattern.glsl.js +1 -1
  483. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  484. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  485. package/views/3d/webgl-engine/shaders/SphereDepthInterpolate.glsl.js +1 -1
  486. package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
  487. package/views/3d/webgl-engine/shaders/Viewshed.glsl.js +1 -1
  488. package/views/3d/webgl-engine/shaders/lineUniforms.js +2 -0
  489. package/views/DOMContainer.d.ts +28 -9
  490. package/views/DOMContainer.js +1 -1
  491. package/views/PopupView.d.ts +6 -0
  492. package/views/SceneView.d.ts +4 -10
  493. package/views/SceneView.js +1 -1
  494. package/views/VideoView.d.ts +27 -9
  495. package/views/View.d.ts +20 -19
  496. package/views/View.js +1 -1
  497. package/views/View2D.d.ts +13 -13
  498. package/views/draw/Draw.d.ts +1 -1
  499. package/views/draw/support/InteractiveHandle.js +1 -1
  500. package/views/draw/support/PluginContext.js +1 -1
  501. package/views/draw/support/managers/TooltipManager.js +1 -1
  502. package/views/interactive/options/SnappingOptions.d.ts +29 -12
  503. package/views/interactive/options/TooltipOptions.d.ts +9 -1
  504. package/views/interactive/options/ValueOptions.d.ts +9 -2
  505. package/views/interactive/options/ViewOptions.d.ts +82 -6
  506. package/views/interactive/snapping/FeatureSnappingSourceInfo.js +1 -1
  507. package/views/interactive/snapping/SnappingManagerPool.js +1 -1
  508. package/views/interactive/snapping/SnappingOptions.d.ts +1 -1
  509. package/views/interactive/snapping/SnappingVisualizer.js +1 -1
  510. package/views/interactive/support/Units.d.ts +1 -0
  511. package/views/interactive/tooltip/components/DrawHeaderActions.js +1 -1
  512. package/views/interactive/tooltip/components/ElevationModeSelect.js +1 -1
  513. package/views/interactive/tooltip/components/TooltipEditableField.js +1 -1
  514. package/views/interactive/tooltip/infos/DynamicTooltipInfo.js +1 -1
  515. package/views/layers/FeatureLikeLayerView.d.ts +2 -2
  516. package/views/layers/GraphicsLayerView.d.ts +1 -0
  517. package/views/layers/ImageryLayerView.d.ts +1 -0
  518. package/views/layers/LayerView.js +1 -1
  519. package/views/layers/LineOfSightLayerView.d.ts +3 -4
  520. package/views/layers/ParquetLayerView.d.ts +15 -0
  521. package/views/layers/ParquetLayerView.js +1 -1
  522. package/views/layers/ViewshedLayerView.d.ts +5 -6
  523. package/views/support/layerViewUtils.js +1 -1
  524. package/views/support/projectionUtils.js +1 -1
  525. package/views/types.d.ts +3 -1
  526. package/webdoc/support/saveUtils.js +1 -1
  527. package/webdoc/support/unsupportedErrors.js +1 -1
  528. package/widgets/BasemapGallery/BasemapGalleryViewModel.d.ts +2 -2
  529. package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
  530. package/widgets/BasemapGallery/support/BasemapGalleryItem.d.ts +3 -3
  531. package/widgets/BasemapGallery/support/LocalBasemapsSource.d.ts +2 -2
  532. package/widgets/BasemapGallery/support/PortalBasemapsSource.d.ts +2 -2
  533. package/widgets/BasemapGallery/types.d.ts +3 -3
  534. package/widgets/BasemapLayerList.js +1 -1
  535. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  536. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  537. package/widgets/BatchAttributeForm/expressions/expressionUtils.js +1 -1
  538. package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +6 -0
  539. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  540. package/widgets/BatchAttributeForm/inputs/support/DynamicChoiceController.js +1 -1
  541. package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
  542. package/widgets/BatchAttributeForm.js +1 -1
  543. package/widgets/DirectionalPad.js +1 -1
  544. package/widgets/Editor/EditorViewModel.d.ts +13 -8
  545. package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
  546. package/widgets/Editor/workflowUtils.js +1 -1
  547. package/widgets/Editor.d.ts +19 -9
  548. package/widgets/Expand.js +1 -1
  549. package/widgets/FeatureForm.d.ts +2 -2
  550. package/widgets/FeatureForm.js +1 -1
  551. package/widgets/FeatureTable/FieldColumn.js +1 -1
  552. package/widgets/FeatureTable.js +1 -1
  553. package/widgets/Features/FeaturesDrillIn.js +1 -1
  554. package/widgets/Features.js +1 -1
  555. package/widgets/Legend.d.ts +1 -0
  556. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  557. package/widgets/OrientedImageryViewer/adapters/draw/HeightMeasurementAdapter.js +1 -1
  558. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  559. package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
  560. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  561. package/widgets/OrientedImageryViewer/components/ImageLocationViewModel.js +1 -1
  562. package/widgets/OrientedImageryViewer/components/SequentialNavigationUI.js +1 -1
  563. package/widgets/OrientedImageryViewer/components/SketchTools.js +1 -1
  564. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  565. package/widgets/OrientedImageryViewer/types.d.ts +20 -0
  566. package/widgets/OrientedImageryViewer.d.ts +9 -1
  567. package/widgets/PanoramicVideoViewer.js +1 -1
  568. package/widgets/Print/PrintViewModel.d.ts +3 -2
  569. package/widgets/Print/PrintViewModel.js +1 -1
  570. package/widgets/Print.js +1 -1
  571. package/widgets/ScaleRangeSlider.js +1 -1
  572. package/widgets/Search/SearchResultRenderer.js +1 -1
  573. package/widgets/ShadowCast/ShadowCastViewModel.js +1 -1
  574. package/widgets/Sketch/SketchViewModel.d.ts +14 -9
  575. package/widgets/Sketch/support/ResponsiveToolbar/ResponsiveToolbar.js +1 -1
  576. package/widgets/Sketch.d.ts +10 -10
  577. package/widgets/Track/TrackViewModel.d.ts +1 -1
  578. package/widgets/UtilityNetworkAssociations.js +1 -1
  579. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeature.js +1 -1
  580. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeaturesDrillIn.js +1 -1
  581. package/widgets/UtilityNetworkTrace/types.d.ts +2 -2
  582. package/widgets/UtilityNetworkTrace.js +1 -1
  583. package/widgets/UtilityNetworkValidateTopology.js +1 -1
  584. package/widgets/ValuePicker.js +1 -1
  585. package/widgets/VideoPlayer/components/PlayerActionsGroup.js +1 -1
  586. package/widgets/VideoPlayer/components/PlayerControlsGroup.js +1 -1
  587. package/widgets/support/GridControls.js +1 -1
  588. package/widgets/support/PluginSettingsControls.js +1 -1
  589. package/widgets/support/SelectionList/FeatureItem.d.ts +9 -2
  590. package/widgets/support/SelectionToolbar.js +1 -1
  591. package/widgets/support/SnappingControls.d.ts +1 -1
  592. package/widgets/support/SnappingControls.js +1 -1
  593. package/widgets/support/componentsUtils.js +1 -1
  594. package/arcade/geometry/wkt.js +0 -2
  595. package/assets/esri/core/workers/chunks/00a600c71ceebe7bfeee.js +0 -1
  596. package/assets/esri/core/workers/chunks/00d24415bdeb0adae3df.js +0 -1
  597. package/assets/esri/core/workers/chunks/0193df3f9fb23633da87.js +0 -1
  598. package/assets/esri/core/workers/chunks/01b00fbf6a6a22d573ee.js +0 -1
  599. package/assets/esri/core/workers/chunks/02d4f91652a79d2b637e.js +0 -1
  600. package/assets/esri/core/workers/chunks/050c4b212f2b5691db34.js +0 -1
  601. package/assets/esri/core/workers/chunks/05963f57cbe5a5249496.js +0 -1
  602. package/assets/esri/core/workers/chunks/05d865b2736f452ad2aa.js +0 -1
  603. package/assets/esri/core/workers/chunks/06e7400f5ebe0719b81c.js +0 -1
  604. package/assets/esri/core/workers/chunks/07aa6d36f1006b6ab7ff.js +0 -1
  605. package/assets/esri/core/workers/chunks/084222c00d263a534952.js +0 -1
  606. package/assets/esri/core/workers/chunks/0b36abcbf03037b4073d.js +0 -1
  607. package/assets/esri/core/workers/chunks/107b025dc5b09465a78f.js +0 -1
  608. package/assets/esri/core/workers/chunks/1b551ef3d84d9c1e93f9.js +0 -1
  609. package/assets/esri/core/workers/chunks/1ef39aef6b33c530cbe4.js +0 -1
  610. package/assets/esri/core/workers/chunks/1f3148cebee1961249a4.js +0 -1
  611. package/assets/esri/core/workers/chunks/1f43e06dcfe56229bb0f.js +0 -1
  612. package/assets/esri/core/workers/chunks/2164fcaced72b0fda31f.js +0 -1
  613. package/assets/esri/core/workers/chunks/25b0885d3bc190b28c04.js +0 -1
  614. package/assets/esri/core/workers/chunks/25d6c674b1c4829f040f.js +0 -1
  615. package/assets/esri/core/workers/chunks/260dcb79dfd0f981949f.js +0 -1
  616. package/assets/esri/core/workers/chunks/2a570ce6b99dac6ee996.js +0 -1
  617. package/assets/esri/core/workers/chunks/2e6a2f4d686b71249c0e.js +0 -1
  618. package/assets/esri/core/workers/chunks/2f9033890c465acff698.js +0 -1
  619. package/assets/esri/core/workers/chunks/303676d1b10676c9cab4.js +0 -1
  620. package/assets/esri/core/workers/chunks/303fde8f3459dde16555.js +0 -1
  621. package/assets/esri/core/workers/chunks/32d08b571bbd996d4e6d.js +0 -1
  622. package/assets/esri/core/workers/chunks/33956f12505e72e60293.js +0 -1
  623. package/assets/esri/core/workers/chunks/350540770781b281c39a.js +0 -1
  624. package/assets/esri/core/workers/chunks/37a636f61cfe89c6bfd1.js +0 -1
  625. package/assets/esri/core/workers/chunks/380cc538c1ab453870fa.js +0 -1
  626. package/assets/esri/core/workers/chunks/3880d2c7fb14955d7f93.js +0 -1
  627. package/assets/esri/core/workers/chunks/3b017b718ea2d4ed498f.js +0 -1
  628. package/assets/esri/core/workers/chunks/40fb1910f780e78c128c.js +0 -1
  629. package/assets/esri/core/workers/chunks/4310c8d2b40ae69c3681.js +0 -1
  630. package/assets/esri/core/workers/chunks/43fc42405167a5537039.js +0 -1
  631. package/assets/esri/core/workers/chunks/4848f195eb93cc93dd15.js +0 -1
  632. package/assets/esri/core/workers/chunks/4cddd217383b9333f32e.js +0 -1
  633. package/assets/esri/core/workers/chunks/4d82db661365daa513a6.js +0 -1
  634. package/assets/esri/core/workers/chunks/4fa59f8ed3b7b6239548.js +0 -1
  635. package/assets/esri/core/workers/chunks/57970d43cdcc5cf57a30.js +0 -1
  636. package/assets/esri/core/workers/chunks/5e184fd47e76eb976fa9.js +0 -1
  637. package/assets/esri/core/workers/chunks/5ea8809b6519c05ad9f6.js +0 -1
  638. package/assets/esri/core/workers/chunks/5f3ab77a79c408423fde.js +0 -1
  639. package/assets/esri/core/workers/chunks/5fd099ca1024707387b2.js +0 -1
  640. package/assets/esri/core/workers/chunks/604344e45c0f27497188.js +0 -1
  641. package/assets/esri/core/workers/chunks/61ad8306ab79aca79505.js +0 -1
  642. package/assets/esri/core/workers/chunks/633a9051580c5302d2f7.js +0 -1
  643. package/assets/esri/core/workers/chunks/6469c0d18d3663e7da4b.js +0 -1
  644. package/assets/esri/core/workers/chunks/65654e481cce9ae40e54.js +0 -1
  645. package/assets/esri/core/workers/chunks/669e39c3437d7273f0c7.js +0 -1
  646. package/assets/esri/core/workers/chunks/68e24fa3f564c2a5c9fd.js +0 -1
  647. package/assets/esri/core/workers/chunks/6aebf7cfd294e88bf926.js +0 -1
  648. package/assets/esri/core/workers/chunks/71f739bb3f7350704af6.js +0 -1
  649. package/assets/esri/core/workers/chunks/750a9f3cdb96b966274a.js +0 -1
  650. package/assets/esri/core/workers/chunks/776565dd9741ba2ba151.js +0 -1
  651. package/assets/esri/core/workers/chunks/798a63653f82c0e842c5.js +0 -1
  652. package/assets/esri/core/workers/chunks/841f67baf6a1634ada48.js +0 -1
  653. package/assets/esri/core/workers/chunks/84fcbf7a1d04f01685d1.js +0 -1
  654. package/assets/esri/core/workers/chunks/897fc8e78a0d54a5ff5a.js +0 -1
  655. package/assets/esri/core/workers/chunks/8af92bcc075e03e3e902.js +0 -1742
  656. package/assets/esri/core/workers/chunks/8e511079918e2fd9261f.js +0 -1
  657. package/assets/esri/core/workers/chunks/8e7a33cc1f83063043f2.js +0 -1
  658. package/assets/esri/core/workers/chunks/8fcfd515ee1b18c902e5.js +0 -1
  659. package/assets/esri/core/workers/chunks/9001e9a1e81bce175ddd.js +0 -1
  660. package/assets/esri/core/workers/chunks/9432feca48ca3e5849bd.js +0 -1
  661. package/assets/esri/core/workers/chunks/956a40f40bde416efe93.js +0 -1
  662. package/assets/esri/core/workers/chunks/95b82cbbe355266c65d7.js +0 -1
  663. package/assets/esri/core/workers/chunks/9673a9efec86040b8c13.js +0 -1
  664. package/assets/esri/core/workers/chunks/97dbbedea9fe03bd1306.js +0 -1
  665. package/assets/esri/core/workers/chunks/985b3f18cee87c3fe022.js +0 -1
  666. package/assets/esri/core/workers/chunks/9a7fc93cc693fd12b5d8.js +0 -1
  667. package/assets/esri/core/workers/chunks/9c0fd8baa00ee9733ba4.js +0 -1
  668. package/assets/esri/core/workers/chunks/a010d2e4e34eb7bc1fec.js +0 -1
  669. package/assets/esri/core/workers/chunks/a20526996d01386ec3b7.js +0 -1
  670. package/assets/esri/core/workers/chunks/a23272a7a47a95f6ddea.js +0 -1
  671. package/assets/esri/core/workers/chunks/a7edf7541569fef77cb3.js +0 -1
  672. package/assets/esri/core/workers/chunks/aa5b42e44d2959fdacd3.js +0 -1
  673. package/assets/esri/core/workers/chunks/ae2181805d8ba130babc.js +0 -1
  674. package/assets/esri/core/workers/chunks/b05a41a60e30935644be.js +0 -1
  675. package/assets/esri/core/workers/chunks/b0cfec11c758eed8095f.js +0 -1
  676. package/assets/esri/core/workers/chunks/bff767ec5bb4c0d6b324.js +0 -1
  677. package/assets/esri/core/workers/chunks/c906f984b2b6e7578c06.js +0 -1
  678. package/assets/esri/core/workers/chunks/ca7fb75e2c62e7d37122.js +0 -1
  679. package/assets/esri/core/workers/chunks/cbdebdfa5f2cded29d0d.js +0 -1
  680. package/assets/esri/core/workers/chunks/cbe6c0f32608cb504695.js +0 -1
  681. package/assets/esri/core/workers/chunks/cfae60b9d2f2939e9c16.js +0 -1
  682. package/assets/esri/core/workers/chunks/d270cc9807161033686e.js +0 -1
  683. package/assets/esri/core/workers/chunks/d56780290e0218d3e9de.js +0 -1
  684. package/assets/esri/core/workers/chunks/d6d5a9e73ee43d6066d3.js +0 -1
  685. package/assets/esri/core/workers/chunks/d89fe41c71c9621c41ae.js +0 -1
  686. package/assets/esri/core/workers/chunks/da18d96b35af20e73b3b.js +0 -1
  687. package/assets/esri/core/workers/chunks/de02a6a1f4810f99e9bb.js +0 -1
  688. package/assets/esri/core/workers/chunks/df0481bcc1613ee4b7af.js +0 -1
  689. package/assets/esri/core/workers/chunks/e22d45aeef293a5ffb78.js +0 -1
  690. package/assets/esri/core/workers/chunks/e5943f3a4bbc12c06c4d.js +0 -1
  691. package/assets/esri/core/workers/chunks/e7c60bd85abbd36cdc64.js +0 -1
  692. package/assets/esri/core/workers/chunks/ec9a2425b4a498054a19.js +0 -1
  693. package/assets/esri/core/workers/chunks/edf3be87a997f4f05b96.js +0 -1
  694. package/assets/esri/core/workers/chunks/f05de08e194a3f9b96f2.js +0 -1
  695. package/assets/esri/core/workers/chunks/f0a68d2900d24f56afa0.js +0 -1
  696. package/assets/esri/core/workers/chunks/f0aaa646b17ffdbdcefa.js +0 -1
  697. package/assets/esri/core/workers/chunks/f0c0c02730fe0d948fc1.js +0 -1
  698. package/assets/esri/core/workers/chunks/fd0254c6fc6c03ec11ba.js +0 -1
  699. package/assets/esri/core/workers/chunks/ffb3728e6ac428f62af1.js +0 -1
  700. package/views/3d/environment/EnvironmentManager.js +0 -2
  701. /package/{basemaps → basemapGallery}/support/basemapCompatibilityUtils.js +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{createUniqueColors as e}from"../../core/colorUtils.js";import t from"../../core/Error.js";import{clone as n}from"../../core/lang.js";import{fetchMessageBundle as r}from"../../intl/messages.js";import{isTimeOnlyField as i}from"../../layers/support/fieldUtils.js";import a from"../../renderers/PointCloudUniqueValueRenderer.js";import o from"../../renderers/UniqueValueRenderer.js";import s from"../../renderers/support/AuthoringInfo.js";import c from"../../renderers/support/RendererLegendOptions.js";import{createUniqueValueLabel as l,calculateDateFormatInterval as u,dateFormatIntervalOptions as d}from"../../renderers/support/utils.js";import f from"../../renderers/support/pointCloud/ColorUniqueValueInfo.js";import p from"../heuristics/outline.js";import m from"../heuristics/sizeRange.js";import{spliceVisualVariables as h,findOutlineVVIndex as g,findScaleDependentSizeVVIndex as _,processRegenerateParams as v,getRendererToUpdate as y,getStyleType as b,hasOutlineVV as x,hasScaleDependentSizeVV as S}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as C}from"./support/timeSeriesUtils.js";import{getPointSizeAlgorithm as w,errorCallback as T,getBasemapInfo as E,isValidPointSize as D,verifyBasicFieldValidity as O,getSymbolSizeFromScheme as k,getSymbolOutlineFromScheme as A,createSymbol as j}from"./support/utils.js";import M from"../statistics/uniqueValues.js";import{verifyBinningParams as N}from"../support/binningUtils.js";import{getFieldsList as P,fieldDelimiter as F,isAnyDateField as I}from"../support/utils.js";import{createLayerAdapter as L,getLayerTypeLabels as R,binningCapableLayerTypes as z,featureCapableLayerTypes as B}from"../support/adapters/support/layerUtils.js";import{cloneScheme as V,getSchemes as H}from"../symbology/type.js";async function U(e){let r=C({...e});if(!(r?.layer&&(r.field||r.valueExpression)))throw new t(`type-renderer:missing-parameters`,`'layer' and 'field' or 'valueExpression' parameters are required`);if(r.valueExpression&&!r.view)throw new t(`type-renderer:missing-parameters`,`View is required when 'valueExpression' is specified`);r.forBinning&&N(r,`type-renderer`);let i={...r,layer:r.layer};i.symbolType=i.symbolType||`2d`,i.defaultSymbolEnabled??=!0,i.sortBy??=`count`,i.sortEnabled??=!0,i.statistics=n(i.statistics);let a=i.numTypes==null?10:i.numTypes,o=r.forBinning?z:B,s=L(i.layer,o,r.forBinning);if(!s)throw new t(`type-renderer:invalid-parameters`,`'layer' must be one of these types: `+R(o).join(`, `));let c=i.signal==null?null:{signal:i.signal};await s.load(c);let l=s.geometryType;i.outlineOptimizationEnabled=l===`polygon`&&i.outlineOptimizationEnabled;let u=`featureReduction`in r.layer&&r.layer.featureReduction?.type===`cluster`;if(i.sizeOptimizationEnabled=(l===`point`||l===`multipoint`||l===`polyline`)&&!u&&i.sizeOptimizationEnabled,l===`mesh`)i.symbolType=`3d-volumetric`,i.colorMixMode=i.colorMixMode||`replace`,i.edgesType=i.edgesType||`none`;else if(i.symbolType===`3d-volumetric-uniform`&&l!==`point`)throw new t(`type-renderer:not-supported`,`3d-volumetric-uniform symbols are supported for point layers only`);else if(i.symbolType.includes(`3d-volumetric`)&&i.view?.type!==`3d`)throw new t(`type-renderer:invalid-parameters`,`'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'`);let d=await P({field:i.field,field2:i.field2,field3:i.field3,valueExpression:i.valueExpression}),f=O(s,d,`type-renderer:invalid-parameters`);if(f)throw f;return{...i,layer:s,numTypes:a}}async function W(e){let n=`regenerate-type-renderer`;await v(e,n);let r=await y(e),i=b(r);if(!i||![`type`,`type-size`].includes(i))throw new t(`${n}:invalid-parameters`,`Renderer is invalid`);let{field:a,field2:o,field3:s,valueExpression:c,valueExpressionTitle:l}=r,u=r.uniqueValueInfos.length,{layer:d,forBinning:f,filter:p,view:m,signal:h}=e,g=r.authoringInfo?.dataSeriesName,_=r.authoringInfo?.dataSeriesCalculationName,C=await U({layer:d,field:a,field2:o,field3:s,valueExpression:c,valueExpressionTitle:l,numTypes:u,outlineOptimizationEnabled:x(r),sizeOptimizationEnabled:S(r),dataSeriesName:g,dataSeriesCalculationName:_,forBinning:f,filter:p,view:m,signal:h});return{...e,creatorParameters:C,renderer:r}}async function G(e){if(!(e?.layer&&e.field))throw new t(`type-point-cloud-class-renderer:missing-parameters`,`'layer' and 'field' parameters are required`);let r={...e,layer:e.layer};r.statistics=n(r.statistics);let i=[10],a=L(r.layer,i);if(!a)throw new t(`type-point-cloud-class-renderer:invalid-parameters`,`'layer' must be one of these types: `+R(i).join(`, `));if(r.layer=a,r.density=r.density||25,r.size=r.size||`100%`,!D(r.size))throw new t(`type-point-cloud-class-renderer:invalid-parameters`,`Invalid 'size' parameter. It should be a string of the form '100%'`);let o=r.signal==null?null:{signal:r.signal};await a.load(o);let s=await P({field:r.field}),c=O(a,s,`type-point-cloud-class-renderer:invalid-parameters`);if(c)throw c;return r}async function K(e){let t=e.typeScheme,n=null,r=null,i=await E(e.basemap,e.view);if(n=i.basemapId==null?null:i.basemapId,r=i.basemapTheme==null?null:i.basemapTheme,t)return{scheme:V(t),basemapId:n,basemapTheme:r};let a=H({numColors:e.numColors,basemapTheme:r,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return a&&(t=a.primaryScheme,n=a.basemapId,r=a.basemapTheme),{scheme:t,basemapId:n,basemapTheme:r}}function q(e,t){let n;return n=e.label<t.label?-1:+(e.label>t.label),n}function J(e,t){let n;return n=e.value<t.value?-1:+(e.value>t.value),n}function Y(e,t){let n=t.count-e.count;return n===0&&(n=q(e,t)),n}function X(e,t){let n=t.count-e.count;return n===0&&(n=J(e,t)),n}function Z(e,t,n){let r;t===`count`?(r=X,n&&`codedValues`in n&&n.codedValues&&(r=Y)):t===`value`&&(r=J,n&&`codedValues`in n&&n.codedValues&&(r=q)),r&&e.sort(r)}async function Q(e,t,n,i){let a=await r(`esri/smartMapping/t9n/smartMapping`),{field:u,field2:d,field3:f}=t,p=e.uniqueValueInfos,m=t.layer,h=u?m.getField(u):null,g=h?m.getFieldDomain(h.name):null,_=t.numTypes===-1?p.length:t.numTypes,v=m.geometryType,y=new o({field:u,field2:d,field3:f,fieldDelimiter:u&&d?F:null}),b=[],x=[],S={value:null,domain:g,fieldInfo:h};p.forEach((e,t)=>{S.value=e.value,e.label=l(S);let n=e.value;(n===null||typeof n==`string`&&n.toLowerCase().includes(`<null>`))&&b.unshift(t)});for(let e of b)x.unshift(p.splice(e,1)[0]);t.sortEnabled!==!1&&Z(p,t.sortBy,g),$(S,t,p);let C=n?.opacity,w=await K({numColors:p.length,basemap:t.basemap,geometryType:v,typeScheme:t.typeScheme,worldScale:!!t.symbolType?.includes(`3d-volumetric`),view:t.view}),T=w.scheme,E=T.colors.map(e=>e.clone()),D=k(T,v),O=A(T,v,C);p.forEach((e,n)=>{S.value=e.value,e.label=l(S),e.symbol=j(v,{type:t.symbolType,color:E[n],size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}),t.valueExpression&&(y.valueExpression=t.valueExpression,y.valueExpressionTitle=t.valueExpressionTitle),t.legendOptions&&(y.legendOptions=new c(t.legendOptions));for(let e=0;e<_;e++){let n=p[e];n&&y.addUniqueValueInfo({value:n.value,label:n.label,symbol:j(v,{type:t.symbolType,color:E[e].clone(),size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})})}t.defaultSymbolEnabled&&(y.defaultSymbol=j(v,{type:t.symbolType,color:T.noDataColor,size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}),y.defaultLabel=a.other);for(let e of x)e.symbol=j(v,{type:t.symbolType,color:T.noDataColor,size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}),p.push(e);let M=[],N=y.uniqueValueInfos?.length??0,P=N===p.length?-1:N;if(P>-1)for(let e=P;e<p.length;e++)M.push({...p[e]});return n?.visualVariables?.length&&(y.visualVariables=n.visualVariables.map(e=>e.clone())),i?.minSize&&(y.visualVariables?y.visualVariables.push(i.minSize):y.visualVariables=[i.minSize]),t.dataSeriesName&&(y.authoringInfo=new s({dataSeriesName:t.dataSeriesName,dataSeriesCalculationName:t.dataSeriesCalculationName})),{renderer:y,uniqueValueInfos:p,excludedUniqueValueInfos:M,typeScheme:V(T),basemapId:w.basemapId,basemapTheme:w.basemapTheme}}function $(e,t,n){let{field:r,numTypes:a,layer:o,view:s}=t,c=r?o.getField(r):null;if(c&&(I(c)||i(c))){let t=n.filter((e,t)=>t<a).map(e=>e.value),r=i(c)?null:u(t),l=r?d[r]:void 0;if(e.dateFormatOptions={fieldType:c.type,format:l},s){let t=o.layer;e.dateFormatOptions.timeZoneOptions={layerTimeZone:`preferredTimeZone`in t?t.preferredTimeZone:null,viewTimeZone:s.timeZone,datesInUnknownTimezone:`datesInUnknownTimezone`in t&&t.datesInUnknownTimezone}}}}async function ee(t,n){let r=t.uniqueValueInfos,i=(await K({numColors:r.length,basemap:`gray`,theme:`point-cloud-class`,geometryType:`point`,typeScheme:n}))?.scheme,a=i?.theme===`point-cloud-class`,o=a?i.colors:e(i?.colors??[],r.length);return Z(r,`value`),r.map((e,t)=>{let n=e.value,r=null;return a?(r=o[n],r||=o[o.length-1]):r=o[t],new f({values:[n],color:r,label:e.label})})}async function te(e){let t=await U(e),{layer:n,view:r,signal:i,filter:a}=t,o={layer:n,field:t.field,field2:t.field2,field3:t.field3,valueExpression:t.valueExpression,returnAllCodedValues:t.returnAllCodedValues,view:r,filter:a,signal:i},[s,c,l]=await Promise.all([t.statistics==null?M(o):t.statistics,t.outlineOptimizationEnabled?p({layer:n,view:r,signal:i,filter:a}).catch(T):null,t.sizeOptimizationEnabled?m({layer:n,view:r,signal:i,filter:a}).catch(T):null]);return Q(s,t,c,l)}async function ne(e){let{creatorParameters:t,view:n,signal:r,filter:i,renderer:a}=await W(e),{layer:o,outlineOptimizationEnabled:s,sizeOptimizationEnabled:c,field:l,valueExpression:u,valueExpressionTitle:d}=t,[f,v]=await Promise.all([s?p({layer:o,view:n,signal:r,filter:i}).catch(T):null,c?m({layer:o,view:n,signal:r,filter:i}).catch(T):null]);return h(a,f?.visualVariables,g),h(a,v?.minSize,_),t.dataSeriesName&&(a.field=l,a.valueExpression=u,a.valueExpressionTitle=d),{renderer:a}}async function re(e){let t=await G(e),n=t.statistics==null?await M({layer:t.layer,field:t.field,signal:t.signal}):t.statistics;return{renderer:new a({field:t.field,pointsPerInch:t.density??void 0,pointSizeAlgorithm:w(t.size),colorUniqueValueInfos:await ee(n,t.typeScheme)})}}export{re as createPCClassRenderer,te as createRenderer,K as getTypeSchemeData,ne as regenerateRenderer};
2
+ import{createUniqueColors as e}from"../../core/colorUtils.js";import t from"../../core/Error.js";import{clone as n}from"../../core/lang.js";import{fetchMessageBundle as r}from"../../intl/messages.js";import{isTimeOnlyField as i}from"../../layers/support/fieldUtils.js";import a from"../../renderers/PointCloudUniqueValueRenderer.js";import o from"../../renderers/UniqueValueRenderer.js";import s from"../../renderers/support/AuthoringInfo.js";import c from"../../renderers/support/RendererLegendOptions.js";import{createUniqueValueLabel as l,calculateDateFormatInterval as u,dateFormatIntervalOptions as d}from"../../renderers/support/utils.js";import f from"../../renderers/support/pointCloud/ColorUniqueValueInfo.js";import p from"../heuristics/outline.js";import m from"../heuristics/sizeRange.js";import{spliceVisualVariables as h,findOutlineVVIndex as g,findScaleDependentSizeVVIndex as _,processRegenerateParams as v,getRendererToUpdate as y,getStyleType as b,hasOutlineVV as x,hasScaleDependentSizeVV as S}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as C}from"./support/timeSeriesUtils.js";import{getPointSizeAlgorithm as w,errorCallback as T,getBasemapInfo as E,isValidPointSize as D,verifyBasicFieldValidity as O,getSymbolSizeFromScheme as k,getSymbolOutlineFromScheme as A,createSymbol as j}from"./support/utils.js";import M from"../statistics/uniqueValues.js";import{verifyBinningParams as N}from"../support/binningUtils.js";import{getFieldsList as P,fieldDelimiter as F,isAnyDateField as I}from"../support/utils.js";import{createLayerAdapter as L,getLayerTypeLabels as R,binningCapableLayerTypes as z,featureCapableLayerTypes as B}from"../support/adapters/support/layerUtils.js";import{cloneScheme as V,getSchemes as H}from"../symbology/type.js";async function U(e){let r=C({...e});if(!(r?.layer&&(r.field||r.valueExpression)))throw new t(`type-renderer:missing-parameters`,`'layer' and 'field' or 'valueExpression' parameters are required`);if(r.valueExpression&&!r.view)throw new t(`type-renderer:missing-parameters`,`View is required when 'valueExpression' is specified`);r.forBinning&&N(r,`type-renderer`);let i={...r,layer:r.layer};i.symbolType=i.symbolType||`2d`,i.defaultSymbolEnabled??=!0,i.sortBy??=`count`,i.sortEnabled??=!0,i.statistics=n(i.statistics);let a=i.numTypes==null?10:i.numTypes,o=r.forBinning?z:B,s=L(i.layer,o,r.forBinning);if(!s)throw new t(`type-renderer:invalid-parameters`,`'layer' must be one of these types: `+R(o).join(`, `));let c=i.signal==null?null:{signal:i.signal};await s.load(c);let l=s.geometryType;i.outlineOptimizationEnabled=l===`polygon`&&i.outlineOptimizationEnabled;let u=`featureReduction`in r.layer&&r.layer.featureReduction?.type===`cluster`;if(i.sizeOptimizationEnabled=(l===`point`||l===`multipoint`||l===`polyline`)&&!u&&i.sizeOptimizationEnabled,l===`mesh`)i.symbolType=`3d-volumetric`,i.colorMixMode=i.colorMixMode||`replace`,i.edgesType=i.edgesType||`none`;else if(i.symbolType===`3d-volumetric-uniform`&&l!==`point`)throw new t(`type-renderer:not-supported`,`3d-volumetric-uniform symbols are supported for point layers only`);else if(i.symbolType.includes(`3d-volumetric`)&&i.view?.type!==`3d`)throw new t(`type-renderer:invalid-parameters`,`'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'`);let d=await P({field:i.field,field2:i.field2,field3:i.field3,valueExpression:i.valueExpression}),f=O(s,d,`type-renderer:invalid-parameters`);if(f)throw f;return{...i,layer:s,numTypes:a}}async function W(e){let n=`regenerate-type-renderer`;await v(e,n);let r=await y(e),i=b(r);if(!i||![`type`,`type-size`].includes(i))throw new t(`${n}:invalid-parameters`,`Renderer is invalid`);let{field:a,field2:o,field3:s,valueExpression:c,valueExpressionTitle:l}=r,u=r.uniqueValueInfos.length,{layer:d,forBinning:f,filter:p,view:m,signal:h}=e,g=r.authoringInfo?.dataSeriesName,_=r.authoringInfo?.dataSeriesCalculationName,C=await U({layer:d,field:a,field2:o,field3:s,valueExpression:c,valueExpressionTitle:l,numTypes:u,outlineOptimizationEnabled:x(r),sizeOptimizationEnabled:S(r),dataSeriesName:g,dataSeriesCalculationName:_,forBinning:f,filter:p,view:m,signal:h});return{...e,creatorParameters:C,renderer:r}}async function G(e){if(!(e?.layer&&e.field))throw new t(`type-point-cloud-class-renderer:missing-parameters`,`'layer' and 'field' parameters are required`);let r={...e,layer:e.layer};r.statistics=n(r.statistics);let i=[12],a=L(r.layer,i);if(!a)throw new t(`type-point-cloud-class-renderer:invalid-parameters`,`'layer' must be one of these types: `+R(i).join(`, `));if(r.layer=a,r.density=r.density||25,r.size=r.size||`100%`,!D(r.size))throw new t(`type-point-cloud-class-renderer:invalid-parameters`,`Invalid 'size' parameter. It should be a string of the form '100%'`);let o=r.signal==null?null:{signal:r.signal};await a.load(o);let s=await P({field:r.field}),c=O(a,s,`type-point-cloud-class-renderer:invalid-parameters`);if(c)throw c;return r}async function K(e){let t=e.typeScheme,n=null,r=null,i=await E(e.basemap,e.view);if(n=i.basemapId==null?null:i.basemapId,r=i.basemapTheme==null?null:i.basemapTheme,t)return{scheme:V(t),basemapId:n,basemapTheme:r};let a=H({numColors:e.numColors,basemapTheme:r,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return a&&(t=a.primaryScheme,n=a.basemapId,r=a.basemapTheme),{scheme:t,basemapId:n,basemapTheme:r}}function q(e,t){let n;return n=e.label<t.label?-1:+(e.label>t.label),n}function J(e,t){let n;return n=e.value<t.value?-1:+(e.value>t.value),n}function Y(e,t){let n=t.count-e.count;return n===0&&(n=q(e,t)),n}function X(e,t){let n=t.count-e.count;return n===0&&(n=J(e,t)),n}function Z(e,t,n){let r;t===`count`?(r=X,n&&`codedValues`in n&&n.codedValues&&(r=Y)):t===`value`&&(r=J,n&&`codedValues`in n&&n.codedValues&&(r=q)),r&&e.sort(r)}async function Q(e,t,n,i){let a=await r(`esri/smartMapping/t9n/smartMapping`),{field:u,field2:d,field3:f}=t,p=e.uniqueValueInfos,m=t.layer,h=u?m.getField(u):null,g=h?m.getFieldDomain(h.name):null,_=t.numTypes===-1?p.length:t.numTypes,v=m.geometryType,y=new o({field:u,field2:d,field3:f,fieldDelimiter:u&&d?F:null}),b=[],x=[],S={value:null,domain:g,fieldInfo:h};p.forEach((e,t)=>{S.value=e.value,e.label=l(S);let n=e.value;(n===null||typeof n==`string`&&n.toLowerCase().includes(`<null>`))&&b.unshift(t)});for(let e of b)x.unshift(p.splice(e,1)[0]);t.sortEnabled!==!1&&Z(p,t.sortBy,g),$(S,t,p);let C=n?.opacity,w=await K({numColors:p.length,basemap:t.basemap,geometryType:v,typeScheme:t.typeScheme,worldScale:!!t.symbolType?.includes(`3d-volumetric`),view:t.view}),T=w.scheme,E=T.colors.map(e=>e.clone()),D=k(T,v),O=A(T,v,C);p.forEach((e,n)=>{S.value=e.value,e.label=l(S),e.symbol=j(v,{type:t.symbolType,color:E[n],size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}),t.valueExpression&&(y.valueExpression=t.valueExpression,y.valueExpressionTitle=t.valueExpressionTitle),t.legendOptions&&(y.legendOptions=new c(t.legendOptions));for(let e=0;e<_;e++){let n=p[e];n&&y.addUniqueValueInfo({value:n.value,label:n.label,symbol:j(v,{type:t.symbolType,color:E[e].clone(),size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})})}t.defaultSymbolEnabled&&(y.defaultSymbol=j(v,{type:t.symbolType,color:T.noDataColor,size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}),y.defaultLabel=a.other);for(let e of x)e.symbol=j(v,{type:t.symbolType,color:T.noDataColor,size:D,outline:O,meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}),p.push(e);let M=[],N=y.uniqueValueInfos?.length??0,P=N===p.length?-1:N;if(P>-1)for(let e=P;e<p.length;e++)M.push({...p[e]});return n?.visualVariables?.length&&(y.visualVariables=n.visualVariables.map(e=>e.clone())),i?.minSize&&(y.visualVariables?y.visualVariables.push(i.minSize):y.visualVariables=[i.minSize]),t.dataSeriesName&&(y.authoringInfo=new s({dataSeriesName:t.dataSeriesName,dataSeriesCalculationName:t.dataSeriesCalculationName})),{renderer:y,uniqueValueInfos:p,excludedUniqueValueInfos:M,typeScheme:V(T),basemapId:w.basemapId,basemapTheme:w.basemapTheme}}function $(e,t,n){let{field:r,numTypes:a,layer:o,view:s}=t,c=r?o.getField(r):null;if(c&&(I(c)||i(c))){let t=n.filter((e,t)=>t<a).map(e=>e.value),r=i(c)?null:u(t),l=r?d[r]:void 0;if(e.dateFormatOptions={fieldType:c.type,format:l},s){let t=o.layer;e.dateFormatOptions.timeZoneOptions={layerTimeZone:`preferredTimeZone`in t?t.preferredTimeZone:null,viewTimeZone:s.timeZone,datesInUnknownTimezone:`datesInUnknownTimezone`in t&&t.datesInUnknownTimezone}}}}async function ee(t,n){let r=t.uniqueValueInfos,i=(await K({numColors:r.length,basemap:`gray`,theme:`point-cloud-class`,geometryType:`point`,typeScheme:n}))?.scheme,a=i?.theme===`point-cloud-class`,o=a?i.colors:e(i?.colors??[],r.length);return Z(r,`value`),r.map((e,t)=>{let n=e.value,r=null;return a?(r=o[n],r||=o[o.length-1]):r=o[t],new f({values:[n],color:r,label:e.label})})}async function te(e){let t=await U(e),{layer:n,view:r,signal:i,filter:a}=t,o={layer:n,field:t.field,field2:t.field2,field3:t.field3,valueExpression:t.valueExpression,returnAllCodedValues:t.returnAllCodedValues,view:r,filter:a,signal:i},[s,c,l]=await Promise.all([t.statistics==null?M(o):t.statistics,t.outlineOptimizationEnabled?p({layer:n,view:r,signal:i,filter:a}).catch(T):null,t.sizeOptimizationEnabled?m({layer:n,view:r,signal:i,filter:a}).catch(T):null]);return Q(s,t,c,l)}async function ne(e){let{creatorParameters:t,view:n,signal:r,filter:i,renderer:a}=await W(e),{layer:o,outlineOptimizationEnabled:s,sizeOptimizationEnabled:c,field:l,valueExpression:u,valueExpressionTitle:d}=t,[f,v]=await Promise.all([s?p({layer:o,view:n,signal:r,filter:i}).catch(T):null,c?m({layer:o,view:n,signal:r,filter:i}).catch(T):null]);return h(a,f?.visualVariables,g),h(a,v?.minSize,_),t.dataSeriesName&&(a.field=l,a.valueExpression=u,a.valueExpressionTitle=d),{renderer:a}}async function re(e){let t=await G(e),n=t.statistics==null?await M({layer:t.layer,field:t.field,signal:t.signal}):t.statistics;return{renderer:new a({field:t.field,pointsPerInch:t.density??void 0,pointSizeAlgorithm:w(t.size),colorUniqueValueInfos:await ee(n,t.typeScheme)})}}export{re as createPCClassRenderer,te as createRenderer,K as getTypeSchemeData,ne as regenerateRenderer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../core/Error.js";import{numericTypes as t}from"../../layers/support/fieldUtils.js";import{gaussianBlurRadiusPxToKernelDensityRadiusPt as n}from"../../renderers/support/heatmapUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i}from"./support/utils.js";import{getFieldsList as a}from"../support/utils.js";import{createLayerAdapter as o,getLayerTypeLabels as s}from"../support/adapters/support/layerUtils.js";const c=t;async function l(t){if(!(t?.layer&&t.view))throw new e(`heatmap-statistics:missing-parameters`,`'layer' and 'view' parameters are required`);let l=[2,3,4,6,7,8,9,12,15],{layer:u,...d}=t,f=o(u,l);if(!f)throw new e(`heatmap-statistics:invalid-parameters`,`'layer' must be one of these types: `+s(l).join(`, `));let p={layerAdapter:f,...d};p.radius=p.radius==null?p.blurRadius==null?18:n(p.blurRadius):p.radius;let m=p.signal==null?null:{signal:p.signal};await f.load(m);let h=p.field,g=h?f.getField(h):null,_=await a({field:h}),v=r(f,_,`heatmap-statistics:invalid-parameters`);if(v)throw v;if(g){let e=i(f,g,`heatmap-statistics:invalid-parameters`,c);if(e)throw e}return p}async function u(e){let{layerAdapter:t,...n}=await l(e);return t.heatmapStatistics(n)}export{u as default};
2
+ import e from"../../core/Error.js";import{numericTypes as t}from"../../layers/support/fieldUtils.js";import{gaussianBlurRadiusPxToKernelDensityRadiusPt as n}from"../../renderers/support/heatmapUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i}from"./support/utils.js";import{getFieldsList as a}from"../support/utils.js";import{createLayerAdapter as o,getLayerTypeLabels as s}from"../support/adapters/support/layerUtils.js";const c=t;async function l(t){if(!(t?.layer&&t.view))throw new e(`heatmap-statistics:missing-parameters`,`'layer' and 'view' parameters are required`);let l=[3,5,6,8,9,10,11,14,17],{layer:u,...d}=t,f=o(u,l);if(!f)throw new e(`heatmap-statistics:invalid-parameters`,`'layer' must be one of these types: `+s(l).join(`, `));let p={layerAdapter:f,...d};p.radius=p.radius==null?p.blurRadius==null?18:n(p.blurRadius):p.radius;let m=p.signal==null?null:{signal:p.signal};await f.load(m);let h=p.field,g=h?f.getField(h):null,_=await a({field:h}),v=r(f,_,`heatmap-statistics:invalid-parameters`);if(v)throw v;if(g){let e=i(f,g,`heatmap-statistics:invalid-parameters`,c);if(e)throw e}return p}async function u(e){let{layerAdapter:t,...n}=await l(e);return t.heatmapStatistics(n)}export{u as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...u,`time-only`,...n];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`histogram:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`histogram:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`histogram`);let{layer:g,..._}=u,v=[...d,5],y=u.forBinning?f:v,b=p(g,y,u.forBinning);if(!b)throw new e(`histogram:invalid-parameters`,`'layer' must be one of these types: `+m(y).join(`, `));let x={layerAdapter:b,..._};x.normalizationType=s(x);let S=x.signal==null?null:{signal:x.signal};await b.load(S);let C=await c({field:x.field,normalizationField:x.normalizationField,valueExpression:x.valueExpression,fields:x.fields}),w=r(b,C,`histogram:invalid-parameters`);if(w)throw w;let T=!x.classificationMethod||x.classificationMethod===`equal-interval`;if(x.fields?.length){let t=x.fields;if(t.length<2)throw new e(`histogram:invalid-parameters`,`'fields' must contain at least 2 fields if specified.`);if(x.normalizationType||x.valueExpression||x.field)throw new e(`histogram:invalid-parameters`,`Normalization, 'field', 'valueExpression' are not allowed when 'fields' is specified.`);let r=new Set;for(let e of t){let t=b.getField(e),a=i(b,t,`histogram:invalid-parameters`,n);if(a)throw a;r.add(t.type)}if(r.size>1)throw new e(`histogram:invalid-parameters`,`All fields must be of the same type when 'fields' is specified.`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed when 'fields' is specified`)}else if(x.valueExpression||x.sqlExpression){if(x.normalizationType)throw new e(`histogram:invalid-parameters`,`Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed when 'valueExpression' or 'sqlExpression' is specified`)}else if(x.field){let n=b.getField(x.field),r=i(b,n,`histogram:invalid-parameters`,h);if(r)throw r;if(l(n)||t(n)){if(x.normalizationType)throw new e(`histogram:invalid-parameters`,`Normalization is not allowed for date fields`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed for date fields`)}}x.filter&&!x.filter.spatialRelationship&&(x.filter.spatialRelationship=`intersects`);let E=a(x.filter,`histogram:invalid-parameters`);if(E)throw E;if(x.useQueryAttributeBins??=!0,!x.useQueryAttributeBins&&x.returnAggregateIds)throw new e(`histogram:invalid-parameters`,`'returnAggregateIds' cannot be true when 'useQueryAttributeBins' is false.`);return x}async function _(e){let{layerAdapter:t,...n}=await g(e);return t.histogram(n)}export{_ as default};
2
+ import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...u,`time-only`,...n];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`histogram:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`histogram:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`histogram`);let{layer:g,..._}=u,v=[...d,0,4,7],y=u.forBinning?f:v,b=p(g,y,u.forBinning);if(!b)throw new e(`histogram:invalid-parameters`,`'layer' must be one of these types: `+m(y).join(`, `));let x={layerAdapter:b,..._};x.normalizationType=s(x);let S=x.signal==null?null:{signal:x.signal};await b.load(S);let C=await c({field:x.field,normalizationField:x.normalizationField,valueExpression:x.valueExpression,fields:x.fields}),w=r(b,C,`histogram:invalid-parameters`);if(w)throw w;let T=!x.classificationMethod||x.classificationMethod===`equal-interval`;if(x.fields?.length){let t=x.fields;if(t.length<2)throw new e(`histogram:invalid-parameters`,`'fields' must contain at least 2 fields if specified.`);if(x.normalizationType||x.valueExpression||x.field)throw new e(`histogram:invalid-parameters`,`Normalization, 'field', 'valueExpression' are not allowed when 'fields' is specified.`);let r=new Set;for(let e of t){let t=b.getField(e),a=i(b,t,`histogram:invalid-parameters`,n);if(a)throw a;r.add(t.type)}if(r.size>1)throw new e(`histogram:invalid-parameters`,`All fields must be of the same type when 'fields' is specified.`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed when 'fields' is specified`)}else if(x.valueExpression||x.sqlExpression){if(x.normalizationType)throw new e(`histogram:invalid-parameters`,`Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed when 'valueExpression' or 'sqlExpression' is specified`)}else if(x.field){let n=b.getField(x.field),r=i(b,n,`histogram:invalid-parameters`,h);if(r)throw r;if(l(n)||t(n)){if(x.normalizationType)throw new e(`histogram:invalid-parameters`,`Normalization is not allowed for date fields`);if(!T)throw new e(`histogram:invalid-parameters`,`'classificationMethod' other than 'equal-interval' is not allowed for date fields`)}}x.filter&&!x.filter.spatialRelationship&&(x.filter.spatialRelationship=`intersects`);let E=a(x.filter,`histogram:invalid-parameters`);if(E)throw E;if(x.useQueryAttributeBins??=!0,!x.useQueryAttributeBins&&x.returnAggregateIds)throw new e(`histogram:invalid-parameters`,`'returnAggregateIds' cannot be true when 'useQueryAttributeBins' is false.`);return x}async function _(e){let{layerAdapter:t,...n}=await g(e);return t.histogram(n)}export{_ as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...n,...u,`time-only`,`string`];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`summary-statistics:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`summary-statistics:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`summary-statistics`);let{layer:g,..._}=u,v=[...d,5],y=u.forBinning?f:v,b=p(g,y,u.forBinning);if(!b)throw new e(`summary-statistics:invalid-parameters`,`'layer' must be one of these types: `+m(y).join(`, `));let x={layerAdapter:b,..._};x.normalizationType=s(x);let S=x.signal==null?null:{signal:x.signal};await b.load(S);let C=x.normalizationType,w=await c({field:x.field,normalizationField:x.normalizationField,valueExpression:x.valueExpression,fields:x.fields}),T=r(b,w,`summary-statistics:invalid-parameters`);if(T)throw T;if(x.fields?.length){let t=x.fields;if(t.length<2)throw new e(`summary-statistics:invalid-parameters`,`'fields' must contain at least 2 fields if specified.`);if(C||x.minValue||x.maxValue||x.valueExpression||x.field)throw new e(`summary-statistics:invalid-parameters`,`Normalization, 'field', 'valueExpression', 'minValue' and 'maxValue' are not allowed when 'fields' is specified.`);let r=new Set;for(let e of t){let t=b.getField(e),a=i(b,t,`summary-statistics:invalid-parameters`,n);if(a)throw a;r.add(t.type)}if(r.size>1)throw new e(`summary-statistics:invalid-parameters`,`All fields must be of the same type when 'fields' is specified.`)}else{if((x.valueExpression||x.sqlExpression)&&C)throw new e(`summary-statistics:invalid-parameters`,`Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified`);if(x.field){let n=b.getField(x.field),r=i(b,n,`summary-statistics:invalid-parameters`,h);if(r)throw r;if((l(n)||t(n))&&C)throw new e(`summary-statistics:invalid-parameters`,`Normalization is not allowed for date fields`)}}x.filter&&!x.filter.spatialRelationship&&(x.filter.spatialRelationship=`intersects`);let E=a(x.filter,`summary-statistics:invalid-parameters`);if(E)throw E;return x}async function _(e){let{layerAdapter:t,...n}=await g(e);return t.summaryStatistics(n)}export{_ as default};
2
+ import e from"../../core/Error.js";import{isTimeOnlyField as t,numericTypes as n}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as r,verifyFieldType as i,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as s,getFieldsList as c,isAnyDateField as l,dateTypes as u}from"../support/utils.js";import{defaultSupportedLayerTypes as d,binningCapableLayerTypes as f,createLayerAdapter as p,getLayerTypeLabels as m}from"../support/adapters/support/layerUtils.js";const h=[...n,...u,`time-only`,`string`];async function g(u){if(!(u?.layer&&(u.field||u.fields?.length||u.valueExpression||u.sqlExpression)))throw new e(`summary-statistics:missing-parameters`,`'layer' and 'field', 'fields', 'valueExpression' or 'sqlExpression' parameters are required`);if(u.valueExpression&&!u.sqlExpression&&!u.view)throw new e(`summary-statistics:missing-parameters`,`View is required when 'valueExpression' is specified`);u.forBinning&&o(u,`summary-statistics`);let{layer:g,..._}=u,v=[...d,0,4,7],y=u.forBinning?f:v,b=p(g,y,u.forBinning);if(!b)throw new e(`summary-statistics:invalid-parameters`,`'layer' must be one of these types: `+m(y).join(`, `));let x={layerAdapter:b,..._};x.normalizationType=s(x);let S=x.signal==null?null:{signal:x.signal};await b.load(S);let C=x.normalizationType,w=await c({field:x.field,normalizationField:x.normalizationField,valueExpression:x.valueExpression,fields:x.fields}),T=r(b,w,`summary-statistics:invalid-parameters`);if(T)throw T;if(x.fields?.length){let t=x.fields;if(t.length<2)throw new e(`summary-statistics:invalid-parameters`,`'fields' must contain at least 2 fields if specified.`);if(C||x.minValue||x.maxValue||x.valueExpression||x.field)throw new e(`summary-statistics:invalid-parameters`,`Normalization, 'field', 'valueExpression', 'minValue' and 'maxValue' are not allowed when 'fields' is specified.`);let r=new Set;for(let e of t){let t=b.getField(e),a=i(b,t,`summary-statistics:invalid-parameters`,n);if(a)throw a;r.add(t.type)}if(r.size>1)throw new e(`summary-statistics:invalid-parameters`,`All fields must be of the same type when 'fields' is specified.`)}else{if((x.valueExpression||x.sqlExpression)&&C)throw new e(`summary-statistics:invalid-parameters`,`Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified`);if(x.field){let n=b.getField(x.field),r=i(b,n,`summary-statistics:invalid-parameters`,h);if(r)throw r;if((l(n)||t(n))&&C)throw new e(`summary-statistics:invalid-parameters`,`Normalization is not allowed for date fields`)}}x.filter&&!x.filter.spatialRelationship&&(x.filter.spatialRelationship=`intersects`);let E=a(x.filter,`summary-statistics:invalid-parameters`);if(E)throw E;return x}async function _(e){let{layerAdapter:t,...n}=await g(e);return t.summaryStatistics(n)}export{_ as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../core/Error.js";import{getSumOfAttributesExpr as t,verifyBasicFieldValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{defaultStatisticTypes as i,getFieldsList as a}from"../support/utils.js";import{binningCapableLayerTypes as o,createLayerAdapter as s,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";async function l(t){if(!(t&&t.layer&&t.attributes))throw new e(`summary-statistics-for-attributes:missing-parameters`,`'layer' and 'attributes' parameters are required`);if(t.attributes.some(e=>!!e.valueExpression)&&!t.view)throw new e(`summary-statistics-for-attributes:missing-parameters`,`View is required when 'valueExpression' is specified in attributes`);t.forBinning&&r(t,`summary-statistics-for-attributes`);let{layer:i,...l}=t,u=t.forBinning?o:[2,3,7,4,6,9,15],d=s(i,u,t.forBinning);if(!d)throw new e(`summary-statistics-for-attributes:invalid-parameters`,`'layer' must be one of these types: `+c(u).join(`, `));let f={layerAdapter:d,...l};f.includeZeros=f.includeZeros==null||f.includeZeros,f.includeNegatives=f.includeNegatives==null||f.includeNegatives;let p=f.view,m=f.signal==null?null:{signal:f.signal};await Promise.all([p?.when(),d.load(m)]);let h=[];for(let e of f.attributes){let t=await a({field:e.field,valueExpression:e.valueExpression});Array.prototype.push.apply(h,t)}let g=n(d,h,`summary-statistics-for-attributes:invalid-parameters`);if(g)throw g;return f}async function u(e){let{layerAdapter:n,...r}=await l(e),a=t(r.attributes,r.includeZeros,r.includeNegatives);return n.summaryStatistics({valueExpression:a.valueExpression,sqlExpression:a.sqlExpression,sqlWhere:a.sqlWhere,view:r.view,filter:r.filter,outStatisticTypes:i,signal:r.signal})}export{u as default};
2
+ import e from"../../core/Error.js";import{getSumOfAttributesExpr as t,verifyBasicFieldValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{defaultStatisticTypes as i,getFieldsList as a}from"../support/utils.js";import{binningCapableLayerTypes as o,createLayerAdapter as s,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";async function l(t){if(!(t&&t.layer&&t.attributes))throw new e(`summary-statistics-for-attributes:missing-parameters`,`'layer' and 'attributes' parameters are required`);if(t.attributes.some(e=>!!e.valueExpression)&&!t.view)throw new e(`summary-statistics-for-attributes:missing-parameters`,`View is required when 'valueExpression' is specified in attributes`);t.forBinning&&r(t,`summary-statistics-for-attributes`);let{layer:i,...l}=t,u=t.forBinning?o:[3,5,9,6,8,11,17],d=s(i,u,t.forBinning);if(!d)throw new e(`summary-statistics-for-attributes:invalid-parameters`,`'layer' must be one of these types: `+c(u).join(`, `));let f={layerAdapter:d,...l};f.includeZeros=f.includeZeros==null||f.includeZeros,f.includeNegatives=f.includeNegatives==null||f.includeNegatives;let p=f.view,m=f.signal==null?null:{signal:f.signal};await Promise.all([p?.when(),d.load(m)]);let h=[];for(let e of f.attributes){let t=await a({field:e.field,valueExpression:e.valueExpression});Array.prototype.push.apply(h,t)}let g=n(d,h,`summary-statistics-for-attributes:invalid-parameters`);if(g)throw g;return f}async function u(e){let{layerAdapter:n,...r}=await l(e),a=t(r.attributes,r.includeZeros,r.includeNegatives);return n.summaryStatistics({valueExpression:a.valueExpression,sqlExpression:a.sqlExpression,sqlWhere:a.sqlWhere,view:r.view,filter:r.filter,outStatisticTypes:i,signal:r.signal})}export{u as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../core/Error.js";import{verifyBasicFieldValidity as t,verifyFilterValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{getFieldsList as i}from"../support/utils.js";import{binningCapableLayerTypes as a,createLayerAdapter as o,getLayerTypeLabels as s,defaultSupportedLayerTypes as c}from"../support/adapters/support/layerUtils.js";async function l(l){if(!(l?.layer&&(l.field||l.valueExpression)))throw new e(`unique-values:missing-parameters`,`'layer' and 'field' or 'valueExpression' parameters are required`);let u=l.valueExpression||l.sqlExpression,d=u&&!l.sqlExpression;if(u){if(d){if(!l.view)throw new e(`unique-values:missing-parameters`,`View is required when 'valueExpression' is specified`)}else if(!l.valueExpression)throw new e(`unique-values:missing-parameters`,`'valueExpression' parameters are required`)}l.forBinning&&r(l,`unique-values`);let{layer:f,...p}=l,m=[...c,5],h=l.forBinning?a:m,g=o(f,h,l.forBinning);if(!g)throw new e(`unique-values:invalid-parameters`,`'layer' must be one of these types: `+s(h).join(`, `));let _={layerAdapter:g,...p},v=_.signal==null?null:{signal:_.signal};await g.load(v);let y=await i({field:_.field,field2:_.field2,field3:_.field3,valueExpression:_.valueExpression}),b=t(g,y,`unique-values:invalid-parameters`);if(b)throw b;_.filter&&!_.filter.spatialRelationship&&(_.filter.spatialRelationship=`intersects`);let x=n(_.filter,`summary-statistics:invalid-parameters`);if(x)throw x;return _}async function u(e){let{layerAdapter:t,...n}=await l(e);return t.uniqueValues(n)}export{u as default};
2
+ import e from"../../core/Error.js";import{verifyBasicFieldValidity as t,verifyFilterValidity as n}from"./support/utils.js";import{verifyBinningParams as r}from"../support/binningUtils.js";import{getFieldsList as i}from"../support/utils.js";import{binningCapableLayerTypes as a,createLayerAdapter as o,getLayerTypeLabels as s,defaultSupportedLayerTypes as c}from"../support/adapters/support/layerUtils.js";async function l(l){if(!(l?.layer&&(l.field||l.valueExpression)))throw new e(`unique-values:missing-parameters`,`'layer' and 'field' or 'valueExpression' parameters are required`);let u=l.valueExpression||l.sqlExpression,d=u&&!l.sqlExpression;if(u){if(d){if(!l.view)throw new e(`unique-values:missing-parameters`,`View is required when 'valueExpression' is specified`)}else if(!l.valueExpression)throw new e(`unique-values:missing-parameters`,`'valueExpression' parameters are required`)}l.forBinning&&r(l,`unique-values`);let{layer:f,...p}=l,m=[...c,7],h=l.forBinning?a:m,g=o(f,h,l.forBinning);if(!g)throw new e(`unique-values:invalid-parameters`,`'layer' must be one of these types: `+s(h).join(`, `));let _={layerAdapter:g,...p},v=_.signal==null?null:{signal:_.signal};await g.load(v);let y=await i({field:_.field,field2:_.field2,field3:_.field3,valueExpression:_.valueExpression}),b=t(g,y,`unique-values:invalid-parameters`);if(b)throw b;_.filter&&!_.filter.spatialRelationship&&(_.filter.spatialRelationship=`intersects`);let x=n(_.filter,`summary-statistics:invalid-parameters`);if(x)throw x;return _}async function u(e){let{layerAdapter:t,...n}=await l(e);return t.uniqueValues(n)}export{u as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../CSVLayerAdapter.js";import t from"../FeatureLayerAdapter.js";import n from"../FeatureLayerBinningAdapter.js";import r from"../InMemoryLayerAdapter.js";import i from"../LayerAdapter.js";import a from"../PointCloudLayerAdapter.js";import o from"../SceneLayerAdapter.js";import s from"../StreamLayerAdapter.js";const c={0:{adapter:t,type:`catalog`,label:`CatalogLayer`},1:{adapter:t,type:`catalog-footprint`,label:`CatalogFootprintLayer`},2:{adapter:e,type:`csv`,label:`CSVLayer`},3:{adapter:t,type:`feature`,label:`FeatureLayer`},5:{adapter:t,type:`imagery`,label:`ImageryLayer`},4:{adapter:t,type:`geojson`,label:`GeoJSONLayer`},6:{adapter:t,type:`knowledge-graph-sublayer`,label:`KnowledgeGraphSublayer`},7:{adapter:r,type:`ogc-feature`,label:`OGCFeatureLayer`},8:{adapter:t,type:`oriented-imagery`,label:`OrientedImageryLayer`},9:{adapter:t,type:`parquet`,label:`ParquetLayer`},10:{adapter:a,type:`point-cloud`,label:`PointCloudLayer`},11:{adapter:o,type:`scene`,label:`SceneLayer`},12:{adapter:s,type:`stream`,label:`StreamLayer`},13:{adapter:t,type:`subtype-group`,label:`SubtypeGroupLayer`},14:{adapter:t,type:`subtype-sublayer`,label:`SubtypeSublayer`},15:{adapter:t,type:`wfs`,label:`WFSLayer`}},l=[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15],u=[1,2,3,4,6,7,8,9,11,12,13,14,15],d=[2,3,4,7,6,8,9,12,15];function f(e){return e.map(e=>c[e].label)}function p(e){return e.map(e=>c[e].type)}function m(e,t=l,r){if(e instanceof i)return e;let a=h(e,t);return a?r?new n({layer:e}):new a({layer:e}):null}function h(e,t=l){let n=null;return t.some(t=>{let r=e.type===c[t].type;return r&&(n=c[t].adapter),r}),n}export{d as binningCapableLayerTypes,m as createLayerAdapter,l as defaultSupportedLayerTypes,u as featureCapableLayerTypes,f as getLayerTypeLabels,p as getLayerTypes};
2
+ import e from"../CSVLayerAdapter.js";import t from"../FeatureLayerAdapter.js";import n from"../FeatureLayerBinningAdapter.js";import r from"../InMemoryLayerAdapter.js";import i from"../LayerAdapter.js";import a from"../PointCloudLayerAdapter.js";import o from"../SceneLayerAdapter.js";import s from"../StreamLayerAdapter.js";const c={0:{adapter:t,type:`annotation-feature`,label:`AnnotationFeatureLayer`},1:{adapter:t,type:`catalog`,label:`CatalogLayer`},2:{adapter:t,type:`catalog-footprint`,label:`CatalogFootprintLayer`},3:{adapter:e,type:`csv`,label:`CSVLayer`},4:{adapter:t,type:`dimension-feature`,label:`DimensionFeatureLayer`},5:{adapter:t,type:`feature`,label:`FeatureLayer`},7:{adapter:t,type:`imagery`,label:`ImageryLayer`},6:{adapter:t,type:`geojson`,label:`GeoJSONLayer`},8:{adapter:t,type:`knowledge-graph-sublayer`,label:`KnowledgeGraphSublayer`},9:{adapter:r,type:`ogc-feature`,label:`OGCFeatureLayer`},10:{adapter:t,type:`oriented-imagery`,label:`OrientedImageryLayer`},11:{adapter:t,type:`parquet`,label:`ParquetLayer`},12:{adapter:a,type:`point-cloud`,label:`PointCloudLayer`},13:{adapter:o,type:`scene`,label:`SceneLayer`},14:{adapter:s,type:`stream`,label:`StreamLayer`},15:{adapter:t,type:`subtype-group`,label:`SubtypeGroupLayer`},16:{adapter:t,type:`subtype-sublayer`,label:`SubtypeSublayer`},17:{adapter:t,type:`wfs`,label:`WFSLayer`}},l=[1,2,3,5,6,8,9,10,11,12,13,14,15,16,17],u=[2,3,5,6,8,9,10,11,13,14,15,16,17],d=[3,5,6,9,8,10,11,14,17];function f(e){return e.map(e=>c[e].label)}function p(e){return e.map(e=>c[e].type)}function m(e,t=l,r){if(e instanceof i)return e;let a=h(e,t);return a?r?new n({layer:e}):new a({layer:e}):null}function h(e,t=l){let n=null;return t.some(t=>{let r=e.type===c[t].type;return r&&(n=c[t].adapter),r}),n}export{d as binningCapableLayerTypes,m as createLayerAdapter,l as defaultSupportedLayerTypes,u as featureCapableLayerTypes,f as getLayerTypeLabels,p as getLayerTypes};
@@ -1,5 +1,7 @@
1
+ import type AnnotationFeatureLayer from "../layers/AnnotationFeatureLayer.js";
1
2
  import type CatalogLayer from "../layers/CatalogLayer.js";
2
3
  import type CSVLayer from "../layers/CSVLayer.js";
4
+ import type DimensionFeatureLayer from "../layers/DimensionFeatureLayer.js";
3
5
  import type FeatureLayer from "../layers/FeatureLayer.js";
4
6
  import type GeoJSONLayer from "../layers/GeoJSONLayer.js";
5
7
  import type ImageryLayer from "../layers/ImageryLayer.js";
@@ -16,7 +18,7 @@ import type KnowledgeGraphSublayer from "../layers/knowledgeGraph/KnowledgeGraph
16
18
  import type SubtypeSublayer from "../layers/support/SubtypeSublayer.js";
17
19
 
18
20
  /** @since 5.0 */
19
- export type SupportedLayer = CatalogLayer | CatalogFootprintLayer | CSVLayer | FeatureLayer | GeoJSONLayer | ImageryLayer | KnowledgeGraphSublayer | OGCFeatureLayer | OrientedImageryLayer | ParquetLayer | PointCloudLayer | SceneLayer | StreamLayer | SubtypeGroupLayer | SubtypeSublayer | WFSLayer;
21
+ export type SupportedLayer = AnnotationFeatureLayer | CatalogLayer | CatalogFootprintLayer | CSVLayer | DimensionFeatureLayer | FeatureLayer | GeoJSONLayer | ImageryLayer | KnowledgeGraphSublayer | OGCFeatureLayer | OrientedImageryLayer | ParquetLayer | PointCloudLayer | SceneLayer | StreamLayer | SubtypeGroupLayer | SubtypeSublayer | WFSLayer;
20
22
 
21
23
  /** @since 5.0 */
22
24
  export type BinningSupportedLayer = FeatureLayer | OGCFeatureLayer | OrientedImageryLayer | GeoJSONLayer | CSVLayer | ParquetLayer | WFSLayer | StreamLayer | KnowledgeGraphSublayer;
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{px2pt as t}from"../core/screenUtils.js";import{property as n,subclass as r}from"../core/accessorSupport/decorators.js";import i from"./LineStyleMarker3D.js";import a from"./Symbol3DLayer.js";import o from"./patterns/LineStylePattern3D.js";import{symbol3dLinePatternProperty as s}from"./patterns/utils.js";import{white as c}from"./support/colors.js";import{screenSizeProperty as l}from"./support/materialUtils.js";import u from"./support/Symbol3DMaterial.js";import{lineJoins as d,lineCaps as f}from"./support/symbolLayerUtils3D.js";import{enumeration as p}from"../core/accessorSupport/decorators/enumeration.js";var m;let h=class extends a{static{m=this}constructor(e){super(e),this.material=null,this.type=`line`,this.join=`miter`,this.cap=`butt`,this.pattern=null,this.imagePattern=null,this.marker=null}get size(){return this._get(`size`)??t(1)}set size(e){this._set(`size`,e)}clone(){let e={enabled:this.enabled,material:this.material==null?null:this.material.clone(),size:this.size,join:this.join,cap:this.cap,pattern:this.pattern==null?null:this.pattern.clone(),imagePattern:this.imagePattern==null?null:this.imagePattern.clone(),marker:this.marker==null?null:this.marker.clone()};return new m(e)}static fromSimpleLineSymbol(e){let n={enabled:!0,size:e.width??t(1),cap:e.cap||`butt`,join:e.join||`miter`,pattern:e.style?new o({style:e.style}):null,imagePattern:null,material:new u({color:(e.color||c).clone()}),marker:e.marker?new i({placement:e.marker.placement,style:e.marker.style,color:e.marker.color?.clone()??null}):null};return new m(n)}};e([n({type:u,json:{write:!0}})],h.prototype,`material`,void 0),e([p({Line:`line`},{readOnly:!0})],h.prototype,`type`,void 0),e([n({type:d,json:{write:!0,default:`miter`}})],h.prototype,`join`,void 0),e([n({type:f,json:{write:!0,default:`butt`}})],h.prototype,`cap`,void 0),e([n({...l,json:{write:{isRequired:!0}}})],h.prototype,`size`,null),e([n(s)],h.prototype,`pattern`,void 0),e([n()],h.prototype,`imagePattern`,void 0),e([n({types:{key:`type`,base:i,typeMap:{style:i}},json:{write:!0}})],h.prototype,`marker`,void 0),h=m=e([r(`esri.symbols.LineSymbol3DLayer`)],h);export{h as default};
2
+ import{__decorate as e}from"tslib";import{onePixelInPoints as t}from"../core/screenUtils.js";import{property as n,subclass as r}from"../core/accessorSupport/decorators.js";import i from"./LineStyleMarker3D.js";import a from"./Symbol3DLayer.js";import o from"./patterns/LineStylePattern3D.js";import{symbol3dLinePatternProperty as s}from"./patterns/utils.js";import{white as c}from"./support/colors.js";import{screenSizeProperty as l}from"./support/materialUtils.js";import u from"./support/Symbol3DMaterial.js";import{lineJoins as d,lineCaps as f}from"./support/symbolLayerUtils3D.js";import{enumeration as p}from"../core/accessorSupport/decorators/enumeration.js";var m;let h=class extends a{static{m=this}constructor(e){super(e),this.material=null,this.type=`line`,this.join=`miter`,this.cap=`butt`,this.pattern=null,this.imagePattern=null,this.marker=null}get size(){return this._get(`size`)??t}set size(e){this._set(`size`,e)}clone(){let e={enabled:this.enabled,material:this.material==null?null:this.material.clone(),size:this.size,join:this.join,cap:this.cap,pattern:this.pattern==null?null:this.pattern.clone(),imagePattern:this.imagePattern==null?null:this.imagePattern.clone(),marker:this.marker==null?null:this.marker.clone()};return new m(e)}static fromSimpleLineSymbol(e){let n={enabled:!0,size:e.width??t,cap:e.cap||`butt`,join:e.join||`miter`,pattern:e.style?new o({style:e.style}):null,imagePattern:null,material:new u({color:(e.color||c).clone()}),marker:e.marker?new i({placement:e.marker.placement,style:e.marker.style,color:e.marker.color?.clone()??null}):null};return new m(n)}};e([n({type:u,json:{write:!0}})],h.prototype,`material`,void 0),e([p({Line:`line`},{readOnly:!0})],h.prototype,`type`,void 0),e([n({type:d,json:{write:!0,default:`miter`}})],h.prototype,`join`,void 0),e([n({type:f,json:{write:!0,default:`butt`}})],h.prototype,`cap`,void 0),e([n({...l,json:{write:{isRequired:!0}}})],h.prototype,`size`,null),e([n(s)],h.prototype,`pattern`,void 0),e([n()],h.prototype,`imagePattern`,void 0),e([n({types:{key:`type`,base:i,typeMap:{style:i}},json:{write:!0}})],h.prototype,`marker`,void 0),h=m=e([r(`esri.symbols.LineSymbol3DLayer`)],h);export{h as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Color.js";import{clone as n}from"../../core/lang.js";import{px2pt as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import o from"./Callout3D.js";import s from"./LineCallout3DBorder.js";import{colorAndTransparencyProperty as c,screenSizeProperty as l}from"../support/materialUtils.js";import{enumeration as u}from"../../core/accessorSupport/decorators/enumeration.js";var d;let f=d=class extends o{constructor(e){super(e),this.type=`line`,this.color=new t([0,0,0,1]),this.border=null}get size(){return this._get(`size`)??r(1)}set size(e){this._set(`size`,e)}get visible(){return this.size>0&&this.color!=null&&this.color.a>0}clone(){return new d({color:n(this.color),size:this.size,border:n(this.border)})}};e([u({line:`line`})],f.prototype,`type`,void 0),e([i(c({colorRequiredOnWrite:!0}))],f.prototype,`color`,void 0),e([i({...l,json:{write:{isRequired:!0}}})],f.prototype,`size`,null),e([i({type:s,json:{write:!0}})],f.prototype,`border`,void 0),e([i({readOnly:!0})],f.prototype,`visible`,null),f=d=e([a(`esri.symbols.callouts.LineCallout3D`)],f);export{f as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Color.js";import{clone as n}from"../../core/lang.js";import{onePixelInPoints as r}from"../../core/screenUtils.js";import{property as i,subclass as a}from"../../core/accessorSupport/decorators.js";import o from"./Callout3D.js";import s from"./LineCallout3DBorder.js";import{colorAndTransparencyProperty as c,screenSizeProperty as l}from"../support/materialUtils.js";import{enumeration as u}from"../../core/accessorSupport/decorators/enumeration.js";var d;let f=d=class extends o{constructor(e){super(e),this.type=`line`,this.color=new t([0,0,0,1]),this.border=null}get size(){return this._get(`size`)??r}set size(e){this._set(`size`,e)}get visible(){return this.size>0&&this.color!=null&&this.color.a>0}clone(){return new d({color:n(this.color),size:this.size,border:n(this.border)})}};e([u({line:`line`})],f.prototype,`type`,void 0),e([i(c({colorRequiredOnWrite:!0}))],f.prototype,`color`,void 0),e([i({...l,json:{write:{isRequired:!0}}})],f.prototype,`size`,null),e([i({type:s,json:{write:!0}})],f.prototype,`border`,void 0),e([i({readOnly:!0})],f.prototype,`visible`,null),f=d=e([a(`esri.symbols.callouts.LineCallout3D`)],f);export{f as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{defaultFontFamily as e}from"../../core/fontUtils.js";import has from"../../core/has.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import{deg2rad as r}from"../../core/mathUtils.js";import i from"../../core/ObjectPool.js";import{px2pt as a,pt2px as o}from"../../core/screenUtils.js";import{GeometryCursor as s}from"../../geometry/GeometryCursor.js";import{empty as c,expandPointInPlace as l,center as u,width as d,height as f,diagonal as p,fromValues as m,create as h}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 v,pointInPolygon as y,nearLine as b}from"../../geometry/support/intersectsBase.js";import{isPolygon as x,isPolyline as S,isExtent as C,isMultipoint as w,isPoint as T}from"../../geometry/support/jsonTypeUtils.js";import{SimpleEffectCursor as E}from"./CIMEffects.js";import ee from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as te,getPlacementOperator as ne}from"./CIMOperators.js";import{Placement as re}from"./CIMPlacements.js";import{defaultCIMValues as D}from"./defaultCIMValues.js";import{fromCIMFontStyle as ie}from"./fromCIMFontStyle.js";import{getFirstFrame as O}from"./imageUtils.js";import{rotate as k}from"./mathUtils.js";import{addColorStops as A}from"./rasterizingUtils.js";import ae from"./Rect.js";import{parseRichTextRuns as j,hasRichTextFormattingTags as M}from"./richTextUtils.js";import N from"./TextRasterizer.js";import{getNumericValue as P,isSVGImage as F,getRelativeGradientSize as I,getEffectsInflateSize as oe,fromCIMFontDecoration as se,fromCIMHorizontalAlignment as ce,fromCIMVerticalAlignment as le,getFillColor as L,getStrokeColor as R,getStrokeWidth as z,getFontWeight as B,getFontStyle as V,isCIMFill as H,getSize as U}from"./utils.js";import{destroyHiddenSvg as ue,createHiddenSvg as de,createSvgElement as fe}from"../../views/2d/engine/svgUtils.js";import{magicLabelLineHeight as pe,glyphSize as me,hittestToleranceSmallSymbol as he,hittestSmallSymbolThreshold as ge}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as _e}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as ve,getLineWidth as ye}from"../../views/2d/layers/graphics/graphicsUtils.js";const W=Math.PI/180,G=.5,K=()=>n.getLogger(`esri.symbols.cim.CIMSymbolDrawHelper`);class q{constructor(e){this._t=e}static createIdentity(){return new q([1,0,0,0,1,0])}clone(){let e=this._t;return new q(e.slice())}transform(e){let t=this._t;return[t[0]*e[0]+t[1]*e[1]+t[2],t[3]*e[0]+t[4]*e[1]+t[5]]}static createScale(e,t){return new q([e,0,0,0,t,0])}scale(e,t){let n=this._t;return n[0]*=e,n[1]*=e,n[2]*=e,n[3]*=t,n[4]*=t,n[5]*=t,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(e,t){return new q([0,0,e,0,0,t])}translate(e,t){let n=this._t;return n[2]+=e,n[5]+=t,this}static createRotate(e){let t=Math.cos(e),n=Math.sin(e);return new q([t,-n,0,n,t,0])}rotate(e){return q.multiply(this,q.createRotate(e),this)}angle(){let e=this._t[0],t=this._t[3],n=Math.sqrt(e*e+t*t);return[e/n,t/n]}static multiply(e,t,n){let r=e._t,i=t._t,a=r[0]*i[0]+r[3]*i[1],o=r[1]*i[0]+r[4]*i[1],s=r[2]*i[0]+r[5]*i[1]+i[2],c=r[0]*i[3]+r[3]*i[4],l=r[1]*i[3]+r[4]*i[4],u=r[2]*i[3]+r[5]*i[4]+i[5],d=n._t;return d[0]=a,d[1]=o,d[2]=s,d[3]=c,d[4]=l,d[5]=u,n}invert(){let e=this._t,t=e[0]*e[4]-e[1]*e[3];if(t===0)return new q([0,0,0,0,0,0]);t=1/t;let n=(e[1]*e[5]-e[2]*e[4])*t,r=(e[2]*e[3]-e[0]*e[5])*t,i=e[4]*t,a=-e[1]*t,o=-e[3]*t,s=e[0]*t;return new q([i,a,n,o,s,r])}}class J{constructor(e,t){this._resourceManager=e,this._transfos=[],this._sizeTransfos=[],this._textScaling=[],this._geomUnitsPerPoint=1,this._placementPool=new i(()=>new re,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(t||q.createIdentity()),this._sizeTransfos.push(t?t.scaleRatio():1),this._textScaling.push(1)}setTransform(e,t){this._transfos=[e||q.createIdentity()],this._sizeTransfos=[t||(e?e.scaleRatio():1)],this._textScaling=[1]}setGeomUnitsPerPoint(e){this._geomUnitsPerPoint=e}transformPt(e){return this._transfos[this._transfos.length-1].transform(e)}transformSize(e){return e*this._sizeTransfos[this._sizeTransfos.length-1]}scaleText(e){return e*this._textScaling[this._textScaling.length-1]}reverseTransformPt(e){return this._transfos[this._transfos.length-1].invert().transform(e)}reverseTransformSize(e){return e/this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformScalar(e){return e/this._transfos[this._transfos.length-1].scaleRatio()}reverseScaleText(e){return e/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(e,t=!1,n=1){let r=t?e.scaleRatio():1;q.multiply(e,this.back(),e),this._transfos.push(e),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*r),this._textScaling.push(this._textScaling[this._textScaling.length-1]*n)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1),this._textScaling.splice(-1,1)}drawSymbol(e,t,n){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this.drawMultiLayerSymbol(e,t);break;case`CIMTextSymbol`:this.drawTextSymbol(e,t,n)}}drawMultiLayerSymbol(e,t){if(!e||!t)return;let n=e.symbolLayers;if(!n)return;let r=e.effects;if(r&&r.length>0){let e=this.executeEffects(r,t);if(e){let t=e.next();for(;t;)this.drawSymbolLayers(n,t.asJSON()),t=e.next()}}else this.drawSymbolLayers(n,t)}executeEffects(e,t){let n=this.geomUnitsPerPoint(),r=oe(e),i=new E(s.fromJSONCIM(t));for(let a of e){let e=te(a);e&&(i=e.execute(i,a,{geomUnitsPerPoint:n,tileKey:null,maxInflateSize:r,scale:null,spatialReference:t.spatialReference,preventClipping:!1}))}return i}drawSymbolLayers(e,t){let n=e.length;for(;n--;){let r=e[n];if(!r||r.enable===!1)continue;let i=r.effects;if(i&&i.length>0){let e=this.executeEffects(i,t);if(e){let t=null;for(;(t=e.next())&&(this.drawSymbolLayer(r,t.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(r,t);if(this._earlyReturn)return}}drawSymbolLayer(e,t){switch(e.type){case`CIMSolidFill`:this.drawSolidFill(t,e.color,e.path);break;case`CIMHatchFill`:this.drawHatchFill(t,e);break;case`CIMPictureFill`:this.drawPictureFill(t,e);break;case`CIMGradientFill`:this.drawGradientFill(t,e);break;case`CIMSolidStroke`:this.drawSolidStroke(t,e.color,e.width,e.capStyle,e.joinStyle,e.miterLimit,e.path);break;case`CIMPictureStroke`:this.drawPictureStroke(t,e);break;case`CIMGradientStroke`:this.drawGradientStroke(t,e);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:this.drawMarkerLayer(e,t)}}drawHatchFill(e,t){let n=Se(t,e,this.geomUnitsPerPoint());n&&(this.pushClipPath(e),this.drawMultiLayerSymbol(t.lineSymbol,n),this.popClipPath())}drawPictureFill(e,t){}drawGradientFill(e,t){}drawPictureStroke(e,t){}drawGradientStroke(e,t){}drawMarkerLayer(e,t){let n=e.markerPlacement;if(n){let r=ne(n);if(r){let i=n.type===`CIMMarkerPlacementInsidePolygon`||n.type===`CIMMarkerPlacementPolygonCenter`&&n.clipAtBoundary;i&&this.pushClipPath(t);let a=r.execute(s.fromJSONCIM(t),n,this.geomUnitsPerPoint(),null);if(a){let t=null;for(;(t=a.next())&&(this.drawMarker(e,t),!this._earlyReturn););}i&&this.popClipPath()}}else{let n=this._placementPool.acquire();if(T(t))n.tx=t.x,n.ty=t.y,this.drawMarker(e,n);else if(x(t)){let r=_(t);r&&([n.tx,n.ty]=r,this.drawMarker(e,n))}else if(S(t)){for(let r of t.paths)for(let t of r)if(n.tx=t[0],n.ty=t[1],this.drawMarker(e,n),this._earlyReturn)break}else for(let r of t.points)if(n.tx=r[0],n.ty=r[1],this.drawMarker(e,n),this._earlyReturn)break;this._placementPool.release(n)}}drawMarker(e,t){switch(e.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:this.drawPictureMarker(e,t);break;case`CIMVectorMarker`:this.drawVectorMarker(e,t)}}drawPictureMarker(e,t){if(!e)return;let n=this._resourceManager.getResource(e.url),r=P(e.size,D.CIMPictureMarker.size);if(n==null||r<=0)return;let i=n.width,a=n.height;if(!i||!a)return;let o=i/a,s=P(e.scaleX,1),c=q.createIdentity(),l=e.anchorPoint;if(l){let t=l.x,n=l.y;e.anchorPointUnits!==`Absolute`&&(t*=r*o*s,n*=r),c.translate(-t,-n)}let u=P(e.rotation);e.rotateClockwise&&(u=-u),this._mapRotation&&(u+=this._mapRotation),u&&c.rotate(u*W);let d=P(e.offsetX),f=P(e.offsetY);if(d||f){if(this._mapRotation){let e=W*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=d*t-f*n,i=d*n+f*t;d=r,f=i}c.translate(d,f)}let p=this.geomUnitsPerPoint();p!==1&&c.scale(p,p);let m=t.getAngle();m&&c.rotate(m),c.translate(t.tx,t.ty),this.push(c),this.drawImage(e,r),this.pop()}drawVectorMarker(e,t){if(!e)return;let n=e.markerGraphics;if(!n)return;let r=P(e.size,D.CIMVectorMarker.size),i=e.frame,a=i?i.ymax-i.ymin:0,o=r&&a?r/a:1,s=q.createIdentity();i&&s.translate(-(i.xmax+i.xmin)*.5,-(i.ymax+i.ymin)*.5);let c=e.anchorPoint;if(c){let t=c.x,n=c.y;e.anchorPointUnits===`Absolute`?(t/=o,n/=o):i&&(t*=i.xmax-i.xmin,n*=i.ymax-i.ymin),s.translate(-t,-n)}o!==1&&s.scale(o,o);let l=P(e.rotation);e.rotateClockwise&&(l=-l),this._mapRotation&&(l+=this._mapRotation),l&&s.rotate(l*W);let u=P(e.offsetX),d=P(e.offsetY);if(u||d){if(this._mapRotation){let e=W*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=u*t-d*n,i=u*n+d*t;u=r,d=i}s.translate(u,d)}let f=this.geomUnitsPerPoint();f!==1&&s.scale(f,f);let p=t.getAngle();p&&s.rotate(p),s.translate(t.tx,t.ty);let m=e.scaleSymbolsProportionally?1:o;this.push(s,e.scaleSymbolsProportionally,m);for(let e of n){(!e?.symbol||!e.geometry)&&K().error(`Invalid marker graphic`,e);let t=e.textString;if(typeof t==`number`&&(t=t.toString()),this.drawSymbol(e.symbol,e.geometry,t),this._earlyReturn)break}this.pop()}drawTextSymbol(e,t,n){if(!e||!T(t)||P(e.height,D.CIMTextSymbol.height)<=0)return;let r=q.createIdentity(),i=P(e.angle);i=-i,i&&r.rotate(i*W);let a=P(e.offsetX),o=P(e.offsetY);(a||o)&&r.translate(a,o);let s=this.geomUnitsPerPoint();s!==1&&r.scale(s,s),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}}class be extends J{constructor(e,t){super(e,t),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new ae(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return m(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(e){if(!(!e||this._clipCount>0)){if(x(e))this._processPath(e.rings,0);else if(S(e))this._processPath(e.paths,0);else if(C(e)){let t=X(e);t&&this._processPath(t.rings,0)}else console.error(`drawSolidFill Unexpected geometry type!`)}}drawSolidStroke(e,t,n){if(!e||this._clipCount>0||n==null||n<=0)return;let r=Math.max(this.transformSize(P(n,D.CIMSolidStroke.width))*.5,.5*G);if(x(e))this._processPath(e.rings,r);else if(S(e))this._processPath(e.paths,r);else if(C(e)){let t=X(e);t&&this._processPath(t.rings,r)}else console.error(`drawSolidStroke unexpected geometry type!`)}drawMarkerLayer(e,t){x(t)&&e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._processPath(t.rings,0):super.drawMarkerLayer(e,t)}drawHatchFill(e,t){this.drawSolidFill(e)}drawPictureFill(e,t){this.drawSolidFill(e)}drawGradientFill(e,t){this.drawSolidFill(e)}drawPictureStroke(e,t){this.drawSolidStroke(e,null,t.width)}drawGradientStroke(e,t){this.drawSolidStroke(e,null,t.width)}pushClipPath(e){this.drawSolidFill(e),this._clipCount++}popClipPath(){this._clipCount--}drawImage(e,t){let{url:n}=e,r=P(e.scaleX,1),i=r*t,a=t,o=this._resourceManager.getResource(n);if(o!=null){let e=o.height/o.width;i=r*(t?e>1?t:t/e:o.width),a=t?e>1?t*e:t:o.height}this._merge(this.transformPt([-i/2,-a/2]),0),this._merge(this.transformPt([-i/2,a/2]),0),this._merge(this.transformPt([i/2,-a/2]),0),this._merge(this.transformPt([i/2,a/2]),0)}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new N;let n=Q(e),r=j({textString:t,font:n.font,symbol:e,supportsRichText:M(t)}),[i,o]=r?this._textRasterizer.computeRichTextSize(r,n):this._textRasterizer.computeTextSize(t,n);i=a(i),o=a(o);let s=this.transformSize(1)*this.reverseTransformScalar(1);i*=s,o*=s;let c=e.horizontalAlignment??D.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??D.CIMTextSymbol.verticalalignment,u=0;switch(c){case`Left`:u=i/2;break;case`Right`:u=-i/2}let d=0;switch(l){case`Bottom`:d=o/2;break;case`Top`:d=-o/2;break;case`Baseline`:d=o/6}this._merge(this.transformPt([-i/2+u,-o/2+d]),0),this._merge(this.transformPt([-i/2+u,o/2+d]),0),this._merge(this.transformPt([i/2+u,-o/2+d]),0),this._merge(this.transformPt([i/2+u,o/2+d]),0)}_processPath(e,t){if(e)for(let n of e){let e=n?n.length:0;if(e>1){this._merge(this.transformPt(n[0]),t);for(let r=1;r<e;r++)this._merge(this.transformPt(n[r]),t)}}}_merge(e,t){e[0]-t<this._xmin&&(this._xmin=e[0]-t),e[0]+t>this._xmax&&(this._xmax=e[0]+t),e[1]-t<this._ymin&&(this._ymin=e[1]-t),e[1]+t>this._ymax&&(this._ymax=e[1]+t)}}class Y extends J{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=ue(this._svg),this._path=null,this._canvas=null}hitTest(e,t,n,r){let{textInfo:i,mapRotation:s,resolution:c,searchDist:l,hittestType:u,isScreenAligned:d}=r;this._resetHittest();let f=c*o(1);switch(this.setGeomUnitsPerPoint(f),u){case`point`:if(e.length!==1)return K().error(`Unexpected hittest area`,e),!1;this._hittestType=`point`,this._searchDistPoint=l/2/f,this._searchTarget=[[e[0].x,e[0].y]];break;case`rect`:if(e.length!==4)return K().error(`Unexpected hittest area`,e),!1;this._hittestType=`rect`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y]);break;case`polygon`:this._hittestType=`polygon`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y])}if(this._textInfo=i,this._mapRotation=d?s:0,!has(`esri-mobile`)){let e=a(he*window.devicePixelRatio),n=a(ge);(t?.type!==`CIMLineSymbol`&&t?.type!==`CIMPolygonSymbol`||!t.symbolLayers?.some(H))&&t?.type!==`CIMMeshSymbol`&&(U(t)??0)<n&&(this._searchDistPoint=e)}return this._earlyReturn=!1,this.drawSymbol(t,n),this._earlyReturn}executeEffects(e,t){return e.at(-1)?.type===`CIMGeometricEffectDashes`&&(e=e.slice(0,-1)),super.executeEffects(e,t)}drawSolidFill(e,t,n){n==null?this._hitTestFill(e):this._hittestSvgPath(e,n,!0)}drawHatchFill(e,t){this._hitTestFill(e)}drawPictureFill(e,t){this._hitTestFill(e)}drawGradientFill(e,t){this._hitTestFill(e)}drawSolidStroke(e,t,n,r,i,a,o){o==null?this._hitTestStroke(e,n):this._hittestSvgPath(e,o,!1,n)}drawPictureStroke(e,t){this._hitTestStroke(e,t.width)}drawGradientStroke(e,t){this._hitTestStroke(e,t.width)}drawMarkerLayer(e,t){e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._hitTestFill(t):super.drawMarkerLayer(e,t)}drawTextSymbol(e,t,n){if(!e||!T(t)||P(e.height,D.CIMTextSymbol.height)<=0)return;let r=q.createIdentity(),i=this.geomUnitsPerPoint();i!==1&&r.scale(i,i),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}pushClipPath(e){}popClipPath(){}drawImage(e,t){let{url:n}=e,r=P(e.scaleX,1),i=this._resourceManager.getResource(n);if(i==null||i.height===0||t===0)return;let a=t*this.geomUnitsPerPoint(),o=a*r*(i.width/i.height);if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),t=this._searchDistPoint;Math.abs(e[0])<o/2+t&&Math.abs(e[1])<a/2+t&&(this._earlyReturn=!0)}else{let e=o/2,t=a/2,n=[[-e,t],[e,t],[e,-t],[-e,-t],[-e,t]],r=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(r,[n])&&(this._earlyReturn=!0)}}drawText(e,t){let n=this._textInfo;if(!n)return;let r=n.get(e);if(!r||!p(r.glyphMosaicItems))return;let i=ve(P(e.height,D.CIMTextSymbol.height)),{lineGapType:a,lineGap:o}=e,s=a?Z(a,P(o),i):0,c=e.horizontalAlignment??D.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??D.CIMTextSymbol.verticalalignment,u=e.callout?.type===`CIMBackgroundCallout`,d=_e(r.glyphMosaicItems,{scale:i/me,angle:P(e.angle),xOffset:P(e.offsetX),yOffset:P(e.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:ye(e.lineWidth),lineHeight:pe*Math.max(.25,Math.min(s||1,4)),decoration:e.font.decoration||`none`,useCIMAngleBehavior:!1,hasBackground:u}),f=this.reverseScaleText(1);for(let e of d.glyphs){let t=e.offsets,n=[[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(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);y(e,[n])&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(e,[n])&&(this._earlyReturn=!0)}}function p(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}}_hitTestFill(e){let t=null;if(C(e)){let n=e;t=[[[n.xmin,n.ymin],[n.xmin,n.ymax],[n.xmax,n.ymax],[n.xmax,n.ymin],[n.xmin,n.ymin]]]}else if(x(e))t=e.rings;else if(S(e))t=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);if(y(e,t)&&(this._earlyReturn=!0),!this._earlyReturn){let n=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();b(e,t,n)&&(this._earlyReturn=!0)}}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(e,t)&&(this._earlyReturn=!0)}}_getSvgPath(){return(this._svg==null||this._path==null)&&(this._svg??=de(),this._path??=fe(`path`),this._svg.appendChild(this._path)),this._path}_getCanvasContext(e,t){return this._canvas??=document.createElement(`canvas`),this._canvas.width=e,this._canvas.height=t,this._canvas.getContext(`2d`,{willReadFrequently:!0})}_hittestSvgPath(e,t,n,r=0){let i=h();g(i,e);let a={x:i[0],y:i[1],width:i[2]-i[0],height:i[3]-i[1]},o=this._getSvgPath();o.setAttribute(`d`,t);let s=o.getBBox();if(this._hittestType===`point`){let e=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint(),i=this.reverseTransformPt(this._searchTarget[0]),o=Math.max(s.width/a.width,s.height/a.height),c=1,l=2*e*o;l<1&&(c=2/l,o*=c,s.x*=c,s.y*=c,s.width*=c,s.height*=c);let u=1+r*o/2,d=this._getCanvasContext(s.width+u*2,s.height+u*2);d.setTransform(c,0,0,c,-s.x+u,-s.y+u);let f=new Path2D(t);n?d.fill(f):(d.lineWidth=o/c*r,d.stroke(f));let p=(a.width*o-s.width)/2,m=(a.height*o-s.height)/2,h=Math.floor((i[0]-a.x-e)*o-p+u),g=Math.floor((a.height-(i[1]-a.y)-e)*o+m+u),_=Math.ceil(2*e*o),v=Math.ceil(2*e*o),y=d.getImageData(h,g,_,v).data;for(let e=3;e<y.length;e+=4)if(y[e]>127.5){this._earlyReturn=!0;return}}else{let e=[[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]],t=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;if(v(t,[e])){this._earlyReturn=!0;return}}}_hitTestStroke(e,t){let n=null;if(C(e)){let t=e;n=[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}else if(x(e))n=e.rings;else if(S(e))n=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),r=P(t,D.CIMSolidStroke.width)*this.geomUnitsPerPoint(),i=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();b(e,n,r/2+i)&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;v(e,n)&&(this._earlyReturn=!0)}}_resetHittest(){this.setTransform(),this._hittestType=`point`,this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null}}class xe extends J{constructor(e,t,n,r){super(t,n),this._applyAdditionalRenderProps=r,this._colorSubstitutionHelper=new ee,this._ctx=e}drawSolidFill(e,t){if(!e)return;if(x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!0);else if(C(e))this._buildPath(X(e).rings,!0);else if(w(e))console.log(`CanvasDrawHelper.drawSolidFill - No implementation!`);else return;let n=this._ctx;n.fillStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,n.fill(`evenodd`)}drawSolidStroke(e,t,n,r,i,a){if(!e||!t||n===0)return;if(x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!1);else if(C(e))this._buildPath(X(e).rings,!0);else{console.log(`CanvasDrawHelper.drawSolidStroke isn't implemented!`);return}let o=this._ctx;o.strokeStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,o.lineWidth=Math.max(this.transformSize(n),G),this._setCapStyle(r),this._setJoinStyle(i),o.miterLimit=a,o.stroke()}pushClipPath(e){if(this._ctx.save(),x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!0);else if(C(e))this._buildPath(X(e).rings,!0);else return;this._ctx.clip(`evenodd`)}popClipPath(){this._ctx.restore()}drawImage(e,t){let{colorSubstitutions:n,url:r,tintColor:i}=e,a=P(e.scaleX,1),o=this._resourceManager.getResource(r);if(o==null)return;let s=t*(o.width/o.height),c=t;t||(s=o.width,c=o.height);let l=F(r)||`src`in o&&F(o.src),u=`getFrame`in o?O(o):o;n&&(u=this._colorSubstitutionHelper.applyColorSubstitution(u,n)),this._applyAdditionalRenderProps&&!l&&i&&(u=this._colorSubstitutionHelper.tintImageData(u,i));let d=this.transformPt([0,0]),[f,p]=this.getTransformAngle(),m=this.transformSize(1),h=this._ctx;h.save(),h.setTransform({m11:a*m*f,m12:a*m*p,m21:-m*p,m22:m*f,m41:d[0],m42:d[1]}),h.drawImage(u,-s/2,-c/2,s,c),h.restore()}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new N;let n=Q(e,this.transformSize(a(1))),r=j({textString:t,font:n.font,symbol:e,supportsRichText:M(t)}),i=r?this._textRasterizer.rasterizeRichText(r,n):this._textRasterizer.rasterizeText(t,n);if(!i)return;let{size:o,anchorX:s,anchorY:c,canvas:l}=i,u=o[0]*(s+.5),d=o[1]*(c-.5),f=this._ctx,p=this.transformPt([0,0]),[m,h]=this.getTransformAngle();f.save(),f.setTransform({m11:1*m,m12:1*h,m21:-1*h,m22:1*m,m41:p[0]-1*u,m42:p[1]+1*d}),f.drawImage(l,0,0),f.restore()}drawPictureFill(e,t){if(!e)return;let{colorSubstitutions:n,height:r,offsetX:i,offsetY:a,rotation:o,scaleX:s,tintColor:c,url:l}=t,u=this._resourceManager.getResource(l);if(u==null)return;if(x(e))this._buildPath(e.rings,!0);else if(S(e))this._buildPath(e.paths,!0);else if(C(e))this._buildPath(X(e).rings,!0);else if(w(e))console.log(`CanvasDrawHelper.drawPictureFill - No implementation!`);else return;let d=this._ctx,f=F(l)||`src`in u&&F(u.src),p=`getFrame`in u?O(u):u;n&&(p=this._colorSubstitutionHelper.applyColorSubstitution(p,n));let m;if(this._applyAdditionalRenderProps){f||c&&(p=this._colorSubstitutionHelper.tintImageData(p,c)),m=d.createPattern(p,`repeat`);let e=this.transformSize(1);o||=0,i=i?e*i:0,a=a?e*a:0,r&&=e*r;let t=r?r/u.height:1,n=s&&r?s*r/u.width:1;if(o!==0||t!==1||n!==1||i!==0||a!==0){let e=new DOMMatrix;e.rotateSelf(0,0,-o).translateSelf(i,a).scaleSelf(n,t,1),m.setTransform(e)}}else m=d.createPattern(p,`repeat`);d.save(),d.fillStyle=m,d.fill(`evenodd`),d.restore()}drawPictureStroke(e,n){if(!e)return;let{colorSubstitutions:r,capStyle:i,joinStyle:a,miterLimit:s,tintColor:c,url:l,width:u}=n,d=this._resourceManager.getResource(l);if(d==null)return;let f;if(x(e))f=e.rings;else if(S(e))f=e.paths;else if(C(e))f=X(e).rings;else if(w(e)){console.log(`CanvasDrawHelper.drawPictureStroke - No implementation!`);return}else return;u||=d.width;let p=F(l)||`src`in d&&F(d.src),m=`getFrame`in d?O(d):d;r&&(m=this._colorSubstitutionHelper.applyColorSubstitution(m,r)),this._applyAdditionalRenderProps&&(p||c&&(m=this._colorSubstitutionHelper.tintImageData(m,c)));let h=Math.max(this.transformSize(o(u)),.5),g=h/m.width,_=this._ctx,v=_.createPattern(m,`repeat-y`);_.save(),this._setCapStyle(i),this._setJoinStyle(a),s!==void 0&&(_.miterLimit=s),_.lineWidth=h;let y,b;for(let e of f)if(e=t(e),$(e),!(!e||e.length<=1)){y=this.transformPt(e[0]);for(let t=1;t<e.length;t++){b=this.transformPt(e[t]);let n=Ce(y,b),r=new DOMMatrix;r.translateSelf(0,y[1]-h/2).scaleSelf(g,g,1).rotateSelf(0,0,90-n),v.setTransform(r),_.strokeStyle=v,_.beginPath(),_.moveTo(y[0],y[1]),_.lineTo(b[0],b[1]),_.stroke(),y=b}}_.restore()}drawGradientFill(e,t){if(!e)return;let n;if(x(e))n=e.rings;else if(S(e))n=e.paths;else if(C(e))n=X(e).rings;else{K().error(`Unable to draw gradient fill`);return}this._buildPath(n,!0);let{angle:i,gradientMethod:a,gradientSize:s,gradientSizeUnits:m}=t,h=D.CIMGradientFill,g=t.gradientType??h.gradientType,_=-r(i??0),v=c();for(let e of n){let t=e?e.length:0;if(t>1)for(let n=0;n<t;n++){let t=this.transformPt(e[n]);(a===`Linear`||a===`Rectangular`)&&(t=k(t,-_)),l(v,t)}}let[y,b,w,T]=v,E=this._ctx;switch(E.save(),a){case`Buffered`:K().error(`Gradient method "${a}" currently unsupported.`);break;case`Linear`:{let e=(b+T)/2,n=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*(w-y),[r,i]=g===`Discrete`?[w,w-n]:[y+n,y],a=k([r,e],_),c=k([i,e],_),l=E.createLinearGradient(a[0],a[1],c[0],c[1]);A(l,t),E.fillStyle=l,E.fill(`evenodd`);break}case`Circular`:{let e=u(v),n=p(v)/2,r=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*n,[i,a]=g===`Discrete`?[n,n-r]:[r,0],c=E.createRadialGradient(e[0],e[1],i,e[0],e[1],a);A(c,t),E.fillStyle=c,E.fill(`evenodd`);break}case`Rectangular`:{let n=u(v),r=n[0],i=n[1],a=k(n,_),c=(n,r,i,o,s,c,l,u)=>{E.save(),this.pushClipPath(e);let d=k([s,c],_),f=k([l,u],_);E.beginPath(),E.moveTo(a[0],a[1]),E.lineTo(d[0],d[1]),E.lineTo(f[0],f[1]),E.lineTo(a[0],a[1]),E.clip();let p=k([n,r],_),m=k([i,o],_),h=E.createLinearGradient(p[0],p[1],m[0],m[1]);A(h,t),E.fillStyle=h,E.fill(`evenodd`),E.restore()},l=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*(d(v)/2),[p,x]=g===`Discrete`?[w,w-l]:[r+l,r];c(p,i,x,i,w,b,w,T),[p,x]=g===`Discrete`?[y,y+l]:[r-l,r],c(p,i,x,i,y,T,y,b),l=m===`Absolute`?this.transformSize(o(s)):I(s,h.gradientSize)*(f(v)/2);let[S,C]=g===`Discrete`?[T,T-l]:[i+l,i];c(r,S,r,C,w,T,y,T),[S,C]=g===`Discrete`?[b,b+l]:[i-l,i],c(r,S,r,C,y,b,w,b);break}}E.restore()}drawGradientStroke(e,n){let{capStyle:r,gradientMethod:i,gradientSize:a,gradientSizeUnits:s,joinStyle:c,miterLimit:l,width:u}=n;if(!e||u===0)return;let d;if(x(e))d=e.rings;else if(S(e))d=e.paths;else if(C(e))d=X(e).rings;else{K().error(`Unable to draw gradient stroke`);return}let f=n.gradientType??D.CIMGradientStroke.gradientType,p=Math.max(this.transformSize(o(u)),.5),m=this._ctx;m.save(),this._setCapStyle(r),this._setJoinStyle(c),l!==void 0&&(m.miterLimit=l),m.lineWidth=p;let h,g;for(let e of d){if(e=t(e),$(e),!e||e.length<=1)continue;let r=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let n=g[0]-h[0],i=g[1]-h[1];r+=Math.sqrt(n*n+i*i),h=g}let c=s===`Absolute`?this.transformSize(o(a)):I(a,D.CIMGradientStroke.gradientSize)*(i===`AcrossLine`?p:r),l=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let a=g[0]-h[0],o=g[1]-h[1],s=Math.sqrt(a*a+o*o),u,d,_,v;switch(i){case`AcrossLine`:{let[e,t]=k([a/s,o/s],-Math.PI/2),n=p/2,r=f===`Discrete`?n:c-n;u=(h[0]+g[0])/2+e*r,d=(h[1]+g[1])/2+t*r,_=u-e*c,v=d-t*c;break}case`AlongLine`:{let e=a/s,t=o/s;f===`Discrete`?(u=h[0]-e*l,d=h[1]-t*l,_=u+e*c,v=d+t*c):(_=h[0]+e*(r-l),v=h[1]+t*(r-l),u=_-e*c,d=v-t*c);break}default:K().error(`Unrecognized gradient method:`,i),m.restore();return}let y=m.createLinearGradient(u,d,_,v);A(y,n),m.strokeStyle=y,m.beginPath(),m.moveTo(h[0],h[1]),m.lineTo(g[0],g[1]),m.stroke(),l+=s,h=g}}m.restore()}_buildPath(e,t){let n=this._ctx;if(n.beginPath(),e)for(let r of e){let e=r?r.length:0;if(e>1){let i=this.transformPt(r[0]);n.moveTo(i[0],i[1]);for(let t=1;t<e;t++)i=this.transformPt(r[t]),n.lineTo(i[0],i[1]);t&&n.closePath()}}}_setCapStyle(e){switch(e){case`Butt`:this._ctx.lineCap=`butt`;break;case`Round`:this._ctx.lineCap=`round`;break;case`Square`:this._ctx.lineCap=`square`}}_setJoinStyle(e){switch(e){case`Bevel`:this._ctx.lineJoin=`bevel`;break;case`Round`:this._ctx.lineJoin=`round`;break;case`Miter`:this._ctx.lineJoin=`miter`}}}function Se(e,t,n){let r=P(e.separation,D.CIMHatchFill.separation)*n,i=P(e.rotation);if(r===0)return null;r<0&&(r=-r);let a=0,o=.5*r;for(;a>o;)a-=r;for(;a<-o;)a+=r;let s=h();g(s,t),s[0]-=o,s[1]-=o,s[2]+=o,s[3]+=o;let c=[[s[0],s[1]],[s[0],s[3]],[s[2],s[3]],[s[2],s[1]]];for(;i>180;)i-=180;for(;i<0;)i+=180;let l=Math.cos(i*W),u=Math.sin(i*W),d=-r*u,f=r*l,p=P(e.offsetX)*n,m=P(e.offsetY)*n;a=p*u-m*l;let _,v,y,b;_=y=Number.MAX_VALUE,v=b=-Number.MAX_VALUE;for(let e of c){let t=e[0],n=e[1],r=l*t+u*n,i=-u*t+l*n;_=Math.min(_,r),y=Math.min(y,i),v=Math.max(v,r),b=Math.max(b,i)}y=Math.floor(y/r)*r;let x=l*_-u*y-d*a/r,S=u*_+l*y-f*a/r,C=l*v-u*y-d*a/r,w=u*v+l*y-f*a/r,T=1+Math.round((b-y)/r),E=[];for(let e=0;e<T;e++)x+=d,S+=f,C+=d,w+=f,E.push([[x,S],[C,w]]);return{paths:E}}function Ce(e,t){let n=t[0]-e[0],r=t[1]-e[1];return 180/Math.PI*Math.atan2(r,n)}const X=e=>e?{spatialReference:e.spatialReference,rings:[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}:null,Z=(e,t,n)=>{switch(e){case`ExtraLeading`:return 1+t/n;case`Multiple`:return t;case`Exact`:return t/n}};function Q(t,n=1){let r=se(t),i=ie(t.fontStyleName),a=t.fontFamilyName??e,{weight:o,style:s}=i,c=n*(t.height||5),l=ce(t.horizontalAlignment),u=le(t.verticalAlignment),d=L(t),f=L(t.haloSymbol),p=f==null?0:n*(t.haloSize??0),m=R(t.symbol),h=n*(z(t.symbol)||0),g=t.callout?.type===`CIMBackgroundCallout`?t.callout.backgroundSymbol:null,_=L(g),v=z(g),y=R(g);return{color:d,size:c,horizontalAlignment:l,verticalAlignment:u,font:{family:a,style:V(s),weight:B(o),decoration:r},outline:{size:h||0,color:m},halo:{size:p||0,color:f,style:s},backgroundColor:_,borderLine:v!=null&&y!=null?{size:v,color:y}:null,pixelRatio:1,premultiplyColors:!0}}function $(e){let t=e[0],n=1,r,i,a,o,s;for(;n<e.length;)r=e[n][0]-t[0],i=e[n][1]-t[1],o=r===0?Math.PI/2:i/r,a!==void 0&&Math.abs(o-a)<=1e-4?(e.splice(n-1,1),t=s):(s=t,t=e[n],n++),a=o}export{J as CIMSymbolDrawHelper,xe as CanvasDrawHelper,be as EnvDrawHelper,Y as HittestDrawHelper,q as Transformation,W as cDegToRad,Z as lineGapType2LineHeight};
2
+ import{defaultFontFamily as e}from"../../core/fontUtils.js";import has from"../../core/has.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import{deg2rad as r}from"../../core/mathUtils.js";import i from"../../core/ObjectPool.js";import{onePixelInPoints as a,pt2px as o,px2pt as s,onePointInPixels as c}from"../../core/screenUtils.js";import{GeometryCursor as l}from"../../geometry/GeometryCursor.js";import{empty as u,expandPointInPlace as d,center as f,width as p,height as m,diagonal as h,fromValues as g,create as _}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as v}from"../../geometry/support/boundsUtils.js";import{polygonCentroid as y}from"../../geometry/support/centroid.js";import{targetIntersectsPolygon as b,pointInPolygon as x,nearLine as S}from"../../geometry/support/intersectsBase.js";import{isPolygon as C,isPolyline as w,isExtent as T,isMultipoint as E,isPoint as D}from"../../geometry/support/jsonTypeUtils.js";import{SimpleEffectCursor as O}from"./CIMEffects.js";import ee from"./CIMImageColorSubstitutionHelper.js";import{getEffectOperator as te,getPlacementOperator as ne}from"./CIMOperators.js";import{Placement as re}from"./CIMPlacements.js";import{defaultCIMValues as k}from"./defaultCIMValues.js";import{fromCIMFontStyle as ie}from"./fromCIMFontStyle.js";import{getFirstFrame as A}from"./imageUtils.js";import{rotate as j}from"./mathUtils.js";import{addColorStops as M}from"./rasterizingUtils.js";import ae from"./Rect.js";import{parseRichTextRuns as N,hasRichTextFormattingTags as P}from"./richTextUtils.js";import F from"./TextRasterizer.js";import{getNumericValue as I,isSVGImage as L,getRelativeGradientSize as R,getEffectsInflateSize as oe,fromCIMFontDecoration as se,fromCIMHorizontalAlignment as ce,fromCIMVerticalAlignment as le,getFillColor as z,getStrokeColor as B,getStrokeWidth as V,getFontWeight as H,getFontStyle as U,isCIMFill as ue,getSize as de}from"./utils.js";import{destroyHiddenSvg as fe,createHiddenSvg as pe,createSvgElement as W}from"../../views/2d/engine/svgUtils.js";import{magicLabelLineHeight as me,glyphSize as he,hittestToleranceSmallSymbol as ge,hittestSmallSymbolThreshold as _e}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as ve}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as ye,getLineWidth as be}from"../../views/2d/layers/graphics/graphicsUtils.js";const G=Math.PI/180,K=.5,q=()=>n.getLogger(`esri.symbols.cim.CIMSymbolDrawHelper`);class J{constructor(e){this._t=e}static createIdentity(){return new J([1,0,0,0,1,0])}clone(){let e=this._t;return new J(e.slice())}transform(e){let t=this._t;return[t[0]*e[0]+t[1]*e[1]+t[2],t[3]*e[0]+t[4]*e[1]+t[5]]}static createScale(e,t){return new J([e,0,0,0,t,0])}scale(e,t){let n=this._t;return n[0]*=e,n[1]*=e,n[2]*=e,n[3]*=t,n[4]*=t,n[5]*=t,this}scaleRatio(){return Math.sqrt(this._t[0]*this._t[0]+this._t[1]*this._t[1])}static createTranslate(e,t){return new J([0,0,e,0,0,t])}translate(e,t){let n=this._t;return n[2]+=e,n[5]+=t,this}static createRotate(e){let t=Math.cos(e),n=Math.sin(e);return new J([t,-n,0,n,t,0])}rotate(e){return J.multiply(this,J.createRotate(e),this)}angle(){let e=this._t[0],t=this._t[3],n=Math.sqrt(e*e+t*t);return[e/n,t/n]}static multiply(e,t,n){let r=e._t,i=t._t,a=r[0]*i[0]+r[3]*i[1],o=r[1]*i[0]+r[4]*i[1],s=r[2]*i[0]+r[5]*i[1]+i[2],c=r[0]*i[3]+r[3]*i[4],l=r[1]*i[3]+r[4]*i[4],u=r[2]*i[3]+r[5]*i[4]+i[5],d=n._t;return d[0]=a,d[1]=o,d[2]=s,d[3]=c,d[4]=l,d[5]=u,n}invert(){let e=this._t,t=e[0]*e[4]-e[1]*e[3];if(t===0)return new J([0,0,0,0,0,0]);t=1/t;let n=(e[1]*e[5]-e[2]*e[4])*t,r=(e[2]*e[3]-e[0]*e[5])*t,i=e[4]*t,a=-e[1]*t,o=-e[3]*t,s=e[0]*t;return new J([i,a,n,o,s,r])}}class Y{constructor(e,t){this._resourceManager=e,this._transfos=[],this._sizeTransfos=[],this._textScaling=[],this._geomUnitsPerPoint=1,this._placementPool=new i(()=>new re,void 0,void 0,100),this._earlyReturn=!1,this._mapRotation=0,this._transfos.push(t||J.createIdentity()),this._sizeTransfos.push(t?t.scaleRatio():1),this._textScaling.push(1)}setTransform(e,t){this._transfos=[e||J.createIdentity()],this._sizeTransfos=[t||(e?e.scaleRatio():1)],this._textScaling=[1]}setGeomUnitsPerPoint(e){this._geomUnitsPerPoint=e}transformPt(e){return this._transfos[this._transfos.length-1].transform(e)}transformSize(e){return e*this._sizeTransfos[this._sizeTransfos.length-1]}scaleText(e){return e*this._textScaling[this._textScaling.length-1]}reverseTransformPt(e){return this._transfos[this._transfos.length-1].invert().transform(e)}reverseTransformSize(e){return e/this._sizeTransfos[this._sizeTransfos.length-1]}reverseTransformScalar(e){return e/this._transfos[this._transfos.length-1].scaleRatio()}reverseScaleText(e){return e/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(e,t=!1,n=1){let r=t?e.scaleRatio():1;J.multiply(e,this.back(),e),this._transfos.push(e),this._sizeTransfos.push(this._sizeTransfos[this._sizeTransfos.length-1]*r),this._textScaling.push(this._textScaling[this._textScaling.length-1]*n)}pop(){this._transfos.splice(-1,1),this._sizeTransfos.splice(-1,1),this._textScaling.splice(-1,1)}drawSymbol(e,t,n){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:this.drawMultiLayerSymbol(e,t);break;case`CIMTextSymbol`:this.drawTextSymbol(e,t,n)}}drawMultiLayerSymbol(e,t){if(!e||!t)return;let n=e.symbolLayers;if(!n)return;let r=e.effects;if(r&&r.length>0){let e=this.executeEffects(r,t);if(e){let t=e.next();for(;t;)this.drawSymbolLayers(n,t.asJSON()),t=e.next()}}else this.drawSymbolLayers(n,t)}executeEffects(e,t){let n=this.geomUnitsPerPoint(),r=oe(e),i=new O(l.fromJSONCIM(t));for(let a of e){let e=te(a);e&&(i=e.execute(i,a,{geomUnitsPerPoint:n,tileKey:null,maxInflateSize:r,scale:null,spatialReference:t.spatialReference,preventClipping:!1}))}return i}drawSymbolLayers(e,t){let n=e.length;for(;n--;){let r=e[n];if(!r||r.enable===!1)continue;let i=r.effects;if(i&&i.length>0){let e=this.executeEffects(i,t);if(e){let t=null;for(;(t=e.next())&&(this.drawSymbolLayer(r,t.asJSON()),!this._earlyReturn););}}else this.drawSymbolLayer(r,t);if(this._earlyReturn)return}}drawSymbolLayer(e,t){switch(e.type){case`CIMSolidFill`:this.drawSolidFill(t,e.color,e.path);break;case`CIMHatchFill`:this.drawHatchFill(t,e);break;case`CIMPictureFill`:this.drawPictureFill(t,e);break;case`CIMGradientFill`:this.drawGradientFill(t,e);break;case`CIMSolidStroke`:this.drawSolidStroke(t,e.color,e.width,e.capStyle,e.joinStyle,e.miterLimit,e.path);break;case`CIMPictureStroke`:this.drawPictureStroke(t,e);break;case`CIMGradientStroke`:this.drawGradientStroke(t,e);break;case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:this.drawMarkerLayer(e,t)}}drawHatchFill(e,t){let n=we(t,e,this.geomUnitsPerPoint());n&&(this.pushClipPath(e),this.drawMultiLayerSymbol(t.lineSymbol,n),this.popClipPath())}drawPictureFill(e,t){}drawGradientFill(e,t){}drawPictureStroke(e,t){}drawGradientStroke(e,t){}drawMarkerLayer(e,t){let n=e.markerPlacement;if(n){let r=ne(n);if(r){let i=n.type===`CIMMarkerPlacementInsidePolygon`||n.type===`CIMMarkerPlacementPolygonCenter`&&n.clipAtBoundary;i&&this.pushClipPath(t);let a=r.execute(l.fromJSONCIM(t),n,this.geomUnitsPerPoint(),null);if(a){let t=null;for(;(t=a.next())&&(this.drawMarker(e,t),!this._earlyReturn););}i&&this.popClipPath()}}else{let n=this._placementPool.acquire();if(D(t))n.tx=t.x,n.ty=t.y,this.drawMarker(e,n);else if(C(t)){let r=y(t);r&&([n.tx,n.ty]=r,this.drawMarker(e,n))}else if(w(t)){for(let r of t.paths)for(let t of r)if(n.tx=t[0],n.ty=t[1],this.drawMarker(e,n),this._earlyReturn)break}else for(let r of t.points)if(n.tx=r[0],n.ty=r[1],this.drawMarker(e,n),this._earlyReturn)break;this._placementPool.release(n)}}drawMarker(e,t){switch(e.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:this.drawPictureMarker(e,t);break;case`CIMVectorMarker`:this.drawVectorMarker(e,t)}}drawPictureMarker(e,t){if(!e)return;let n=this._resourceManager.getResource(e.url),r=I(e.size,k.CIMPictureMarker.size);if(n==null||r<=0)return;let i=n.width,a=n.height;if(!i||!a)return;let o=i/a,s=I(e.scaleX,1),c=J.createIdentity(),l=e.anchorPoint;if(l){let t=l.x,n=l.y;e.anchorPointUnits!==`Absolute`&&(t*=r*o*s,n*=r),c.translate(-t,-n)}let u=I(e.rotation);e.rotateClockwise&&(u=-u),this._mapRotation&&(u+=this._mapRotation),u&&c.rotate(u*G);let d=I(e.offsetX),f=I(e.offsetY);if(d||f){if(this._mapRotation){let e=G*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=d*t-f*n,i=d*n+f*t;d=r,f=i}c.translate(d,f)}let p=this.geomUnitsPerPoint();p!==1&&c.scale(p,p);let m=t.getAngle();m&&c.rotate(m),c.translate(t.tx,t.ty),this.push(c),this.drawImage(e,r),this.pop()}drawVectorMarker(e,t){if(!e)return;let n=e.markerGraphics;if(!n)return;let r=I(e.size,k.CIMVectorMarker.size),i=e.frame,a=i?i.ymax-i.ymin:0,o=r&&a?r/a:1,s=J.createIdentity();i&&s.translate(-(i.xmax+i.xmin)*.5,-(i.ymax+i.ymin)*.5);let c=e.anchorPoint;if(c){let t=c.x,n=c.y;e.anchorPointUnits===`Absolute`?(t/=o,n/=o):i&&(t*=i.xmax-i.xmin,n*=i.ymax-i.ymin),s.translate(-t,-n)}o!==1&&s.scale(o,o);let l=I(e.rotation);e.rotateClockwise&&(l=-l),this._mapRotation&&(l+=this._mapRotation),l&&s.rotate(l*G);let u=I(e.offsetX),d=I(e.offsetY);if(u||d){if(this._mapRotation){let e=G*this._mapRotation,t=Math.cos(e),n=Math.sin(e),r=u*t-d*n,i=u*n+d*t;u=r,d=i}s.translate(u,d)}let f=this.geomUnitsPerPoint();f!==1&&s.scale(f,f);let p=t.getAngle();p&&s.rotate(p),s.translate(t.tx,t.ty);let m=e.scaleSymbolsProportionally?1:o;this.push(s,e.scaleSymbolsProportionally,m);for(let e of n){(!e?.symbol||!e.geometry)&&q().error(`Invalid marker graphic`,e);let t=e.textString;if(typeof t==`number`&&(t=t.toString()),this.drawSymbol(e.symbol,e.geometry,t),this._earlyReturn)break}this.pop()}drawTextSymbol(e,t,n){if(!e||!D(t)||I(e.height,k.CIMTextSymbol.height)<=0)return;let r=J.createIdentity(),i=I(e.angle);i=-i,i&&r.rotate(i*G);let a=I(e.offsetX),o=I(e.offsetY);(a||o)&&r.translate(a,o);let s=this.geomUnitsPerPoint();s!==1&&r.scale(s,s),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}}class xe extends Y{constructor(e,t){super(e,t),this.reset()}reset(){this._xmin=this._ymin=1/0,this._xmax=this._ymax=-1/0,this._clipCount=0}envelope(){return new ae(this._xmin,this._ymin,this._xmax-this._xmin,this._ymax-this._ymin)}bounds(){return g(this._xmin,this._ymin,this._xmax,this._ymax)}drawSolidFill(e){if(!(!e||this._clipCount>0)){if(C(e))this._processPath(e.rings,0);else if(w(e))this._processPath(e.paths,0);else if(T(e)){let t=X(e);t&&this._processPath(t.rings,0)}else console.error(`drawSolidFill Unexpected geometry type!`)}}drawSolidStroke(e,t,n){if(!e||this._clipCount>0||n==null||n<=0)return;let r=Math.max(this.transformSize(I(n,k.CIMSolidStroke.width))*.5,.5*K);if(C(e))this._processPath(e.rings,r);else if(w(e))this._processPath(e.paths,r);else if(T(e)){let t=X(e);t&&this._processPath(t.rings,r)}else console.error(`drawSolidStroke unexpected geometry type!`)}drawMarkerLayer(e,t){C(t)&&e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._processPath(t.rings,0):super.drawMarkerLayer(e,t)}drawHatchFill(e,t){this.drawSolidFill(e)}drawPictureFill(e,t){this.drawSolidFill(e)}drawGradientFill(e,t){this.drawSolidFill(e)}drawPictureStroke(e,t){this.drawSolidStroke(e,null,t.width)}drawGradientStroke(e,t){this.drawSolidStroke(e,null,t.width)}pushClipPath(e){this.drawSolidFill(e),this._clipCount++}popClipPath(){this._clipCount--}drawImage(e,t){let{url:n}=e,r=I(e.scaleX,1),i=r*t,a=t,o=this._resourceManager.getResource(n);if(o!=null){let e=o.height/o.width;i=r*(t?e>1?t:t/e:o.width),a=t?e>1?t*e:t:o.height}this._merge(this.transformPt([-i/2,-a/2]),0),this._merge(this.transformPt([-i/2,a/2]),0),this._merge(this.transformPt([i/2,-a/2]),0),this._merge(this.transformPt([i/2,a/2]),0)}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new F;let n=Q(e),r=N({textString:t,font:n.font,symbol:e,supportsRichText:P(t)}),[i,a]=r?this._textRasterizer.computeRichTextSize(r,n):this._textRasterizer.computeTextSize(t,n);i=s(i),a=s(a);let o=this.transformSize(1)*this.reverseTransformScalar(1);i*=o,a*=o;let c=e.horizontalAlignment??k.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??k.CIMTextSymbol.verticalalignment,u=0;switch(c){case`Left`:u=i/2;break;case`Right`:u=-i/2}let d=0;switch(l){case`Bottom`:d=a/2;break;case`Top`:d=-a/2;break;case`Baseline`:d=a/6}this._merge(this.transformPt([-i/2+u,-a/2+d]),0),this._merge(this.transformPt([-i/2+u,a/2+d]),0),this._merge(this.transformPt([i/2+u,-a/2+d]),0),this._merge(this.transformPt([i/2+u,a/2+d]),0)}_processPath(e,t){if(e)for(let n of e){let e=n?n.length:0;if(e>1){this._merge(this.transformPt(n[0]),t);for(let r=1;r<e;r++)this._merge(this.transformPt(n[r]),t)}}}_merge(e,t){e[0]-t<this._xmin&&(this._xmin=e[0]-t),e[0]+t>this._xmax&&(this._xmax=e[0]+t),e[1]-t<this._ymin&&(this._ymin=e[1]-t),e[1]+t>this._ymax&&(this._ymax=e[1]+t)}}class Se extends Y{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=fe(this._svg),this._path=null,this._canvas=null}hitTest(e,t,n,r){let{textInfo:i,mapRotation:a,resolution:o,searchDist:l,hittestType:u,isScreenAligned:d}=r;this._resetHittest();let f=o*c;switch(this.setGeomUnitsPerPoint(f),u){case`point`:if(e.length!==1)return q().error(`Unexpected hittest area`,e),!1;this._hittestType=`point`,this._searchDistPoint=l/2/f,this._searchTarget=[[e[0].x,e[0].y]];break;case`rect`:if(e.length!==4)return q().error(`Unexpected hittest area`,e),!1;this._hittestType=`rect`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y]);break;case`polygon`:this._hittestType=`polygon`,this._searchDistPoint=0,this._searchTarget=e.map(e=>[e.x,e.y])}if(this._textInfo=i,this._mapRotation=d?a:0,!has(`esri-mobile`)){let e=s(ge*window.devicePixelRatio),n=s(_e);(t?.type!==`CIMLineSymbol`&&t?.type!==`CIMPolygonSymbol`||!t.symbolLayers?.some(ue))&&t?.type!==`CIMMeshSymbol`&&(de(t)??0)<n&&(this._searchDistPoint=e)}return this._earlyReturn=!1,this.drawSymbol(t,n),this._earlyReturn}executeEffects(e,t){return e.at(-1)?.type===`CIMGeometricEffectDashes`&&(e=e.slice(0,-1)),super.executeEffects(e,t)}drawSolidFill(e,t,n){n==null?this._hitTestFill(e):this._hittestSvgPath(e,n,!0)}drawHatchFill(e,t){this._hitTestFill(e)}drawPictureFill(e,t){this._hitTestFill(e)}drawGradientFill(e,t){this._hitTestFill(e)}drawSolidStroke(e,t,n,r,i,a,o){o==null?this._hitTestStroke(e,n):this._hittestSvgPath(e,o,!1,n)}drawPictureStroke(e,t){this._hitTestStroke(e,t.width)}drawGradientStroke(e,t){this._hitTestStroke(e,t.width)}drawMarkerLayer(e,t){e.markerPlacement&&(e.markerPlacement.type===`CIMMarkerPlacementInsidePolygon`||e.markerPlacement.type===`CIMMarkerPlacementPolygonCenter`&&e.markerPlacement.clipAtBoundary)?this._hitTestFill(t):super.drawMarkerLayer(e,t)}drawTextSymbol(e,t,n){if(!e||!D(t)||I(e.height,k.CIMTextSymbol.height)<=0)return;let r=J.createIdentity(),i=this.geomUnitsPerPoint();i!==1&&r.scale(i,i),r.translate(t.x,t.y),this.push(r),this.drawText(e,n),this.pop()}pushClipPath(e){}popClipPath(){}drawImage(e,t){let{url:n}=e,r=I(e.scaleX,1),i=this._resourceManager.getResource(n);if(i==null||i.height===0||t===0)return;let a=t*this.geomUnitsPerPoint(),o=a*r*(i.width/i.height);if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),t=this._searchDistPoint;Math.abs(e[0])<o/2+t&&Math.abs(e[1])<a/2+t&&(this._earlyReturn=!0)}else{let e=o/2,t=a/2,n=[[-e,t],[e,t],[e,-t],[-e,-t],[-e,t]],r=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(r,[n])&&(this._earlyReturn=!0)}}drawText(e,t){let n=this._textInfo;if(!n)return;let r=n.get(e);if(!r||!p(r.glyphMosaicItems))return;let i=ye(I(e.height,k.CIMTextSymbol.height)),{lineGapType:a,lineGap:o}=e,s=a?Z(a,I(o),i):0,c=e.horizontalAlignment??k.CIMTextSymbol.horizontalalignment,l=e.verticalAlignment??k.CIMTextSymbol.verticalalignment,u=e.callout?.type===`CIMBackgroundCallout`,d=ve(r.glyphMosaicItems,{scale:i/he,angle:I(e.angle),xOffset:I(e.offsetX),yOffset:I(e.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:be(e.lineWidth),lineHeight:me*Math.max(.25,Math.min(s||1,4)),decoration:e.font.decoration||`none`,useCIMAngleBehavior:!1,hasBackground:u}),f=this.reverseScaleText(1);for(let e of d.glyphs){let t=e.offsets,n=[[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(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);x(e,[n])&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(e,[n])&&(this._earlyReturn=!0)}}function p(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}}_hitTestFill(e){let t=null;if(T(e)){let n=e;t=[[[n.xmin,n.ymin],[n.xmin,n.ymax],[n.xmax,n.ymax],[n.xmax,n.ymin],[n.xmin,n.ymin]]]}else if(C(e))t=e.rings;else if(w(e))t=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]);if(x(e,t)&&(this._earlyReturn=!0),!this._earlyReturn){let n=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();S(e,t,n)&&(this._earlyReturn=!0)}}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(e,t)&&(this._earlyReturn=!0)}}_getSvgPath(){return(this._svg==null||this._path==null)&&(this._svg??=pe(),this._path??=W(`path`),this._svg.appendChild(this._path)),this._path}_getCanvasContext(e,t){return this._canvas??=document.createElement(`canvas`),this._canvas.width=e,this._canvas.height=t,this._canvas.getContext(`2d`,{willReadFrequently:!0})}_hittestSvgPath(e,t,n,r=0){let i=_();v(i,e);let a={x:i[0],y:i[1],width:i[2]-i[0],height:i[3]-i[1]},o=this._getSvgPath();o.setAttribute(`d`,t);let s=o.getBBox();if(this._hittestType===`point`){let e=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint(),i=this.reverseTransformPt(this._searchTarget[0]),o=Math.max(s.width/a.width,s.height/a.height),c=1,l=2*e*o;l<1&&(c=2/l,o*=c,s.x*=c,s.y*=c,s.width*=c,s.height*=c);let u=1+r*o/2,d=this._getCanvasContext(s.width+u*2,s.height+u*2);d.setTransform(c,0,0,c,-s.x+u,-s.y+u);let f=new Path2D(t);n?d.fill(f):(d.lineWidth=o/c*r,d.stroke(f));let p=(a.width*o-s.width)/2,m=(a.height*o-s.height)/2,h=Math.floor((i[0]-a.x-e)*o-p+u),g=Math.floor((a.height-(i[1]-a.y)-e)*o+m+u),_=Math.ceil(2*e*o),v=Math.ceil(2*e*o),y=d.getImageData(h,g,_,v).data;for(let e=3;e<y.length;e+=4)if(y[e]>127.5){this._earlyReturn=!0;return}}else{let e=[[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]],t=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;if(b(t,[e])){this._earlyReturn=!0;return}}}_hitTestStroke(e,t){let n=null;if(T(e)){let t=e;n=[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}else if(C(e))n=e.rings;else if(w(e))n=e.paths;else return;if(this._hittestType===`point`){let e=this.reverseTransformPt(this._searchTarget[0]),r=I(t,k.CIMSolidStroke.width)*this.geomUnitsPerPoint(),i=this.reverseTransformScalar(this._searchDistPoint)*this.prevGeomUnitsPerPoint();S(e,n,r/2+i)&&(this._earlyReturn=!0)}else{let e=this.isEmbedded()?this._searchTarget.map(e=>this.reverseTransformPt(e)):this._searchTarget;b(e,n)&&(this._earlyReturn=!0)}}_resetHittest(){this.setTransform(),this._hittestType=`point`,this._searchTarget=[],this._searchDistPoint=0,this._textInfo=null}}class Ce extends Y{constructor(e,t,n,r){super(t,n),this._applyAdditionalRenderProps=r,this._colorSubstitutionHelper=new ee,this._ctx=e}drawSolidFill(e,t){if(!e)return;if(C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!0);else if(T(e))this._buildPath(X(e).rings,!0);else if(E(e))console.log(`CanvasDrawHelper.drawSolidFill - No implementation!`);else return;let n=this._ctx;n.fillStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,n.fill(`evenodd`)}drawSolidStroke(e,t,n,r,i,a){if(!e||!t||n===0)return;if(C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!1);else if(T(e))this._buildPath(X(e).rings,!0);else{console.log(`CanvasDrawHelper.drawSolidStroke isn't implemented!`);return}let o=this._ctx;o.strokeStyle=typeof t==`string`?t:`rgba(`+Math.round(t[0])+`,`+Math.round(t[1])+`,`+Math.round(t[2])+`,`+(t[3]??255)/255+`)`,o.lineWidth=Math.max(this.transformSize(n),K),this._setCapStyle(r),this._setJoinStyle(i),o.miterLimit=a,o.stroke()}pushClipPath(e){if(this._ctx.save(),C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!0);else if(T(e))this._buildPath(X(e).rings,!0);else return;this._ctx.clip(`evenodd`)}popClipPath(){this._ctx.restore()}drawImage(e,t){let{colorSubstitutions:n,url:r,tintColor:i}=e,a=I(e.scaleX,1),o=this._resourceManager.getResource(r);if(o==null)return;let s=t*(o.width/o.height),c=t;t||(s=o.width,c=o.height);let l=L(r)||`src`in o&&L(o.src),u=`getFrame`in o?A(o):o;n&&(u=this._colorSubstitutionHelper.applyColorSubstitution(u,n)),this._applyAdditionalRenderProps&&!l&&i&&(u=this._colorSubstitutionHelper.tintImageData(u,i));let d=this.transformPt([0,0]),[f,p]=this.getTransformAngle(),m=this.transformSize(1),h=this._ctx;h.save(),h.setTransform({m11:a*m*f,m12:a*m*p,m21:-m*p,m22:m*f,m41:d[0],m42:d[1]}),h.drawImage(u,-s/2,-c/2,s,c),h.restore()}drawText(e,t){if(!t||t.length===0)return;this._textRasterizer||=new F;let n=Q(e,this.transformSize(a)),r=N({textString:t,font:n.font,symbol:e,supportsRichText:P(t)}),i=r?this._textRasterizer.rasterizeRichText(r,n):this._textRasterizer.rasterizeText(t,n);if(!i)return;let{size:o,anchorX:s,anchorY:c,canvas:l}=i,u=o[0]*(s+.5),d=o[1]*(c-.5),f=this._ctx,p=this.transformPt([0,0]),[m,h]=this.getTransformAngle();f.save(),f.setTransform({m11:1*m,m12:1*h,m21:-1*h,m22:1*m,m41:p[0]-1*u,m42:p[1]+1*d}),f.drawImage(l,0,0),f.restore()}drawPictureFill(e,t){if(!e)return;let{colorSubstitutions:n,height:r,offsetX:i,offsetY:a,rotation:o,scaleX:s,tintColor:c,url:l}=t,u=this._resourceManager.getResource(l);if(u==null)return;if(C(e))this._buildPath(e.rings,!0);else if(w(e))this._buildPath(e.paths,!0);else if(T(e))this._buildPath(X(e).rings,!0);else if(E(e))console.log(`CanvasDrawHelper.drawPictureFill - No implementation!`);else return;let d=this._ctx,f=L(l)||`src`in u&&L(u.src),p=`getFrame`in u?A(u):u;n&&(p=this._colorSubstitutionHelper.applyColorSubstitution(p,n));let m;if(this._applyAdditionalRenderProps){f||c&&(p=this._colorSubstitutionHelper.tintImageData(p,c)),m=d.createPattern(p,`repeat`);let e=this.transformSize(1);o||=0,i=i?e*i:0,a=a?e*a:0,r&&=e*r;let t=r?r/u.height:1,n=s&&r?s*r/u.width:1;if(o!==0||t!==1||n!==1||i!==0||a!==0){let e=new DOMMatrix;e.rotateSelf(0,0,-o).translateSelf(i,a).scaleSelf(n,t,1),m.setTransform(e)}}else m=d.createPattern(p,`repeat`);d.save(),d.fillStyle=m,d.fill(`evenodd`),d.restore()}drawPictureStroke(e,n){if(!e)return;let{colorSubstitutions:r,capStyle:i,joinStyle:a,miterLimit:s,tintColor:c,url:l,width:u}=n,d=this._resourceManager.getResource(l);if(d==null)return;let f;if(C(e))f=e.rings;else if(w(e))f=e.paths;else if(T(e))f=X(e).rings;else if(E(e)){console.log(`CanvasDrawHelper.drawPictureStroke - No implementation!`);return}else return;u||=d.width;let p=L(l)||`src`in d&&L(d.src),m=`getFrame`in d?A(d):d;r&&(m=this._colorSubstitutionHelper.applyColorSubstitution(m,r)),this._applyAdditionalRenderProps&&(p||c&&(m=this._colorSubstitutionHelper.tintImageData(m,c)));let h=Math.max(this.transformSize(o(u)),.5),g=h/m.width,_=this._ctx,v=_.createPattern(m,`repeat-y`);_.save(),this._setCapStyle(i),this._setJoinStyle(a),s!==void 0&&(_.miterLimit=s),_.lineWidth=h;let y,b;for(let e of f)if(e=t(e),$(e),!(!e||e.length<=1)){y=this.transformPt(e[0]);for(let t=1;t<e.length;t++){b=this.transformPt(e[t]);let n=Te(y,b),r=new DOMMatrix;r.translateSelf(0,y[1]-h/2).scaleSelf(g,g,1).rotateSelf(0,0,90-n),v.setTransform(r),_.strokeStyle=v,_.beginPath(),_.moveTo(y[0],y[1]),_.lineTo(b[0],b[1]),_.stroke(),y=b}}_.restore()}drawGradientFill(e,t){if(!e)return;let n;if(C(e))n=e.rings;else if(w(e))n=e.paths;else if(T(e))n=X(e).rings;else{q().error(`Unable to draw gradient fill`);return}this._buildPath(n,!0);let{angle:i,gradientMethod:a,gradientSize:s,gradientSizeUnits:c}=t,l=k.CIMGradientFill,g=t.gradientType??l.gradientType,_=-r(i??0),v=u();for(let e of n){let t=e?e.length:0;if(t>1)for(let n=0;n<t;n++){let t=this.transformPt(e[n]);(a===`Linear`||a===`Rectangular`)&&(t=j(t,-_)),d(v,t)}}let[y,b,x,S]=v,E=this._ctx;switch(E.save(),a){case`Buffered`:q().error(`Gradient method "${a}" currently unsupported.`);break;case`Linear`:{let e=(b+S)/2,n=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*(x-y),[r,i]=g===`Discrete`?[x,x-n]:[y+n,y],a=j([r,e],_),u=j([i,e],_),d=E.createLinearGradient(a[0],a[1],u[0],u[1]);M(d,t),E.fillStyle=d,E.fill(`evenodd`);break}case`Circular`:{let e=f(v),n=h(v)/2,r=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*n,[i,a]=g===`Discrete`?[n,n-r]:[r,0],u=E.createRadialGradient(e[0],e[1],i,e[0],e[1],a);M(u,t),E.fillStyle=u,E.fill(`evenodd`);break}case`Rectangular`:{let n=f(v),r=n[0],i=n[1],a=j(n,_),u=(n,r,i,o,s,c,l,u)=>{E.save(),this.pushClipPath(e);let d=j([s,c],_),f=j([l,u],_);E.beginPath(),E.moveTo(a[0],a[1]),E.lineTo(d[0],d[1]),E.lineTo(f[0],f[1]),E.lineTo(a[0],a[1]),E.clip();let p=j([n,r],_),m=j([i,o],_),h=E.createLinearGradient(p[0],p[1],m[0],m[1]);M(h,t),E.fillStyle=h,E.fill(`evenodd`),E.restore()},d=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*(p(v)/2),[h,C]=g===`Discrete`?[x,x-d]:[r+d,r];u(h,i,C,i,x,b,x,S),[h,C]=g===`Discrete`?[y,y+d]:[r-d,r],u(h,i,C,i,y,S,y,b),d=c===`Absolute`?this.transformSize(o(s)):R(s,l.gradientSize)*(m(v)/2);let[w,T]=g===`Discrete`?[S,S-d]:[i+d,i];u(r,w,r,T,x,S,y,S),[w,T]=g===`Discrete`?[b,b+d]:[i-d,i],u(r,w,r,T,y,b,x,b);break}}E.restore()}drawGradientStroke(e,n){let{capStyle:r,gradientMethod:i,gradientSize:a,gradientSizeUnits:s,joinStyle:c,miterLimit:l,width:u}=n;if(!e||u===0)return;let d;if(C(e))d=e.rings;else if(w(e))d=e.paths;else if(T(e))d=X(e).rings;else{q().error(`Unable to draw gradient stroke`);return}let f=n.gradientType??k.CIMGradientStroke.gradientType,p=Math.max(this.transformSize(o(u)),.5),m=this._ctx;m.save(),this._setCapStyle(r),this._setJoinStyle(c),l!==void 0&&(m.miterLimit=l),m.lineWidth=p;let h,g;for(let e of d){if(e=t(e),$(e),!e||e.length<=1)continue;let r=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let n=g[0]-h[0],i=g[1]-h[1];r+=Math.sqrt(n*n+i*i),h=g}let c=s===`Absolute`?this.transformSize(o(a)):R(a,k.CIMGradientStroke.gradientSize)*(i===`AcrossLine`?p:r),l=0;h=this.transformPt(e[0]);for(let t=1;t<e.length;t++){g=this.transformPt(e[t]);let a=g[0]-h[0],o=g[1]-h[1],s=Math.sqrt(a*a+o*o),u,d,_,v;switch(i){case`AcrossLine`:{let[e,t]=j([a/s,o/s],-Math.PI/2),n=p/2,r=f===`Discrete`?n:c-n;u=(h[0]+g[0])/2+e*r,d=(h[1]+g[1])/2+t*r,_=u-e*c,v=d-t*c;break}case`AlongLine`:{let e=a/s,t=o/s;f===`Discrete`?(u=h[0]-e*l,d=h[1]-t*l,_=u+e*c,v=d+t*c):(_=h[0]+e*(r-l),v=h[1]+t*(r-l),u=_-e*c,d=v-t*c);break}default:q().error(`Unrecognized gradient method:`,i),m.restore();return}let y=m.createLinearGradient(u,d,_,v);M(y,n),m.strokeStyle=y,m.beginPath(),m.moveTo(h[0],h[1]),m.lineTo(g[0],g[1]),m.stroke(),l+=s,h=g}}m.restore()}_buildPath(e,t){let n=this._ctx;if(n.beginPath(),e)for(let r of e){let e=r?r.length:0;if(e>1){let i=this.transformPt(r[0]);n.moveTo(i[0],i[1]);for(let t=1;t<e;t++)i=this.transformPt(r[t]),n.lineTo(i[0],i[1]);t&&n.closePath()}}}_setCapStyle(e){switch(e){case`Butt`:this._ctx.lineCap=`butt`;break;case`Round`:this._ctx.lineCap=`round`;break;case`Square`:this._ctx.lineCap=`square`}}_setJoinStyle(e){switch(e){case`Bevel`:this._ctx.lineJoin=`bevel`;break;case`Round`:this._ctx.lineJoin=`round`;break;case`Miter`:this._ctx.lineJoin=`miter`}}}function we(e,t,n){let r=I(e.separation,k.CIMHatchFill.separation)*n,i=I(e.rotation);if(r===0)return null;r<0&&(r=-r);let a=0,o=.5*r;for(;a>o;)a-=r;for(;a<-o;)a+=r;let s=_();v(s,t),s[0]-=o,s[1]-=o,s[2]+=o,s[3]+=o;let c=[[s[0],s[1]],[s[0],s[3]],[s[2],s[3]],[s[2],s[1]]];for(;i>180;)i-=180;for(;i<0;)i+=180;let l=Math.cos(i*G),u=Math.sin(i*G),d=-r*u,f=r*l,p=I(e.offsetX)*n,m=I(e.offsetY)*n;a=p*u-m*l;let h,g,y,b;h=y=Number.MAX_VALUE,g=b=-Number.MAX_VALUE;for(let e of c){let t=e[0],n=e[1],r=l*t+u*n,i=-u*t+l*n;h=Math.min(h,r),y=Math.min(y,i),g=Math.max(g,r),b=Math.max(b,i)}y=Math.floor(y/r)*r;let x=l*h-u*y-d*a/r,S=u*h+l*y-f*a/r,C=l*g-u*y-d*a/r,w=u*g+l*y-f*a/r,T=1+Math.round((b-y)/r),E=[];for(let e=0;e<T;e++)x+=d,S+=f,C+=d,w+=f,E.push([[x,S],[C,w]]);return{paths:E}}function Te(e,t){let n=t[0]-e[0],r=t[1]-e[1];return 180/Math.PI*Math.atan2(r,n)}const X=e=>e?{spatialReference:e.spatialReference,rings:[[[e.xmin,e.ymin],[e.xmin,e.ymax],[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin]]]}:null,Z=(e,t,n)=>{switch(e){case`ExtraLeading`:return 1+t/n;case`Multiple`:return t;case`Exact`:return t/n}};function Q(t,n=1){let r=se(t),i=ie(t.fontStyleName),a=t.fontFamilyName??e,{weight:o,style:s}=i,c=n*(t.height||5),l=ce(t.horizontalAlignment),u=le(t.verticalAlignment),d=z(t),f=z(t.haloSymbol),p=f==null?0:n*(t.haloSize??0),m=B(t.symbol),h=n*(V(t.symbol)||0),g=t.callout?.type===`CIMBackgroundCallout`?t.callout.backgroundSymbol:null,_=z(g),v=V(g),y=B(g);return{color:d,size:c,horizontalAlignment:l,verticalAlignment:u,font:{family:a,style:U(s),weight:H(o),decoration:r},outline:{size:h||0,color:m},halo:{size:p||0,color:f,style:s},backgroundColor:_,borderLine:v!=null&&y!=null?{size:v,color:y}:null,pixelRatio:1,premultiplyColors:!0}}function $(e){let t=e[0],n=1,r,i,a,o,s;for(;n<e.length;)r=e[n][0]-t[0],i=e[n][1]-t[1],o=r===0?Math.PI/2:i/r,a!==void 0&&Math.abs(o-a)<=1e-4?(e.splice(n-1,1),t=s):(s=t,t=e[n],n++),a=o}export{Y as CIMSymbolDrawHelper,Ce as CanvasDrawHelper,xe as EnvDrawHelper,Se as HittestDrawHelper,J as Transformation,G as cDegToRad,Z as lineGapType2LineHeight};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{bidiText as e}from"../../core/BidiText.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import r from"../../core/RandomLCG.js";import{px2pt as i}from"../../core/screenUtils.js";import{create as a,expandPointInPlace as o}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as s}from"../../geometry/support/boundsUtils.js";import{isCurvedGeometry as c}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as l}from"../../geometry/support/curves/densifyCurvedGeometry.js";import u from"../Font.js";import{loadGeometryOperatorsForEffect as d,loadGeometryOperatorsForPlacement as f}from"./CIMEffects.js";import{Placement as p}from"./CIMPlacements.js";import{EnvDrawHelper as m,CanvasDrawHelper as h,Transformation as g,lineGapType2LineHeight as _}from"./CIMSymbolDrawHelper.js";import{defaultCIMValues as v}from"./defaultCIMValues.js";import{fromCIMFontStyle as y}from"./fromCIMFontStyle.js";import{getNumericValue as b,fromCIMFontDecoration as x,getEffectsInflateSize as S}from"./utils.js";import{defaultPolylineSymbol2D as C}from"../support/defaults.js";import{cInfinity as w}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{magicLabelLineHeight as T,glyphSize as E,randomInsidePolygonTextureSize as D}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as O}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as k,getLineWidth as ee}from"../../views/2d/layers/graphics/graphicsUtils.js";const A=Math.PI,j=A/2,M=Math.PI/180,N=96/72,P=()=>n.getLogger(`esri.symbols.cim.CIMSymbolHelper`);function F(e){let t;switch(e.type){case`cim`:return e.data;case`web-style`:return e;case`simple-marker`:{let n=B.fromSimpleMarker(e);if(!n)throw Error(`InternalError: Cannot convert symbol to CIM`);t=n;break}case`picture-marker`:t=B.fromPictureMarker(e);break;case`simple-line`:t=B.fromSimpleLineSymbol(e);break;case`simple-fill`:t=B.fromSimpleFillSymbol(e);break;case`picture-fill`:t=B.fromPictureFillSymbol(e);break;case`text`:t=B.fromTextSymbol(e)}return{type:`CIMSymbolReference`,symbol:t}}function I(e,t,n){switch(t.type){case`CIMSymbolReference`:return I(e,t.symbol,n);case`CIMPointSymbol`:n??={x:0,y:0},e.drawSymbol(t,n);break;case`CIMLineSymbol`:n??={paths:[[[0,0],[10,0]]]},e.drawSymbol(t,n);break;case`CIMPolygonSymbol`:n??={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]},e.drawSymbol(t,n);break;case`CIMTextSymbol`:e.drawSymbol(t,{x:0,y:0});break;case`CIMVectorMarker`:{let n=new p;e.drawMarker(t,n);break}}return e.envelope()}function L(e){if(!e)return 0;switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAtExtremities`:case`CIMMarkerPlacementAtMeasuredUnits`:case`CIMMarkerPlacementAtRatioPositions`:case`CIMMarkerPlacementOnLine`:case`CIMMarkerPlacementOnVertices`:return Math.abs(e.offset??0);default:return 0}}class R{static getSymbolInflateSize(e,t,n,r,i){return e||=[0,0,0,0],t?this._getInflateSize(e,t,n,r,i):e}static safeSize(e){let t=Math.max(Math.abs(e[0]),Math.abs(e[2])),n=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+n*n)}static getPointSymbolHaloPadding(e,t){let n=b(e.haloSize);if(n<=0||!e.haloSymbol?.symbolLayers?.some(e=>e.enable!==!1))return 0;let r=this.getSymbolInflateSize([0,0,0,0],e.haloSymbol,t,0,null);return n+this.safeSize(r)}static _vectorMarkerBounds(e,t,n,r){let i=!0,o=a();if(t?.markerGraphics)for(let a of t.markerGraphics){let t=[0,0,0,0];a.geometry&&(s(o,a.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,a.symbol,n,0,r),o[0]+=t[0],o[1]+=t[1],o[2]+=t[2],o[3]+=t[3],i?(e[0]=o[0],e[1]=o[1],e[2]=o[2],e[3]=o[3],i=!1):(e[0]=Math.min(e[0],o[0]),e[1]=Math.min(e[1],o[1]),e[2]=Math.max(e[2],o[2]),e[3]=Math.max(e[3],o[3])))}return e}static _getInflateSize(e,t,n,r,i){if(Z(t)){let a=this._getLayersInflateSize(e,t.symbolLayers,n,r,i),o=S(t.effects);if(o>0&&(a[0]-=o,a[1]-=o,a[2]+=o,a[3]+=o),t.type===`CIMPointSymbol`){let e=this.getPointSymbolHaloPadding(t,n);e>0&&(a[0]-=e,a[1]-=e,a[2]+=e,a[3]+=e)}return a}return this._getTextInflatedSize(e,t,i)}static _getLayersInflateSize(e,t,n,r,i){let s=!0;if(!t)return e;for(let c of t){if(!c)continue;let t=[0,0,0,0];switch(c.type){case`CIMSolidFill`:case`CIMPictureFill`:case`CIMHatchFill`:case`CIMGradientFill`:break;case`CIMSolidStroke`:case`CIMPictureStroke`:case`CIMGradientStroke`:{let e=c,n=e.width;n!=null&&(e.capStyle===`Square`||e.joinStyle===`Miter`?n/=1.4142135623730951:n/=2,t[0]=-n,t[1]=-n,t[2]=n,t[3]=n);break}case`CIMCharacterMarker`:case`CIMVectorMarker`:case`CIMPictureMarker`:{let e=c;if(c.type===`CIMVectorMarker`){let e=c;if(t=this._vectorMarkerBounds(t,e,n,i),e.frame){let n=(e.frame.xmin+e.frame.xmax)/2,r=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=n,t[1]-=r,t[2]-=n,t[3]-=r,e.size!=null){let n=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=n,t[1]*=n,t[2]*=n,t[3]*=n}}}else if(c.type===`CIMPictureMarker`){let r=c,i=n.getResource(r.url),a=1;if(i!=null&&i.height&&(a=i.width/i.height),e.size!=null){let n=e.size/2,i=e.size*a*(r.scaleX??1)/2;t=[-i,-n,i,n]}}else if(e.size!=null){let n=e.size/2;t=[-n,-n,n,n]}if(e.anchorPoint){let n,r;e.anchorPointUnits===`Absolute`?(n=e.anchorPoint.x,r=e.anchorPoint.y):(n=e.anchorPoint.x*(t[2]-t[0]),r=e.anchorPoint.y*(t[3]-t[1]));let i=1.25*Math.sqrt(n*n+r*r);t[0]-=i,t[1]-=i,t[2]+=i,t[3]+=i}let s=b(e.rotation);if(e.rotateClockwise&&(s=-s),r&&(s-=r),s){let e=M*s,n=Math.cos(e),r=Math.sin(e),i=a([w,w,-w,-w]);o(i,[t[0]*n-t[1]*r,t[0]*r+t[1]*n]),o(i,[t[0]*n-t[3]*r,t[0]*r+t[3]*n]),o(i,[t[2]*n-t[1]*r,t[2]*r+t[1]*n]),o(i,[t[2]*n-t[3]*r,t[2]*r+t[3]*n]),t=i}let l=b(e.offsetX),u=b(e.offsetY);if(r){let e=M*r,t=Math.cos(e),n=Math.sin(e),i=l*t-u*n,a=l*n+u*t;l=i,u=a}t[0]+=l,t[1]+=u,t[2]+=l,t[3]+=u;let d=L(e.markerPlacement);d>0&&(t[0]-=d,t[1]-=d,t[2]+=d,t[3]+=d);break}}let l=S(c.effects);l>0&&(t[0]-=l,t[1]-=l,t[2]+=l,t[3]+=l),s?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],s=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}static _getTextInflatedSize(e,t,n){let r=k(t.height??v.CIMTextSymbol.height);if(e[0]=-r/2,e[1]=-r/2,e[2]=r/2,e[3]=r/2,!n)return e;let i=n.get(t);if(!i||!z(i.glyphMosaicItems))return e;let{lineGapType:a,lineGap:o}=t,s=a?_(a,o??0,r):0,c=t.horizontalAlignment??v.CIMTextSymbol.horizontalalignment,l=t.verticalAlignment??v.CIMTextSymbol.verticalalignment,u=t.callout?.type===`CIMBackgroundCallout`,d=O(i.glyphMosaicItems,{scale:r/E,angle:b(t.angle),xOffset:b(t.offsetX),yOffset:b(t.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:ee(t.lineWidth),lineHeight:T*Math.max(.25,Math.min(s||1,4)),decoration:t.font.decoration||`none`,useCIMAngleBehavior:!0,hasBackground:u}).boundsT,f=Math.sqrt(d.width*d.width+d.height*d.height);return e[0]-=d.x+f,e[1]-=d.y-f,e[2]+=d.x+f,e[3]+=-d.y+f,e}}function z(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}class B{static getEnvelope(e,t,n,r){if(!e)return null;let i=new m(n,r);if(Array.isArray(e)){let n;for(let r of e)n?n.union(I(i,r,t)):n=I(i,r,t);return n}return I(i,e,t)}static expandEnvelopeForPointSymbolHalo(e,t,n,r=0){let i=R.getPointSymbolHaloPadding(t,n);if(i<=0)return;let a=i+r;e.x-=a,e.y-=a,e.width+=2*a,e.height+=2*a}static getTextureInfo(e,t,n,r,i,a=0){let o=r??this.getEnvelope(e,null,t);if(!o)return[0,0,0,0,1];let s=Math.max(o.width,o.height)*N,c=i==null?1:Math.max(i/s,1);c*=N,o.x*=c,o.y*=c,o.width*=c,o.height*=c,o.width=Math.max(Math.ceil(o.x+o.width)-Math.floor(o.x),1)-1,o.height=Math.max(Math.ceil(o.y+o.height)-Math.floor(o.y),1)-1;let l=o.x+o.width*.5,u=o.y+o.height*.5;if(l+=o.x-Math.floor(o.x),u+=o.y-Math.floor(o.y),!r){let e=Math.ceil(a*c);o.width+=n+2*e,o.height+=n+2*e,l+=n/2,u+=n/2}return[o.width,o.height,l,u,c]}static getTextureAnchor(e,t,n,r=0){let[i,a,o,s,c]=this.getTextureInfo(e,t,2,null,n,r);return[-o/i,-s/a,a/c*N]}static rasterize(e,t,n,r,i=!0,a,o=0){let[s,c,l,u,d]=this.getTextureInfo(t,r,2,n,a,o);e.width=s,e.height=c;let f=e.getContext(`2d`,{willReadFrequently:!0}),m=g.createScale(d,-d);m.translate(s*.5-l,c*.5+u);let _=new h(f,r,m);switch(t.type){case`CIMPointSymbol`:_.drawSymbol(t,{type:`point`,x:0,y:0});break;case`CIMVectorMarker`:{let e=new p;_.drawMarker(t,e);break}}let v=f.getImageData(0,0,e.width,e.height),y=new Uint8Array(v.data);if(i){let e;for(let t=0;t<y.length;t+=4)e=y[t+3]/255,y[t]=y[t]*e,y[t+1]=y[t+1]*e,y[t+2]=y[t+2]*e}return[y,e.width,e.height,-l/s,-u/c,d]}static fromTextSymbol(e){let{text:t}=e;return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,anchorPointUnits:`Relative`,dominantSizeAxis3D:`Y`,size:10,billboardMode3D:`FaceNearPlane`,frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{x:0,y:0},symbol:B.createCIMTextSymbolfromTextSymbol(e),textString:t}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:`Display`}}static fromPictureFillSymbol(e){let{height:t,outline:n,width:r,xoffset:i,xscale:a,yoffset:o,yscale:s}=e,c=[],l={type:`CIMPolygonSymbol`,symbolLayers:c};if(n){let e=$(n);e&&c.push(e)}let u=e.url;e.type===`esriPFS`&&e.imageData&&(u=e.imageData);let d=`angle`in e?e.angle??0:0,f=(r??0)*(a||1),p=(t??0)*(s||1);return c.push({type:`CIMPictureFill`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:u,height:p,width:f,offsetX:b(i),offsetY:b(o),rotation:b(-d),colorSubstitutions:null}),l}static fromSimpleFillSymbol(e){let{color:n,style:r,outline:a}=e,o=[],s={type:`CIMPolygonSymbol`,symbolLayers:o};if(a){let e=$(a);e&&o.push(e)}if(r&&r!==`solid`&&r!==`none`&&r!==`esriSFSSolid`&&r!==`esriSFSNull`){let e={type:`CIMLineSymbol`,symbolLayers:[{type:`CIMSolidStroke`,color:K(n),capStyle:`Butt`,joinStyle:`Miter`,width:.75}]},a=0,s=i(te(r)?8:10);switch(r){case`vertical`:case`esriSFSVertical`:a=90;break;case`forward-diagonal`:case`esriSFSForwardDiagonal`:a=-45;break;case`backward-diagonal`:case`esriSFSBackwardDiagonal`:a=45;break;case`cross`:case`esriSFSCross`:a=0;break;case`diagonal-cross`:case`esriSFSDiagonalCross`:a=-45}o.push({type:`CIMHatchFill`,lineSymbol:e,offsetX:0,offsetY:0,rotation:a,separation:s}),r===`cross`||r===`esriSFSCross`?o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:90,separation:s}):(r===`diagonal-cross`||r===`esriSFSDiagonalCross`)&&o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else r&&(r===`solid`||r===`esriSFSSolid`)&&o.push({type:`CIMSolidFill`,enable:!0,color:K(n)});return s}static fromSimpleLineSymbol(e){let{cap:t,color:n,join:r,marker:i,miterLimit:a,style:o,width:s}=e,c=o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`,l=null;c&&(l=[{type:`CIMGeometricEffectDashes`,dashTemplate:X(o,t),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]);let u=[];if(i){let e;switch(i.placement){case`begin-end`:e=`Both`;break;case`begin`:e=`JustBegin`;break;case`end`:e=`JustEnd`;break;default:e=`None`}let t=B.fromSimpleMarker(i,s,n).symbolLayers[0];t.markerPlacement={type:`CIMMarkerPlacementAtExtremities`,placePerPart:!1,angleToLine:!0,keepUpright:!1,offset:0,extremityPlacement:e,offsetAlongLine:0},u.push(t)}return u.push({type:`CIMSolidStroke`,color:o!==`none`&&o!==`esriSLSNull`?K(n):[0,0,0,0],capStyle:H(t),joinStyle:U(r),miterLimit:a,width:s,effects:l}),{type:`CIMLineSymbol`,symbolLayers:u}}static fromPictureMarker(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url;return e.type===`esriPMS`&&e.imageData&&(o=e.imageData),{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMPictureMarker`,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:b(i),offsetY:b(a),rotation:b(-t)}]}}static createCIMTextSymbolfromTextSymbol(t){let{angle:n,color:r,font:i,haloColor:a,haloSize:o,horizontalAlignment:s,kerning:c,lineWidth:l,text:u,verticalAlignment:d,xoffset:f,yoffset:p,backgroundColor:m,borderLineColor:h,borderLineSize:g}=t,_,v,y,x,S,C;i&&(_=i.family,v=i.style,y=i.weight,x=i.size,S=i.decoration);let w=!1;return u&&(w=e(u)[1]),(m||g)&&(C={type:`CIMBackgroundCallout`,margin:null,backgroundSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:K(m)},{type:`CIMSolidStroke`,enable:!0,color:K(h),width:g??0}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:`CIMTextSymbol`,angle:n,blockProgression:2,depth3D:1,extrapolateBaselines:!0,fontEffects:0,fontEncoding:1,fontFamilyName:_||`Arial`,fontStyleName:q(v,y),fontType:0,haloSize:o,height:x,hinting:1,horizontalAlignment:W(s??`center`),kerning:c,letterWidth:100,ligatures:!0,lineGapType:`Multiple`,lineWidth:l,offsetX:b(f),offsetY:b(p),strikethrough:S===`line-through`,underline:S===`underline`,symbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:K(r)}]},haloSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:K(a)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:`Normal`,textDirection:+!!w,verticalAlignment:G(d??`baseline`),verticalGlyphOrientation:0,wordSpacing:100,billboardMode3D:2,callout:C}}static createPictureMarkerRasterizationParam(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url??e.source?.url??e.source?.imageData;return o?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureMarker`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:b(i),offsetY:b(a),rotation:b(-t)}}:null}static createPictureFillRasterizationParam(e){let{width:t,height:n,xoffset:r,yoffset:i,url:a}=e;return a?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureFill`,enable:!0,scaleX:1,textureFilter:`Picture`,tintColor:null,url:a,width:t,height:n,offsetX:b(r),offsetY:b(i),rotation:0}}:null}static fromSimpleMarker(e,t,n){let{style:r}=e,i=e.color??n;if(r===`path`||r===`esriSMSPath`){let t=[];if(`outline`in e&&e.outline){let n=e.outline;t.push({type:`CIMSolidStroke`,enable:!0,width:n.width,color:K(n.color),path:e.path})}t.push({type:`CIMSolidFill`,enable:!0,color:K(i),path:e.path});let[n,r]=Q(`square`);return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:-b(e.angle),size:b(e.size||6),offsetX:b(e.xoffset),offsetY:b(e.yoffset),scaleSymbolsProportionally:!1,frame:n,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:r,symbol:{type:`CIMPolygonSymbol`,symbolLayers:t}}]}]}}let a=[],o=e.size,s,c;if(`outline`in e&&e.outline&&e.outline.style!==`none`&&e.outline.style!==`esriSLSNull`){let t=e.outline,n=t.style!==`solid`&&t.style!==`esriSLSSolid`;[s,c]=n?Q(r,e.size):Q(r);let i=t.width??C.width;if(n){let t=i/e.size,n=(s.xmax-s.xmin)*t/2,r=(s.ymax-s.ymin)*t/2;s.xmin-=n,s.xmax+=n,s.ymin-=r,s.ymax+=r,o&&(o+=i)}let l=(e.style===`cross`||e.style===`x`)&&e?.outline.style!==`dot`&&e?.outline.style!==`short-dot`?`FullPattern`:`HalfGap`,u=n?[{type:`CIMGeometricEffectAddControlPoints`},{type:`CIMGeometricEffectDashes`,dashTemplate:X(t.style,null).map(e=>t.width&&t.width>0?e*t.width:e),lineDashEnding:l,controlPointEnding:`FullPattern`}]:void 0;a.push({type:`CIMSolidStroke`,capStyle:n?`Round`:`Butt`,enable:!0,width:i,color:K(t.color),effects:u})}else t&&e.type===`line-marker`&&(e.style===`cross`||e.style===`x`)?([s,c]=Q(r),a.push({type:`CIMSolidStroke`,enable:!0,width:t,color:K(i)})):[s,c]=Q(r);a.push({type:`CIMSolidFill`,enable:!0,color:K(i)});let l={type:`CIMPolygonSymbol`,symbolLayers:a};return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:b(-e.angle),size:b(o||t*6),offsetX:b(e.xoffset),offsetY:b(e.yoffset),scaleSymbolsProportionally:!1,frame:s,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:c,symbol:l}]}]}}static fromCIMHatchFill(e,n){let r=n*(e.separation??v.CIMHatchFill.separation),i=r/2,a=t(e.lineSymbol);a.symbolLayers?.forEach(e=>{switch(e.type){case`CIMSolidStroke`:e.width!=null&&(e.width*=n),e.effects?.forEach(e=>{e.type===`CIMGeometricEffectDashes`&&(e.dashTemplate=e.dashTemplate?.map(e=>e*n))});break;case`CIMVectorMarker`:{e.size!=null&&(e.size*=n);let t=e.markerPlacement;t!=null&&`placementTemplate`in t&&(t.placementTemplate=t.placementTemplate.map(e=>e*n));break}}});let o=this._getLineSymbolPeriod(a)||4;for(;o<4;)o*=2;let s=o/2;return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-s,xmax:s,ymin:-i,ymax:i},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{paths:[[[-s,0],[s,0]]]},symbol:a}],size:r}}static async normalizeSymbolAndFetchResources(e,t,n=null){if(!e)return;let r=[];if(`effects`in e&&e.effects)for(let t of e.effects)r.push(d(t));r.push(a(e));let i=e=>{if(e.effects)for(let t of e.effects)r.push(d(t));if(e.type===`CIMVectorMarker`){for(let t of e.markerGraphics)c(t.geometry)&&(t.geometry=l(t.geometry,{maxDeviation:.01}));e.markerPlacement&&r.push(f(e.markerPlacement))}`url`in e&&e.url&&r.push(t.fetchResource(e.url,{signal:n})),`symbol`in e&&r.push(a(e.symbol))};V(e,i),`haloSymbol`in e&&V(e.haloSymbol,i),await Promise.all(r);async function a(e){if(e.type!==`CIMTextSymbol`)return;let{fontFamilyName:n,fontStyleName:r}=e;if(n?.toLowerCase()===`calcitewebcoreicons`)return;let{style:i,weight:a}=y(r),o=x(e),s=new u({family:n,style:i,weight:a,decoration:o});try{await t.loadFont(s)}catch{P().error(`Unsupported font ${n} in CIM symbol`)}}}static _getLineSymbolPeriod(e){if(e){let t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers){for(let t of e.symbolLayers)if(t){let e=this._getEffectsRepeat(t.effects);if(e)return e;switch(t.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:case`CIMObjectMarker3D`:case`CIMglTFMarker3D`:{let e=this._getPlacementRepeat(t.markerPlacement);if(e)return e}}}}}return 0}static _getEffectsRepeat(e){if(e){for(let t of e)if(t)switch(t.type){case`CIMGeometricEffectDashes`:{let e=t.dashTemplate;if(e&&e.length){let t=0;for(let n of e)t+=n;return e.length&1&&(t*=2),t}break}case`CIMGeometricEffectWave`:return t.period;default:P().error(`unsupported geometric effect type ${t.type}`)}}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAlongLineVariableSize`:{let t=e.placementTemplate;if(t&&t.length){let e=0;for(let n of t)e+=+n;return t.length&1&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){let t=e.markerPlacement,n={...e};n.markerPlacement=null,n.anchorPoint=null;let a=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100,c,l,u,d;if(t.gridType===`Random`){let e=i(D),n=Math.max(Math.floor(e/a),1),f=Math.max(Math.floor(e/o),1);c=n*a/2,l=f*o/2,u=l*2;let p=new r(t.seed),m=s*a/1.5,h=s*o/1.5;d=[];for(let e=0;e<n;e++)for(let t=0;t<f;t++){let n=e*a-c+m*(.5-p.getFloat()),r=t*o-l+h*(.5-p.getFloat());d.push({x:n,y:r}),e===0&&d.push({x:n+c*2,y:r}),t===0&&d.push({x:n,y:r+l*2})}}else t.shiftOddRows===!0?(c=a/2,l=o,u=o*2,d=[{x:-c,y:0},{x:c,y:0},{x:0,y:l},{x:0,y:-l}]):(c=a/2,l=o/2,u=o,d=[{x:-a,y:0},{x:0,y:-o},{x:-a,y:-o},{x:0,y:0},{x:a,y:0},{x:0,y:o},{x:a,y:o},{x:-a,y:o},{x:a,y:-o}]);let f=d.map(e=>({type:`CIMMarkerGraphic`,geometry:e,symbol:{type:`CIMPointSymbol`,symbolLayers:[n]}}));return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-c,xmax:c,ymin:-l,ymax:l},markerGraphics:f,size:u}}}function V(e,t){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:{let n=e.symbolLayers;if(!n)return;for(let e of n)if(t(e),e.type===`CIMVectorMarker`){let n=e.markerGraphics;if(!n)continue;for(let e of n)if(e){let n=e.symbol;n&&V(n,t)}}break}}}const H=e=>{if(!e)return`Butt`;switch(e){case`butt`:return`Butt`;case`square`:return`Square`;case`round`:return`Round`}},U=e=>{if(!e)return`Miter`;switch(e){case`miter`:return`Miter`;case`round`:return`Round`;case`bevel`:return`Bevel`}},W=e=>{if(e==null)return`Center`;switch(e){case`left`:return`Left`;case`right`:return`Right`;case`center`:return`Center`;case`justify`:return`Justify`}},G=e=>{if(e==null)return`Center`;switch(e){case`baseline`:return`Baseline`;case`top`:return`Top`;case`middle`:return`Center`;case`bottom`:return`Bottom`}},K=e=>{if(!e)return[0,0,0,0];let{r:t,g:n,b:r,a:i}=e;return[t,n,r,i*255]},q=(e,t)=>{let n=J(t),r=Y(e);return n&&r?`${n}-${r}`:`${n}${r}`},J=e=>{if(!e)return``;switch(e.toLowerCase()){case`bold`:case`bolder`:return`bold`}return``},Y=e=>{if(!e)return``;switch(e.toLowerCase()){case`italic`:case`oblique`:return`italic`}return``},X=(e,t)=>{let n=.001,r=t===`butt`;switch(e){case`dash`:case`esriSLSDash`:return r?[4,3]:[3,4];case`dash-dot`:case`esriSLSDashDot`:return r?[4,3,1,3]:[3,4,n,4];case`dot`:case`esriSLSDot`:return r?[1,3]:[n,4];case`long-dash`:case`esriSLSLongDash`:return r?[8,3]:[7,4];case`long-dash-dot`:case`esriSLSLongDashDot`:return r?[8,3,1,3]:[7,4,n,4];case`long-dash-dot-dot`:case`esriSLSDashDotDot`:return r?[8,3,1,3,1,3]:[7,4,n,4,n,4];case`short-dash`:case`esriSLSShortDash`:return r?[4,1]:[3,2];case`short-dash-dot`:case`esriSLSShortDashDot`:return r?[4,1,1,1]:[3,2,n,2];case`short-dash-dot-dot`:case`esriSLSShortDashDotDot`:return r?[4,1,1,1,1,1]:[3,2,n,2,n,2];case`short-dot`:case`esriSLSShortDot`:return r?[1,1]:[n,2];case`solid`:case`esriSLSSolid`:case`none`:return P().error(`Unexpected: style does not require rasterization`),[0,0];default:return P().error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function Z(e){return e.symbolLayers!==void 0}const Q=(e,t=100)=>{let n=t/2,r,i,a=e;if(a===`circle`||a===`esriSMSCircle`){let e=Math.acos(1-.25/n),t=Math.ceil(A/e/4);t===0&&(t=1),e=j/t,t*=4;let a=[];a.push([n,0]);for(let r=1;r<t;r++)a.push([n*Math.cos(r*e),-n*Math.sin(r*e)]);a.push([n,0]),r={rings:[a]},i={xmin:-n,ymin:-n,xmax:n,ymax:n}}else if(a===`cross`||a===`esriSMSCross`)r={paths:[[[0,n],[0,-n]],[[n,0],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`diamond`||a===`esriSMSDiamond`)r={rings:[[[-n,0],[0,n],[n,0],[0,-n],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`square`||a===`esriSMSSquare`)r={rings:[[[-n,-n],[-n,n],[n,n],[n,-n],[-n,-n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`x`||a===`esriSMSX`)r={paths:[[[n,n],[-n,-n]],[[n,-n],[-n,n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`triangle`||a===`esriSMSTriangle`){let e=t*.5773502691896257,n=-e,a=2/3*t,o=a-t;r={rings:[[[n,o],[0,a],[e,o],[n,o]]]},i={xmin:n,ymin:o,xmax:e,ymax:a}}else a===`arrow`&&(r={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n});return[i,r]},te=e=>e===`vertical`||e===`horizontal`||e===`cross`||e===`esriSFSCross`||e===`esriSFSVertical`||e===`esriSFSHorizontal`;function $(e){if(!e)return null;let t=null,{cap:n,color:r,join:i,miterLimit:a,style:o,width:s}=e;return o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`&&(t=[{type:`CIMGeometricEffectDashes`,dashTemplate:X(o,n),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]),{type:`CIMSolidStroke`,color:o!==`esriSLSNull`&&o!==`none`?K(r):[0,0,0,0],capStyle:H(n),joinStyle:U(i),miterLimit:a,width:s,effects:t}}export{B as CIMSymbolHelper,R as CIMSymbolInflatedSizeHelper,H as capTypeToEnum,V as forEachSymbolLayer,X as slsDashToTemplateArray,F as symbolToCIM};
2
+ import{bidiText as e}from"../../core/BidiText.js";import"../../core/has.js";import{clone as t}from"../../core/lang.js";import n from"../../core/Logger.js";import{isAbortError as r}from"../../core/promiseUtils.js";import i from"../../core/RandomLCG.js";import{px2pt as a}from"../../core/screenUtils.js";import{create as o,expandPointInPlace as s}from"../../geometry/support/aaBoundingRect.js";import{getBoundsXY as c}from"../../geometry/support/boundsUtils.js";import{isCurvedGeometry as l}from"../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as u}from"../../geometry/support/curves/densifyCurvedGeometry.js";import d from"../Font.js";import{loadGeometryOperatorsForEffect as f,loadGeometryOperatorsForPlacement as p}from"./CIMEffects.js";import{Placement as m}from"./CIMPlacements.js";import{EnvDrawHelper as h,CanvasDrawHelper as g,Transformation as _,lineGapType2LineHeight as v}from"./CIMSymbolDrawHelper.js";import{defaultCIMValues as y}from"./defaultCIMValues.js";import{fromCIMFontStyle as b}from"./fromCIMFontStyle.js";import{OverrideHelper as x}from"./OverrideHelper.js";import{getNumericValue as S,fromCIMFontDecoration as C,getEffectsInflateSize as w}from"./utils.js";import{defaultPolylineSymbol2D as T}from"../support/defaults.js";import{cInfinity as E}from"../../views/2d/engine/vectorTiles/GeometryUtils.js";import{magicLabelLineHeight as D,glyphSize as O,randomInsidePolygonTextureSize as k}from"../../views/2d/engine/webgl/definitions.js";import{shapeTextResource as A}from"../../views/2d/engine/webgl/mesh/templates/shapingUtils.js";import{roundPtToWholePixel as ee,getLineWidth as j}from"../../views/2d/layers/graphics/graphicsUtils.js";const M=Math.PI,N=M/2,P=Math.PI/180,F=96/72,I=()=>n.getLogger(`esri.symbols.cim.CIMSymbolHelper`);function L(e){let t;switch(e.type){case`cim`:return e.data;case`web-style`:return e;case`simple-marker`:{let n=V.fromSimpleMarker(e);if(!n)throw Error(`InternalError: Cannot convert symbol to CIM`);t=n;break}case`picture-marker`:t=V.fromPictureMarker(e);break;case`simple-line`:t=V.fromSimpleLineSymbol(e);break;case`simple-fill`:t=V.fromSimpleFillSymbol(e);break;case`picture-fill`:t=V.fromPictureFillSymbol(e);break;case`text`:t=V.fromTextSymbol(e)}return{type:`CIMSymbolReference`,symbol:t}}async function te(e,t,n,i,a){let o,s=L(e);if(s.type===`web-style`)try{let e=L(await s.fetchSymbol({acceptedFormats:[`cim`,`web`]}));if(e.type===`web-style`)return null;o=e}catch(e){return r(e),null}else o=s;return x.resolveSymbolOverrides(o,t,n,null,i,null,a)}function R(e,t,n){switch(t.type){case`CIMSymbolReference`:return R(e,t.symbol,n);case`CIMPointSymbol`:n??={x:0,y:0},e.drawSymbol(t,n);break;case`CIMLineSymbol`:n??={paths:[[[0,0],[10,0]]]},e.drawSymbol(t,n);break;case`CIMPolygonSymbol`:n??={rings:[[[0,0],[0,10],[10,10],[10,0],[0,0]]]},e.drawSymbol(t,n);break;case`CIMTextSymbol`:e.drawSymbol(t,{x:0,y:0});break;case`CIMVectorMarker`:{let n=new m;e.drawMarker(t,n);break}}return e.envelope()}function ne(e){if(!e)return 0;switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAtExtremities`:case`CIMMarkerPlacementAtMeasuredUnits`:case`CIMMarkerPlacementAtRatioPositions`:case`CIMMarkerPlacementOnLine`:case`CIMMarkerPlacementOnVertices`:return Math.abs(e.offset??0);default:return 0}}class z{static getSymbolInflateSize(e,t,n,r,i){return e||=[0,0,0,0],t?this._getInflateSize(e,t,n,r,i):e}static safeSize(e){let t=Math.max(Math.abs(e[0]),Math.abs(e[2])),n=Math.max(Math.abs(e[1]),Math.abs(e[3]));return Math.sqrt(t*t+n*n)}static getPointSymbolHaloPadding(e,t){let n=S(e.haloSize);if(n<=0||!e.haloSymbol?.symbolLayers?.some(e=>e.enable!==!1))return 0;let r=this.getSymbolInflateSize([0,0,0,0],e.haloSymbol,t,0,null);return n+this.safeSize(r)}static _vectorMarkerBounds(e,t,n,r){let i=!0,a=o();if(t?.markerGraphics)for(let o of t.markerGraphics){let t=[0,0,0,0];o.geometry&&(c(a,o.geometry),t[0]=0,t[1]=0,t[2]=0,t[3]=0,this.getSymbolInflateSize(t,o.symbol,n,0,r),a[0]+=t[0],a[1]+=t[1],a[2]+=t[2],a[3]+=t[3],i?(e[0]=a[0],e[1]=a[1],e[2]=a[2],e[3]=a[3],i=!1):(e[0]=Math.min(e[0],a[0]),e[1]=Math.min(e[1],a[1]),e[2]=Math.max(e[2],a[2]),e[3]=Math.max(e[3],a[3])))}return e}static _getInflateSize(e,t,n,r,i){if(re(t)){let a=this._getLayersInflateSize(e,t.symbolLayers,n,r,i),o=w(t.effects);if(o>0&&(a[0]-=o,a[1]-=o,a[2]+=o,a[3]+=o),t.type===`CIMPointSymbol`){let e=this.getPointSymbolHaloPadding(t,n);e>0&&(a[0]-=e,a[1]-=e,a[2]+=e,a[3]+=e)}return a}return this._getTextInflatedSize(e,t,i)}static _getLayersInflateSize(e,t,n,r,i){let a=!0;if(!t)return e;for(let c of t){if(!c)continue;let t=[0,0,0,0];switch(c.type){case`CIMSolidFill`:case`CIMPictureFill`:case`CIMHatchFill`:case`CIMGradientFill`:break;case`CIMSolidStroke`:case`CIMPictureStroke`:case`CIMGradientStroke`:{let e=c,n=e.width;n!=null&&(e.capStyle===`Square`||e.joinStyle===`Miter`?n/=1.4142135623730951:n/=2,t[0]=-n,t[1]=-n,t[2]=n,t[3]=n);break}case`CIMCharacterMarker`:case`CIMVectorMarker`:case`CIMPictureMarker`:{let e=c;if(c.type===`CIMVectorMarker`){let e=c;if(t=this._vectorMarkerBounds(t,e,n,i),e.frame){let n=(e.frame.xmin+e.frame.xmax)/2,r=(e.frame.ymin+e.frame.ymax)/2;if(t[0]-=n,t[1]-=r,t[2]-=n,t[3]-=r,e.size!=null){let n=e.size/(e.frame.ymax-e.frame.ymin);t[0]*=n,t[1]*=n,t[2]*=n,t[3]*=n}}}else if(c.type===`CIMPictureMarker`){let r=c,i=n.getResource(r.url),a=1;if(i!=null&&i.height&&(a=i.width/i.height),e.size!=null){let n=e.size/2,i=e.size*a*(r.scaleX??1)/2;t=[-i,-n,i,n]}}else if(e.size!=null){let n=e.size/2;t=[-n,-n,n,n]}if(e.anchorPoint){let n,r;e.anchorPointUnits===`Absolute`?(n=e.anchorPoint.x,r=e.anchorPoint.y):(n=e.anchorPoint.x*(t[2]-t[0]),r=e.anchorPoint.y*(t[3]-t[1]));let i=1.25*Math.sqrt(n*n+r*r);t[0]-=i,t[1]-=i,t[2]+=i,t[3]+=i}let a=S(e.rotation);if(e.rotateClockwise&&(a=-a),r&&(a-=r),a){let e=P*a,n=Math.cos(e),r=Math.sin(e),i=o([E,E,-E,-E]);s(i,[t[0]*n-t[1]*r,t[0]*r+t[1]*n]),s(i,[t[0]*n-t[3]*r,t[0]*r+t[3]*n]),s(i,[t[2]*n-t[1]*r,t[2]*r+t[1]*n]),s(i,[t[2]*n-t[3]*r,t[2]*r+t[3]*n]),t=i}let l=S(e.offsetX),u=S(e.offsetY);if(r){let e=P*r,t=Math.cos(e),n=Math.sin(e),i=l*t-u*n,a=l*n+u*t;l=i,u=a}t[0]+=l,t[1]+=u,t[2]+=l,t[3]+=u;let d=ne(e.markerPlacement);d>0&&(t[0]-=d,t[1]-=d,t[2]+=d,t[3]+=d);break}}let l=w(c.effects);l>0&&(t[0]-=l,t[1]-=l,t[2]+=l,t[3]+=l),a?(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],a=!1):(e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3]))}return e}static _getTextInflatedSize(e,t,n){let r=ee(t.height??y.CIMTextSymbol.height);if(e[0]=-r/2,e[1]=-r/2,e[2]=r/2,e[3]=r/2,!n)return e;let i=n.get(t);if(!i||!B(i.glyphMosaicItems))return e;let{lineGapType:a,lineGap:o}=t,s=a?v(a,o??0,r):0,c=t.horizontalAlignment??y.CIMTextSymbol.horizontalalignment,l=t.verticalAlignment??y.CIMTextSymbol.verticalalignment,u=t.callout?.type===`CIMBackgroundCallout`,d=A(i.glyphMosaicItems,{scale:r/O,angle:S(t.angle),xOffset:S(t.offsetX),yOffset:S(t.offsetY),horizontalAlignment:c,verticalAlignment:l,maxLineWidth:j(t.lineWidth),lineHeight:D*Math.max(.25,Math.min(s||1,4)),decoration:t.font.decoration||`none`,useCIMAngleBehavior:!0,hasBackground:u}).boundsT,f=Math.sqrt(d.width*d.width+d.height*d.height);return e[0]-=d.x+f,e[1]-=d.y-f,e[2]+=d.x+f,e[3]+=-d.y+f,e}}function B(e){return e.type===`glyphs`?e.glyphs.length>0:e.runs.some(e=>e.glyphs.glyphs.length>0)}class V{static getEnvelope(e,t,n,r){if(!e)return null;let i=new h(n,r);if(Array.isArray(e)){let n;for(let r of e)n?n.union(R(i,r,t)):n=R(i,r,t);return n}return R(i,e,t)}static expandEnvelopeForPointSymbolHalo(e,t,n,r=0){let i=z.getPointSymbolHaloPadding(t,n);if(i<=0)return;let a=i+r;e.x-=a,e.y-=a,e.width+=2*a,e.height+=2*a}static getTextureInfo(e,t,n,r,i,a=0){let o=r??this.getEnvelope(e,null,t);if(!o)return[0,0,0,0,1];let s=Math.max(o.width,o.height)*F,c=i==null?1:Math.max(i/s,1);c*=F,o.x*=c,o.y*=c,o.width*=c,o.height*=c,o.width=Math.max(Math.ceil(o.x+o.width)-Math.floor(o.x),1)-1,o.height=Math.max(Math.ceil(o.y+o.height)-Math.floor(o.y),1)-1;let l=o.x+o.width*.5,u=o.y+o.height*.5;if(l+=o.x-Math.floor(o.x),u+=o.y-Math.floor(o.y),!r){let e=Math.ceil(a*c);o.width+=n+2*e,o.height+=n+2*e,l+=n/2,u+=n/2}return[o.width,o.height,l,u,c]}static getTextureAnchor(e,t,n,r=0){let[i,a,o,s,c]=this.getTextureInfo(e,t,2,null,n,r);return[-o/i,-s/a,a/c*F]}static rasterize(e,t,n,r,i=!0,a,o=0){let[s,c,l,u,d]=this.getTextureInfo(t,r,2,n,a,o);e.width=s,e.height=c;let f=e.getContext(`2d`,{willReadFrequently:!0}),p=_.createScale(d,-d);p.translate(s*.5-l,c*.5+u);let h=new g(f,r,p);switch(t.type){case`CIMPointSymbol`:h.drawSymbol(t,{type:`point`,x:0,y:0});break;case`CIMVectorMarker`:{let e=new m;h.drawMarker(t,e);break}}let v=f.getImageData(0,0,e.width,e.height),y=new Uint8Array(v.data);if(i){let e;for(let t=0;t<y.length;t+=4)e=y[t+3]/255,y[t]=y[t]*e,y[t+1]=y[t+1]*e,y[t+2]=y[t+2]*e}return[y,e.width,e.height,-l/s,-u/c,d]}static fromTextSymbol(e){let{text:t}=e;return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,anchorPointUnits:`Relative`,dominantSizeAxis3D:`Y`,size:10,billboardMode3D:`FaceNearPlane`,frame:{xmin:-5,ymin:-5,xmax:5,ymax:5},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{x:0,y:0},symbol:V.createCIMTextSymbolfromTextSymbol(e),textString:t}],scaleSymbolsProportionally:!0,respectFrame:!0}],scaleX:1,angleAlignment:`Display`}}static fromPictureFillSymbol(e){let{height:t,outline:n,width:r,xoffset:i,xscale:a,yoffset:o,yscale:s}=e,c=[],l={type:`CIMPolygonSymbol`,symbolLayers:c};if(n){let e=$(n);e&&c.push(e)}let u=e.url;e.type===`esriPFS`&&e.imageData&&(u=e.imageData);let d=`angle`in e?e.angle??0:0,f=(r??0)*(a||1),p=(t??0)*(s||1);return c.push({type:`CIMPictureFill`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:u,height:p,width:f,offsetX:S(i),offsetY:S(o),rotation:S(-d),colorSubstitutions:null}),l}static fromSimpleFillSymbol(e){let{color:n,style:r,outline:i}=e,o=[],s={type:`CIMPolygonSymbol`,symbolLayers:o};if(i){let e=$(i);e&&o.push(e)}if(r&&r!==`solid`&&r!==`none`&&r!==`esriSFSSolid`&&r!==`esriSFSNull`){let e={type:`CIMLineSymbol`,symbolLayers:[{type:`CIMSolidStroke`,color:q(n),capStyle:`Butt`,joinStyle:`Miter`,width:.75}]},i=0,s=a(ie(r)?8:10);switch(r){case`vertical`:case`esriSFSVertical`:i=90;break;case`forward-diagonal`:case`esriSFSForwardDiagonal`:i=-45;break;case`backward-diagonal`:case`esriSFSBackwardDiagonal`:i=45;break;case`cross`:case`esriSFSCross`:i=0;break;case`diagonal-cross`:case`esriSFSDiagonalCross`:i=-45}o.push({type:`CIMHatchFill`,lineSymbol:e,offsetX:0,offsetY:0,rotation:i,separation:s}),r===`cross`||r===`esriSFSCross`?o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:90,separation:s}):(r===`diagonal-cross`||r===`esriSFSDiagonalCross`)&&o.push({type:`CIMHatchFill`,lineSymbol:t(e),offsetX:0,offsetY:0,rotation:45,separation:s})}else r&&(r===`solid`||r===`esriSFSSolid`)&&o.push({type:`CIMSolidFill`,enable:!0,color:q(n)});return s}static fromSimpleLineSymbol(e){let{cap:t,color:n,join:r,marker:i,miterLimit:a,style:o,width:s}=e,c=o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`,l=null;c&&(l=[{type:`CIMGeometricEffectDashes`,dashTemplate:Z(o,t),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]);let u=[];if(i){let e;switch(i.placement){case`begin-end`:e=`Both`;break;case`begin`:e=`JustBegin`;break;case`end`:e=`JustEnd`;break;default:e=`None`}let t=V.fromSimpleMarker(i,s,n).symbolLayers[0];t.markerPlacement={type:`CIMMarkerPlacementAtExtremities`,placePerPart:!1,angleToLine:!0,keepUpright:!1,offset:0,extremityPlacement:e,offsetAlongLine:0},u.push(t)}return u.push({type:`CIMSolidStroke`,color:o!==`none`&&o!==`esriSLSNull`?q(n):[0,0,0,0],capStyle:U(t),joinStyle:W(r),miterLimit:a,width:s,effects:l}),{type:`CIMLineSymbol`,symbolLayers:u}}static fromPictureMarker(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url;return e.type===`esriPMS`&&e.imageData&&(o=e.imageData),{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMPictureMarker`,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:S(i),offsetY:S(a),rotation:S(-t)}]}}static createCIMTextSymbolfromTextSymbol(t){let{angle:n,color:r,font:i,haloColor:a,haloSize:o,horizontalAlignment:s,kerning:c,lineWidth:l,text:u,verticalAlignment:d,xoffset:f,yoffset:p,backgroundColor:m,borderLineColor:h,borderLineSize:g}=t,_,v,y,b,x,C;i&&(_=i.family,v=i.style,y=i.weight,b=i.size,x=i.decoration);let w=!1;return u&&(w=e(u)[1]),(m||g)&&(C={type:`CIMBackgroundCallout`,margin:null,backgroundSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:q(m)},{type:`CIMSolidStroke`,enable:!0,color:q(h),width:g??0}]},accentBarSymbol:null,gap:null,leaderLineSymbol:null,lineStyle:null}),{type:`CIMTextSymbol`,angle:n,blockProgression:2,depth3D:1,extrapolateBaselines:!0,fontEffects:0,fontEncoding:1,fontFamilyName:_||`Arial`,fontStyleName:J(v,y),fontType:0,haloSize:o,height:b,hinting:1,horizontalAlignment:G(s??`center`),kerning:c,letterWidth:100,ligatures:!0,lineGapType:`Multiple`,lineWidth:l,offsetX:S(f),offsetY:S(p),strikethrough:x===`line-through`,underline:x===`underline`,symbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:q(r)}]},haloSymbol:{type:`CIMPolygonSymbol`,symbolLayers:[{type:`CIMSolidFill`,enable:!0,color:q(a)}]},shadowColor:[0,0,0,255],shadowOffsetX:1,shadowOffsetY:1,textCase:`Normal`,textDirection:+!!w,verticalAlignment:K(d??`baseline`),verticalGlyphOrientation:0,wordSpacing:100,billboardMode3D:2,callout:C}}static createPictureMarkerRasterizationParam(e){let{angle:t,height:n,width:r,xoffset:i,yoffset:a}=e,o=e.url??e.source?.url??e.source?.imageData;return o?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureMarker`,enable:!0,invertBackfaceTexture:!1,scaleX:1,textureFilter:`Picture`,tintColor:null,url:o,size:n,width:r,offsetX:S(i),offsetY:S(a),rotation:S(-t)}}:null}static createPictureFillRasterizationParam(e){let{width:t,height:n,xoffset:r,yoffset:i,url:a}=e;return a?{type:`sprite-rasterization-param`,overrides:[],resource:{type:`CIMPictureFill`,enable:!0,scaleX:1,textureFilter:`Picture`,tintColor:null,url:a,width:t,height:n,offsetX:S(r),offsetY:S(i),rotation:0}}:null}static fromSimpleMarker(e,t,n){let{style:r}=e,i=e.color??n;if(r===`path`||r===`esriSMSPath`){let t=[];if(`outline`in e&&e.outline){let n=e.outline;t.push({type:`CIMSolidStroke`,enable:!0,width:n.width,color:q(n.color),path:e.path})}t.push({type:`CIMSolidFill`,enable:!0,color:q(i),path:e.path});let[n,r]=Q(`square`);return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:-S(e.angle),size:S(e.size||6),offsetX:S(e.xoffset),offsetY:S(e.yoffset),scaleSymbolsProportionally:!1,frame:n,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:r,symbol:{type:`CIMPolygonSymbol`,symbolLayers:t}}]}]}}let a=[],o=e.size,s,c;if(`outline`in e&&e.outline&&e.outline.style!==`none`&&e.outline.style!==`esriSLSNull`){let t=e.outline,n=t.style!==`solid`&&t.style!==`esriSLSSolid`;[s,c]=n?Q(r,e.size):Q(r);let i=t.width??T.width;if(n){let t=i/e.size,n=(s.xmax-s.xmin)*t/2,r=(s.ymax-s.ymin)*t/2;s.xmin-=n,s.xmax+=n,s.ymin-=r,s.ymax+=r,o&&(o+=i)}let l=(e.style===`cross`||e.style===`x`)&&e?.outline.style!==`dot`&&e?.outline.style!==`short-dot`?`FullPattern`:`HalfGap`,u=n?[{type:`CIMGeometricEffectAddControlPoints`},{type:`CIMGeometricEffectDashes`,dashTemplate:Z(t.style,null).map(e=>t.width&&t.width>0?e*t.width:e),lineDashEnding:l,controlPointEnding:`FullPattern`}]:void 0;a.push({type:`CIMSolidStroke`,capStyle:n?`Round`:`Butt`,enable:!0,width:i,color:q(t.color),effects:u})}else t&&e.type===`line-marker`&&(e.style===`cross`||e.style===`x`)?([s,c]=Q(r),a.push({type:`CIMSolidStroke`,enable:!0,width:t,color:q(i)})):[s,c]=Q(r);a.push({type:`CIMSolidFill`,enable:!0,color:q(i)});let l={type:`CIMPolygonSymbol`,symbolLayers:a};return{type:`CIMPointSymbol`,symbolLayers:[{type:`CIMVectorMarker`,enable:!0,rotation:S(-e.angle),size:S(o||t*6),offsetX:S(e.xoffset),offsetY:S(e.yoffset),scaleSymbolsProportionally:!1,frame:s,markerGraphics:[{type:`CIMMarkerGraphic`,geometry:c,symbol:l}]}]}}static fromCIMHatchFill(e,n){let r=n*(e.separation??y.CIMHatchFill.separation),i=r/2,a=t(e.lineSymbol);a.symbolLayers?.forEach(e=>{switch(e.type){case`CIMSolidStroke`:e.width!=null&&(e.width*=n),e.effects?.forEach(e=>{e.type===`CIMGeometricEffectDashes`&&(e.dashTemplate=e.dashTemplate?.map(e=>e*n))});break;case`CIMVectorMarker`:{e.size!=null&&(e.size*=n);let t=e.markerPlacement;t!=null&&`placementTemplate`in t&&(t.placementTemplate=t.placementTemplate.map(e=>e*n));break}}});let o=this._getLineSymbolPeriod(a)||4;for(;o<4;)o*=2;let s=o/2;return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-s,xmax:s,ymin:-i,ymax:i},markerGraphics:[{type:`CIMMarkerGraphic`,geometry:{paths:[[[-s,0],[s,0]]]},symbol:a}],size:r}}static async normalizeSymbolAndFetchResources(e,t,n=null){if(!e)return;let r=[];if(`effects`in e&&e.effects)for(let t of e.effects)r.push(f(t));r.push(a(e));let i=e=>{if(e.effects)for(let t of e.effects)r.push(f(t));if(e.type===`CIMVectorMarker`){for(let t of e.markerGraphics)l(t.geometry)&&(t.geometry=u(t.geometry,{maxDeviation:.01}));e.markerPlacement&&r.push(p(e.markerPlacement))}`url`in e&&e.url&&r.push(t.fetchResource(e.url,{signal:n})),`symbol`in e&&r.push(a(e.symbol))};H(e,i),`haloSymbol`in e&&H(e.haloSymbol,i),await Promise.all(r);async function a(e){if(e.type!==`CIMTextSymbol`)return;let{fontFamilyName:n,fontStyleName:r}=e;if(n?.toLowerCase()===`calcitewebcoreicons`)return;let{style:i,weight:a}=b(r),o=C(e),s=new d({family:n,style:i,weight:a,decoration:o});try{await t.loadFont(s)}catch{I().error(`Unsupported font ${n} in CIM symbol`)}}}static _getLineSymbolPeriod(e){if(e){let t=this._getEffectsRepeat(e.effects);if(t)return t;if(e.symbolLayers){for(let t of e.symbolLayers)if(t){let e=this._getEffectsRepeat(t.effects);if(e)return e;switch(t.type){case`CIMCharacterMarker`:case`CIMPictureMarker`:case`CIMVectorMarker`:case`CIMObjectMarker3D`:case`CIMglTFMarker3D`:{let e=this._getPlacementRepeat(t.markerPlacement);if(e)return e}}}}}return 0}static _getEffectsRepeat(e){if(e){for(let t of e)if(t)switch(t.type){case`CIMGeometricEffectDashes`:{let e=t.dashTemplate;if(e&&e.length){let t=0;for(let n of e)t+=n;return e.length&1&&(t*=2),t}break}case`CIMGeometricEffectWave`:return t.period;default:I().error(`unsupported geometric effect type ${t.type}`)}}return 0}static _getPlacementRepeat(e){if(e)switch(e.type){case`CIMMarkerPlacementAlongLineSameSize`:case`CIMMarkerPlacementAlongLineRandomSize`:case`CIMMarkerPlacementAlongLineVariableSize`:{let t=e.placementTemplate;if(t&&t.length){let e=0;for(let n of t)e+=+n;return t.length&1&&(e*=2),e}break}}return 0}static fromCIMInsidePolygon(e){let t=e.markerPlacement,n={...e};n.markerPlacement=null,n.anchorPoint=null;let r=Math.abs(t.stepX),o=Math.abs(t.stepY),s=(t.randomness??100)/100,c,l,u,d;if(t.gridType===`Random`){let e=a(k),n=Math.max(Math.floor(e/r),1),f=Math.max(Math.floor(e/o),1);c=n*r/2,l=f*o/2,u=l*2;let p=new i(t.seed),m=s*r/1.5,h=s*o/1.5;d=[];for(let e=0;e<n;e++)for(let t=0;t<f;t++){let n=e*r-c+m*(.5-p.getFloat()),i=t*o-l+h*(.5-p.getFloat());d.push({x:n,y:i}),e===0&&d.push({x:n+c*2,y:i}),t===0&&d.push({x:n,y:i+l*2})}}else t.shiftOddRows===!0?(c=r/2,l=o,u=o*2,d=[{x:-c,y:0},{x:c,y:0},{x:0,y:l},{x:0,y:-l}]):(c=r/2,l=o/2,u=o,d=[{x:-r,y:0},{x:0,y:-o},{x:-r,y:-o},{x:0,y:0},{x:r,y:0},{x:0,y:o},{x:r,y:o},{x:-r,y:o},{x:r,y:-o}]);let f=d.map(e=>({type:`CIMMarkerGraphic`,geometry:e,symbol:{type:`CIMPointSymbol`,symbolLayers:[n]}}));return{type:`CIMVectorMarker`,enable:!0,frame:{xmin:-c,xmax:c,ymin:-l,ymax:l},markerGraphics:f,size:u}}}function H(e,t){if(e)switch(e.type){case`CIMPointSymbol`:case`CIMLineSymbol`:case`CIMPolygonSymbol`:{let n=e.symbolLayers;if(!n)return;for(let e of n)if(t(e),e.type===`CIMVectorMarker`){let n=e.markerGraphics;if(!n)continue;for(let e of n)if(e){let n=e.symbol;n&&H(n,t)}}break}}}const U=e=>{if(!e)return`Butt`;switch(e){case`butt`:return`Butt`;case`square`:return`Square`;case`round`:return`Round`}},W=e=>{if(!e)return`Miter`;switch(e){case`miter`:return`Miter`;case`round`:return`Round`;case`bevel`:return`Bevel`}},G=e=>{if(e==null)return`Center`;switch(e){case`left`:return`Left`;case`right`:return`Right`;case`center`:return`Center`;case`justify`:return`Justify`}},K=e=>{if(e==null)return`Center`;switch(e){case`baseline`:return`Baseline`;case`top`:return`Top`;case`middle`:return`Center`;case`bottom`:return`Bottom`}},q=e=>{if(!e)return[0,0,0,0];let{r:t,g:n,b:r,a:i}=e;return[t,n,r,i*255]},J=(e,t)=>{let n=Y(t),r=X(e);return n&&r?`${n}-${r}`:`${n}${r}`},Y=e=>{if(!e)return``;switch(e.toLowerCase()){case`bold`:case`bolder`:return`bold`}return``},X=e=>{if(!e)return``;switch(e.toLowerCase()){case`italic`:case`oblique`:return`italic`}return``},Z=(e,t)=>{let n=.001,r=t===`butt`;switch(e){case`dash`:case`esriSLSDash`:return r?[4,3]:[3,4];case`dash-dot`:case`esriSLSDashDot`:return r?[4,3,1,3]:[3,4,n,4];case`dot`:case`esriSLSDot`:return r?[1,3]:[n,4];case`long-dash`:case`esriSLSLongDash`:return r?[8,3]:[7,4];case`long-dash-dot`:case`esriSLSLongDashDot`:return r?[8,3,1,3]:[7,4,n,4];case`long-dash-dot-dot`:case`esriSLSDashDotDot`:return r?[8,3,1,3,1,3]:[7,4,n,4,n,4];case`short-dash`:case`esriSLSShortDash`:return r?[4,1]:[3,2];case`short-dash-dot`:case`esriSLSShortDashDot`:return r?[4,1,1,1]:[3,2,n,2];case`short-dash-dot-dot`:case`esriSLSShortDashDotDot`:return r?[4,1,1,1,1,1]:[3,2,n,2,n,2];case`short-dot`:case`esriSLSShortDot`:return r?[1,1]:[n,2];case`solid`:case`esriSLSSolid`:case`none`:return I().error(`Unexpected: style does not require rasterization`),[0,0];default:return I().error(`Tried to rasterize SLS, but found an unexpected style: ${e}!`),[0,0]}};function re(e){return e.symbolLayers!==void 0}const Q=(e,t=100)=>{let n=t/2,r,i,a=e;if(a===`circle`||a===`esriSMSCircle`){let e=Math.acos(1-.25/n),t=Math.ceil(M/e/4);t===0&&(t=1),e=N/t,t*=4;let a=[];a.push([n,0]);for(let r=1;r<t;r++)a.push([n*Math.cos(r*e),-n*Math.sin(r*e)]);a.push([n,0]),r={rings:[a]},i={xmin:-n,ymin:-n,xmax:n,ymax:n}}else if(a===`cross`||a===`esriSMSCross`)r={paths:[[[0,n],[0,-n]],[[n,0],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`diamond`||a===`esriSMSDiamond`)r={rings:[[[-n,0],[0,n],[n,0],[0,-n],[-n,0]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`square`||a===`esriSMSSquare`)r={rings:[[[-n,-n],[-n,n],[n,n],[n,-n],[-n,-n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`x`||a===`esriSMSX`)r={paths:[[[n,n],[-n,-n]],[[n,-n],[-n,n]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n};else if(a===`triangle`||a===`esriSMSTriangle`){let e=t*.5773502691896257,n=-e,a=2/3*t,o=a-t;r={rings:[[[n,o],[0,a],[e,o],[n,o]]]},i={xmin:n,ymin:o,xmax:e,ymax:a}}else a===`arrow`&&(r={rings:[[[-50,50],[50,0],[-50,-50],[-33,-20],[-33,20],[-50,50]]]},i={xmin:-n,ymin:-n,xmax:n,ymax:n});return[i,r]},ie=e=>e===`vertical`||e===`horizontal`||e===`cross`||e===`esriSFSCross`||e===`esriSFSVertical`||e===`esriSFSHorizontal`;function $(e){if(!e)return null;let t=null,{cap:n,color:r,join:i,miterLimit:a,style:o,width:s}=e;return o!==`solid`&&o!==`none`&&o!==`esriSLSSolid`&&o!==`esriSLSNull`&&(t=[{type:`CIMGeometricEffectDashes`,dashTemplate:Z(o,n),lineDashEnding:`NoConstraint`,scaleDash:!0,offsetAlongLine:null}]),{type:`CIMSolidStroke`,color:o!==`esriSLSNull`&&o!==`none`?q(r):[0,0,0,0],capStyle:U(n),joinStyle:W(i),miterLimit:a,width:s,effects:t}}export{V as CIMSymbolHelper,z as CIMSymbolInflatedSizeHelper,U as capTypeToEnum,H as forEachSymbolLayer,te as resolveSymbolToCIM,Z as slsDashToTemplateArray,L as symbolToCIM};