@arcgis/core 5.2.0-next.120 → 5.2.0-next.121

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 (348) hide show
  1. package/arcade/containerUtils.js +1 -1
  2. package/arcade/functions/feature.js +1 -1
  3. package/arcade/functions/featuresetstring.js +1 -1
  4. package/arcade/languageUtils.js +1 -1
  5. package/arcgisGlobal.d.ts +7 -0
  6. package/assets/components/assets/icon/addCellAbove16.json +1 -0
  7. package/assets/components/assets/icon/addCellAbove24.json +1 -0
  8. package/assets/components/assets/icon/addCellAbove32.json +1 -0
  9. package/assets/components/assets/icon/addCellBelow16.json +1 -0
  10. package/assets/components/assets/icon/addCellBelow24.json +1 -0
  11. package/assets/components/assets/icon/addCellBelow32.json +1 -0
  12. package/assets/components/assets/icon/linkedChart16.json +1 -0
  13. package/assets/components/assets/icon/linkedChart24.json +1 -0
  14. package/assets/components/assets/icon/linkedChart32.json +1 -0
  15. package/assets/components/assets/icon/polygonFromFeature16.json +1 -0
  16. package/assets/components/assets/icon/polygonFromFeature24.json +1 -0
  17. package/assets/components/assets/icon/polygonFromFeature32.json +1 -0
  18. package/assets/esri/core/workers/RemoteClient.js +1 -1
  19. package/assets/esri/core/workers/chunks/015cb790262a59857c5f.js +1 -0
  20. package/assets/esri/core/workers/chunks/025da54eef112d7e8f66.js +1 -0
  21. package/assets/esri/core/workers/chunks/033debcbf6b3683dc4fe.js +2 -0
  22. package/assets/esri/core/workers/chunks/064445e6f9512817ac87.js +2 -0
  23. package/assets/esri/core/workers/chunks/{304462b049116f59accc.js → 09676cfa99b90fe0cc63.js} +1 -1
  24. package/assets/esri/core/workers/chunks/0aadee0437fa061e4ff5.js +1 -0
  25. package/assets/esri/core/workers/chunks/{b0058619e0363002ad86.js → 0e9f54d7f158195bd203.js} +1 -1
  26. package/assets/esri/core/workers/chunks/1086f190f94c715bbfe4.js +1 -0
  27. package/assets/esri/core/workers/chunks/1846296be959e28c42bb.js +1 -0
  28. package/assets/esri/core/workers/chunks/{ea9e770efc85594e4dd2.js → 216d8cb86548e92a8196.js} +1 -1
  29. package/assets/esri/core/workers/chunks/{d629708bf23da24ee523.js → 298f234f11a10c5120a2.js} +1 -1
  30. package/assets/esri/core/workers/chunks/29ae19206bbeb480be0f.js +1 -0
  31. package/assets/esri/core/workers/chunks/{dc1944a7601b518a9c48.js → 2ca49fb4590cc34a02bd.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{f890359d972cce54459e.js → 2f829321bfbd3bacd64f.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{7232fc11b23777b6be94.js → 369012c032ea6882607c.js} +1 -1
  34. package/assets/esri/core/workers/chunks/39c5e0f6262f69a62c66.js +1 -0
  35. package/assets/esri/core/workers/chunks/{9f760dc4492a03e0504c.js → 45d87af48a21644590c2.js} +1 -1
  36. package/assets/esri/core/workers/chunks/463d69f596d1d34ef275.js +2 -0
  37. package/assets/esri/core/workers/chunks/49affbed22e201f7c32b.js +1 -0
  38. package/assets/esri/core/workers/chunks/4adad3312caa24af98ac.js +1 -0
  39. package/assets/esri/core/workers/chunks/{8f0ecf4d06ec7b67d4ed.js → 52744dfd430cd0c0edfb.js} +1 -1
  40. package/assets/esri/core/workers/chunks/58a17fb3c0dd07c63d57.js +2 -0
  41. package/assets/esri/core/workers/chunks/5993db944b9e7825e0bc.js +1 -0
  42. package/assets/esri/core/workers/chunks/{090c9c2dbf92f2cac0b8.js → 770ca70d363184e39d60.js} +1 -1
  43. package/assets/esri/core/workers/chunks/83c7c4218bc6ba2f16ee.js +1 -0
  44. package/assets/esri/core/workers/chunks/{cfd8317ecd2e63af7c40.js → 8a103b6e9534516421e2.js} +1 -1
  45. package/assets/esri/core/workers/chunks/{49e8ff5ed079a9e3be4b.js → 91a51d959ee5c6123c46.js} +1 -1
  46. package/assets/esri/core/workers/chunks/92f35b2c3c5f13778308.js +1 -0
  47. package/assets/esri/core/workers/chunks/97cd4145c016cf379120.js +1 -0
  48. package/assets/esri/core/workers/chunks/99ebc99e8d1bca105b5e.js +1 -0
  49. package/assets/esri/core/workers/chunks/{e18b8646c7378213b618.js → 9b3813e39992b1b99941.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{32fc7d1db4b311f6b880.js → 9e5b30b907102bc0c201.js} +1 -1
  51. package/assets/esri/core/workers/chunks/a005efcde3ca9def4e6b.js +1 -0
  52. package/assets/esri/core/workers/chunks/a3c1a5a5c5cbf27b376d.js +1 -0
  53. package/assets/esri/core/workers/chunks/a70c59129ea808857d07.js +1 -0
  54. package/assets/esri/core/workers/chunks/b5b30c8447a0f967fa79.js +1 -0
  55. package/assets/esri/core/workers/chunks/bb5ed2a796a45c41b0b4.js +1 -0
  56. package/assets/esri/core/workers/chunks/bcb06a0643b4c83535ee.js +1 -0
  57. package/assets/esri/core/workers/chunks/{066b7f6866d602f963e0.js → c3008b20cb5fd38bd900.js} +1 -1
  58. package/assets/esri/core/workers/chunks/{22e85819e23202a8ba90.js → c39ebd8d469f1e8bb61e.js} +1 -1
  59. package/assets/esri/core/workers/chunks/{7f2ac03efaa4a4898ba2.js → c3b96d1d43afccd23e45.js} +2 -2
  60. package/assets/esri/core/workers/chunks/{cb983f65995e57fff7a1.js → c44cbe04efddbbbaec13.js} +1 -1
  61. package/assets/esri/core/workers/chunks/{8ce14dd209462f88b163.js → c70a32ac0fa49f4493ca.js} +1 -1
  62. package/assets/esri/core/workers/chunks/ce08e3369641da0d7a27.js +2 -0
  63. package/assets/esri/core/workers/chunks/d1b5be1aeab16d36d4b1.js +1 -0
  64. package/assets/esri/core/workers/chunks/{da6583e8d88441a1c02a.js → d38252956c3d9e2168f7.js} +1 -1
  65. package/assets/esri/core/workers/chunks/{1742dbc6a827cfda471b.js → d3d48401462ef3bf0ad9.js} +1 -1
  66. package/assets/esri/core/workers/chunks/d9b761104ab6e4acaf91.js +1 -0
  67. package/assets/esri/core/workers/chunks/{723478607badcde5706b.js → d9d5f50af047ee7af129.js} +87 -86
  68. package/assets/esri/core/workers/chunks/{354912041363502c6a89.js → da161f8cbe1cfc5fcf7c.js} +1 -1
  69. package/assets/esri/core/workers/chunks/{862e1acd80c4e43831dc.js → dc923e50958b68a50014.js} +1 -1
  70. package/assets/esri/core/workers/chunks/e86f83a6514a35255f64.js +1 -0
  71. package/assets/esri/core/workers/chunks/ea49721fdd2172d1c799.js +1 -0
  72. package/assets/esri/core/workers/chunks/{98a5327fd96d9542b39f.js → f90cad9f007a11154c0d.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{f18ee2eaa96d103627a6.js → fa3f824c874f29d24953.js} +1 -1
  74. package/assets/esri/core/workers/chunks/fbb390c0d92d1536fce3.js +1 -0
  75. package/assets/esri/core/workers/chunks/fbc5f275c4e5e6bfffaa.js +1 -0
  76. package/assets/esri/core/workers/chunks/{6ab7bb3834841834f839.js → fd5e61cb6f936eadcfe3.js} +1 -1
  77. package/assets/esri/themes/dark/main.css +1 -1
  78. package/assets/esri/themes/light/main.css +1 -1
  79. package/assets/esri/themes/light/view.css +1 -1
  80. package/basemaps/BasemapCollection.d.ts +148 -0
  81. package/basemaps/BasemapCollection.js +2 -0
  82. package/basemaps/BasemapsSource.d.ts +39 -0
  83. package/basemaps/BasemapsSource.js +2 -0
  84. package/basemaps/LocalBasemapsSource.d.ts +55 -0
  85. package/basemaps/LocalBasemapsSource.js +2 -0
  86. package/basemaps/PortalBasemapsSource.d.ts +98 -0
  87. package/basemaps/PortalBasemapsSource.js +2 -0
  88. package/basemaps/support/BasemapItem.d.ts +74 -0
  89. package/basemaps/support/BasemapItem.js +2 -0
  90. package/basemaps/support/basemapCompatibilityUtils.js +2 -0
  91. package/basemaps/types.d.ts +42 -0
  92. package/chunks/CheckerBoard.glsl.js +1 -1
  93. package/chunks/ColorMaterial.glsl.js +1 -1
  94. package/chunks/Component.glsl.js +11 -11
  95. package/chunks/DeepSky.glsl.js +1 -1
  96. package/chunks/DefaultMaterial.glsl.js +4 -4
  97. package/chunks/EdgeShader.glsl.js +1 -1
  98. package/chunks/FocusArea.glsl.js +1 -1
  99. package/chunks/GaussianSplat.glsl.js +9 -9
  100. package/chunks/HUDMaterial.glsl.js +1 -1
  101. package/chunks/ImageMaterial.glsl.js +1 -1
  102. package/chunks/LineCallout.glsl.js +1 -1
  103. package/chunks/LineMarker.glsl.js +97 -89
  104. package/chunks/NativeLine.glsl.js +1 -1
  105. package/chunks/Path.glsl.js +8 -7
  106. package/chunks/Pattern.glsl.js +1 -1
  107. package/chunks/PointRenderer.glsl.js +1 -1
  108. package/chunks/RealisticTree.glsl.js +4 -4
  109. package/chunks/RibbonLine.glsl.js +58 -56
  110. package/chunks/ShadowCastAccumulate.glsl.js +3 -3
  111. package/chunks/ShadowHighlight.glsl.js +4 -4
  112. package/chunks/ShadowHighlightBuffer.glsl.js +3 -3
  113. package/chunks/Terrain.glsl.js +12 -14
  114. package/chunks/Viewshed.glsl.js +1 -1
  115. package/chunks/Water.glsl.js +3 -3
  116. package/chunks/languageUtils.js +1 -1
  117. package/config.js +1 -1
  118. package/core/Accessor.d.ts +10 -0
  119. package/kernel.js +1 -1
  120. package/layers/CSVLayer.js +1 -1
  121. package/layers/GeoJSONLayer.d.ts +1 -1
  122. package/layers/GeoJSONLayer.js +1 -1
  123. package/layers/OGCFeatureLayer.js +1 -1
  124. package/layers/StreamLayer.js +1 -1
  125. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  126. package/layers/mixins/FeatureLayerBase.js +1 -1
  127. package/layers/support/LabelClass.d.ts +13 -4
  128. package/layers/support/LabelClass.js +1 -1
  129. package/layers/support/commonProperties.js +1 -1
  130. package/legend/ActiveLayerInfo.d.ts +130 -0
  131. package/legend/ActiveLayerInfo.js +2 -0
  132. package/legend/LegendContent.d.ts +118 -0
  133. package/legend/LegendContent.js +2 -0
  134. package/legend/support/clusterUtils.js +2 -0
  135. package/legend/support/colorRampUtils.js +2 -0
  136. package/legend/support/heatmapRampUtils.js +2 -0
  137. package/legend/support/relationshipRampUtils.js +2 -0
  138. package/legend/support/sizeRampUtils.js +2 -0
  139. package/legend/support/utils.js +2 -0
  140. package/legend/types.d.ts +403 -0
  141. package/libs/i3s/I3SModule.js +1 -1
  142. package/package.json +5 -5
  143. package/support/revision.js +1 -1
  144. package/support/userTypeGuards/isBasemapsSource.js +2 -0
  145. package/symbols/cim/CIMOperators.js +1 -1
  146. package/symbols/cim/callouts/effects/BackgroundCallout.js +2 -0
  147. package/symbols/cim/callouts/effects/BalloonCallout.js +2 -0
  148. package/symbols/cim/callouts/effects/PointSymbolCallout.js +2 -0
  149. package/symbols/cim/callouts/effects/SimpleLineCallout.js +2 -0
  150. package/symbols/cim/callouts/effects/calloutUtils.js +2 -0
  151. package/symbols/cim/cimAnalyzer.js +1 -1
  152. package/symbols/cim/utils.js +1 -1
  153. package/symbols/support/typeUtils.js +1 -1
  154. package/views/2d/LabelManager.js +1 -1
  155. package/views/2d/engine/AFeatureContainer.js +1 -1
  156. package/views/2d/engine/vectorTiles/decluttering/SymbolRepository.js +1 -1
  157. package/views/2d/engine/webgl/FeatureDisplayList.js +1 -1
  158. package/views/2d/engine/webgl/FeatureTile.js +1 -1
  159. package/views/2d/engine/webgl/GlyphWorker.js +1 -1
  160. package/views/2d/engine/webgl/TileCpuState.js +1 -1
  161. package/views/2d/engine/webgl/TileGpuState.js +1 -1
  162. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  163. package/views/2d/engine/webgl/collisions/LabelStore.js +2 -0
  164. package/views/2d/engine/webgl/cpuMapped/CpuBuffer.js +1 -1
  165. package/views/2d/engine/webgl/cpuMapped/CpuMeshData.js +1 -1
  166. package/views/2d/engine/webgl/cpuMapped/GpuMeshState.js +1 -1
  167. package/views/2d/engine/webgl/definitions.js +1 -1
  168. package/views/2d/engine/webgl/mesh/MeshData.js +1 -1
  169. package/views/2d/engine/webgl/mesh/MultiTileMeshData.js +1 -1
  170. package/views/2d/engine/webgl/mesh/factories/CalloutMeshWriterCoordinator.js +2 -0
  171. package/views/2d/engine/webgl/mesh/factories/FeatureMeshFactory.js +1 -1
  172. package/views/2d/engine/webgl/mesh/factories/MeshWriterGroupCoordinator.js +2 -0
  173. package/views/2d/engine/webgl/mesh/templates/segmentUtils.js +1 -1
  174. package/views/2d/engine/webgl/shaderGraph/graph/glsl.js +1 -1
  175. package/views/2d/engine/webgl/shaderGraph/techniques/FeatureInstanceStore.js +1 -1
  176. package/views/2d/engine/webgl/shaderGraph/techniques/GraphicInstanceStore.js +1 -1
  177. package/views/2d/engine/webgl/shaderGraph/techniques/TechniqueInstance.js +1 -1
  178. package/views/2d/engine/webgl/shaderGraph/techniques/TestDisplayObject.js +1 -1
  179. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedPolyShader.js +1 -1
  180. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  181. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedFillShader.js +1 -1
  182. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  183. package/views/2d/engine/webgl/shaderGraph/techniques/createGraphicSymbolMeshSchemas.js +1 -1
  184. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityPolygonShader.js +1 -1
  185. package/views/2d/engine/webgl/shaderGraph/techniques/featureTechniqueUtils.js +1 -1
  186. package/views/2d/engine/webgl/shaderGraph/techniques/fill/AFillMeshWriter.js +1 -1
  187. package/views/2d/engine/webgl/shaderGraph/techniques/fill/ComplexOutlineFillMeshWriter.js +1 -1
  188. package/views/2d/engine/webgl/shaderGraph/techniques/fill/OutlineFillMeshWriter.js +1 -1
  189. package/views/2d/engine/webgl/shaderGraph/techniques/fill/PatternOutlineFillMeshWriter.js +1 -1
  190. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  191. package/views/2d/engine/webgl/shaderGraph/techniques/line/GradientStrokeTechnique.js +1 -1
  192. package/views/2d/engine/webgl/shaderGraph/techniques/line/LineMeshWriter.js +1 -1
  193. package/views/2d/engine/webgl/shaderGraph/techniques/markers/ComputedMarkerParams.js +1 -1
  194. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerMeshWriter.js +1 -1
  195. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  196. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/CalloutMeshWriterPolicy.js +2 -0
  197. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriter.js +1 -1
  198. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterReferences.js +2 -0
  199. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterVertexPack.js +1 -1
  200. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/dataViewUtils.js +1 -1
  201. package/views/2d/engine/webgl/shaderGraph/techniques/pieChart/PieChartShader.js +1 -1
  202. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
  203. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ComplexFillShader.js +1 -1
  204. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/FillShader.js +1 -1
  205. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HeatmapAccumulateShader.js +1 -1
  206. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/LineShader.js +1 -1
  207. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  208. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/constants.js +1 -1
  209. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextMeshWriter.js +1 -1
  210. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  211. package/views/2d/engine/webgl/util/AnnotationMatcher.js +1 -1
  212. package/views/2d/engine/webgl/util/DimensionMatcher.js +1 -1
  213. package/views/2d/engine/webgl/util/IntervalMatcher.js +1 -1
  214. package/views/2d/engine/webgl/util/LabelMatcher.js +1 -1
  215. package/views/2d/engine/webgl/util/MapMatcher.js +1 -1
  216. package/views/2d/engine/webgl/util/Matcher.js +1 -1
  217. package/views/2d/engine/webgl/util/MatcherContext.js +1 -1
  218. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  219. package/views/2d/layers/MediaLayerView2D.js +1 -1
  220. package/views/2d/layers/TileLayerView2D.js +1 -1
  221. package/views/2d/layers/features/FeatureContainer.js +1 -1
  222. package/views/2d/layers/features/FeaturePipelineWorker.js +1 -1
  223. package/views/2d/layers/features/RenderState.js +1 -1
  224. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  225. package/views/2d/layers/features/schema/processor/symbols/SymbolSchema.js +1 -1
  226. package/views/2d/layers/features/support/GraphicsReader.js +1 -1
  227. package/views/2d/layers/graphics/AGraphicContainer.js +1 -1
  228. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  229. package/views/2d/layers/support/annodime/MatcherGeometryOverride.js +1 -1
  230. package/views/2d/layers/support/annodime/PrivateMatcherGeometryOverrideEffect.js +1 -1
  231. package/views/2d/layers/support/annodime/annotationGraphic.js +1 -1
  232. package/views/2d/layers/support/annodime/cimAnnotations.js +1 -1
  233. package/views/2d/layers/support/annodime/debugUtils.js +1 -1
  234. package/views/2d/layers/support/annodime/virtualFields.js +1 -1
  235. package/views/3d/input/SceneInputManager.js +1 -1
  236. package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +2 -0
  237. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  238. package/views/3d/layers/SceneLayerWorker.js +1 -1
  239. package/views/3d/support/MemoryController.js +1 -1
  240. package/views/3d/support/gaussianSplatting/GaussianSplatOrderTexture.js +1 -1
  241. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  242. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +1 -3
  243. package/views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js +1 -1
  244. package/views/3d/webgl-engine/core/shaderLibrary/Transform.glsl.js +1 -1
  245. package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +8 -8
  246. package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +6 -6
  247. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +1 -1
  248. package/views/3d/webgl-engine/core/shaderLibrary/forwardLinearDepthToReadShadow.glsl.js +4 -0
  249. package/views/3d/webgl-engine/core/shaderLibrary/{ForwardLinearDepthToWriteShadowMap.glsl.js → forwardLinearDepthToWriteShadow.glsl.js} +5 -5
  250. package/views/3d/webgl-engine/core/shaderLibrary/shading/WaterDistortion.glsl.js +1 -1
  251. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadow.glsl.js +3 -4
  252. package/views/3d/webgl-engine/core/shaderLibrary/shading/calculateUVZShadowFromDepth.glsl.js +2 -2
  253. package/views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js +5 -0
  254. package/views/3d/webgl-engine/core/shaderLibrary/shading/readShadow.glsl.js +24 -0
  255. package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +1 -1
  256. package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
  257. package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
  258. package/views/3d/webgl-engine/effects/focusArea/FocusArea.js +1 -1
  259. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  260. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.glsl.js +1 -1
  261. package/views/3d/webgl-engine/effects/highlight/ShadowHighlightBuffer.glsl.js +1 -1
  262. package/views/3d/webgl-engine/effects/highlight/ShadowHighlightTechnique.js +1 -1
  263. package/views/3d/webgl-engine/effects/shadowAccumulation/ShadowAccumulator.js +1 -1
  264. package/views/3d/webgl-engine/effects/shadowAccumulation/ShadowCastAccumulate.glsl.js +1 -1
  265. package/views/3d/webgl-engine/lib/LineMaterial.js +1 -1
  266. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  267. package/views/3d/webgl-engine/materials/DrawParameters.js +1 -1
  268. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  269. package/views/3d/webgl-engine/materials/Path.glsl.js +1 -1
  270. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  271. package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
  272. package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
  273. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  274. package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
  275. package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +1 -1
  276. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  277. package/views/3d/webgl-engine/shaders/LineTechniqueConfiguration.js +1 -1
  278. package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
  279. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  280. package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
  281. package/views/3d/webgl-engine/shaders/ScreenSpacePassAtmosphere.glsl.js +1 -1
  282. package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
  283. package/views/3d/webgl-engine/shaders/{AnimatedLine.glsl.js → animatedAlpha.glsl.js} +11 -17
  284. package/views/ToolViewManager.js +1 -1
  285. package/views/VideoView.js +1 -1
  286. package/widgets/BasemapGallery/BasemapGalleryViewModel.d.ts +3 -0
  287. package/widgets/BasemapGallery/support/BasemapGalleryItem.d.ts +3 -0
  288. package/widgets/BasemapGallery/support/LocalBasemapsSource.d.ts +2 -0
  289. package/widgets/BasemapGallery/support/PortalBasemapsSource.d.ts +2 -0
  290. package/widgets/BasemapGallery/types.d.ts +6 -1
  291. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.d.ts +2 -0
  292. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  293. package/widgets/Editor/EditorViewModel.d.ts +2 -1
  294. package/widgets/Editor/EditorViewModel.js +1 -1
  295. package/widgets/Editor/legacy/CreateFeaturesWorkflow.js +1 -1
  296. package/widgets/Editor.d.ts +2 -1
  297. package/widgets/Editor.js +1 -1
  298. package/widgets/HistogramRangeSlider/HistogramRangeSliderViewModel.d.ts +1 -0
  299. package/widgets/HistogramRangeSlider/HistogramRangeSliderViewModel.js +1 -1
  300. package/widgets/HistogramRangeSlider.js +1 -1
  301. package/widgets/Legend/LegendViewModel.d.ts +1 -0
  302. package/widgets/Legend/LegendViewModel.js +1 -1
  303. package/widgets/Legend/styles/card/CardView.d.ts +1 -0
  304. package/widgets/Legend/styles/card/CardView.js +1 -1
  305. package/widgets/Legend/styles/classic/ClassicView.d.ts +1 -0
  306. package/widgets/Legend/styles/classic/ClassicView.js +1 -1
  307. package/widgets/Legend/support/ActiveLayerInfo.d.ts +2 -0
  308. package/widgets/Legend.js +1 -1
  309. package/assets/esri/core/workers/chunks/03918a862455191a8910.js +0 -1
  310. package/assets/esri/core/workers/chunks/1630913399384030d0b9.js +0 -1
  311. package/assets/esri/core/workers/chunks/1a39335aa2dce6d564d9.js +0 -1
  312. package/assets/esri/core/workers/chunks/25bb07d3c32b16a08813.js +0 -1
  313. package/assets/esri/core/workers/chunks/25cc6d7178a52f2f46b7.js +0 -1
  314. package/assets/esri/core/workers/chunks/2e999b05ce179dd9fa08.js +0 -1
  315. package/assets/esri/core/workers/chunks/36792b8a85e88044cb49.js +0 -1
  316. package/assets/esri/core/workers/chunks/3acc1299c1382c3b034d.js +0 -1
  317. package/assets/esri/core/workers/chunks/430802108b63194b7ddd.js +0 -2
  318. package/assets/esri/core/workers/chunks/4396ef5ab3eb9e9a7df2.js +0 -1
  319. package/assets/esri/core/workers/chunks/4efe5827a5c61db3b19d.js +0 -2
  320. package/assets/esri/core/workers/chunks/5938d5f6e37f49867d5a.js +0 -1
  321. package/assets/esri/core/workers/chunks/70347d25968975126fa7.js +0 -1
  322. package/assets/esri/core/workers/chunks/8628c027198982baed7c.js +0 -1
  323. package/assets/esri/core/workers/chunks/8c521caf050a486b6548.js +0 -1
  324. package/assets/esri/core/workers/chunks/a6d4132a16c51323a38a.js +0 -1
  325. package/assets/esri/core/workers/chunks/add834f867900a7091d2.js +0 -1
  326. package/assets/esri/core/workers/chunks/b56c5883a5468b18b122.js +0 -1
  327. package/assets/esri/core/workers/chunks/b5a102cf9f4377fb9842.js +0 -1
  328. package/assets/esri/core/workers/chunks/b6409d89914030d5854a.js +0 -1
  329. package/assets/esri/core/workers/chunks/c118b88a7c4359e68d9b.js +0 -1
  330. package/assets/esri/core/workers/chunks/c5e288d57bacb8451e2d.js +0 -2
  331. package/assets/esri/core/workers/chunks/ce3fb992f6c6ae7378a3.js +0 -1
  332. package/assets/esri/core/workers/chunks/ceda1e08c9ff26248db0.js +0 -1
  333. package/assets/esri/core/workers/chunks/d5e3f8e5b8d2576d3cb3.js +0 -2
  334. package/assets/esri/core/workers/chunks/ddb5d29a8998d0a76fd4.js +0 -1
  335. package/assets/esri/core/workers/chunks/de8a3a0796bd115426c0.js +0 -1
  336. package/assets/esri/core/workers/chunks/e707534a700a2de687ca.js +0 -1
  337. package/assets/esri/core/workers/chunks/f465fb26541372fdc908.js +0 -2
  338. package/assets/esri/core/workers/chunks/f5423006fb07db7dd6ee.js +0 -1
  339. package/assets/esri/core/workers/chunks/fdad31bbe8aee68a6eaf.js +0 -1
  340. package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepthToReadShadowMap.glsl.js +0 -4
  341. package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +0 -18
  342. package/views/3d/webgl-engine/core/shaderLibrary/shading/ShadowmapFiltering.glsl.js +0 -4
  343. /package/assets/esri/core/workers/chunks/{430802108b63194b7ddd.js.LICENSE.txt → 033debcbf6b3683dc4fe.js.LICENSE.txt} +0 -0
  344. /package/assets/esri/core/workers/chunks/{4efe5827a5c61db3b19d.js.LICENSE.txt → 064445e6f9512817ac87.js.LICENSE.txt} +0 -0
  345. /package/assets/esri/core/workers/chunks/{c5e288d57bacb8451e2d.js.LICENSE.txt → 463d69f596d1d34ef275.js.LICENSE.txt} +0 -0
  346. /package/assets/esri/core/workers/chunks/{d5e3f8e5b8d2576d3cb3.js.LICENSE.txt → 58a17fb3c0dd07c63d57.js.LICENSE.txt} +0 -0
  347. /package/assets/esri/core/workers/chunks/{7f2ac03efaa4a4898ba2.js.LICENSE.txt → c3b96d1d43afccd23e45.js.LICENSE.txt} +0 -0
  348. /package/assets/esri/core/workers/chunks/{f465fb26541372fdc908.js.LICENSE.txt → ce08e3369641da0d7a27.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- const e="20260923",a="adb214d4e09c3e8718171e3a6483ae0c2b937520";export{e as buildDate,a as revision};
2
+ const a="20260924",e="a18b1d03a3aea0ff86a60ab5ea1a03f39dae2617";export{a as buildDate,e as revision};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ const n=Symbol("BasemapsSourceInstance");function e(e){return null!=e&&"object"==typeof e&&n in e}export{n as BasemapsSourceSymbol,e as isBasemapsSource};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{EffectAddControlPoints as e}from"./effects/EffectAddControlPoints.js";import{EffectArrow as t}from"./effects/EffectArrow.js";import{EffectBuffer as r}from"./effects/EffectBuffer.js";import{EffectCircularSector as c}from"./effects/EffectCircularSector.js";import{EffectControlMeasureLine as o}from"./effects/EffectControlMeasureLine.js";import{EffectCut as f}from"./effects/EffectCut.js";import{EffectDashes as a}from"./effects/EffectDashes.js";import{EffectDonut as s}from"./effects/EffectDonut.js";import{EffectEnclosingPolygon as l}from"./effects/EffectEnclosingPolygon.js";import{EffectJog as n}from"./effects/EffectJog.js";import{EffectMove as m}from"./effects/EffectMove.js";import{EffectOffset as i}from"./effects/EffectOffset.js";import{EffectRadial as u}from"./effects/EffectRadial.js";import{EffectReverse as p}from"./effects/EffectReverse.js";import{EffectRotate as E}from"./effects/EffectRotate.js";import{EffectScale as M}from"./effects/EffectScale.js";import{EffectSuppress as C}from"./effects/EffectSuppress.js";import{EffectTaperedPolygon as P}from"./effects/EffectTaperedPolygon.js";import{EffectWave as j}from"./effects/EffectWave.js";import{PlacementAlongLineSameSize as I}from"./placements/PlacementAlongLineSameSize.js";import{PlacementAtExtremities as G}from"./placements/PlacementAtExtremities.js";import{PlacementAtMeasuredUnits as d}from"./placements/PlacementAtMeasuredUnits.js";import{PlacementAtRatioPositions as v}from"./placements/PlacementAtRatioPositions.js";import{PlacementInsidePolygon as y}from"./placements/PlacementInsidePolygon.js";import{PlacementOnLine as g}from"./placements/PlacementOnLine.js";import{PlacementOnVertices as A}from"./placements/PlacementOnVertices.js";import{PlacementPolygonCenter as S}from"./placements/PlacementPolygonCenter.js";import{PrivateDimensionEffect as k}from"../../views/2d/layers/support/annodime/PrivateDimensionEffect.js";import{PrivateMatcherGeometryOverrideEffect as O}from"../../views/2d/layers/support/annodime/PrivateMatcherGeometryOverrideEffect.js";import{PrivatePlacementMultipoint as R}from"../../views/2d/layers/support/annodime/PrivatePlacementMultipoint.js";function w(I){if(!I)return null;switch(I.type){case"CIMGeometricEffectAddControlPoints":return e.local();case"CIMGeometricEffectArrow":return t.local();case"CIMGeometricEffectBuffer":return r.local();case"CIMGeometricEffectCircularSector":return c.local();case"CIMGeometricEffectControlMeasureLine":return o.local();case"CIMGeometricEffectCut":return f.local();case"CIMGeometricEffectDashes":return a.local();case"CIMGeometricEffectDonut":return s.local();case"CIMGeometricEffectJog":return n.local();case"CIMGeometricEffectMove":return m.local();case"CIMGeometricEffectOffset":return i.local();case"CIMGeometricEffectRadial":return u.local();case"CIMGeometricEffectReverse":return p.local();case"CIMGeometricEffectRotate":return E.local();case"CIMGeometricEffectScale":return M.local();case"CIMGeometricEffectSuppress":return C.local();case"CIMGeometricEffectTaperedPolygon":return P.local();case"CIMGeometricEffectWave":return j.local();case"CIMGeometricEffectEnclosingPolygon":return l.local();case"PrivateDimensionEffect":return k.local();case"PrivateMatcherGeometryOverrideEffect":return O.local()}return null}function h(e){if(!e)return null;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":return I.local();case"CIMMarkerPlacementAtExtremities":return G.local();case"CIMMarkerPlacementAtMeasuredUnits":return d.local();case"CIMMarkerPlacementAtRatioPositions":return v.local();case"CIMMarkerPlacementInsidePolygon":return y.local();case"CIMMarkerPlacementOnLine":return g.local();case"PrivatePlacementMultipoint":return R.local();case"CIMMarkerPlacementOnVertices":return A.local();case"CIMMarkerPlacementPolygonCenter":return S.local()}return null}export{w as getEffectOperator,h as getPlacementOperator};
2
+ import e from"./callouts/effects/BackgroundCallout.js";import t from"./callouts/effects/BalloonCallout.js";import r from"./callouts/effects/PointSymbolCallout.js";import o from"./callouts/effects/SimpleLineCallout.js";import{EffectAddControlPoints as c}from"./effects/EffectAddControlPoints.js";import{EffectArrow as f}from"./effects/EffectArrow.js";import{EffectBuffer as l}from"./effects/EffectBuffer.js";import{EffectCircularSector as a}from"./effects/EffectCircularSector.js";import{EffectControlMeasureLine as s}from"./effects/EffectControlMeasureLine.js";import{EffectCut as n}from"./effects/EffectCut.js";import{EffectDashes as m}from"./effects/EffectDashes.js";import{EffectDonut as i}from"./effects/EffectDonut.js";import{EffectEnclosingPolygon as u}from"./effects/EffectEnclosingPolygon.js";import{EffectJog as p}from"./effects/EffectJog.js";import{EffectMove as C}from"./effects/EffectMove.js";import{EffectOffset as M}from"./effects/EffectOffset.js";import{EffectRadial as E}from"./effects/EffectRadial.js";import{EffectReverse as P}from"./effects/EffectReverse.js";import{EffectRotate as j}from"./effects/EffectRotate.js";import{EffectScale as I}from"./effects/EffectScale.js";import{EffectSuppress as d}from"./effects/EffectSuppress.js";import{EffectTaperedPolygon as G}from"./effects/EffectTaperedPolygon.js";import{EffectWave as v}from"./effects/EffectWave.js";import{PlacementAlongLineSameSize as y}from"./placements/PlacementAlongLineSameSize.js";import{PlacementAtExtremities as g}from"./placements/PlacementAtExtremities.js";import{PlacementAtMeasuredUnits as S}from"./placements/PlacementAtMeasuredUnits.js";import{PlacementAtRatioPositions as A}from"./placements/PlacementAtRatioPositions.js";import{PlacementInsidePolygon as k}from"./placements/PlacementInsidePolygon.js";import{PlacementOnLine as L}from"./placements/PlacementOnLine.js";import{PlacementOnVertices as O}from"./placements/PlacementOnVertices.js";import{PlacementPolygonCenter as R}from"./placements/PlacementPolygonCenter.js";import{PrivateDimensionEffect as w}from"../../views/2d/layers/support/annodime/PrivateDimensionEffect.js";import{PrivateMatcherGeometryOverrideEffect as h}from"../../views/2d/layers/support/annodime/PrivateMatcherGeometryOverrideEffect.js";import{PrivatePlacementMultipoint as B}from"../../views/2d/layers/support/annodime/PrivatePlacementMultipoint.js";function D(y){if(!y)return null;switch(y.type){case"CIMGeometricEffectAddControlPoints":return c.local();case"CIMGeometricEffectArrow":return f.local();case"CIMGeometricEffectBuffer":return l.local();case"CIMGeometricEffectCircularSector":return a.local();case"CIMGeometricEffectControlMeasureLine":return s.local();case"CIMGeometricEffectCut":return n.local();case"CIMGeometricEffectDashes":return m.local();case"CIMGeometricEffectDonut":return i.local();case"CIMGeometricEffectJog":return p.local();case"CIMGeometricEffectMove":return C.local();case"CIMGeometricEffectOffset":return M.local();case"CIMGeometricEffectRadial":return E.local();case"CIMGeometricEffectReverse":return P.local();case"CIMGeometricEffectRotate":return j.local();case"CIMGeometricEffectScale":return I.local();case"CIMGeometricEffectSuppress":return d.local();case"CIMGeometricEffectTaperedPolygon":return G.local();case"CIMGeometricEffectWave":return v.local();case"CIMGeometricEffectEnclosingPolygon":return u.local();case"CIMSimpleLineCallout":return o.local();case"CIMBackgroundCallout":return e.local();case"CIMBalloonCallout":return t.local();case"CIMPointSymbolCallout":return r.local();case"PrivateDimensionEffect":return w.local();case"PrivateMatcherGeometryOverrideEffect":return h.local()}return null}function x(e){if(!e)return null;switch(e.type){case"CIMMarkerPlacementAlongLineSameSize":return y.local();case"CIMMarkerPlacementAtExtremities":return g.local();case"CIMMarkerPlacementAtMeasuredUnits":return S.local();case"CIMMarkerPlacementAtRatioPositions":return A.local();case"CIMMarkerPlacementInsidePolygon":return k.local();case"CIMMarkerPlacementOnLine":return L.local();case"PrivatePlacementMultipoint":return B.local();case"CIMMarkerPlacementOnVertices":return O.local();case"CIMMarkerPlacementPolygonCenter":return R.local()}return null}export{D as getEffectOperator,x as getPlacementOperator};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{scaleMargins as t,extractCalloutData as e,inflateBounds as o,contains as r,distance as n,autoSnap as a,createLeaderPath as l,createRectangle as s,createAccentBar as c}from"./calloutUtils.js";class i{constructor(){this.type="CIMBackgroundCallout"}static{this.instance=null}static local(){return null===i.instance&&(i.instance=new i),i.instance}execute(t,e,o){if("CIMBackgroundCallout"!==e?.type)throw new Error("Invalid effect type for BackgroundCalloutEffect");return new u(t,e,o)}}class u{constructor(e,o,r){const{geomUnitsPerPoint:n}=r;if(!n)throw new Error("geomUnitsPerPoint is required in EffectExecutionContext for BackgroundCalloutEffect");const a=n*(r.scaleFactor??1);this._inputGeometries=e,this._part=o.part,this._leaderTolerance=(o.leaderTolerance??0)*a,this._leaderOffset=(o.leaderOffset??0)*a,this._gap=(o.gap??0)*a,this._lineStyle=o.lineStyle,this._margins=t(o.margin,a),this._relativeCalloutAnchor=r.relativeCalloutAnchor,this._absoluteCalloutAnchor=r.absoluteCalloutAnchor,this._calloutBodyBounds=r.calloutBodyBounds}next(){let t;for(;t=this._inputGeometries.next();){const i=e(t,this._relativeCalloutAnchor,this._calloutBodyBounds,this._absoluteCalloutAnchor);if(!i)continue;const u=o(i.bounds,this._margins);switch(this._part){case"accent-bar":return c(u,i.anchor,this._gap,t.yFactor);case"background":return s(u,t.yFactor);default:return r(u,i.anchor)||n(a(u,i.anchor),i.anchor)<this._leaderTolerance?null:l(u,i.anchor,this._lineStyle,this._leaderOffset,t.yFactor)}}return null}}export{i as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{scaleMargins as t,extractCalloutData as l,createBalloonGeometry as o,inflateBounds as e}from"./calloutUtils.js";class n{constructor(){this.type="CIMBalloonCallout"}static{this.instance=null}static local(){return null===n.instance&&(n.instance=new n),n.instance}execute(t,l,o){if("CIMBalloonCallout"!==l?.type)throw new Error("Invalid effect type for BalloonCalloutEffect");return new r(t,l,o)}}class r{constructor(l,o,e){const{geomUnitsPerPoint:n}=e;if(!n)throw new Error("geomUnitsPerPoint is required in EffectExecutionContext for BalloonCalloutEffect");const r=n*(e.scaleFactor??1);this._inputGeometries=l,this._balloonStyle=o.balloonStyle,this._dartWidth=null!=o.dartWidth?o.dartWidth*r:null,this._leaderTolerance=(o.leaderTolerance??0)*r,this._margins=t(o.margin,r),this._relativeCalloutAnchor=e.relativeCalloutAnchor,this._absoluteCalloutAnchor=e.absoluteCalloutAnchor,this._calloutBodyBounds=e.calloutBodyBounds}next(){let t;for(;t=this._inputGeometries.next();){const n=l(t,this._relativeCalloutAnchor,this._calloutBodyBounds,this._absoluteCalloutAnchor);if(n)return o(e(n.bounds,this._margins),n.anchor,this._balloonStyle,this._leaderTolerance,t.yFactor,this._dartWidth)}return null}}export{n as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{extractCalloutData as t,createPointGeometry as e,center as o,contains as l,distance as n,autoSnap as r,createLeaderPath as s}from"./calloutUtils.js";class a{constructor(){this.type="CIMPointSymbolCallout"}static{this.instance=null}static local(){return null===a.instance&&(a.instance=new a),a.instance}execute(t,e,o){if("CIMPointSymbolCallout"!==e?.type)throw new Error("Invalid effect type for PointSymbolCalloutEffect");return new i(t,e,o)}}class i{constructor(t,e,o){const{geomUnitsPerPoint:l}=o;if(!l)throw new Error("geomUnitsPerPoint is required in EffectExecutionContext for PointSymbolCalloutEffect");const n=l*(o.scaleFactor??1);this._inputGeometries=t,this._part=e.part,this._leaderTolerance=(e.leaderTolerance??0)*n,this._leaderOffset=(e.leaderOffset??0)*n,this._lineStyle=e.lineStyle,this._relativeCalloutAnchor=o.relativeCalloutAnchor,this._absoluteCalloutAnchor=o.absoluteCalloutAnchor,this._calloutBodyBounds=o.calloutBodyBounds}next(){let a;for(;a=this._inputGeometries.next();){const i=t(a,this._relativeCalloutAnchor,this._calloutBodyBounds,this._absoluteCalloutAnchor);if(i)return"marker"===this._part?e(o(i.bounds),a.yFactor):l(i.bounds,i.anchor)||n(r(i.bounds,i.anchor),i.anchor)<this._leaderTolerance?null:s(i.bounds,i.anchor,this._lineStyle,this._leaderOffset,a.yFactor)}return null}}export{a as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{GeometryCursor as e}from"../../../../geometry/GeometryCursor.js";import{extractCalloutData as t,autoSnap as n}from"./calloutUtils.js";class r{constructor(){this.type="CIMSimpleLineCallout"}static{this.instance=null}static local(){return null===r.instance&&(r.instance=new r),r.instance}execute(e,t,n){if("CIMSimpleLineCallout"!==t?.type)throw new Error("Invalid effect type for SimpleLineCalloutEffect");return new o(e,t,n)}}class o{constructor(e,t,n){this._inputGeometries=e,this._autoSnap=t.autoSnap??!0;const r=n.geomUnitsPerPoint*(n.scaleFactor??1);this._leaderTolerance=(t.leaderTolerance??0)*r,this._relativeCalloutAnchor=n.relativeCalloutAnchor,this._absoluteCalloutAnchor=n.absoluteCalloutAnchor,this._calloutBodyBounds=n.calloutBodyBounds}next(){let e;for(;e=this._inputGeometries.next();){const t=this._createLeaderGeometry(e);if(t)return t}return null}_createLeaderGeometry(e){const r=t(e,this._relativeCalloutAnchor,this._calloutBodyBounds,this._absoluteCalloutAnchor);if(r){const t=this._autoSnap?n(r.bounds,r.anchor):l(r.bounds);return a(r.bounds,r.anchor)||!this._passesLeaderTolerance(t,r.anchor)?null:i(t,r.anchor,e.yFactor)}return"esriGeometryPolyline"===e.geometryType&&this._passesPolylineTolerance(e)?e.clone():null}_passesLeaderTolerance(e,t){return this._leaderTolerance<=0||s(e,t)>=this._leaderTolerance}_passesPolylineTolerance(e){if(this._leaderTolerance<=0)return!0;const t=e.clone();let n=0;for(;t.nextPath();)n+=t.pathLength();return n>=this._leaderTolerance}}function l(e){return{x:e.xmin,y:e.ymin}}function a(e,t){return t.x>=e.xmin&&t.x<=e.xmax&&t.y>=e.ymin&&t.y<=e.ymax}function s(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function i(t,n,r){const o=e.createEmptyOptimizedCIM("esriGeometryPolyline",!1,!1,r);return o.startPath(),o.pushXY(t.x,r*t.y),o.pushXY(n.x,r*n.y),o.reset(),o}export{r as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{GeometryCursor as t}from"../../../../geometry/GeometryCursor.js";function n(t,n,x,y){const i=t.clone();if("esriGeometryPoint"===i.geometryType||"esriGeometryMultipoint"===i.geometryType){if(!i.nextPath())return null;if(i.seekPathStart(),!i.nextPoint())return null;return{anchor:y??(n?{x:i.x+n.x,y:i.y+n.y}:{x:i.x,y:i.y}),bounds:x?m(x,i.x,i.y):{xmin:i.x,ymin:i.y,xmax:i.x,ymax:i.y}}}if(x&&1===i.totalSize&&1===i.totalPoints){if(!i.seekPath(0))return null;if(i.seekPathStart(),!i.nextPoint())return null;return{anchor:y??(n?{x:i.x+n.x,y:i.y+n.y}:{x:i.x,y:i.y}),bounds:m(x,i.x,i.y)}}if(i.totalSize<2)return null;function m(t,n,x){return{xmin:t.xmin+n,ymin:t.ymin+x,xmax:t.xmax+n,ymax:t.ymax+x}}const e=i.totalSize-1,a={xmin:1/0,ymin:1/0,xmax:-1/0,ymax:-1/0};for(let r=0;r<e;r++){if(!i.seekPath(r))return null;for(i.seekPathStart();i.nextPoint();)f(a,i.x,i.y)}return l(a)&&i.seekPath(e)?(i.seekPathStart(),i.nextPoint()?{anchor:y??{x:i.x,y:i.y},bounds:a}:null):null}function x(t,n){return{left:(t?.left??0)*n,right:(t?.right??0)*n,top:(t?.top??0)*n,bottom:(t?.bottom??0)*n}}function y(t,n){return{xmin:t.xmin-n.left,ymin:t.ymin-n.bottom,xmax:t.xmax+n.right,ymax:t.ymax+n.top}}function i(t,n){return n.x>=t.xmin&&n.x<=t.xmax&&n.y>=t.ymin&&n.y<=t.ymax}function m(t){return{x:.5*(t.xmin+t.xmax),y:.5*(t.ymin+t.ymax)}}function e(t,n){let x,y;const i=.5*(t.xmin+t.xmax),m=.5*(t.ymin+t.ymax);return x=n.x<t.xmin?t.xmin:n.x>t.xmax?t.xmax:n.x<i?Math.abs(n.x-t.xmin)<Math.abs(n.x-i)?t.xmin:i:Math.abs(n.x-t.xmax)<Math.abs(n.x-i)?t.xmax:i,y=n.y<t.ymin?t.ymin:n.y>t.ymax?t.ymax:n.y<m?Math.abs(n.y-t.ymin)<Math.abs(n.y-m)?t.ymin:m:Math.abs(n.y-t.ymax)<Math.abs(n.y-m)?t.ymax:m,{x,y}}function a(t,n){const x=.5*(t.xmin+t.xmax),y=.5*(t.ymin+t.ymax);if(n.x>=t.xmin&&n.x<=t.xmax){if(n.y<=t.ymin)return"bottom";if(n.y>=t.ymax)return"top"}else{if(n.x<t.xmin)return"left";if(n.x>t.xmax)return"right"}const i=[{side:"left",distance:Math.abs(n.x-t.xmin)},{side:"right",distance:Math.abs(n.x-t.xmax)},{side:"bottom",distance:Math.abs(n.y-t.ymin)},{side:"top",distance:Math.abs(n.y-t.ymax)}];return i.sort((t,n)=>t.distance-n.distance),i[0].distance===i[1].distance?n.x<x?"left":n.y<y?"bottom":"top":i[0].side}function r(t,n,x,y,i){const m=x??0,r=a(t,n),o=4===m?E(t,n,r):e(t,n);return M(Y(N(y>0?X(o,r,y):o,n,t,r,m,y)),i)}function o(t,n){return p([{x:t.xmin,y:t.ymin},{x:t.xmin,y:t.ymax},{x:t.xmax,y:t.ymax},{x:t.xmax,y:t.ymin},{x:t.xmin,y:t.ymin}],n)}function s(t,n,x,y){switch(a(t,n)){case"left":return M([{x:t.xmin-x,y:t.ymin},{x:t.xmin-x,y:t.ymax}],y);case"top":return M([{x:t.xmin,y:t.ymax+x},{x:t.xmax,y:t.ymax+x}],y);case"right":return M([{x:t.xmax+x,y:t.ymax},{x:t.xmax+x,y:t.ymin}],y);case"bottom":return M([{x:t.xmax,y:t.ymin-x},{x:t.xmin,y:t.ymin-x}],y)}}function u(n,x){const y=t.createEmptyOptimizedCIM("esriGeometryPoint",!1,!1,x);return y.startPath(),y.pushXY(n.x,x*n.y),y.reset(),y}function c(t,n,x,y,m,e=null){const a=i(t,n)?null:z(t,n,y,e);switch(x){case 1:return P(t,a,m);case 2:return k(t,a,m);default:return b(t,a,m)}}function h(t,n){return Math.hypot(n.x-t.x,n.y-t.y)}function f(t,n,x){t.xmin=Math.min(t.xmin,n),t.ymin=Math.min(t.ymin,x),t.xmax=Math.max(t.xmax,n),t.ymax=Math.max(t.ymax,x)}function l(t){return Number.isFinite(t.xmin)&&Number.isFinite(t.ymin)&&Number.isFinite(t.xmax)&&Number.isFinite(t.ymax)}function M(n,x){const y=t.createEmptyOptimizedCIM("esriGeometryPolyline",!1,!1,x);y.startPath();for(const t of n)y.pushXY(t.x,x*t.y);return y.reset(),y}function p(n,x){const y=t.createEmptyOptimizedCIM("esriGeometryPolygon",!1,!1,x);y.startPath();for(const t of v(n))y.pushXY(t.x,x*t.y);return y.reset(),y}function b(t,n,x){const y=[{x:t.xmin,y:t.ymin},{x:t.xmin,y:t.ymax},{x:t.xmax,y:t.ymax},{x:t.xmax,y:t.ymin},{x:t.xmin,y:t.ymin}];return n&&w(y,n),p(y,x)}function P(t,n,x){const y=d(t);return n&&w(y,n),p(y,x)}function d(t){const n=t.xmax-t.xmin,x=t.ymax-t.ymin,y=Math.min(n,x)/8,i=[{x:t.xmin+y,y:t.ymin}];return G(i,t.xmin+y,t.ymin+y,y,-Math.PI/2,-Math.PI),i.push({x:t.xmin,y:t.ymax-y}),G(i,t.xmin+y,t.ymax-y,y,Math.PI,Math.PI/2),i.push({x:t.xmax-y,y:t.ymax}),G(i,t.xmax-y,t.ymax-y,y,Math.PI/2,0),i.push({x:t.xmax,y:t.ymin+y}),G(i,t.xmax-y,t.ymin+y,y,0,-Math.PI/2),i.push(i[0]),i}function g(t,n){return p(I(t),n)}function k(t,n,x){if(!n)return g(t,x);const y=I(t),i=y.length,m=S(y,n.points[0]),e=S(y,n.points[n.points.length-1]),a=(e-m+i)%i,r=i-a;return a<=r?y.splice(m+1,Math.max(a-1,0),...n.points):y.splice(e+1,Math.max(r-1,0),...n.points.slice().reverse()),p(y,x)}function I(t){const n=.5*(t.xmin+t.xmax),x=.5*(t.ymin+t.ymax),y=.5*(t.xmax-t.xmin),i=.5*(t.ymax-t.ymin),m=[],e=32;for(let a=0;a<e;a++){const t=2*Math.PI*a/e;m.push({x:n+y*Math.cos(t),y:x+i*Math.sin(t)})}return m}function S(t,n){let x=0,y=1/0;for(let i=0;i<t.length;i++){const m=h(t[i],n);m<y&&(y=m,x=i)}return x}function z(t,n,x,y){const i=t.xmax-t.xmin,m=t.ymax-t.ymin,e=t.xmin+i/2,a=t.ymin+m/2;let r=-1;if(n.x>=t.xmin&&n.x<=t.xmax?n.y<=t.ymin?r=n.x<=e?7:6:n.y>=t.ymax&&(r=n.x<=e?2:3):r=n.x<t.xmin?n.y<=a?0:1:n.y<=a?5:4,r<0)return null;const o=F(t)[r];if(h(o,n)<x)return null;let s,u;const c=null==y?i/8:Math.min(y/2,i/2),f=null==y?m/8:Math.min(y/2,m/2);switch(r){case 0:case 1:s={x:o.x,y:o.y-f},u={x:o.x,y:o.y+f};break;case 2:case 3:s={x:o.x-c,y:o.y},u={x:o.x+c,y:o.y};break;case 4:case 5:s={x:o.x,y:o.y+f},u={x:o.x,y:o.y-f};break;default:s={x:o.x+c,y:o.y},u={x:o.x-c,y:o.y}}return{index:r,points:[s,n,u]}}function G(t,n,x,y,i,m){const e=4;for(let a=1;a<=e;a++){const r=i+(m-i)*a/e;t.push({x:n+y*Math.cos(r),y:x+y*Math.sin(r)})}}function w(t,n){const[x,,y]=n.points;for(let i=0;i<t.length-1;i++)if(C(x,t[i],t[i+1])&&C(y,t[i],t[i+1]))return void t.splice(i+1,0,...n.points)}function C(t,n,x){const y=(t.x-n.x)*(x.y-n.y)-(t.y-n.y)*(x.x-n.x);return!(Math.abs(y)>1e-9)&&(t.x>=Math.min(n.x,x.x)&&t.x<=Math.max(n.x,x.x)&&t.y>=Math.min(n.y,x.y)&&t.y<=Math.max(n.y,x.y))}function F(t){const n=t.xmax-t.xmin,x=t.ymax-t.ymin;return[{x:t.xmin,y:t.ymin+x/4},{x:t.xmin,y:t.ymax-x/4},{x:t.xmin+n/4,y:t.ymax},{x:t.xmax-n/4,y:t.ymax},{x:t.xmax,y:t.ymax-x/4},{x:t.xmax,y:t.ymin+x/4},{x:t.xmax-n/4,y:t.ymin},{x:t.xmin+n/4,y:t.ymin}]}function N(t,n,x,y,i,m){const e=Math.max(m,Math.min(x.xmax-x.xmin,x.ymax-x.ymin)/4);switch(i){case 1:{if("left"===y||"right"===y){const x=.5*(t.x+n.x);return[t,{x,y:t.y},{x,y:n.y},n]}const x=.5*(t.y+n.y);return[t,{x:t.x,y:x},{x:n.x,y:x},n]}case 2:{const x=X(t,y,e);return[t,x,O(x,n,y),n]}case 3:{const x=X(t,y,e);if("left"===y||"right"===y){const y=.5*(x.x+n.x);return[t,x,{x:y,y:x.y},{x:y,y:n.y},n]}const i=.5*(x.y+n.y);return[t,x,{x:x.x,y:i},{x:n.x,y:i},n]}case 4:{const t="top"===y?x.ymax:x.ymin;return[{x:x.xmin,y:t},{x:x.xmax,y:t},n]}case 5:case 6:{const x=5===i?-1:1,m=h(t,n)/4||e,a={x:.5*(t.x+n.x),y:.5*(t.y+n.y)};return"left"===y||"right"===y?[t,{x:a.x,y:a.y+x*m},n]:[t,{x:a.x+x*m,y:a.y},n]}default:return[t,n]}}function E(t,n,x){return"left"===x||"right"===x?{x:"left"===x?t.xmin:t.xmax,y:t.ymin}:{x:T(n.x,t.xmin,t.xmax),y:"top"===x?t.ymax:t.ymin}}function O(t,n,x){return"left"===x||"right"===x?{x:t.x,y:n.y}:{x:n.x,y:t.y}}function X(t,n,x){switch(n){case"left":return{x:t.x-x,y:t.y};case"top":return{x:t.x,y:t.y+x};case"right":return{x:t.x+x,y:t.y};case"bottom":return{x:t.x,y:t.y-x}}}function Y(t){return t.filter((n,x)=>0===x||n.x!==t[x-1].x||n.y!==t[x-1].y)}function v(t){if(!t.length)return t;const n=t[0],x=t[t.length-1];return n.x===x.x&&n.y===x.y?t:[...t,n]}function T(t,n,x){return Math.max(n,Math.min(x,t))}export{e as autoSnap,m as center,i as contains,s as createAccentBar,c as createBalloonGeometry,r as createLeaderPath,u as createPointGeometry,o as createRectangle,h as distance,f as expandBounds,n as extractCalloutData,y as inflateBounds,l as isFiniteBounds,a as resolveLeaderSide,x as scaleMargins};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,globalRotation as n,getAnimationParams as m,handleAbsoluteAnchor as p,handleMarker as c,handleRelativeAnchor as f,getFrameTranslation as y,translate as d,getStaticParam as h,shouldUseAnimatedPath as u}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as v,CIMSymbolHelper as O,forEachSymbolLayer as g}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as _}from"./defaultCIMValues.js";import{fitVectorMarker as M}from"./fitVectorMarker.js";import{fromCIMFontStyle as C}from"./fromCIMFontStyle.js";import{OverrideHelper as k}from"./OverrideHelper.js";import{hasRichTextFormattingTags as b}from"./richTextUtils.js";import{getSDFInfo as x,getExtent as P,getSDFMetrics as z,getSDFDimensions as I}from"./SDFHelper.js";import{CIMSymbolUnits as E}from"./types.js";import{colorToArray as L,normalizeAlpha as V,getSize as N,isCIMMarkerStrokePlacement as R,hasStrokeLayer as w,getNumericValue as T,getMaxStrokeWidth as G,getTintColor as A,normalizePrimitiveOverrideProps as F,getDefaultCIMValue as X,getEnum as Y,getFillColor as j,getStrokeColor as W,fromCIMFontDecoration as D,getStrokeWidth as H,fromCIMVerticalAlignment as U,fromCIMHorizontalAlignment as J,getTextCasing as B,isValidCIMValue as q,uncapitalize as K}from"./utils.js";import{EffectHelper as Q}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as Z,randomInsidePolygonTextureSize as $}from"../../views/2d/engine/webgl/definitions.js";const ee=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function te(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class re{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=L(r)),r=V(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=M(e))}const i=e.effects;let o=0;const a=N(e)??0;"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1);const s=l(e);let p={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:s,hasShiftAnimation:!1,hasMotionAnimations:!1};p=n(p),p=m(this._poMap,e,p);const c="CIMPolygonSymbol"===e.type;if("CIMPointSymbol"===e.type&&this._analyzePointSymbolHalo(e,o,a,i,s),ye(r,i))return this._analyzeCompositeOutlineFill(r,i,a);let f=r.length;for(;f--;){const s=r[f];if(!s||!1===s.enable)continue;let l;i?.length&&(l=[...i]);const n=s.effects;n?.length&&(i?l.push(...n):l=[...n]);let m=null;if(l){m=[];for(const e of l){const t=k.findEffectOverrides(e,this._primitiveOverrides);t&&m.push(t)}}const y=[];k.findApplicableOverrides(s,this._primitiveOverrides,y);const d=this._cimLayers.length;switch(s.type){case"CIMSolidFill":this._analyzeSolidFill(s,m,p,w(r));break;case"CIMPictureFill":this._analyzePictureFill(s,m,p);break;case"CIMHatchFill":this._analyzeHatchFill(s,m,p);break;case"CIMGradientFill":this._analyzeGradientFill(s,m);break;case"CIMSolidStroke":this._analyzeSolidStroke(s,m,c,a,p);break;case"CIMPictureStroke":this._analyzePictureStroke(s,m,c,a,p);break;case"CIMGradientStroke":this._analyzeGradientStroke(s,m,c,a);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(o=te(s));const r=[],i=s.primitiveName;i&&r.push(i);const l=c&&R(s.markerPlacement);this._analyzeMarker(s,m,null,r,o,a,t,[],p,!1,l);break}default:ee().error("Cannot analyze CIM layer",s.type)}if(m?.some(({effect:e})=>me(e)))for(let e=d;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,i,o,s){const{haloSymbol:l}=e,n=T(e.haloSize,0);if(n<=0||!l?.symbolLayers)return;const m=l.symbolLayers.filter(e=>!1!==e.enable),p=m[0];if(!p)return;const c=1===m.length&&"CIMSolidFill"===p.type;if(s)return void ee().warnOnce("CIM point symbol halos are not supported with symbol animations");const f=o?.map(e=>k.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e);if(f?.some(({effect:e})=>me(e))){if(!c)return void ee().warnOnce("Complex CIM point symbol halos are not supported with geometry-changing effects");const t=e.symbolLayers?.filter(e=>!1!==e.enable)??[];if(!ce(t,f))return void ee().warnOnce("CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and solid fill or stroke layers");const r=G(t),o=this._getValueOrOverrideExpression(p.type,p.primitiveName,"Color",V(p.color));return void this._cimLayers.push({type:"outlineFill",name:p.name,colorLocked:!0,color:o,effects:f,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth:2*n+r,cap:"Round",join:"Round",referenceWidth:i,pixelBufferSize:2*n+r,outlineEffects:f})}const y=e.symbolLayers?.filter(e=>!1!==e.enable)??[],d=1===y.length&&"CIMVectorMarker"===y[0].type?y[0]:null,h=new Set(d?this._primitiveOverrides.filter(e=>e.primitiveName===d.primitiveName&&["Rotation","OffsetX","OffsetY"].includes(e.propertyName)).map(e=>e.propertyName):[]),u=h.size>0?d:null,g=r(e);if(g.effects=void 0,g.angle=0,g.scaleX=1,u){const e=g.symbolLayers?.find(e=>"CIMVectorMarker"===e.type&&!1!==e.enable);e&&(h.has("Rotation")&&(e.rotation=0),h.has("OffsetX")&&(e.offsetX=0),h.has("OffsetY")&&(e.offsetY=0))}const S={...g,haloSize:0,haloSymbol:void 0},_=v.getPointSymbolHaloPadding(e,this._resourceManager),[M,C,b]=O.getTextureAnchor(S,this._resourceManager,Z,_),P=a(b),z=[];k.findApplicableOverrides(g,this._primitiveOverrides,z);const I=u?z.filter(e=>e.primitiveName!==u.primitiveName||!["Rotation","OffsetX","OffsetY"].includes(e.propertyName)):z,E=u?[{offsetX:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetX",h.has("OffsetX")?T(u.offsetX):0),offsetY:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetY",h.has("OffsetY")?T(u.offsetY):0),rotation:this._getValueOrOverrideExpression(u.type,u.primitiveName,"Rotation",h.has("Rotation")?T(u.rotation):0),size:P,frameHeight:P,rotateClockWise:!!u.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:!1}]:[];this._cimLayers.push({type:"marker",spriteRasterizationParam:{type:"sprite-rasterization-param",resource:{type:"cim-point-symbol-halo",symbol:g,sdf:c&&null!=x(S)},overrides:I},colorLocked:!0,color:c?this._getValueOrOverrideExpression(p.type,p.primitiveName,"Color",V(p.color)):[255,255,255,1],effects:f??null,effectsChangeGeometryType:f?.some(({effect:e})=>me(e)),scaleSymbolsProportionally:!1,alignment:t,anchorPoint:{x:M,y:C},isAbsoluteAnchorPoint:!1,size:P,scaleX:T(e.scaleX,1),rotation:T(e.angle,0),offsetX:0,offsetY:0,outlineColor:[0,0,0,0],outlineWidth:0,transform:{type:"cim-marker-transform-param",params:E},frameHeight:P,widthRatio:1,rotateClockwise:!0,referenceSize:i||P,sizeRatio:1,markerPlacement:null,isOutline:!1})}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=V(e.color),l=m(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",name:e.name,colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...S,outlineEffects:t})}this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:he(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=A(e),s=T(e.height,_.CIMPictureFill.height);let l=T(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const n={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},p=m(this._poMap,e,r);this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",T(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",T(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",T(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:he(p)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=m(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=F(s);let n=[255,255,255,1],p=!1;if(e.lineSymbol?.symbolLayers)for(const m of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==m.type)continue;const e=m.primitiveName??i;p||!e||m.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(n=V(m.color),n=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",n),p=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:X(o,"width")},l.push(a))}}const c={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:c,colorLocked:!!e.colorLocked,effects:t,color:n,height:this._getValueOrOverrideExpression(o,i,"Separation",T(e.separation,_.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",T(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",T(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",T(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!p,animationParams:he(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:m}=e,p=_.CIMGradientFill,c=e.colorRamp;this._cimLayers.push({type:"gradientFill",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,m)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(m,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(m,n,"Angle",T(r,p.angle)),gradientType:this._getValueOrOverrideExpression(m,n,"GradientType",s??p.gradientType),interval:this._getValueOrOverrideExpression(m,n,"Interval",T(l,"CIMFixedColorRamp"===c.type?c.colors.length:p.interval)),gradientSize:this._getValueOrOverrideExpression(m,n,"GradientSize",T(o,p.gradientSize)),gradientSizeUnits:"Absolute"===a?E.Absolute:"Relative"===a?E.Relative:p.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r){const i=e.find(e=>"CIMSolidFill"===e.type),o=e.find(e=>"CIMSolidStroke"===e.type);if(null==i||null==o)return;const a=[...t??[],...i.effects??[]].map(e=>k.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),s=[...t??[],...o.effects??[]].map(e=>k.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e),l=T(o.width,_.CIMSolidStroke.width),n=Y(o.capStyle,_.CIMSolidStroke.capstyle),m=Y(o.joinStyle,_.CIMSolidStroke.joinstyle),p=o.miterLimit;this._cimLayers.push({type:"outlineFill",name:i.name,colorLocked:!!i.colorLocked,color:this._getValueOrOverrideExpression(i.type,i.primitiveName,"Color",V(i.color)),effects:a,effectsChangeGeometryType:a.some(({effect:e})=>me(e))||s.some(({effect:e})=>me(e)),outlineColorLocked:!!o.colorLocked,outlineColor:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",V(o.color)),outlineWidth:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Width",l),cap:this._getValueOrOverrideExpression(o.type,o.primitiveName,"CapStyle",n),join:this._getValueOrOverrideExpression(o.type,o.primitiveName,"JoinStyle",m),miterLimit:p&&this._getValueOrOverrideExpression(o.type,o.primitiveName,"MiterLimit",p),referenceWidth:r,outlineEffects:s})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=V(e.color),n=T(e.width,_.CIMSolidStroke.width),p=Y(e.capStyle,_.CIMSolidStroke.capstyle),c=Y(e.joinStyle,_.CIMSolidStroke.joinstyle),f=e.miterLimit;let y,d,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,d=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,g=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",p),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:d,sampleAlphaOnly:!0,animationParams:he(g)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=A(e),n=T(e.width,_.CIMPictureStroke.width),p=Y(e.capStyle,_.CIMPictureStroke.capstyle),c=Y(e.joinStyle,_.CIMPictureStroke.joinstyle),f=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},d=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",p),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",c),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:he(d)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:m,type:p}=e,c=_.CIMGradientStroke,f=T(e.width,c.width),y=Y(e.capStyle,c.capstyle),d=Y(e.joinStyle,c.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(m,p)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(p,m,"Width",f),cap:this._getValueOrOverrideExpression(p,m,"CapStyle",y),join:this._getValueOrOverrideExpression(p,m,"JoinStyle",d),miterLimit:h&&this._getValueOrOverrideExpression(p,m,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(p,m,"GradientMethod",o??c.gradientMethod),gradientType:this._getValueOrOverrideExpression(p,m,"GradientType",l??c.gradientType),interval:this._getValueOrOverrideExpression(p,m,"Interval",T(n,"CIMFixedColorRamp"===u.type?u.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(p,m,"GradientSize",T(a,c.gradientSize)),gradientSizeUnits:"Absolute"===s?E.Absolute:"Relative"===s?E.Relative:c.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,n,y=!1,d=!1){y||=!!e.colorLocked;let h=n;if(h=p(e,h),h=c(this._poMap,e,h),h=f(e,h),h=m(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=T(e.size,_.CIMVectorMarker.size),v=T(e.rotation),O=T(e.offsetX),g=T(e.offsetY),{primitiveName:S,type:M}=e,C=this._getValueOrOverrideExpression(M,S,"Size",u),k=this._getValueOrOverrideExpression(M,S,"Rotation",v),b=this._getValueOrOverrideExpression(M,S,"OffsetX",O),x=this._getValueOrOverrideExpression(M,S,"OffsetY",g);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,C,k,b,x,l,h,y,d);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,C,k,b,x,l,h,s,y,d)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let m,p;if("Random"===o.gridType){const e=a($),t=Math.max(Math.floor(e/l),1);m=n*Math.max(Math.floor(e/n),1);p=t*l/m}else o.shiftOddRows?(m=2*n,p=l/n*.5):(m=n,p=l/n);const c=A(e),f="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:{...e,effects:e.effects?.filter(e=>!ne(e))},overrides:[]};return this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:f,colorLocked:r,effects:t,color:c,height:m,scaleX:p,angle:o.gridAngle??0,offsetX:T(o.offsetX),offsetY:T(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:he(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,m,p,c,f,y,d,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=T(e.scaleX,1);const S=A(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(T(e.size)/t)}const C=[...o];let k;e.primitiveName&&C.push(e.primitiveName),u||_?k={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(k=r(e),k.markerPlacement=null);const b={type:"sprite-rasterization-param",resource:k,overrides:this._getMaterialOverrides(C,O)};_&&b.overrides.push(..._.overrides);const x=n;this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:b,colorLocked:d,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:m,offsetX:p,offsetY:c,transform:{type:"cim-marker-transform-param",params:f},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:he(y),baseSize:x})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,n,m,p,c,f,u,v){const O=e.markerGraphics;if(!O)return;const g=e.frame;let S=0;S=g?g.ymax-g.ymin:a;const _=!!e.scaleSymbolsProportionally;if(S){const t={offsetX:n,offsetY:m,rotation:l,size:s,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:_};p=[...p,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const M of O)if(M){const s=M.symbol;if(!s)continue;const l=M.primitiveName;l&&i.push(l);let n,m=c;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&g){let t=0,r=0;const i=M.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(g.xmin+g.xmax),r+=i.y-.5*(g.ymin+g.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):g&&(t-=(g.xmax-g.xmin)*o.x,r-=(g.ymax-g.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:_};n=[...p,s]}const O=M.geometry,[C,k]=y(O,g);switch(0===C&&0===k||(m=d(m,C,k)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":f||le(s)?(m={...m,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:h([0,0]),rotation:h(0),scale:h(S),parent:c.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,M,i,o,a,n??p,m,S,u,v)):this._analyzeMultiLayerGraphic(e,t,r,M,i,o,a,n??p,m,S,u,v);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,M,i,o,a,n??p,u)}l&&i.pop()}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,m,p,c){const f=i.symbol,y=f.symbolLayers;if(y){if(!se(y)||u(n))return fe(y)?(g(f,e=>{e.colorLocked&&(p=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,m,p,c)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,m,p,c);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,m,p,c)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,p,c,f){const y=i.symbol,d=y.symbolLayers;if(!d)return;const h=Q.applyEffects(y.effects,i.geometry);if(!h)return;let u=d.length;for(;u--;){const y=d[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=Q.applyEffects(y.effects,h),d=P(o);if(!d)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:g,anchorX:S,anchorY:M,widthRatio:C,sdfPaddingRatio:k,sdfTextureSize:b}=z(d,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),x="CIMSolidFill"===y.type,E={type:"sdf",geometry:o,sdfPaddingRatio:k,asFill:x,sdfTextureSize:b},{path:L}=y,N=x?V(j(y)):null==L?V(W(y)):[0,0,0,0],R=x?[0,0,0,0]:V(W(y));if(!x&&!O)break;const w=i.primitiveName;let G=null;x&&!y.colorLocked&&(G=this._maybeGetValueOrOverrideExpression(w,"FillColor"));let A=null;x||y.colorLocked||(A=this._maybeGetValueOrOverrideExpression(w,"StrokeColor"));const F=G??this._getValueOrOverrideExpression(y.type,v,"Color",N),X=A??this._getValueOrOverrideExpression(y.type,v,"Color",R),Y=this._maybeGetValueOrOverrideExpression(w,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=L?{type:"sprite-rasterization-param",resource:{type:"path",path:L,asFill:x},overrides:[]}:{type:"sprite-rasterization-param",resource:E,overrides:[]},H=m(this._poMap,y,n),U=T(e.size,_.CIMVectorMarker.size),J=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",U);this._cimLayers.push({type:"marker",name:y.name,groupName:e.name,spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:S,y:M},isAbsoluteAnchorPoint:u,size:p,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:p,widthRatio:C,rotateClockwise:!1,referenceSize:s,sizeRatio:g,color:F,outlineColor:X,outlineWidth:Y,isOutline:f,markerPlacement:r,animationParams:he(H),isStroke:"CIMSolidFill"!==y.type,baseSize:J,...I(o,b,k)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){ee().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,n,c,f)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const m=[];k.findApplicableOverrides(i,this._primitiveOverrides,m);const p=i.geometry;if(!("x"in p)||!("y"in p))return;const c=i.symbol,f=D(c),y=C(c.fontStyleName),d=t(c.fontFamilyName);c.font={family:d,decoration:f,...y};const h=T(c.height,_.CIMTextSymbol.height),u=T(c.angle),v=T(c.offsetX),O=T(c.offsetY),{haloSymbol:g}=c,S=T(c.haloSize,0);let M=[0,0,0,0];if(g?.symbolLayers?.length){const e=g.symbolLayers;for(const t of e)if(t.color){M=this._getValueOrOverrideExpression(c?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",V(t.color));break}}const x=i.primitiveName;let P=[0,0,0,1],z=[0,0,0,0],I=0,E=!1;if(c.symbol?.symbolLayers)for(const t of c.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)z=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",V(t.color)),I=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",H(t)??0);else if("CIMSolidFill"===t.type){const r=V(t.color);E=E??!!t.colorLocked,P=this._getValueOrOverrideExpression("CIMSolidFill",e??x,"Color",r)}}let L=null,N=null,R=null,w=null,G=null;x&&(L=this._maybeGetValueOrOverrideExpression(x,"TextSize"),N=this._maybeGetValueOrOverrideExpression(x,"TextAngle"),R=this._maybeGetValueOrOverrideExpression(x,"TextOffsetX"),w=this._maybeGetValueOrOverrideExpression(x,"TextOffsetY"),E||(G=this._maybeGetValueOrOverrideExpression(x,"FillColor")));const A=G??P;let F=null,X=null,Y=0;if("CIMBackgroundCallout"===c.callout?.type){const e=c.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?F=V(e.color):"CIMSolidStroke"===e.type&&(X=V(e.color),Y=T(e.width,_.CIMSolidStroke.width))}}const j=this._getValueOrOverrideExpression(c.type,i.primitiveName,"TextString",i.textString??"");if(null==j)return;const{fontStyleName:W}=c,B=d+(W?"-"+W.toLowerCase():"-regular"),q=this._getMaterialOverrides(o,c.type);q.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,c.type)),this._collectDictionaryTemplateOverrides(q,i);const K={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:c.font,symbol:c,primitiveName:i.primitiveName,supportsRichText:b(i.textString??"")||q.some(e=>"textString"===e.propertyName)},overrides:q};this._cimLayers.push({type:"text",lineWidth:c.lineWidth,textRasterizationParam:K,colorLocked:!!n||!!E,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:B,decoration:f,haloSize:S,haloColor:M,weight:y.weight,style:y.style,size:L??h,angle:N??u,offsetX:R??v,offsetY:w??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:J(c.horizontalAlignment),verticalAlignment:U(c.verticalAlignment),text:j,color:A,outlineColor:z,outlineSize:I,backgroundColor:F,borderLineColor:X,borderLineWidth:Y,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=B(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,m,p,c,f){const y=ie(e,i),d=e.primitiveName,h=this._analyzeMaterialOverrides(d,["Rotation","OffsetX","OffsetY"]),u=F(h),[v,g,S]=O.getTextureAnchor(y,this._resourceManager,Z),M=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==d||!["rotation","offsetX","offsetY"].includes(e.propertyName));M.push(...u);const C={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},k=T(e.size,_.CIMVectorMarker.size),b=this._getValueOrOverrideExpression(e.type,d,"Size",k);this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:C,colorLocked:c,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:v,y:g},isAbsoluteAnchorPoint:!1,size:p,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:p,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:S/o(e.size),isOutline:f,markerPlacement:r,animationParams:he(m),baseSize:b})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return k.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:de(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return k.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:de(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,m,p){const c=i.geometry,f=o[0],y=o[1],d=P(c);if(!d)return;const h="Relative"!==e.anchorPointUnits,u=T(f.width,_.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:g,widthRatio:S,sdfPaddingRatio:M,sdfTextureSize:C}=z(d,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:k}=y,b=y.primitiveName,x=f.primitiveName,I=i.primitiveName;let E=null;y.colorLocked||m||(E=this._maybeGetValueOrOverrideExpression(I,"FillColor"));const L=E??this._getValueOrOverrideExpression(y.type,b,"Color",V(y.color));let N=null;f.colorLocked||m||(N=this._maybeGetValueOrOverrideExpression(I,"StrokeColor"));const R=N??this._getValueOrOverrideExpression(f.type,x,"Color",V(f.color)),w=this._maybeGetValueOrOverrideExpression(I,"StrokeWidth")??this._getValueOrOverrideExpression(f.type,x,"Width",u),G={type:"sprite-rasterization-param",resource:k?{type:"path",path:k,asFill:!0}:{type:"sdf",geometry:c,sdfTextureSize:C,sdfPaddingRatio:M,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:G,colorLocked:m,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:g},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:S,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:L,outlineColor:R,outlineWidth:w,isOutline:p,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!q(i)&&(i=X(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=F(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=X(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function ie(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function oe(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ae(e,t){if(!t||0===t.length)return e;const i=r(e);return k.applyOverrides(i,t),i}const se=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function le(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ne(e){return me(e)}function me(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectRadial"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type||"PrivateDimensionEffect"===e.type||"PrivateMatcherGeometryOverrideEffect"===e.type}function pe(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type}function ce(e,t){const r=e.some(e=>"CIMSolidFill"===e.type),i=e.every(e=>"CIMSolidFill"===e.type||"CIMSolidStroke"===e.type);return r&&i&&t.some(({effect:e})=>pe(e))}function fe(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function ye(e,t){if((t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)||t?.some(e=>"CIMGeometricEffectCircularSector"===e.type))&&2===e.length){const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);if(null!=t&&null!=r&&!i)return!0}return!1}function de(e){return r(e).map(e=>({...e,propertyName:K(e.propertyName)}))}function he(e){return u(e)?{type:"animation-params",params:e}:null}export{re as CIMAnalyzer,ae as analyzeCIMResource};
2
+ import{isRGB as e}from"../../core/colorUtils.js";import{getFontFamily as t}from"../../core/fontUtils.js";import"../../core/has.js";import{clone as r}from"../../core/lang.js";import i from"../../core/Logger.js";import{pt2px as o,px2pt as a}from"../../core/screenUtils.js";import{numericHash as s}from"../../core/string.js";import{checkForAnimations as l,globalRotation as n,getAnimationParams as m,handleAbsoluteAnchor as c,handleMarker as p,handleRelativeAnchor as f,getFrameTranslation as y,translate as d,getStaticParam as h,shouldUseAnimatedPath as u}from"./animationUtils.js";import{CIMSymbolInflatedSizeHelper as v,CIMSymbolHelper as O,forEachSymbolLayer as g}from"./CIMSymbolHelper.js";import{antialiasingOutlineFillSettings as S}from"./constants.js";import{defaultCIMValues as _}from"./defaultCIMValues.js";import{fitVectorMarker as M}from"./fitVectorMarker.js";import{fromCIMFontStyle as C}from"./fromCIMFontStyle.js";import{OverrideHelper as b}from"./OverrideHelper.js";import{hasRichTextFormattingTags as k}from"./richTextUtils.js";import{getSDFInfo as z,getExtent as x,getSDFMetrics as P,getSDFDimensions as I}from"./SDFHelper.js";import{CIMSymbolUnits as L}from"./types.js";import{colorToArray as E,normalizeAlpha as V,getSize as N,isCIMMarkerStrokePlacement as R,hasStrokeLayer as T,getNumericValue as w,getMaxStrokeWidth as G,getTintColor as A,normalizePrimitiveOverrideProps as F,getDefaultCIMValue as X,getEnum as Y,getFillColor as j,getStrokeColor as W,fromCIMFontDecoration as D,getStrokeWidth as H,fromCIMVerticalAlignment as U,fromCIMHorizontalAlignment as B,getTextCasing as J,isValidCIMValue as q,uncapitalize as K}from"./utils.js";import{EffectHelper as Q}from"./effects/EffectHelper.js";import{rasterizedVectorMarkerMinSize as Z,randomInsidePolygonTextureSize as $}from"../../views/2d/engine/webgl/definitions.js";const ee=()=>i.getLogger("esri.symbols.cim.cimAnalyzer");function te(e){const t=e.markerPlacement;return t&&t.angleToLine?1:0}class re{constructor(e){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._hasTextStringTemplates=!1,e&&(this._resourceManager=e)}analyzeSymbolReference(t,r,i){if(this._cimLayers=i??[],!t)return this._cimLayers;if(this._reset(),this._hasTextStringTemplates=t.hasTextStringTemplates??!1,t.primitiveOverrides){this._primitiveOverrides=t.primitiveOverrides;for(const t of this._primitiveOverrides){const r=t.valueExpressionInfo;if(r)this._setPoMap(t.primitiveName,t.propertyName,r);else if(null!=t.value){let r=t.value;t.propertyName.includes("Color")&&(e(r)&&(r=E(r)),r=V(r)),this._setPoMap(t.primitiveName,t.propertyName,r)}}}return this._analyzeSymbol(t.symbol,r),this._cimLayers}_reset(){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[]}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t)}}_analyzeMultiLayerSymbol(e,t){const r=e?.symbolLayers;if(!r)return;for(let l=0;l<r.length;l++){const e=r[l];"CIMVectorMarker"===e.type&&(r[l]=M(e))}const i=e.effects;let o=0;const a=N(e)??0;"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(o=1);const s=l(e);let c={transform:[0,0,0,1],fromColor:[1,1,1,1],toColor:[1,1,1,1],colorMix:[0,0,0,0],toOpacity:[1,1,1,1],opacityMix:[0,0,0,0],shift:[1,1,1,1],hasAnimations:s,hasShiftAnimation:!1,hasMotionAnimations:!1};if(c=n(c),c=m(this._poMap,e,c),"CIMPointSymbol"===e.type&&(this._analyzePointSymbolHalo(e,o,a,i,s),this._analyzeCallout(e,null,[],c,a,o,t)),de(r,i))return this._analyzeCompositeOutlineFill(r,i,a);this._analyzeSymbolLayer(e,null,[],c,a,o,t)}_analyzeSymbolLayer(e,t,r,i,o,a,s){const l=e?.symbolLayers;if(!l)return;const n="CIMPolygonSymbol"===e.type,m=e.effects;let c=l.length;for(;c--;){const p=l[c];if(!p||!1===p.enable)continue;let f;m?.length&&(f=[...m]);const y=p.effects;y?.length&&(m?f.push(...y):f=[...y]);let d=t?[...t]:null;if(f){d??=[];for(const e of f){const t=b.findEffectOverrides(e,this._primitiveOverrides);t&&d.push(t)}}const h=[];b.findApplicableOverrides(p,this._primitiveOverrides,h);const u=this._cimLayers.length;switch(p.type){case"CIMSolidFill":this._analyzeSolidFill(p,d,i,T(l));break;case"CIMPictureFill":this._analyzePictureFill(p,d,i);break;case"CIMHatchFill":this._analyzeHatchFill(p,d,i);break;case"CIMGradientFill":this._analyzeGradientFill(p,d);break;case"CIMSolidStroke":this._analyzeSolidStroke(p,d,n,o,i);break;case"CIMPictureStroke":this._analyzePictureStroke(p,d,n,o,i);break;case"CIMGradientStroke":this._analyzeGradientStroke(p,d,n,o);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"!==e.type&&"CIMPolygonSymbol"!==e.type||(a=te(p));const t=[],l=p.primitiveName;l&&t.push(l);const m=n&&R(p.markerPlacement);this._analyzeMarker(p,d,null,t,a,o,s,r,i,!1,m);break}default:ee().error("Cannot analyze CIM layer",p.type)}if(d?.some(({effect:e})=>me(e)))for(let e=u;e<this._cimLayers.length;e++)this._cimLayers[e].effectsChangeGeometryType=!0}}_analyzePointSymbolHalo(e,t,i,o,s){const{haloSymbol:l}=e,n=w(e.haloSize,0);if(n<=0||!l?.symbolLayers)return;const m=l.symbolLayers.filter(e=>!1!==e.enable),c=m[0];if(!c)return;const p=1===m.length&&"CIMSolidFill"===c.type;if(s)return void ee().warnOnce("CIM point symbol halos are not supported with symbol animations");const f=o?.map(e=>b.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e);if(f?.some(({effect:e})=>me(e))){if(!p)return void ee().warnOnce("Complex CIM point symbol halos are not supported with geometry-changing effects");const t=e.symbolLayers?.filter(e=>!1!==e.enable)??[];if(!fe(t,f))return void ee().warnOnce("CIM point symbol halos with geometry-changing effects currently require polygon-producing effects and solid fill or stroke layers");const r=G(t),o=this._getValueOrOverrideExpression(c.type,c.primitiveName,"Color",V(c.color));return void this._cimLayers.push({type:"outlineFill",name:c.name,colorLocked:!0,color:o,effects:f,effectsChangeGeometryType:!0,outlineColorLocked:!0,outlineColor:o,outlineWidth:2*n+r,cap:"Round",join:"Round",referenceWidth:i,pixelBufferSize:2*n+r,outlineEffects:f})}const y=e.symbolLayers?.filter(e=>!1!==e.enable)??[],d=1===y.length&&"CIMVectorMarker"===y[0].type?y[0]:null,h=new Set(d?this._primitiveOverrides.filter(e=>e.primitiveName===d.primitiveName&&["Rotation","OffsetX","OffsetY"].includes(e.propertyName)).map(e=>e.propertyName):[]),u=h.size>0?d:null,g=r(e);if(g.effects=void 0,g.angle=0,g.scaleX=1,u){const e=g.symbolLayers?.find(e=>"CIMVectorMarker"===e.type&&!1!==e.enable);e&&(h.has("Rotation")&&(e.rotation=0),h.has("OffsetX")&&(e.offsetX=0),h.has("OffsetY")&&(e.offsetY=0))}const S={...g,haloSize:0,haloSymbol:void 0},_=v.getPointSymbolHaloPadding(e,this._resourceManager),[M,C,k]=O.getTextureAnchor(S,this._resourceManager,Z,_),x=a(k),P=[];b.findApplicableOverrides(g,this._primitiveOverrides,P);const I=u?P.filter(e=>e.primitiveName!==u.primitiveName||!["Rotation","OffsetX","OffsetY"].includes(e.propertyName)):P,L=u?[{offsetX:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetX",h.has("OffsetX")?w(u.offsetX):0),offsetY:this._getValueOrOverrideExpression(u.type,u.primitiveName,"OffsetY",h.has("OffsetY")?w(u.offsetY):0),rotation:this._getValueOrOverrideExpression(u.type,u.primitiveName,"Rotation",h.has("Rotation")?w(u.rotation):0),size:x,frameHeight:x,rotateClockWise:!!u.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:!1}]:[];this._cimLayers.push({type:"marker",spriteRasterizationParam:{type:"sprite-rasterization-param",resource:{type:"cim-point-symbol-halo",symbol:g,sdf:p&&null!=z(S)},overrides:I},colorLocked:!0,color:p?this._getValueOrOverrideExpression(c.type,c.primitiveName,"Color",V(c.color)):[255,255,255,1],effects:f??null,effectsChangeGeometryType:f?.some(({effect:e})=>me(e)),scaleSymbolsProportionally:!1,alignment:t,anchorPoint:{x:M,y:C},isAbsoluteAnchorPoint:!1,size:x,scaleX:w(e.scaleX,1),rotation:w(e.angle,0),offsetX:0,offsetY:0,outlineColor:[0,0,0,0],outlineWidth:0,transform:{type:"cim-marker-transform-param",params:L},frameHeight:x,widthRatio:1,rotateClockwise:!0,referenceSize:i||x,sizeRatio:1,markerPlacement:null,isOutline:!1})}_analyzeSolidFill(e,t,r,i){const{primitiveName:o,type:a}=e,s=V(e.color),l=m(this._poMap,e,r);if(!i&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.effect.type)){const r=this._getValueOrOverrideExpression(a,o,"Color",s);return void this._cimLayers.push({type:"outlineFill",name:e.name,colorLocked:!!e.colorLocked,color:r,effects:t,outlineColor:r,outlineColorLocked:!!e.colorLocked,...S,outlineEffects:t})}this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:null,colorLocked:!!e.colorLocked,color:this._getValueOrOverrideExpression(a,o,"Color",s),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!1,animationParams:ve(l)})}_analyzePictureFill(e,t,r){const{primitiveName:i,type:o}=e,a=A(e),s=w(e.height,_.CIMPictureFill.height);let l=w(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height),l/=r*(s/t)}const n={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(i,o)},c=m(this._poMap,e,r);this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:n,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(o,i,"TintColor",a),height:this._getValueOrOverrideExpression(o,i,"Height",s),scaleX:this._getValueOrOverrideExpression(o,i,"ScaleX",l),angle:this._getValueOrOverrideExpression(o,i,"Rotation",w(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",w(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",w(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!1,hasUnresolvedReplacementColor:!1,animationParams:ve(c)})}_analyzeHatchFill(e,t,r){const{primitiveName:i,type:o}=e,a=m(this._poMap,e,r),s=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]),l=F(s);let n=[255,255,255,1],c=!1;if(e.lineSymbol?.symbolLayers)for(const m of e.lineSymbol.symbolLayers){if("CIMSolidStroke"!==m.type)continue;const e=m.primitiveName??i;c||!e||m.colorLocked||null==this._poMap[e]?.Color&&null==this._poMap[e]?.StrokeColor||(n=V(m.color),n=this._maybeGetValueOrOverrideExpression(e,"StrokeColor")??this._getValueOrOverrideExpression(o,e,"Color",n),c=!0);const t=this._maybeGetValueOrOverrideExpression(e,"StrokeWidth");if(t){let r=null,i=null;"number"==typeof t?r=t:i=t.valueExpressionInfo;let a=l.find(e=>"strokeWidth"===e.propertyName);a?a.propertyName="width":(a={type:"CIMPrimitiveOverride",primitiveName:e,propertyName:"width",valueExpressionInfo:i,value:r,defaultValue:X(o,"width")},l.push(a))}}const p={type:"sprite-rasterization-param",resource:e,overrides:l};this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:p,colorLocked:!!e.colorLocked,effects:t,color:n,height:this._getValueOrOverrideExpression(o,i,"Separation",w(e.separation,_.CIMHatchFill.separation)),scaleX:1,angle:this._getValueOrOverrideExpression(o,i,"Rotation",w(e.rotation)),offsetX:this._getValueOrOverrideExpression(o,i,"OffsetX",w(e.offsetX)),offsetY:this._getValueOrOverrideExpression(o,i,"OffsetY",w(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!c,animationParams:ve(a)})}_analyzeGradientFill(e,t){const{angle:r,gradientMethod:i,gradientSize:o,gradientSizeUnits:a,gradientType:s,interval:l,primitiveName:n,type:m}=e,c=_.CIMGradientFill,p=e.colorRamp;this._cimLayers.push({type:"gradientFill",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(n,m)},colorLocked:!1,effects:t,color:[255,255,255,1],gradientMethod:this._getValueOrOverrideExpression(m,n,"GradientMethod",i??"Linear"),angle:this._getValueOrOverrideExpression(m,n,"Angle",w(r,c.angle)),gradientType:this._getValueOrOverrideExpression(m,n,"GradientType",s??c.gradientType),interval:this._getValueOrOverrideExpression(m,n,"Interval",w(l,"CIMFixedColorRamp"===p.type?p.colors.length:c.interval)),gradientSize:this._getValueOrOverrideExpression(m,n,"GradientSize",w(o,c.gradientSize)),gradientSizeUnits:"Absolute"===a?L.Absolute:"Relative"===a?L.Relative:c.gradientSizeUnits})}_analyzeCompositeOutlineFill(e,t,r,i=[]){const o=e.find(e=>"CIMSolidFill"===e.type),a=e.find(e=>"CIMSolidStroke"===e.type);if(null==o||null==a)return;const s=[...i,...[...t??[],...o.effects??[]].map(e=>b.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e)],l=[...i,...[...t??[],...a.effects??[]].map(e=>b.findEffectOverrides(e,this._primitiveOverrides)).filter(e=>null!=e)],n=w(a.width,_.CIMSolidStroke.width),m=Y(a.capStyle,_.CIMSolidStroke.capstyle),c=Y(a.joinStyle,_.CIMSolidStroke.joinstyle),p=a.miterLimit;this._cimLayers.push({type:"outlineFill",name:o.name,colorLocked:!!o.colorLocked,color:this._getValueOrOverrideExpression(o.type,o.primitiveName,"Color",V(o.color)),effects:s,effectsChangeGeometryType:s.some(({effect:e})=>me(e))||l.some(({effect:e})=>me(e)),outlineColorLocked:!!a.colorLocked,outlineColor:this._getValueOrOverrideExpression(a.type,a.primitiveName,"Color",V(a.color)),outlineWidth:this._getValueOrOverrideExpression(a.type,a.primitiveName,"Width",n),cap:this._getValueOrOverrideExpression(a.type,a.primitiveName,"CapStyle",m),join:this._getValueOrOverrideExpression(a.type,a.primitiveName,"JoinStyle",c),miterLimit:p&&this._getValueOrOverrideExpression(a.type,a.primitiveName,"MiterLimit",p),referenceWidth:r,outlineEffects:l})}_analyzeSolidStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=V(e.color),n=w(e.width,_.CIMSolidStroke.width),c=Y(e.capStyle,_.CIMSolidStroke.capstyle),p=Y(e.joinStyle,_.CIMSolidStroke.joinstyle),f=e.miterLimit;let y,d,h,u,v=[];if(this._analyzePrimitiveOverrides(a,t,null,null)&&(v=this._getPrimitiveMaterialOverrides(a,s)),t&&Array.isArray(t)&&t.length>0){const e=t[t.length-1].effect;e&&"CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&(y=e.dashTemplate,d=e.scaleDash,h=e.offsetAlongLine,u=e.primitiveName,(t=[...t]).pop())}null!=u&&v.push(...this._getPrimitiveMaterialOverrides(u,s).filter(e=>"dashTemplate"===e.propertyName));const O=void 0!==y?{type:"sprite-rasterization-param",resource:{type:"dash",dashTemplate:y,primitiveName:u},overrides:v}:null,g=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:O,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"Color",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",c),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",p),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:this._maybeGetValueOrOverrideExpression(u,"DashTemplate")??y,offsetAlongLine:this._getValueOrOverrideExpression(s,u,"OffsetAlongLine",h??0),scaleDash:d,sampleAlphaOnly:!0,animationParams:ve(g)})}_analyzePictureStroke(e,t,r,i,o){const{primitiveName:a,type:s}=e,l=A(e),n=w(e.width,_.CIMPictureStroke.width),c=Y(e.capStyle,_.CIMPictureStroke.capstyle),p=Y(e.joinStyle,_.CIMPictureStroke.joinstyle),f=e.miterLimit,y={type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(a,s)},d=m(this._poMap,e,o);this._cimLayers.push({type:"line",name:e.name,spriteRasterizationParam:y,isOutline:r,colorLocked:!!e.colorLocked,effects:t,color:this._getValueOrOverrideExpression(s,a,"TintColor",l),width:this._getValueOrOverrideExpression(s,a,"Width",n),cap:this._getValueOrOverrideExpression(s,a,"CapStyle",c),join:this._getValueOrOverrideExpression(s,a,"JoinStyle",p),miterLimit:f&&this._getValueOrOverrideExpression(s,a,"MiterLimit",f),referenceWidth:i,zOrder:oe(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1,animationParams:ve(d)})}_analyzeGradientStroke(e,t,r,i){const{gradientMethod:o,gradientSize:a,gradientSizeUnits:s,gradientType:l,interval:n,primitiveName:m,type:c}=e,p=_.CIMGradientStroke,f=w(e.width,p.width),y=Y(e.capStyle,p.capstyle),d=Y(e.joinStyle,p.joinstyle),h=e.miterLimit,u=e.colorRamp;this._cimLayers.push({type:"gradientStroke",name:e.name,spriteRasterizationParam:{type:"sprite-rasterization-param",resource:e,overrides:this._getPrimitiveMaterialOverrides(m,c)},colorLocked:!!e.colorLocked,effects:t,color:[255,255,255,1],width:this._getValueOrOverrideExpression(c,m,"Width",f),cap:this._getValueOrOverrideExpression(c,m,"CapStyle",y),join:this._getValueOrOverrideExpression(c,m,"JoinStyle",d),miterLimit:h&&this._getValueOrOverrideExpression(c,m,"MiterLimit",h),referenceWidth:i,isOutline:r,gradientMethod:this._getValueOrOverrideExpression(c,m,"GradientMethod",o??p.gradientMethod),gradientType:this._getValueOrOverrideExpression(c,m,"GradientType",l??p.gradientType),interval:this._getValueOrOverrideExpression(c,m,"Interval",w(n,"CIMFixedColorRamp"===u.type?u.colors.length:p.interval)),gradientSize:this._getValueOrOverrideExpression(c,m,"GradientSize",w(a,p.gradientSize)),gradientSizeUnits:"Absolute"===s?L.Absolute:"Relative"===s?L.Relative:p.gradientSizeUnits})}_analyzeMarker(e,t,r,i,o,a,s,l,n,y=!1,d=!1){y||=!!e.colorLocked;let h=n;if(h=c(e,h),h=p(this._poMap,e,h),h=f(e,h),h=m(this._poMap,e,h),this._analyzeMarkerInsidePolygon(e,t,y,h))return;const u=w(e.size,_.CIMVectorMarker.size),v=w(e.rotation),O=w(e.offsetX),g=w(e.offsetY),{primitiveName:S,type:M}=e,C=this._getValueOrOverrideExpression(M,S,"Size",u),b=this._getValueOrOverrideExpression(M,S,"Rotation",v),k=this._getValueOrOverrideExpression(M,S,"OffsetX",O),z=this._getValueOrOverrideExpression(M,S,"OffsetY",g);switch(e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,r,i,o,a,C,b,k,z,l,h,y,d);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,r,i,o,a,C,b,k,z,l,h,s,y,d)}}_analyzeMarkerInsidePolygon(e,t,r,i){const{markerPlacement:o,type:s}=e;if(!o||"CIMMarkerPlacementInsidePolygon"!==o.type||i.hasMotionAnimations)return!1;if("CIMVectorMarker"===s||"CIMPictureMarker"===s){const r=e.primitiveName;if(r&&this._analyzePrimitiveOverrides([r],t,null,null))return!1;const i=o.primitiveName;if(i&&this._analyzePrimitiveOverrides([i],t,null,null))return!1;if("CIMVectorMarker"===s){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const l=Math.abs(o.stepX),n=Math.abs(o.stepY);if(0===l||0===n)return!0;let m,c;if("Random"===o.gridType){const e=a($),t=Math.max(Math.floor(e/l),1);m=n*Math.max(Math.floor(e/n),1);c=t*l/m}else o.shiftOddRows?(m=2*n,c=l/n*.5):(m=n,c=l/n);const p=A(e),f="CIMCharacterMarker"===e.type?null:{type:"sprite-rasterization-param",resource:{...e,effects:e.effects?.filter(e=>!ne(e))},overrides:[]};return this._cimLayers.push({type:"fill",name:e.name,spriteRasterizationParam:f,colorLocked:r,effects:t,color:p,height:m,scaleX:c,angle:o.gridAngle??0,offsetX:w(o.offsetX),offsetY:w(o.offsetY),applyRandomOffset:"Random"===o.gridType,sampleAlphaOnly:"CIMPictureMarker"!==e.type,hasUnresolvedReplacementColor:!0,animationParams:ve(i)}),!0}_analyzePictureMarker(e,t,i,o,a,l,n,m,c,p,f,y,d,h){const{animatedSymbolProperties:u,primitiveName:v,type:O}=e;let g=w(e.scaleX,1);const S=A(e);i||(i=this._createMarkerPlacementOverrideExpression(e.markerPlacement));const _=this._createGIFAnimatedSymbolPropertiesOverrideExpression(u),M=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let r=1;const i=this._resourceManager.getResource(e.url);null!=i&&(r=i.width/i.height);g/=r*(w(e.size)/t)}const C=[...o];let b;e.primitiveName&&C.push(e.primitiveName),u||_?b={type:"animated",url:e.url,urlHash:"H"+s(e.url),playAnimation:e.animatedSymbolProperties?.playAnimation,reverseAnimation:e.animatedSymbolProperties?.reverseAnimation,randomizeStartTime:e.animatedSymbolProperties?.randomizeStartTime,randomizeStartSeed:e.animatedSymbolProperties?.randomizeStartSeed,startTimeOffset:e.animatedSymbolProperties?.startTimeOffset,duration:e.animatedSymbolProperties?.duration,repeatType:e.animatedSymbolProperties?.repeatType,repeatDelay:e.animatedSymbolProperties?.repeatDelay}:(b=r(e),b.markerPlacement=null);const k={type:"sprite-rasterization-param",resource:b,overrides:this._getMaterialOverrides(C,O)};_&&k.overrides.push(..._.overrides);const z=n;this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:k,colorLocked:d,effects:t,scaleSymbolsProportionally:!1,alignment:a,size:n,scaleX:this._getValueOrOverrideExpression(O,v,"ScaleX",g),rotation:m,offsetX:c,offsetY:p,transform:{type:"cim-marker-transform-param",params:f},color:this._getValueOrOverrideExpression(O,v,"TintColor",S),anchorPoint:{x:M.x,y:M.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:[0,0,0,0],outlineWidth:0,frameHeight:0,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:1,isOutline:h,markerPlacement:i,animationParams:ve(y),baseSize:z})}_analyzeVectorMarker(e,t,r,i,o,a,s,l,n,m,c,p,f,u,v){const O=e.markerGraphics;if(!O)return;const g=e.frame;let S=0;S=g?g.ymax-g.ymin:a;const _=!!e.scaleSymbolsProportionally;if(S){const t={offsetX:n,offsetY:m,rotation:l,size:s,frameHeight:S,rotateClockWise:!!e.rotateClockwise,absoluteAnchorPoint:!1,scaleSymbolsProportionally:_};c=[...c,t]}r||(r=this._createMarkerPlacementOverrideExpression(e.markerPlacement));for(const M of O)if(M){const s=M.symbol;if(!s)continue;const l=M.primitiveName;l&&i.push(l);let n,m=p;if(("CIMPointSymbol"===s.type||"CIMTextSymbol"===s.type)&&g){let t=0,r=0;const i=M.geometry;"x"in i&&"y"in i&&(t+=i.x-.5*(g.xmin+g.xmax),r+=i.y-.5*(g.ymin+g.ymax));const o=e.anchorPoint;let a=!1;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,r-=o.y,a=!0):g&&(t-=(g.xmax-g.xmin)*o.x,r-=(g.ymax-g.ymin)*o.y));const s={offsetX:t,offsetY:r,rotation:0,size:0,frameHeight:0,rotateClockWise:!1,absoluteAnchorPoint:a,scaleSymbolsProportionally:_};n=[...c,s]}"CIMPointSymbol"!==s.type&&"CIMTextSymbol"!==s.type||this._analyzeCallout(s,t,n??c,m,a,o,f);const O=M.geometry,[C,b]=y(O,g);switch(0===C&&0===b||(m=d(m,C,b)),s.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":f||le(s)?(m={...m,transform:{type:"AnimatedTransform",relativeTranslation:!1,absoluteScale:!0,selectGlobalRotation:!1,translation:h([0,0]),rotation:h(0),scale:h(S),parent:p.transform}},this._analyzeMultiLayerGraphicNonSDF(e,t,r,M,i,o,a,n??c,m,S,u,v)):this._analyzeMultiLayerGraphic(e,t,r,M,i,o,a,n??c,m,S,u,v);break;case"CIMTextSymbol":this._analyzeTextGraphic(t,r,M,i,o,a,n??c,u)}l&&i.pop()}}_analyzeCallout(e,t,r,i,o,a,s){const l=e.callout;if(!l||!ce(l))return;const n=t??[],{leaderTolerance:m,leaderOffset:c}=l,p=500;switch(l.type){case"CIMSimpleLineCallout":{const{lineSymbol:e,autoSnap:t}=l,f={type:"CIMSimpleLineCallout",leaderTolerance:m,leaderOffset:c,autoSnap:t,inflateSize:p};this._analyzeSymbolLayer(e,[...n,{type:"cim-effect-param",effect:f,overrides:[]}],r,i,o,a,s);break}case"CIMBackgroundCallout":{const{accentBarSymbol:e,gap:t,backgroundSymbol:f,leaderLineSymbol:y,lineStyle:d,margin:h}=l,u=e=>({type:"CIMBackgroundCallout",leaderTolerance:m,leaderOffset:c,lineStyle:d,gap:t,margin:h,inflateSize:p,part:e}),v=[...n,{type:"cim-effect-param",effect:u("background"),overrides:[]}];y&&this._analyzeSymbolLayer(y,[...n,{type:"cim-effect-param",effect:u("leader"),overrides:[]}],r,i,o,a,s);const O=f.symbolLayers??[];he(O)?this._analyzeCompositeOutlineFill(O,null,o,v):this._analyzeSymbolLayer(f,v,r,i,o,a,s),e&&this._analyzeSymbolLayer(e,[...n,{type:"cim-effect-param",effect:u("accent-bar"),overrides:[]}],r,i,o,a,s);break}case"CIMBalloonCallout":{const{balloonStyle:e,backgroundSymbol:t,fixedDartWidth:f,margin:y,useFixedDartWidth:d}=l,h={type:"CIMBalloonCallout",leaderTolerance:m,leaderOffset:c,margin:y,balloonStyle:e,dartWidth:d?f:void 0,inflateSize:p,part:"background"},u=[...n,{type:"cim-effect-param",effect:h,overrides:[]}],v=t.symbolLayers??[];he(v)?this._analyzeCompositeOutlineFill(v,null,o,u):this._analyzeSymbolLayer(t,u,r,i,o,a,s);break}case"CIMPointSymbolCallout":{const{backgroundScale:e,gap:t,leaderLineSymbol:f,lineStyle:y,pointSymbol:d}=l,h=r=>({type:"CIMPointSymbolCallout",leaderTolerance:m,leaderOffset:c,backgroundScale:e,lineStyle:y,gap:t,inflateSize:p,part:r});f&&this._analyzeSymbolLayer(f,[...n,{type:"cim-effect-param",effect:h("leader"),overrides:[]}],r,i,o,a,s),this._analyzeSymbolLayer(d,[...n,{type:"cim-effect-param",effect:h("marker"),overrides:[]}],r,i,o,a,s);break}}}_analyzeMultiLayerGraphic(e,t,r,i,o,a,s,l,n,m,c,p){const f=i.symbol,y=f.symbolLayers;if(y){if(!se(y)||u(n))return ye(y)?(g(f,e=>{e.colorLocked&&(c=!0)}),void this._analyzeMultiLayerGraphicNonSDF(e,t,r,i,o,a,s,l,n,m,c,p)):void this._analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,m,c,p);this._analyzeCompositeMarkerGraphic(e,t,r,i,y,a,s,l,m,c,p)}}_analyzeMarkerGraphicSymbolLayers(e,t,r,i,o,a,s,l,n,c,p,f){const y=i.symbol,d=y.symbolLayers;if(!d)return;const h=Q.applyEffects(y.effects,i.geometry);if(!h)return;let u=d.length;for(;u--;){const y=d[u];if(!y||!1===y.enable)continue;const v=y.primitiveName;switch(v&&o.push(v),y.type){case"CIMSolidFill":case"CIMSolidStroke":{const o=Q.applyEffects(y.effects,h),d=x(o);if(!d)continue;const u="Relative"!==e.anchorPointUnits,O="CIMSolidStroke"===y.type?y.width:0,{frameSizeRatio:g,anchorX:S,anchorY:M,widthRatio:C,sdfPaddingRatio:b,sdfTextureSize:k}=P(d,e.frame,e.size,e.anchorPoint,u,O,e.scaleSymbolsProportionally),z="CIMSolidFill"===y.type,L={type:"sdf",geometry:o,sdfPaddingRatio:b,asFill:z,sdfTextureSize:k},{path:E}=y,N=z?V(j(y)):null==E?V(W(y)):[0,0,0,0],R=z?[0,0,0,0]:V(W(y));if(!z&&!O)break;const T=i.primitiveName;let G=null;z&&!y.colorLocked&&(G=this._maybeGetValueOrOverrideExpression(T,"FillColor"));let A=null;z||y.colorLocked||(A=this._maybeGetValueOrOverrideExpression(T,"StrokeColor"));const F=G??this._getValueOrOverrideExpression(y.type,v,"Color",N),X=A??this._getValueOrOverrideExpression(y.type,v,"Color",R),Y=this._maybeGetValueOrOverrideExpression(T,"StrokeWidth")??this._getValueOrOverrideExpression(y.type,v,"Width",O),D=E?{type:"sprite-rasterization-param",resource:{type:"path",path:E,asFill:z},overrides:[]}:{type:"sprite-rasterization-param",resource:L,overrides:[]},H=m(this._poMap,y,n),U=w(e.size,_.CIMVectorMarker.size),B=this._getValueOrOverrideExpression(e.type,e.primitiveName,"Size",U);this._cimLayers.push({type:"marker",name:y.name,groupName:e.name,spriteRasterizationParam:D,colorLocked:!!y.colorLocked||!!p,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:S,y:M},isAbsoluteAnchorPoint:u,size:c,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:c,widthRatio:C,rotateClockwise:!1,referenceSize:s,sizeRatio:g,color:F,outlineColor:X,outlineWidth:Y,isOutline:f,markerPlacement:r,animationParams:ve(H),isStroke:"CIMSolidFill"!==y.type,baseSize:B,...I(o,k,b)});break}case"CIMPictureMarker":case"CIMVectorMarker":if(y.markerPlacement){ee().error("Error analyzing CIM, got unexpected marker placement");break}this._analyzeMarker(y,t,r,o,a,s,!1,l,n,p,f)}v&&o.pop()}}_analyzeTextGraphic(e,r,i,o,a,s,l,n){const m=[];b.findApplicableOverrides(i,this._primitiveOverrides,m);const c=i.geometry;if(!("x"in c)||!("y"in c))return;const p=i.symbol,f=D(p),y=C(p.fontStyleName),d=t(p.fontFamilyName);p.font={family:d,decoration:f,...y};const h=w(p.height,_.CIMTextSymbol.height),u=w(p.angle),v=w(p.offsetX),O=w(p.offsetY),{haloSymbol:g}=p,S=w(p.haloSize,0);let M=[0,0,0,0];if(g?.symbolLayers?.length){const e=g.symbolLayers;for(const t of e)if(t.color){M=this._getValueOrOverrideExpression(p?.haloSymbol?.type??"CIMPolygonSymbol",t.primitiveName,"Color",V(t.color));break}}const z=i.primitiveName;let x=[0,0,0,1],P=[0,0,0,0],I=0,L=!1;if(p.symbol?.symbolLayers)for(const t of p.symbol.symbolLayers){const e=t.primitiveName;if("CIMSolidStroke"===t.type)P=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Color",V(t.color)),I=this._getValueOrOverrideExpression("CIMSolidStroke",e,"Width",H(t)??0);else if("CIMSolidFill"===t.type){const r=V(t.color);L=L??!!t.colorLocked,x=this._getValueOrOverrideExpression("CIMSolidFill",e??z,"Color",r)}}let E=null,N=null,R=null,T=null,G=null;z&&(E=this._maybeGetValueOrOverrideExpression(z,"TextSize"),N=this._maybeGetValueOrOverrideExpression(z,"TextAngle"),R=this._maybeGetValueOrOverrideExpression(z,"TextOffsetX"),T=this._maybeGetValueOrOverrideExpression(z,"TextOffsetY"),L||(G=this._maybeGetValueOrOverrideExpression(z,"FillColor")));const A=G??x;let F=null,X=null,Y=0;const j="CIMBackgroundCallout"===p.callout?.type;if("CIMBackgroundCallout"===p.callout?.type){const e=p.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?F=V(e.color):"CIMSolidStroke"===e.type&&(X=V(e.color),Y=w(e.width,_.CIMSolidStroke.width))}}const W=this._getValueOrOverrideExpression(p.type,i.primitiveName,"TextString",i.textString??"");if(null==W)return;const{fontStyleName:J}=p,q=d+(J?"-"+J.toLowerCase():"-regular"),K=this._getMaterialOverrides(o,p.type);K.push(...this._getPrimitiveMaterialOverrides(i.primitiveName,p.type)),this._collectDictionaryTemplateOverrides(K,i);const Q={type:"text-rasterization-param",resource:{type:"text",textString:i.textString??"",font:p.font,symbol:p,primitiveName:i.primitiveName,supportsRichText:k(i.textString??"")||K.some(e=>"textString"===e.propertyName)},overrides:K};this._cimLayers.push({type:"text",lineWidth:p.lineWidth,textRasterizationParam:Q,colorLocked:!!n||!!L,effects:e,alignment:a,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:!1,fontName:q,decoration:f,haloSize:S,haloColor:M,weight:y.weight,style:y.style,size:E??h,angle:N??u,offsetX:R??v,offsetY:T??O,transform:{type:"cim-marker-transform-param",params:l},horizontalAlignment:B(p.horizontalAlignment),verticalAlignment:U(p.verticalAlignment),text:W,color:A,outlineColor:P,outlineSize:I,backgroundColor:F,borderLineColor:X,borderLineWidth:Y,useBackgroundCallout:j,referenceSize:s,sizeRatio:1,markerPlacement:r})}_collectDictionaryTemplateOverrides(e,t){if(t.textString&&this._hasTextStringTemplates){const r=J(t.symbol);e.push({propertyName:"textString",defaultValue:"",valueExpressionInfo:{type:"dictionary-template",textCase:r,template:t.textString},primitiveName:t.primitiveName})}}_analyzeMultiLayerGraphicNonSDF(e,t,r,i,a,s,l,n,m,c,p,f){const y=ie(e,i),d=e.primitiveName,h=this._analyzeMaterialOverrides(d,["Rotation","OffsetX","OffsetY"]),u=F(h),[v,g,S]=O.getTextureAnchor(y,this._resourceManager,Z),M=this._getMaterialOverrides(a,e.type).filter(e=>e.primitiveName!==d||!["rotation","offsetX","offsetY"].includes(e.propertyName));M.push(...u);const C={type:"sprite-rasterization-param",resource:{...y,avoidSDFRasterization:!0},overrides:M},b=w(e.size,_.CIMVectorMarker.size),k=this._getValueOrOverrideExpression(e.type,d,"Size",b);this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:C,colorLocked:p,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:v,y:g},isAbsoluteAnchorPoint:!1,size:c,rotation:0,offsetX:0,offsetY:0,transform:{type:"cim-marker-transform-param",params:n},color:[255,255,255,1],outlineColor:[0,0,0,0],outlineWidth:0,scaleX:1,frameHeight:c,widthRatio:1,rotateClockwise:!!e.rotateClockwise,referenceSize:l,sizeRatio:S/o(e.size),isOutline:f,markerPlacement:r,animationParams:ve(m),baseSize:k})}_createMarkerPlacementOverrideExpression(e){if(!e)return null;const t=[];return b.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-marker-placement-param",placement:e,overrides:ue(t)}}_createGIFAnimatedSymbolPropertiesOverrideExpression(e){if(!e)return null;const t=[];return b.findApplicableOverrides(e,this._primitiveOverrides,t),{type:"cim-gif-animation-params",animation:e,overrides:ue(t)}}_analyzeCompositeMarkerGraphic(e,t,r,i,o,a,s,l,n,m,c){const p=i.geometry,f=o[0],y=o[1],d=x(p);if(!d)return;const h="Relative"!==e.anchorPointUnits,u=w(f.width,_.CIMSolidStroke.width),{frameSizeRatio:v,anchorX:O,anchorY:g,widthRatio:S,sdfPaddingRatio:M,sdfTextureSize:C}=P(d,e.frame,e.size,e.anchorPoint,h,u,e.scaleSymbolsProportionally),{path:b}=y,k=y.primitiveName,z=f.primitiveName,I=i.primitiveName;let L=null;y.colorLocked||m||(L=this._maybeGetValueOrOverrideExpression(I,"FillColor"));const E=L??this._getValueOrOverrideExpression(y.type,k,"Color",V(y.color));let N=null;f.colorLocked||m||(N=this._maybeGetValueOrOverrideExpression(I,"StrokeColor"));const R=N??this._getValueOrOverrideExpression(f.type,z,"Color",V(f.color)),T=this._maybeGetValueOrOverrideExpression(I,"StrokeWidth")??this._getValueOrOverrideExpression(f.type,z,"Width",u),G={type:"sprite-rasterization-param",resource:b?{type:"path",path:b,asFill:!0}:{type:"sdf",geometry:p,sdfTextureSize:C,sdfPaddingRatio:M,asFill:!0},overrides:[]};this._cimLayers.push({type:"marker",name:e.name,spriteRasterizationParam:G,colorLocked:m,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:a,anchorPoint:{x:O,y:g},isAbsoluteAnchorPoint:h,size:n,rotation:0,offsetX:0,offsetY:0,scaleX:1,transform:{type:"cim-marker-transform-param",params:l},frameHeight:n,widthRatio:S,rotateClockwise:!1,referenceSize:s,sizeRatio:v,color:E,outlineColor:R,outlineWidth:T,isOutline:c,markerPlacement:r})}_setPoMap(e,t,r){let i;this._poMap[e]?i=this._poMap[e]:(i={},this._poMap[e]=i),i[t]=r}_maybeGetValueOrOverrideExpression(e,t,r){return this._getValueOrOverrideExpression("",e,t,r,!1)}_getValueOrOverrideExpression(e,t,r,i,o=!0){if(o&&!q(i)&&(i=X(e,r.toLowerCase())),null==t)return i;const a=this._poMap[t];if(null==a)return i;const s=a[r];return"string"==typeof s||"number"==typeof s||Array.isArray(s)?s:s?{valueExpressionInfo:s,defaultValue:i}:i}_analyzePrimitiveOverrides(e,t,r,i){if(null==e)return!1;"string"==typeof e&&(e=[e]);for(const o of this._primitiveOverrides)if(e.includes(o.primitiveName)&&o.valueExpressionInfo)return!0;if(null!=t)for(const o of t)if(o?.overrides.length>0)return!0;if(null!=r)for(const o of r)if(o?.overrides.length>0)return!0;if(null!=i)for(const o of i)if(o?.overrides.length>0)return!0;return!1}_getMaterialOverrides(e,t){if(!e)return[];const r=[];for(const i of e)r.push(...this._getPrimitiveMaterialOverrides(i,t));return r}_getPrimitiveMaterialOverrides(e,t){if(!e)return[];const r=F(this._primitiveOverrides.filter(t=>t.primitiveName===e));return r.forEach(e=>e.defaultValue=X(t,e.propertyName.toLowerCase())),r}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter(r=>r.primitiveName!==e||!t.includes(r.propertyName))}}function ie(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}function oe(e){if(e?.startsWith("Level_")){const t=parseInt(e.slice(6),10);if(!isNaN(t))return t}return 0}function ae(e,t){if(!t||0===t.length)return e;const i=r(e);return b.applyOverrides(i,t),i}const se=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects&&!e[0].animations&&!e[1].animations;function le(e){const t=e.symbolLayers;if(!t)return!1;const r=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectDashes"===e.type&&null!=e.dashTemplate)),i=t.find(e=>e.effects?.find(e=>"CIMGeometricEffectAddControlPoints"===e.type));return!!r||!!i}function ne(e){return me(e)}function me(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectRadial"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type||"PrivateDimensionEffect"===e.type||"PrivateMatcherGeometryOverrideEffect"===e.type}function ce(e){return"CIMSimpleLineCallout"===e.type||"CIMBackgroundCallout"===e.type||"CIMBalloonCallout"===e.type||"CIMPointSymbolCallout"===e.type}function pe(e){return"CIMGeometricEffectCircularSector"===e.type||"CIMGeometricEffectTaperedPolygon"===e.type}function fe(e,t){const r=e.some(e=>"CIMSolidFill"===e.type),i=e.every(e=>"CIMSolidFill"===e.type||"CIMSolidStroke"===e.type);return r&&i&&t.some(({effect:e})=>pe(e))}function ye(e){return e.some(e=>"CIMSolidFill"!==e.type&&"CIMSolidStroke"!==e.type&&("CIMVectorMarker"!==e.type&&"CIMPictureMarker"!==e.type||null!=e.markerPlacement))}function de(e,t){return!!(t?.some(e=>"CIMGeometricEffectRadial"===e.type)&&t?.some(e=>"CIMGeometricEffectTaperedPolygon"===e.type)||t?.some(e=>"CIMGeometricEffectCircularSector"===e.type))&&he(e)}function he(e){if(2!==e?.length)return!1;const t=e.find(e=>"CIMSolidFill"===e.type),r=e.find(e=>"CIMSolidStroke"===e.type),i=r?.effects?.some(e=>"CIMGeometricEffectDashes"===e.type);return null!=t&&null!=r&&!i}function ue(e){return r(e).map(e=>({...e,propertyName:K(e.propertyName)}))}function ve(e){return u(e)?{type:"animation-params",params:e}:null}export{re as CIMAnalyzer,ae as analyzeCIMResource};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{defaultCIMValues as e,defaultCIMColor as t}from"./defaultCIMValues.js";function r(e){return"function"==typeof e}function n(e,t,n,o){return r(e)?e(t,n,o):e}function o(e){return[e.r,e.g,e.b,e.a]}const a=" /-,\n";function i(e){let t=e.length;for(;t--;)if(!a.includes(e.charAt(t)))return!1;return!0}function l(e,t){const r=[];let n=0,o=-1;do{if(o=e.indexOf("[",n),o>=n){if(o>n){const t=e.slice(n,o);r.push([t,null,i(t)])}if(n=o+1,o=e.indexOf("]",n),o>=n){if(o>n){const a=t[e.slice(n,o)];a&&r.push([null,a,!1])}n=o+1}}}while(-1!==o);if(n<e.length){const t=e.slice(n);r.push([t,null,i(t)])}return r}function c(e,t,r){let n="",o=null;for(const a of t){const[t,r,i]=a;if(null!=t&&""!==t)i?o=t:(null!=o&&(n+=o,o=null),n+=t);else{const t=e.readAttribute(r);null!=t&&""!==t&&(null!==o&&(n+=o,o=null),n+=t)}}return u(n,r)}function s(e,t,r,n){let o="",a=null;for(const i of t){const[t,n,l]=i;if(null!=t&&""!==t)l?a=t:(null!=a&&(o+=a,a=null),o+=t);else{let t=n;null!=r&&(t=j(n,r));const i=e.attributes[t];null!=i&&""!==i&&(null!=a&&(o+=a,a=null),o+=i)}}return u(o,n)}function u(e,t){switch("string"!=typeof e&&(e=String(e)),t){case"LowerCase":return e.toLowerCase();case"Allcaps":return e.toUpperCase();default:return e}}function f(e,t,r,n,o,a,i=!0){const l=t/o,c=r/a,s=Math.ceil(l/2),u=Math.ceil(c/2);for(let f=0;f<a;f++)for(let r=0;r<o;r++){const M=4*(r+(i?a-f-1:f)*o);let y=0,C=0,m=0,h=0,I=0,b=0,p=0;const d=(f+.5)*c;for(let n=Math.floor(f*c);n<(f+1)*c;n++){const o=Math.abs(d-(n+.5))/u,a=(r+.5)*l,i=o*o;for(let c=Math.floor(r*l);c<(r+1)*l;c++){let r=Math.abs(a-(c+.5))/s;const o=Math.sqrt(i+r*r);o>=-1&&o<=1&&(y=2*o*o*o-3*o*o+1,y>0&&(r=4*(c+n*t),p+=y*e[r+3],m+=y,e[r+3]<255&&(y=y*e[r+3]/250),h+=y*e[r],I+=y*e[r+1],b+=y*e[r+2],C+=y))}}n[M]=h/C,n[M+1]=I/C,n[M+2]=b/C,n[M+3]=p/m}}function M(e){return e?[e[0],e[1],e[2],e[3]/255]:[0,0,0,0]}function y(e){return e.data?.symbol??null}function C(e){return"CIMVectorMarker"===e.type||"CIMPictureMarker"===e.type||"CIMBarChartMarker"===e.type||"CIMCharacterMarker"===e.type||"CIMPieChartMarker"===e.type||"CIMStackedBarChartMarker"===e.type}function m(e){return"CIMGradientStroke"===e.type||"CIMPictureStroke"===e.type||"CIMSolidStroke"===e.type}function h(e){return null!=e&&("CIMGradientFill"===e.type||"CIMHatchFill"===e.type||"CIMPictureFill"===e.type||"CIMSolidFill"===e.type||"CIMWaterFill"===e.type)}function I(e){return null!=e&&("CIMMarkerPlacementAlongLineRandomSize"===e.type||"CIMMarkerPlacementAlongLineSameSize"===e.type||"CIMMarkerPlacementAlongLineVariableSize"===e.type||"CIMMarkerPlacementAtExtremities"===e.type||"CIMMarkerPlacementAtMeasuredUnits"===e.type||"CIMMarkerPlacementAtRatioPositions"===e.type||"CIMMarkerPlacementOnLine"===e.type||"CIMMarkerPlacementOnVertices"===e.type)}const b=(e,t=0)=>null==e||isNaN(e)?t:e,p=(e,t)=>null!=e?e:t,d=(e,t)=>e??t,k=e=>e.tintColor?M(e.tintColor):[255,255,255,1];function S(e){if(!e)return"normal";switch(e.toLowerCase()){case"italic":return"italic";case"oblique":return"oblique";default:return"normal"}}function P(e){if(!e)return"normal";switch(e.toLowerCase()){case"bold":return"bold";case"bolder":return"bolder";case"lighter":return"lighter";default:return"normal"}}function g(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function w(e){if(!e)return null;switch(e.type){case"CIMPolygonSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=w(t);if(null!=e)return e}break;case"CIMTextSymbol":return w(e.symbol);case"CIMSolidFill":return e.color}return null}function L(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":{const t=e.symbolLayers;if(t)for(const e of t){const t=L(e);if(null!=t)return t}break}case"CIMTextSymbol":return L(e.symbol);case"CIMSolidStroke":return e.color}}function G(e){for(const t of e)if(t.enable)switch(t.type){case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return!0}return!1}function E(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=E(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return E(e.symbol);case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return e.width}}function A(t){let r=0;for(const n of t??[])!1!==n.enable&&m(n)&&(r=Math.max(r,b(n.width,e[n.type].width)));return r}function x(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return"justify"}}function v(e){switch(e){default:case"Bottom":return"bottom";case"Top":return"top";case"Center":return"middle";case"Baseline":return"baseline"}}function T(e){return(e?Object.keys(e):[]).map(t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"}))}const N=e=>e.includes("data:image/svg+xml");function F(e){if(!e)return null;switch(e.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function z(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function V(e,t,r,n,o,a,i=!0){const{infos:l}=a;let c=1,s=0,u=0,f=0,M=1;for(const{absoluteAnchorPoint:m,offsetX:h,offsetY:I,rotation:b,size:p,frameHeight:d,rotateClockWise:k,scaleSymbolsProportionally:S}of l){M=m?1:c;u=J(h,I,s,M,u),f=H(h,I,s,M,f),d&&(S||i)&&(c*=p/d),s=U(b,k,s)}const y=J(n,o,s,M,u),C=H(n,o,s,M,f);return{size:e*c,rotation:U(t,r,s),offsetX:y,offsetY:C}}function O(e){if(null==e)return!1;if(Array.isArray(e))return e.every(e=>O(e));switch(typeof e){case"string":return!!e;case"number":return!isNaN(e)}}function R(r,n){if("color"===n||"outlinecolor"===n||"backgroundcolor"===n||"borderlinecolor"===n||"tintcolor"===n)return[...t[n]];const o=e[r];if(!o)throw new Error(`InternalError: default value for type ${r}.`);return o[n]}function D(e){if(null==e)return"Normal";switch(e.type){case"CIMTextSymbol":return e.textCase??"Normal";case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const t=e.symbolLayers;if(!t)return"Normal";for(const e of t)if("CIMVectorMarker"===e.type)return D(e)}break;case"CIMVectorMarker":{const t=e.markerGraphics;if(!t)return"Normal";for(const e of t)if(e.symbol)return D(e.symbol)}}return"Normal"}function W(t){if(t)switch(t.type){case"CIMTextSymbol":return t.height;case"CIMPointSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t);break}}return r}case"CIMLineSymbol":case"CIMPolygonSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=n.width;null!=e&&e>r&&(r=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(n.markerPlacement&&I(n.markerPlacement)){const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t)}break;case"CIMPictureFill":{const e=n.height;null!=e&&e>r&&(r=e)}}return r}}}function j(e,t){if(null!==t){const r=t.get(e);return r?r.name:e}return e}function B(e){return e.map(e=>({...e,propertyName:z(e.propertyName)}))}function q(e){const t={};for(const r in e){const n=e[r];t[z(r)]=n}return t}function X(e){if(!e)return 0;let t=0;for(const r of e)t+=Y(r);return t}function Y(e){if(!e)return 0;if(Z(e))return e.inflateSize??256;switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectCircularSector":return Math.abs(e.radius??25);case"CIMGeometricEffectControlMeasureLine":return 500;case"CIMGeometricEffectExtension":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(b(e.offsetX)),Math.abs(b(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRadial":return Math.abs(e.length??5);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function H(e,t,r,n,o){const a=r*Math.PI/180;if(a){const r=Math.cos(a);return(Math.sin(a)*e+r*t)*n+o}return t*n+o}function J(e,t,r,n,o){const a=r*Math.PI/180;if(a){return(Math.cos(a)*e-Math.sin(a)*t)*n+o}return e*n+o}function U(e,t,r){return t?r-e:r+e}function $(e,t,r){const n="Color"===r||"TintColor"===r||"ToColor"===r,o="Rotation"===r||"Angle"===r||"ToRotation"===r;let a=t[z(r)];if(null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]/255]:o&&(a*=Math.PI/180)),null==a&&(a=R(t.type,r.toLowerCase()),null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]]:o&&(a*=Math.PI/180))),null!=t.primitiveName){const i=e[t.primitiveName];if(null!=i){const e=i[r];null==e||("string"==typeof e||"number"==typeof e||Array.isArray(e)?(a=e,null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]/255]:o&&(a*=Math.PI/180))):(a={valueExpressionInfo:e,defaultValue:a},null!=a&&(n?a={type:"Process",op:"ArcadeColor",value:a}:o&&(a={type:"Process",op:"Divide",left:a,right:180/Math.PI}))))}}if(null==a)throw new Error(`Failed to derive a value or an expression for "${r}".`);return a}function K(e,t,r){if(null!=t[z(r)])return!0;if(null!=t.primitiveName){const n=e[t.primitiveName];if(null!=n){if(null!=n[r])return!0}}return!1}function Q(e,t){return Math.max(Math.min((e??t)/100,1),0)}function Z(e){return e.type.startsWith("Private")}function _(e){return null!=e&&ee(e)?e:void 0}function ee(e){return"setControlPoint"in e&&"getControlPoint"in e&&"setControlPointAt"in e&&"getControlPointAt"in e}export{u as adjustTextCase,l as analyzeTextParts,V as applyParentTransform,_ as asCIMGeometryCursor,s as assignTextValuesFromFeature,T as attributesToFields,o as colorToArray,n as evaluateValueOrFunction,g as fromCIMFontDecoration,x as fromCIMHorizontalAlignment,v as fromCIMVerticalAlignment,R as getDefaultCIMValue,X as getEffectsInflateSize,d as getEnum,j as getFieldName,w as getFillColor,S as getFontStyle,P as getFontWeight,A as getMaxStrokeWidth,b as getNumericValue,$ as getProcessParam,Q as getRelativeGradientSize,W as getSize,L as getStrokeColor,E as getStrokeWidth,D as getTextCasing,c as getTextValuesFromFeatureHandle,k as getTintColor,p as getValue,K as hasProcessParam,G as hasStrokeLayer,h as isCIMFill,C as isCIMMarker,I as isCIMMarkerStrokePlacement,m as isCIMStroke,r as isFeatureValueFn,Z as isPrivateGeometricEffect,N as isSVGImage,O as isValidCIMValue,F as mapCIMSymbolToGeometryType,M as normalizeAlpha,B as normalizePrimitiveOverrideProps,f as resampleHermite,y as toCIMSymbolJSON,q as toLowerCaseProps,z as uncapitalize};
2
+ import{defaultCIMValues as e,defaultCIMColor as t}from"./defaultCIMValues.js";function r(e){return"function"==typeof e}function n(e,t,n,o){return r(e)?e(t,n,o):e}function o(e){return[e.r,e.g,e.b,e.a]}const a=" /-,\n";function i(e){let t=e.length;for(;t--;)if(!a.includes(e.charAt(t)))return!1;return!0}function l(e,t){const r=[];let n=0,o=-1;do{if(o=e.indexOf("[",n),o>=n){if(o>n){const t=e.slice(n,o);r.push([t,null,i(t)])}if(n=o+1,o=e.indexOf("]",n),o>=n){if(o>n){const a=t[e.slice(n,o)];a&&r.push([null,a,!1])}n=o+1}}}while(-1!==o);if(n<e.length){const t=e.slice(n);r.push([t,null,i(t)])}return r}function c(e,t,r){let n="",o=null;for(const a of t){const[t,r,i]=a;if(null!=t&&""!==t)i?o=t:(null!=o&&(n+=o,o=null),n+=t);else{const t=e.readAttribute(r);null!=t&&""!==t&&(null!==o&&(n+=o,o=null),n+=t)}}return u(n,r)}function s(e,t,r,n){let o="",a=null;for(const i of t){const[t,n,l]=i;if(null!=t&&""!==t)l?a=t:(null!=a&&(o+=a,a=null),o+=t);else{let t=n;null!=r&&(t=W(n,r));const i=e.attributes[t];null!=i&&""!==i&&(null!=a&&(o+=a,a=null),o+=i)}}return u(o,n)}function u(e,t){switch("string"!=typeof e&&(e=String(e)),t){case"LowerCase":return e.toLowerCase();case"Allcaps":return e.toUpperCase();default:return e}}function f(e,t,r,n,o,a,i=!0){const l=t/o,c=r/a,s=Math.ceil(l/2),u=Math.ceil(c/2);for(let f=0;f<a;f++)for(let r=0;r<o;r++){const M=4*(r+(i?a-f-1:f)*o);let y=0,C=0,m=0,h=0,I=0,b=0,p=0;const d=(f+.5)*c;for(let n=Math.floor(f*c);n<(f+1)*c;n++){const o=Math.abs(d-(n+.5))/u,a=(r+.5)*l,i=o*o;for(let c=Math.floor(r*l);c<(r+1)*l;c++){let r=Math.abs(a-(c+.5))/s;const o=Math.sqrt(i+r*r);o>=-1&&o<=1&&(y=2*o*o*o-3*o*o+1,y>0&&(r=4*(c+n*t),p+=y*e[r+3],m+=y,e[r+3]<255&&(y=y*e[r+3]/250),h+=y*e[r],I+=y*e[r+1],b+=y*e[r+2],C+=y))}}n[M]=h/C,n[M+1]=I/C,n[M+2]=b/C,n[M+3]=p/m}}function M(e){return e?[e[0],e[1],e[2],e[3]/255]:[0,0,0,0]}function y(e){return e.data?.symbol??null}function C(e){return"CIMVectorMarker"===e.type||"CIMPictureMarker"===e.type||"CIMBarChartMarker"===e.type||"CIMCharacterMarker"===e.type||"CIMPieChartMarker"===e.type||"CIMStackedBarChartMarker"===e.type}function m(e){return"CIMGradientStroke"===e.type||"CIMPictureStroke"===e.type||"CIMSolidStroke"===e.type}function h(e){return null!=e&&("CIMGradientFill"===e.type||"CIMHatchFill"===e.type||"CIMPictureFill"===e.type||"CIMSolidFill"===e.type||"CIMWaterFill"===e.type)}function I(e){return null!=e&&("CIMMarkerPlacementAlongLineRandomSize"===e.type||"CIMMarkerPlacementAlongLineSameSize"===e.type||"CIMMarkerPlacementAlongLineVariableSize"===e.type||"CIMMarkerPlacementAtExtremities"===e.type||"CIMMarkerPlacementAtMeasuredUnits"===e.type||"CIMMarkerPlacementAtRatioPositions"===e.type||"CIMMarkerPlacementOnLine"===e.type||"CIMMarkerPlacementOnVertices"===e.type)}const b=(e,t=0)=>null==e||isNaN(e)?t:e,p=(e,t)=>null!=e?e:t,d=(e,t)=>e??t,k=e=>e.tintColor?M(e.tintColor):[255,255,255,1];function S(e){if(!e)return"normal";switch(e.toLowerCase()){case"italic":return"italic";case"oblique":return"oblique";default:return"normal"}}function P(e){if(!e)return"normal";switch(e.toLowerCase()){case"bold":return"bold";case"bolder":return"bolder";case"lighter":return"lighter";default:return"normal"}}function g(e){return e.underline?"underline":e.strikethrough?"line-through":"none"}function w(e){if(!e)return null;switch(e.type){case"CIMPolygonSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=w(t);if(null!=e)return e}break;case"CIMTextSymbol":return w(e.symbol);case"CIMSolidFill":return e.color}return null}function L(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":{const t=e.symbolLayers;if(t)for(const e of t){const t=L(e);if(null!=t)return t}break}case"CIMTextSymbol":return L(e.symbol);case"CIMSolidStroke":return e.color}}function G(e){for(const t of e)if(t.enable)switch(t.type){case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return!0}return!1}function E(e){if(e)switch(e.type){case"CIMPolygonSymbol":case"CIMLineSymbol":if(e.symbolLayers)for(const t of e.symbolLayers){const e=E(t);if(void 0!==e)return e}break;case"CIMTextSymbol":return E(e.symbol);case"CIMSolidStroke":case"CIMGradientStroke":case"CIMPictureStroke":return e.width}}function A(t){let r=0;for(const n of t??[])!1!==n.enable&&m(n)&&(r=Math.max(r,b(n.width,e[n.type].width)));return r}function x(e){switch(e){case"Left":default:return"left";case"Right":return"right";case"Center":return"center";case"Justify":return"justify"}}function v(e){switch(e){default:case"Bottom":return"bottom";case"Top":return"top";case"Center":return"middle";case"Baseline":return"baseline"}}function T(e){return(e?Object.keys(e):[]).map(t=>({name:t,alias:t,type:"string"==typeof e[t]?"esriFieldTypeString":"esriFieldTypeDouble"}))}const N=e=>e.includes("data:image/svg+xml");function z(e){if(!e)return null;switch(e.type){case"CIMPointSymbol":case"CIMTextSymbol":return"esriGeometryPoint";case"CIMLineSymbol":return"esriGeometryPolyline";case"CIMPolygonSymbol":return"esriGeometryPolygon";default:return null}}function F(e){return e?e.charAt(0).toLowerCase()+e.slice(1):e}function V(e,t,r,n,o,a,i=!0){const{infos:l}=a;let c=1,s=0,u=0,f=0,M=1;for(const{absoluteAnchorPoint:m,offsetX:h,offsetY:I,rotation:b,size:p,frameHeight:d,rotateClockWise:k,scaleSymbolsProportionally:S}of l){M=m?1:c;u=J(h,I,s,M,u),f=H(h,I,s,M,f),d&&(S||i)&&(c*=p/d),s=U(b,k,s)}const y=J(n,o,s,M,u),C=H(n,o,s,M,f);return{size:e*c,rotation:U(t,r,s),offsetX:y,offsetY:C}}function O(e){if(null==e)return!1;if(Array.isArray(e))return e.every(e=>O(e));switch(typeof e){case"string":return!!e;case"number":return!isNaN(e)}}function R(r,n){if("color"===n||"outlinecolor"===n||"backgroundcolor"===n||"borderlinecolor"===n||"tintcolor"===n)return[...t[n]];const o=e[r];if(!o)throw new Error(`InternalError: default value for type ${r}.`);return o[n]}function B(e){if(null==e)return"Normal";switch(e.type){case"CIMTextSymbol":return e.textCase??"Normal";case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":{const t=e.symbolLayers;if(!t)return"Normal";for(const e of t)if("CIMVectorMarker"===e.type)return B(e)}break;case"CIMVectorMarker":{const t=e.markerGraphics;if(!t)return"Normal";for(const e of t)if(e.symbol)return B(e.symbol)}}return"Normal"}function D(t){if(t)switch(t.type){case"CIMTextSymbol":return t.height;case"CIMPointSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":{const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t);break}}return r}case"CIMLineSymbol":case"CIMPolygonSymbol":{let r=0;if(t.symbolLayers)for(const n of t.symbolLayers)if(n)switch(n.type){case"CIMSolidStroke":case"CIMPictureStroke":case"CIMGradientStroke":{const e=n.width;null!=e&&e>r&&(r=e);break}case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":case"CIMObjectMarker3D":case"CIMglTFMarker3D":if(n.markerPlacement&&I(n.markerPlacement)){const t=n.size??e.CIMVectorMarker.size;t>r&&(r=t)}break;case"CIMPictureFill":{const e=n.height;null!=e&&e>r&&(r=e)}}return r}}}function W(e,t){if(null!==t){const r=t.get(e);return r?r.name:e}return e}function j(e){return e.map(e=>({...e,propertyName:F(e.propertyName)}))}function q(e){const t={};for(const r in e){const n=e[r];t[F(r)]=n}return t}function X(e){if(!e)return 0;let t=0;for(const r of e)t+=Y(r);return t}function Y(e){if(!e)return 0;if(Z(e))return e.inflateSize??256;if(_(e))return Math.abs(e.inflateSize);switch(e.type){case"CIMGeometricEffectArrow":return Math.abs(.5*e.width);case"CIMGeometricEffectBuffer":return Math.abs(e.size);case"CIMGeometricEffectCircularSector":return Math.abs(e.radius??25);case"CIMGeometricEffectControlMeasureLine":return 500;case"CIMGeometricEffectExtension":return Math.abs(e.length);case"CIMGeometricEffectJog":return Math.abs(.5*e.length);case"CIMGeometricEffectMove":return Math.max(Math.abs(b(e.offsetX)),Math.abs(b(e.offsetY)));case"CIMGeometricEffectOffset":case"CIMGeometricEffectOffsetTangent":return Math.abs(e.offset);case"CIMGeometricEffectRadial":return Math.abs(e.length??5);case"CIMGeometricEffectRegularPolygon":return Math.abs(e.radius);case"CIMGeometricEffectRotate":case"CIMGeometricEffectScale":default:return 0;case"CIMGeometricEffectTaperedPolygon":return.5*Math.max(Math.abs(e.fromWidth),Math.abs(e.toWidth));case"CIMGeometricEffectWave":return Math.abs(e.amplitude);case"CIMGeometricEffectDonut":return Math.abs(e.width)}}function H(e,t,r,n,o){const a=r*Math.PI/180;if(a){const r=Math.cos(a);return(Math.sin(a)*e+r*t)*n+o}return t*n+o}function J(e,t,r,n,o){const a=r*Math.PI/180;if(a){return(Math.cos(a)*e-Math.sin(a)*t)*n+o}return e*n+o}function U(e,t,r){return t?r-e:r+e}function $(e,t,r){const n="Color"===r||"TintColor"===r||"ToColor"===r,o="Rotation"===r||"Angle"===r||"ToRotation"===r;let a=t[F(r)];if(null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]/255]:o&&(a*=Math.PI/180)),null==a&&(a=R(t.type,r.toLowerCase()),null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]]:o&&(a*=Math.PI/180))),null!=t.primitiveName){const i=e[t.primitiveName];if(null!=i){const e=i[r];null==e||("string"==typeof e||"number"==typeof e||Array.isArray(e)?(a=e,null!=a&&(n?a=[a[0]/255,a[1]/255,a[2]/255,a[3]/255]:o&&(a*=Math.PI/180))):(a={valueExpressionInfo:e,defaultValue:a},null!=a&&(n?a={type:"Process",op:"ArcadeColor",value:a}:o&&(a={type:"Process",op:"Divide",left:a,right:180/Math.PI}))))}}if(null==a)throw new Error(`Failed to derive a value or an expression for "${r}".`);return a}function K(e,t,r){if(null!=t[F(r)])return!0;if(null!=t.primitiveName){const n=e[t.primitiveName];if(null!=n){if(null!=n[r])return!0}}return!1}function Q(e,t){return Math.max(Math.min((e??t)/100,1),0)}function Z(e){return e.type.startsWith("Private")}function _(e){return"CIMSimpleLineCallout"===e.type||"CIMBackgroundCallout"===e.type||"CIMBalloonCallout"===e.type||"CIMPointSymbolCallout"===e.type}function ee(e){return null!=e&&te(e)?e:void 0}function te(e){return"setControlPoint"in e&&"getControlPoint"in e&&"setControlPointAt"in e&&"getControlPointAt"in e}export{u as adjustTextCase,l as analyzeTextParts,V as applyParentTransform,ee as asCIMGeometryCursor,s as assignTextValuesFromFeature,T as attributesToFields,o as colorToArray,n as evaluateValueOrFunction,g as fromCIMFontDecoration,x as fromCIMHorizontalAlignment,v as fromCIMVerticalAlignment,R as getDefaultCIMValue,X as getEffectsInflateSize,d as getEnum,W as getFieldName,w as getFillColor,S as getFontStyle,P as getFontWeight,A as getMaxStrokeWidth,b as getNumericValue,$ as getProcessParam,Q as getRelativeGradientSize,D as getSize,L as getStrokeColor,E as getStrokeWidth,B as getTextCasing,c as getTextValuesFromFeatureHandle,k as getTintColor,p as getValue,K as hasProcessParam,G as hasStrokeLayer,h as isCIMFill,C as isCIMMarker,I as isCIMMarkerStrokePlacement,m as isCIMStroke,r as isFeatureValueFn,Z as isPrivateGeometricEffect,N as isSVGImage,O as isValidCIMValue,z as mapCIMSymbolToGeometryType,M as normalizeAlpha,j as normalizePrimitiveOverrideProps,f as resampleHermite,y as toCIMSymbolJSON,q as toLowerCaseProps,F as uncapitalize};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{ensureOneOfType as e}from"../../core/accessorSupport/ensureType.js";import{createTypeReader as r}from"../../core/accessorSupport/extensions/serializableProperty/reader.js";import t from"../CIMSymbol.js";import o from"../LabelSymbol3D.js";import l from"../LineSymbol3D.js";import m from"../MeshSymbol3D.js";import p from"../PictureFillSymbol.js";import i from"../PictureMarkerSymbol.js";import s from"../PointSymbol3D.js";import y from"../PolygonSymbol3D.js";import a from"../SimpleFillSymbol.js";import n from"../SimpleLineSymbol.js";import b from"../SimpleMarkerSymbol.js";import c from"../Symbol.js";import f from"../TextSymbol.js";import d from"../WebStyleSymbol.js";function u(e){return e instanceof c}function k(e){if(!e)return!1;switch(e.type){case"picture-fill":case"picture-marker":case"simple-fill":case"simple-line":case"simple-marker":case"text":case"cim":return!0;default:return!1}}function S(e){switch(e?.type){case"label-3d":case"line-3d":case"mesh-3d":case"point-3d":case"polygon-3d":return!0;default:return!1}}const x={base:c,key:"type",typeMap:{"simple-fill":a,"picture-fill":p,"picture-marker":i,"simple-line":n,"simple-marker":b,text:f,"label-3d":o,"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d,cim:t},errorContext:"symbol"},j={base:c,key:"type",typeMap:{"simple-fill":a,cim:t},errorContext:"symbol"},M={base:c,key:"type",typeMap:{"picture-marker":i,"simple-marker":b,"point-3d":s,cim:t},errorContext:"symbol"},C={base:c,key:"type",typeMap:{"simple-line":n,"line-3d":l,cim:t},errorContext:"symbol"},h={base:c,key:"type",typeMap:{"simple-fill":a,"picture-fill":p,"polygon-3d":y,cim:t},errorContext:"symbol"},g={base:c,key:"type",typeMap:{"picture-marker":i,"simple-marker":b,text:f,"web-style":d,cim:t},errorContext:"symbol"},w=r({types:x}),D={base:c,key:"type",typeMap:{"simple-fill":a,"picture-fill":p,"picture-marker":i,"simple-line":n,"simple-marker":b,text:f,"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d,cim:t},errorContext:"symbol"},P={base:c,key:"type",typeMap:{text:f,"label-3d":o},errorContext:"symbol"},L={base:c,key:"type",typeMap:{"label-3d":o,"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d},errorContext:"symbol"},F={base:c,key:"type",typeMap:{"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d,cim:t},errorContext:"symbol"},T={base:c,key:"type",typeMap:{"label-3d":o},errorContext:"symbol"},z=e(x);export{z as ensureType,u as isSymbol,k as isSymbol2D,S as isSymbol3D,C as lineSymbolTypes,M as pointSymbolTypes,h as polygonSymbolTypes,w as readSymbol,j as simpleFillAndCIMSymbolTypes,x as symbolTypes,L as symbolTypes3D,g as symbolTypesCluster,P as symbolTypesLabel,T as symbolTypesLabel3D,D as symbolTypesRenderer,F as symbolTypesRenderer3D};
2
+ import{ensureOneOfType as e}from"../../core/accessorSupport/ensureType.js";import{createTypeReader as r}from"../../core/accessorSupport/extensions/serializableProperty/reader.js";import t from"../CIMSymbol.js";import o from"../LabelSymbol3D.js";import l from"../LineSymbol3D.js";import m from"../MeshSymbol3D.js";import p from"../PictureFillSymbol.js";import i from"../PictureMarkerSymbol.js";import s from"../PointSymbol3D.js";import y from"../PolygonSymbol3D.js";import a from"../SimpleFillSymbol.js";import n from"../SimpleLineSymbol.js";import b from"../SimpleMarkerSymbol.js";import c from"../Symbol.js";import f from"../TextSymbol.js";import d from"../WebStyleSymbol.js";function u(e){return e instanceof c}function k(e){if(!e)return!1;switch(e.type){case"picture-fill":case"picture-marker":case"simple-fill":case"simple-line":case"simple-marker":case"text":case"cim":return!0;default:return!1}}function x(e){switch(e?.type){case"label-3d":case"line-3d":case"mesh-3d":case"point-3d":case"polygon-3d":return!0;default:return!1}}const S={base:c,key:"type",typeMap:{"simple-fill":a,"picture-fill":p,"picture-marker":i,"simple-line":n,"simple-marker":b,text:f,"label-3d":o,"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d,cim:t},errorContext:"symbol"},j={base:c,key:"type",typeMap:{"simple-fill":a,cim:t},errorContext:"symbol"},M={base:c,key:"type",typeMap:{"picture-marker":i,"simple-marker":b,"point-3d":s,cim:t},errorContext:"symbol"},C={base:c,key:"type",typeMap:{"simple-line":n,"line-3d":l,cim:t},errorContext:"symbol"},h={base:c,key:"type",typeMap:{"simple-fill":a,"picture-fill":p,"polygon-3d":y,cim:t},errorContext:"symbol"},g={base:c,key:"type",typeMap:{"picture-marker":i,"simple-marker":b,text:f,"web-style":d,cim:t},errorContext:"symbol"},w=r({types:S}),D={base:c,key:"type",typeMap:{"simple-fill":a,"picture-fill":p,"picture-marker":i,"simple-line":n,"simple-marker":b,text:f,"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d,cim:t},errorContext:"symbol"},P={base:c,key:"type",typeMap:{text:f,"label-3d":o,cim:t},errorContext:"symbol"},L={base:c,key:"type",typeMap:{text:f,cim:t},errorContext:"symbol"},F={base:c,key:"type",typeMap:{"label-3d":o,"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d},errorContext:"symbol"},T={base:c,key:"type",typeMap:{"line-3d":l,"mesh-3d":m,"point-3d":s,"polygon-3d":y,"web-style":d,cim:t},errorContext:"symbol"},z={base:c,key:"type",typeMap:{"label-3d":o},errorContext:"symbol"},I=e(S);export{I as ensureType,u as isSymbol,k as isSymbol2D,x as isSymbol3D,C as lineSymbolTypes,M as pointSymbolTypes,h as polygonSymbolTypes,w as readSymbol,j as simpleFillAndCIMSymbolTypes,S as symbolTypes,F as symbolTypes3D,g as symbolTypesCluster,P as symbolTypesLabel,L as symbolTypesLabel2D,z as symbolTypesLabel3D,D as symbolTypesRenderer,T as symbolTypesRenderer3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import"../../core/has.js";import{property as s,subclass as r}from"../../core/accessorSupport/decorators.js";import{SymbolFader as l}from"./engine/vectorTiles/decluttering/SymbolFader.js";import{tileSize as o}from"./engine/webgl/definitions.js";const i=8;class n{constructor(){this.styles=new Map,this.layerContexts=new Map}get cachedStyles(){return this.styles}setLabelClassStyle(e,t,s){this.layerContexts.set(e,t),this.styles.set(e,s)}clear(){this.layerContexts.clear(),this.styles.clear()}}let a=class extends t{constructor(e){super(e),this._styleRepository=new n,this.decluttering=!1,this.declutterRequested=!1,this.featuresTilingScheme=null;const t=(e,t)=>{};this.symbolFader=new l("feature-tile",this._styleRepository,t,[],o,i,()=>this.requestDeclutter())}get updating(){return this.decluttering||this.declutterRequested}requestDeclutter(){this.declutterRequested=!0}declutter(e,t){if(this.declutterRequested&&!this.decluttering&&(this._updateRepository(e),this.symbolFader.restartDeclutter(),this.decluttering=!0,this.declutterRequested=!1),this.decluttering&&null!=this.featuresTilingScheme){for(const s of this.symbolFader.tiles)s.setTransform(t);const e=this.symbolFader.update(this.featuresTilingScheme.scaleToZoom(t.scale),t);this.decluttering=!e}return this.decluttering}_updateRepository(e){this._styleRepository.clear(),this.symbolFader.tiles.length=0,this.symbolFader.symbolRepository?.flushFeatureTileUpdateMessages();for(const t of e)if(t.labelSchema){const e=this._getLabelSchemaStyles(t);if(!e.length)continue;for(const s of e){const e=c(s);this._styleRepository.setLabelClassStyle(s.labelClassId,t,e)}for(const s of t.tiles||[])s.decluttering&&this.symbolFader.tiles.push(s)}}_getLabelSchemaStyles(e){const t=e.labelSchema;if(!t)return[];switch(t.type){case"label":return t.classes;case"subtype":return Array.from(Object.values(t.renderers).flatMap(e=>e.classes));case"cluster":return[...t.cluster.classes,...t.feature.classes];case"track":return[...t.latestObservation.classes,...t.previousObservation.classes,...t.trackLine.classes]}}};function c(e){const t="esriGeometryPolyline"===e.geometryType?0:1,s="esriGeometryPolyline"===e.geometryType?0:1;return{geometryType:e.geometryType,iconAllowOverlap:!e.deconflictionEnabled,iconIgnorePlacement:!1,textAllowOverlap:!e.deconflictionEnabled,textIgnorePlacement:!1,iconRotationAlignment:t,textRotationAlignment:t,iconTranslateAnchor:s,iconTranslate:[0,0],textTranslateAnchor:s,textTranslate:[0,0]}}e([s()],a.prototype,"decluttering",void 0),e([s()],a.prototype,"declutterRequested",void 0),e([s()],a.prototype,"updating",null),e([s()],a.prototype,"featuresTilingScheme",void 0),a=e([r("esri.views.2d.LabelManager")],a);export{n as LabelClassStyleRepository,a as LabelManager};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Accessor.js";import"../../core/has.js";import{property as s,subclass as r}from"../../core/accessorSupport/decorators.js";import{SymbolFader as l}from"./engine/vectorTiles/decluttering/SymbolFader.js";import{tileSize as o}from"./engine/webgl/definitions.js";const i=8;class n{constructor(){this.styles=new Map,this.layerContexts=new Map}get cachedStyles(){return this.styles}setLabelClassStyle(e,t,s){this.layerContexts.set(e,t),this.styles.set(e,s)}clear(){this.layerContexts.clear(),this.styles.clear()}}let a=class extends t{constructor(e){super(e),this._styleRepository=new n,this.decluttering=!1,this.declutterRequested=!1,this.featuresTilingScheme=null;const t=(e,t)=>{};this.symbolFader=new l("feature-tile",this._styleRepository,t,[],o,i,()=>this.requestDeclutter())}get updating(){return this.decluttering||this.declutterRequested}requestDeclutter(){this.declutterRequested=!0}declutter(e,t){if(this.declutterRequested&&!this.decluttering&&(this._updateRepository(e),this.symbolFader.restartDeclutter(),this.decluttering=!0,this.declutterRequested=!1),this.decluttering&&null!=this.featuresTilingScheme){for(const s of this.symbolFader.tiles)s.setTransform(t);const e=this.symbolFader.update(this.featuresTilingScheme.scaleToZoom(t.scale),t);this.decluttering=!e}return this.decluttering}_updateRepository(e){this._styleRepository.clear(),this.symbolFader.tiles.length=0;for(const t of e)if(t.labelSchema){const e=this._getLabelSchemaStyles(t);if(!e.length)continue;for(const s of e){const e=c(s);this._styleRepository.setLabelClassStyle(s.labelClassId,t,e)}for(const s of t.tiles||[])s.decluttering&&this.symbolFader.tiles.push(s)}this.symbolFader.symbolRepository?.flushFeatureTileUpdateMessages()}_getLabelSchemaStyles(e){const t=e.labelSchema;if(!t)return[];switch(t.type){case"label":return t.classes;case"subtype":return Array.from(Object.values(t.renderers).flatMap(e=>e.classes));case"cluster":return[...t.cluster.classes,...t.feature.classes];case"track":return[...t.latestObservation.classes,...t.previousObservation.classes,...t.trackLine.classes]}}};function c(e){const t="esriGeometryPolyline"===e.geometryType?0:1,s="esriGeometryPolyline"===e.geometryType?0:1;return{geometryType:e.geometryType,iconAllowOverlap:!e.deconflictionEnabled,iconIgnorePlacement:!1,textAllowOverlap:!e.deconflictionEnabled,textIgnorePlacement:!1,iconRotationAlignment:t,textRotationAlignment:t,iconTranslateAnchor:s,iconTranslate:[0,0],textTranslateAnchor:s,textTranslate:[0,0]}}e([s()],a.prototype,"decluttering",void 0),e([s()],a.prototype,"declutterRequested",void 0),e([s()],a.prototype,"updating",null),e([s()],a.prototype,"featuresTilingScheme",void 0),a=e([r("esri.views.2d.LabelManager")],a);export{n as LabelClassStyleRepository,a as LabelManager};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{AttributeStoreView as e}from"./webgl/AttributeStoreView.js";import t from"./webgl/TileContainer.js";const i=60;class s extends t{constructor(t){super(t),this._statisticsByLevel=new Map,this._entityIndex=new Map,this.attributeView=new e}destroy(){super.destroy(),this.children.forEach(e=>e.destroy()),this.removeAllChildren(),this.attributeView.destroy()}doRender(e){e.context.capabilities.enable("textureFloatLinear"),super.doRender(e)}get hasAnimations(){for(const e of this.children)if(e.hasAnimations)return!0;return!1}_reindexAndUpdateFeaturesIfNeeded(){if(this.hasAnimations&&(this._reindexFeatures(),0!==this.attributeView.size))for(const e of this._entityIndex.values())e.dirty&&(this.attributeView.setData(e.displayId,7,0,e.firstIndexed),e.dirty=!1)}restartAnimation(e){const t=this._entityIndex.get(e);if(!t)return;const i=performance.now()/1e3;t.firstIndexed=i,t.dirty=!0}restartAllAnimations(){const e=performance.now()/1e3;for(const[t,i]of this._entityIndex)i.firstIndexed=e,i.dirty=!0}_reindexFeatures(){const e=performance.now()/1e3;for(const t of this.children)for(const i of t.entityIds){const{objectId:t}=i;let s=this._entityIndex.get(t);s||(s={objectId:t,displayId:0,firstIndexed:e,lastIndexed:0,dirty:!0},this._entityIndex.set(t,s)),s.lastIndexed=e,s.displayId=i.displayId}for(const[t,s]of this._entityIndex)e-s.lastIndexed>i&&this._entityIndex.delete(t)}_updateAttributeView(){this.attributeView.update()&&(this.requestRender(),this.hasLabels&&this.requestDeclutter()),this._reindexAndUpdateFeaturesIfNeeded()}createRenderParams(e){const t=super.createRenderParams(e);return t.attributeView=this.attributeView,t.instanceStore=this._instanceStore,t.statisticsByLevel=this._statisticsByLevel,t}}export{s as AFeatureContainer};
2
+ import{AttributeStoreView as e}from"./webgl/AttributeStoreView.js";import t from"./webgl/TileContainer.js";import{LabelStore as i}from"./webgl/collisions/LabelStore.js";const s=60;class r extends t{constructor(t){super(t),this.labelStore=new i,this._statisticsByLevel=new Map,this._entityIndex=new Map,this.attributeView=new e}destroy(){super.destroy(),this.children.forEach(e=>e.destroy()),this.removeAllChildren(),this.attributeView.destroy(),this.labelStore.destroy()}doRender(e){e.context.capabilities.enable("textureFloatLinear"),super.doRender(e)}get hasAnimations(){for(const e of this.children)if(e.hasAnimations)return!0;return!1}_reindexAndUpdateFeaturesIfNeeded(){if(this.hasAnimations&&(this._reindexFeatures(),0!==this.attributeView.size))for(const e of this._entityIndex.values())e.dirty&&(this.attributeView.setData(e.displayId,7,0,e.firstIndexed),e.dirty=!1)}restartAnimation(e){const t=this._entityIndex.get(e);if(!t)return;const i=performance.now()/1e3;t.firstIndexed=i,t.dirty=!0}restartAllAnimations(){const e=performance.now()/1e3;for(const[t,i]of this._entityIndex)i.firstIndexed=e,i.dirty=!0}_reindexFeatures(){const e=performance.now()/1e3;for(const t of this.children)for(const i of t.entityIds){const{objectId:t}=i;let s=this._entityIndex.get(t);s||(s={objectId:t,displayId:0,firstIndexed:e,lastIndexed:0,dirty:!0},this._entityIndex.set(t,s)),s.lastIndexed=e,s.displayId=i.displayId}for(const[t,i]of this._entityIndex)e-i.lastIndexed>s&&this._entityIndex.delete(t)}_updateAttributeView(){this.attributeView.update()&&(this.requestRender(),this.hasLabels&&this.requestDeclutter()),this._reindexAndUpdateFeaturesIfNeeded()}createRenderParams(e){const t=super.createRenderParams(e);return t.attributeView=this.attributeView,t.labelStore=this.labelStore,t.instanceStore=this._instanceStore,t.statisticsByLevel=this._statisticsByLevel,t}}export{r as AFeatureContainer};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=r){let i=t;do{i/=2,s/=4}while(s>n&&i>y);const r=new l(t,t,i);for(const t of e)r.getCell(t.xTile,t.yTile)?.push(t);return new o(t,e,r)}return new o(t,e,null)}constructor(e,t,s){this.tileCoordRange=e,this._symbols=t,this._index=s}addSymbols(e){for(const t of e)this._symbols.push(t);if(this._index)for(const t of e)this._index.getCell(t.xTile,t.yTile).push(t)}removeSymbols(e){const t=new Set(e);if(this._symbols=this._symbols.filter(e=>!t.has(e)),this._index)for(const s of this._index.cells)for(let e=0;e<s.length;e++)s[e]=s[e].filter(e=>!t.has(e))}getSymbols(){return this._symbols}getCandidate(e,t,s,i){if(!this._index){for(const l of this._symbols)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l;return null}const l=this._index.getCellSpan(e-i,t-i,e+i,t+i),[o,r,n,y]=l;for(let a=r;a<=y;a++)for(let l=o;l<=n;l++){const o=this._index.cells[a][l];for(const l of o)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l}return null}}const r=32,n=8,y=64,a=20;class u{constructor(e,t){this.tileCoordRange=e,this._visibleTiles=t,this._indexMapByTile=new Map,this._uniqueSymbolsByStyleLayerId=new Map,this._featureMetricUpdates=[]}get uniqueSymbols(){return null==this._uniqueSymbolLayerArray&&(this._uniqueSymbolLayerArray=this._createUniqueSymbolLayerArray()),this._uniqueSymbolLayerArray}registerVectorTile(e,t){const s=this._ensureIndexMap(e),i=t?.values()??s.keys();for(const l of i){const e=s.get(l);e&&(this._removeSymbols(l,e.getSymbols()),s.delete(l))}this._addSymbols(e.key,s,e.symbols),this._invalidate()}unregisterVectorTile(e){this._removeTile(e),this._invalidate()}flushFeatureTileUpdateMessages(){for(const e of this._featureMetricUpdates)switch(e.type){case"tile-add":this._ensureIndexMap(e.tile);break;case"tile-remove":this._removeTile(e.tile);break;case"metrics-add":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)throw new Error(`tile ${t.id} not registered!`);this._addSymbols(t.key,i,h(s));break}case"metrics-remove":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)continue;const l=h(s);for(const[e,o]of i.entries()){const t=l.get(e);t&&(o.removeSymbols(t),this._removeSymbols(e,t))}break}}this._featureMetricUpdates.length=0,this._invalidate()}registerFeatureTile(e){this._featureMetricUpdates.push({type:"tile-add",tile:e})}unregisterFeatureTile(e){this._featureMetricUpdates.push({type:"tile-remove",tile:e})}insertFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-add",tile:e,metrics:t})}removeFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-remove",tile:e,metrics:t})}deleteStyleLayers(e){for(const t of this._indexMapByTile.values())for(const s of e){const e=t.get(s);e&&(this._removeSymbols(s,e.getSymbols()),t.delete(s))}this._invalidate()}querySymbols(e,s,i,l){const o=[];for(const[r,n]of this._uniqueSymbolsByStyleLayerId.entries())for(const l of n){const n=l.tileSymbols.find(e=>e.selectedForRendering);n&&t(n,e,s,i)&&o.push({vtlSymbol:n,styleLayerUID:r,tileKey:n.tile.key})}return o}_ensureIndexMap(e){let t=this._indexMapByTile.get(e);return t||(t=new Map,this._indexMapByTile.set(e,t)),t}_invalidate(){this._uniqueSymbolLayerArray=null}_addSymbols(e,t,s){for(const[i,l]of s){let e=t.get(i);e?e.addSymbols(l):(e=o.fromSymbols(l,this.tileCoordRange),t.set(i,e))}this._updateUniqueSymbols(e,s)}_removeTile(e){const t=this._indexMapByTile.get(e);if(t){for(const[e,s]of t.entries())this._removeSymbols(e,s.getSymbols());this._indexMapByTile.delete(e),this._invalidate()}}_removeSymbols(e,t){for(const s of t){const t=s.uniqueSymbol;if(t){if(t.tileSymbols=t.tileSymbols.filter(e=>e!==s),0===t.tileSymbols.length){const s=this._uniqueSymbolsByStyleLayerId.get(e);s.delete(t),0===s.size&&this._uniqueSymbolsByStyleLayerId.delete(e)}s.uniqueSymbol=null}}}_updateUniqueSymbols(t,s){if(0!==s.size){for(const e of this._visibleTiles)e.parentTile||e.key.world!==t.world||e.key.level===t.level&&!e.key.equals(t)||this._matchSymbols(e,t,s);for(const[t,i]of s)for(const s of i)if(!s.uniqueSymbol){s.uniqueSymbol=new e(s);let i=this._uniqueSymbolsByStyleLayerId.get(t);i||(i=new Set,this._uniqueSymbolsByStyleLayerId.set(t,i)),i.add(s.uniqueSymbol)}}}_matchSymbols(e,t,l){if(e.key.level>t.level){const s=e.key.level-t.level;if(e.key.row>>s!==t.row||e.key.col>>s!==t.col)return}if(t.level>e.key.level){const s=t.level-e.key.level;if(t.row>>s!==e.key.row||t.col>>s!==e.key.col)return}const o=new Map;for(const[r,n]of l){const l=[],y=e.key.level<t.level?0:1<<Math.abs(e.key.level-t.level),u=this._indexMapByTile.get(e),h=u?.get(r);if(h)for(const o of n){if(o.uniqueSymbol)continue;const r=s(this.tileCoordRange,o.xTile,t,e.key),n=i(this.tileCoordRange,o.yTile,t,e.key),u=-a,c=this.tileCoordRange+a;if(!(r>=u&&r<c&&n>=u&&n<c)){l.push(o);continue}const m=h.getCandidate(r,n,o.hash,y),f=m?.uniqueSymbol;f?(o.uniqueSymbol=f,f.tileSymbols.push(o)):l.push(o)}l.length>0&&o.set(r,l)}for(const s of e.childrenTiles||[])this._matchSymbols(s,t,o)}_createUniqueSymbolLayerArray(){const e=this._uniqueSymbolsByStyleLayerId,t=new Array(e.size);let s,i=0;for(const[l,o]of e){const e=new Array(o.size);s=0;for(const t of o)e[s++]=t;t[i]={styleLayerUID:l,uniqueSymbols:e},i++}return t}}function h(e){const t=new Map;for(const s of e){const e=s.labelClassId;let i=t.get(e);i||(i=[],t.set(e,i)),i.push(s)}return t}export{u as SymbolRepository};
2
+ import{UniqueSymbol as e}from"./core.js";import{isSearchCircleOverlapingSymbol as t,tileCoordChangeX as s,tileCoordChangeY as i,GridIndex as l}from"./util.js";class o{static fromSymbols(e,t){let s=e.length;if(s>=r){let i=t;do{i/=2,s/=4}while(s>n&&i>y);const r=new l(t,t,i);for(const t of e)r.getCell(t.xTile,t.yTile)?.push(t);return new o(t,e,r)}return new o(t,e,null)}constructor(e,t,s){this.tileCoordRange=e,this._symbols=t,this._index=s}addSymbols(e){for(const t of e)this._symbols.push(t);if(this._index)for(const t of e)this._index.getCell(t.xTile,t.yTile).push(t)}removeSymbols(e){const t=new Set(e);if(this._symbols=this._symbols.filter(e=>!t.has(e)),this._index)for(const s of this._index.cells)for(let e=0;e<s.length;e++)s[e]=s[e].filter(e=>!t.has(e))}getSymbols(){return this._symbols}getCandidate(e,t,s,i){if(!this._index){for(const l of this._symbols)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l;return null}const l=this._index.getCellSpan(e-i,t-i,e+i,t+i),[o,r,n,y]=l;for(let a=r;a<=y;a++)for(let l=o;l<=n;l++){const o=this._index.cells[a][l];for(const l of o)if(s===l.hash&&Math.abs(e-l.xTile)<=i&&Math.abs(t-l.yTile)<=i)return l}return null}}const r=32,n=8,y=64,a=20;class u{constructor(e,t){this.tileCoordRange=e,this._visibleTiles=t,this._indexMapByTile=new Map,this._uniqueSymbolsByStyleLayerId=new Map,this._featureMetricUpdates=[]}get uniqueSymbols(){return null==this._uniqueSymbolLayerArray&&(this._uniqueSymbolLayerArray=this._createUniqueSymbolLayerArray()),this._uniqueSymbolLayerArray}registerVectorTile(e,t){const s=this._ensureIndexMap(e),i=t?.values()??s.keys();for(const l of i){const e=s.get(l);e&&(this._removeSymbols(l,e.getSymbols()),s.delete(l))}this._addSymbols(e.key,s,e.symbols),this._invalidate()}unregisterVectorTile(e){this._removeTile(e),this._invalidate()}flushFeatureTileUpdateMessages(){for(const e of this._featureMetricUpdates)switch(e.type){case"tile-add":this._ensureIndexMap(e.tile);break;case"tile-remove":this._removeTile(e.tile);break;case"metrics-add":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)throw new Error(`tile ${t.id} not registered!`);this._addSymbols(t.key,i,h(s));break}case"metrics-remove":{const{tile:t,metrics:s}=e,i=this._indexMapByTile.get(t);if(!i)continue;const l=h(s);for(const[e,o]of i.entries()){const t=l.get(e);t&&(o.removeSymbols(t),this._removeSymbols(e,t))}break}}this._featureMetricUpdates.length=0,this._invalidate()}registerFeatureTile(e){this._featureMetricUpdates.push({type:"tile-add",tile:e})}unregisterFeatureTile(e){this._featureMetricUpdates.push({type:"tile-remove",tile:e})}insertFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-add",tile:e,metrics:t})}removeFeatureTileMetrics(e,t){this._featureMetricUpdates.push({type:"metrics-remove",tile:e,metrics:t})}deleteStyleLayers(e){for(const t of this._indexMapByTile.values())for(const s of e){const e=t.get(s);e&&(this._removeSymbols(s,e.getSymbols()),t.delete(s))}this._invalidate()}querySymbols(e,s,i,l){const o=[];for(const[r,n]of this._uniqueSymbolsByStyleLayerId.entries())for(const l of n){const n=l.tileSymbols.find(e=>e.selectedForRendering);n&&t(n,e,s,i)&&o.push({vtlSymbol:n,styleLayerUID:r,tileKey:n.tile.key})}return o}_ensureIndexMap(e){let t=this._indexMapByTile.get(e);return t||(t=new Map,this._indexMapByTile.set(e,t)),t}_invalidate(){this._uniqueSymbolLayerArray=null}_addSymbols(e,t,s){for(const[i,l]of s){let e=t.get(i);e?e.addSymbols(l):(e=o.fromSymbols(l,this.tileCoordRange),t.set(i,e))}this._updateUniqueSymbols(e,s)}_removeTile(e){const t=this._indexMapByTile.get(e);if(t){for(const[e,s]of t.entries())this._removeSymbols(e,s.getSymbols());this._indexMapByTile.delete(e),this._invalidate()}}_removeSymbols(e,t){for(const s of t){const t=s.uniqueSymbol;if(t){if(t.tileSymbols=t.tileSymbols.filter(e=>e!==s),0===t.tileSymbols.length){const s=this._uniqueSymbolsByStyleLayerId.get(e);s.delete(t),0===s.size&&this._uniqueSymbolsByStyleLayerId.delete(e)}s.uniqueSymbol=null}}}_updateUniqueSymbols(t,s){if(0!==s.size){for(const e of this._visibleTiles)e.parentTile||e.key.world!==t.world||e.key.level===t.level&&!e.key.equals(t)||this._matchSymbols(e,t,s);for(const[t,i]of s)for(const s of i)if(!s.uniqueSymbol){s.uniqueSymbol=new e(s);let i=this._uniqueSymbolsByStyleLayerId.get(t);i||(i=new Set,this._uniqueSymbolsByStyleLayerId.set(t,i)),i.add(s.uniqueSymbol)}}}_matchSymbols(e,t,l){if(e.key.level>t.level){const s=e.key.level-t.level;if(e.key.row>>s!==t.row||e.key.col>>s!==t.col)return}if(t.level>e.key.level){const s=t.level-e.key.level;if(t.row>>s!==e.key.row||t.col>>s!==e.key.col)return}const o=new Map;for(const[r,n]of l){const l=[],y=Math.abs(e.key.level-t.level),u=e.key.level<t.level?1:1<<y,h=this._indexMapByTile.get(e),c=h?.get(r);if(c)for(const o of n){if(o.uniqueSymbol)continue;const r=s(this.tileCoordRange,o.xTile,t,e.key),n=i(this.tileCoordRange,o.yTile,t,e.key),y=-a,h=this.tileCoordRange+a;if(!(r>=y&&r<h&&n>=y&&n<h)){l.push(o);continue}const m=c.getCandidate(r,n,o.hash,u),f=m?.uniqueSymbol;f?(o.uniqueSymbol=f,f.tileSymbols.push(o)):l.push(o)}l.length>0&&o.set(r,l)}for(const s of e.childrenTiles||[])this._matchSymbols(s,t,o)}_createUniqueSymbolLayerArray(){const e=this._uniqueSymbolsByStyleLayerId,t=new Array(e.size);let s,i=0;for(const[l,o]of e){const e=new Array(o.size);s=0;for(const t of o)e[s++]=t;t[i]={styleLayerUID:l,uniqueSymbols:e},i++}return t}}function h(e){const t=new Map;for(const s of e){const e=s.labelClassId;let i=t.get(e);i||(i=[],t.set(e,i)),i.push(s)}return t}export{u as SymbolRepository};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import"../../../../core/has.js";import{estimateNumberMemory as t}from"../../../../core/memoryEstimations.js";import{List as e}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as i,DataType as s}from"../../../webgl/enums.js";function a(t,e){return t<<16|255&e}function r(t){return 255&t}function d(t,e){return e?e.get(t.instanceId)??t.techniqueRef.symbologyPlane:t.techniqueRef.symbologyPlane}class h{constructor(t,e,n,i,s){this.instance=t,this.materialKey=e,this.target=n,this.start=i,this.count=s}get textureKey(){return r(this.materialKey)}get indexEnd(){return this.start+this.count}extend(t){this.count+=t}render(t){const e=this.instance.techniqueRef;this.target.bind(t.context),e.render(t,this)}getStencilReference(){return this.target.stencilRef}getAttributePrecisionPackFactors(){const t=this.instance.instanceId;return this.target.getMesh(t).getAttributePrecisionPackFactors()}draw(t,e){n(t)?this.drawCompute(t.context,e):this.drawGeometry(t.context,e)}drawCompute(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT/3;t.bindVAO(a,e.locations),t.drawElements(i.POINTS,this.count/3,s.UNSIGNED_INT,r),t.bindVAO(null)}drawGeometry(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT;t.bindVAO(a,e.locations),t.drawElements(i.TRIANGLES,this.count,s.UNSIGNED_INT,r),t.bindVAO(null)}}class o{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(t,e,n,i){const s=new o,r=n.getInstanceOrder();for(const d of t.values())for(const t of d.records){const d=n.getInstance(t.instanceId),h=a(d.instanceId,t.textureKey);s.addRecord(d,h,t.indexStart,t.indexCount,t.vertexStart,t.vertexCount,e,i,r)}return s}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?5*this._length*t:0}render(t,e){const{drawPhase:n}=t;let i=!1;for(const s of this.infos()){const a=s.instance.techniqueRef;a.drawPhase&n&&(null==e||a.type===e)&&(s.render(t),i=!0)}return i}addRecord(t,n,i,s,a,r,o,l,c){let u=i,_=s;if(_||(u=a,_=r),!_)return;if(null==this._head){const i=new h(t,n,o,u,_);return this._head=new e(i),this._tail=this._head,this._length++,void this._minOrderedLength++}if(1===l)return this._insert(t,n,o,u,_,this._tail,null);let g=null,m=this._head;const f=t.instanceId,y=d(t,c);if(2===l&&(2===y||3===y))return this._insert(t,n,o,u,_,this._tail,null);for(;m;){const e=m.data.instance,i=e.instanceId,s=d(e,c),a=g?.data.instance.instanceId;if(y<s||f===a&&f!==i)return this._insert(t,n,o,u,_,g,m);g=m,m=m.next}this._insert(t,n,o,u,_,g,null)}*infos(){if(null!=this._head)for(const t of this._head.values())yield t}_insert(t,n,i,s,a,r,d){if(null==r&&null==d){const r=new h(t,n,i,s,a);return this._head=new e(r),this._tail=this._head,this._length++,void this._minOrderedLength++}return n!==this._tail.data.materialKey&&this._minOrderedLength++,this._materialKeys.add(n),null==r&&null!=d?this._insertAtHead(t,n,i,s,a,d):null!=r&&null==d?this._insertAtEnd(t,n,i,s,a,r):null!=r&&null!=d?this._insertAtMiddle(t,n,i,s,a,r,d):void 0}_insertAtHead(t,n,i,s,a,r){const d=s+a;if(n===r.data.materialKey&&i===r.data.target&&d===r.data.start)r.data.start=s,r.data.count+=a;else{const d=new h(t,n,i,s,a);this._head=new e(d),this._head.next=r,this._length++}}_insertAtEnd(t,n,i,s,a,r){if(r.data.materialKey===n&&r.data.indexEnd===s)r.data.count+=a;else{const d=new h(t,n,i,s,a);this._tail=new e(d),r.next=this._tail,this._length++}}_insertAtMiddle(t,n,i,s,a,r,d){const o=s+a;if(r.data.materialKey===n&&r.data.target===i&&r.data.indexEnd===s)r.data.count+=a,r.data.materialKey===d.data.materialKey&&r.data.target===d.data.target&&r.data.indexEnd===d.data.start&&(r.data.count+=d.data.count,r.next=d.next,this._length--);else if(n===d.data.materialKey&&i===d.data.target&&o===d.data.start)d.data.start=s,d.data.count+=a;else{const o=new h(t,n,i,s,a),l=new e(o);r.next=l,l.next=d,this._length++}}}export{o as DisplayList,h as DisplayListInfo};
2
+ import"../../../../core/has.js";import{estimateNumberMemory as t}from"../../../../core/memoryEstimations.js";import{List as e}from"./cpuMapped/FreeList.js";import{isHittest as n}from"./shaderGraph/techniques/featureTechniqueUtils.js";import{PrimitiveType as i,DataType as s}from"../../../webgl/enums.js";function a(t,e){return t<<16|255&e}function r(t){return 255&t}function d(t,e){return e?e.get(t.instanceId)??t.techniqueRef.symbologyPlane:t.techniqueRef.symbologyPlane}class h{constructor(t,e,n,i,s){this.instance=t,this.materialKey=e,this.target=n,this.start=i,this.count=s}get textureKey(){return r(this.materialKey)}get indexEnd(){return this.start+this.count}extend(t){this.count+=t}render(t){const e=this.instance.techniqueRef;this.target.bind(t.context),e.render(t,this)}getStencilReference(){return this.instance.stencilReferenceOverride??this.target.stencilRef}getAttributePrecisionPackFactors(){const t=this.instance.instanceId;return this.target.getMesh(t).getAttributePrecisionPackFactors()}draw(t,e){n(t)?this.drawCompute(t.context,e):this.drawGeometry(t.context,e)}drawCompute(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getComputeVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT/3;t.bindVAO(a,e.locations),t.drawElements(i.POINTS,this.count/3,s.UNSIGNED_INT,r),t.bindVAO(null)}drawGeometry(t,e){const n=this.instance.instanceId,a=this.target.getMesh(n).getGeometryVAO(t,e),r=this.start*Uint32Array.BYTES_PER_ELEMENT;t.bindVAO(a,e.locations),t.drawElements(i.TRIANGLES,this.count,s.UNSIGNED_INT,r),t.bindVAO(null)}}class o{constructor(){this._length=0,this._minOrderedLength=0,this._materialKeys=new Set}static fromDisplayEntities(t,e,n,i){const s=new o,r=n.getInstanceOrder();for(const d of t.values())for(const t of d.records){const d=n.getInstance(t.instanceId),h=a(d.instanceId,t.textureKey);s.addRecord(d,h,t.indexStart,t.indexCount,t.vertexStart,t.vertexCount,e,i,r)}return s}get length(){return this._length}get minOrderedLength(){return this._minOrderedLength}get minUnorderedLength(){return this._materialKeys.size}get usedMemory(){return this._length?5*this._length*t:0}render(t,e){const{drawPhase:n}=t;let i=!1;for(const s of this.infos()){const a=s.instance.techniqueRef;s.instance.drawPhase&n&&(null==e||a.type===e)&&(s.render(t),i=!0)}return i}addRecord(t,n,i,s,a,r,o,l,c){let u=i,_=s;if(_||(u=a,_=r),!_)return;if(null==this._head){const i=new h(t,n,o,u,_);return this._head=new e(i),this._tail=this._head,this._length++,void this._minOrderedLength++}if(1===l)return this._insert(t,n,o,u,_,this._tail,null);let g=null,m=this._head;const f=t.instanceId,y=d(t,c);if(2===l&&(2===y||3===y))return this._insert(t,n,o,u,_,this._tail,null);for(;m;){const e=m.data.instance,i=e.instanceId,s=d(e,c),a=g?.data.instance.instanceId;if(y<s||f===a&&f!==i)return this._insert(t,n,o,u,_,g,m);g=m,m=m.next}this._insert(t,n,o,u,_,g,null)}*infos(){if(null!=this._head)for(const t of this._head.values())yield t}_insert(t,n,i,s,a,r,d){if(null==r&&null==d){const r=new h(t,n,i,s,a);return this._head=new e(r),this._tail=this._head,this._length++,void this._minOrderedLength++}return n!==this._tail.data.materialKey&&this._minOrderedLength++,this._materialKeys.add(n),null==r&&null!=d?this._insertAtHead(t,n,i,s,a,d):null!=r&&null==d?this._insertAtEnd(t,n,i,s,a,r):null!=r&&null!=d?this._insertAtMiddle(t,n,i,s,a,r,d):void 0}_insertAtHead(t,n,i,s,a,r){const d=s+a;if(n===r.data.materialKey&&i===r.data.target&&d===r.data.start)r.data.start=s,r.data.count+=a;else{const d=new h(t,n,i,s,a);this._head=new e(d),this._head.next=r,this._length++}}_insertAtEnd(t,n,i,s,a,r){if(r.data.materialKey===n&&r.data.indexEnd===s)r.data.count+=a;else{const d=new h(t,n,i,s,a);this._tail=new e(d),r.next=this._tail,this._length++}}_insertAtMiddle(t,n,i,s,a,r,d){const o=s+a;if(r.data.materialKey===n&&r.data.target===i&&r.data.indexEnd===s)r.data.count+=a,r.data.materialKey===d.data.materialKey&&r.data.target===d.data.target&&r.data.indexEnd===d.data.start&&(r.data.count+=d.data.count,r.next=d.next,this._length--);else if(n===d.data.materialKey&&i===d.data.target&&o===d.data.start)d.data.start=s,d.data.count+=a;else{const o=new h(t,n,i,s,a),l=new e(o);r.next=l,l.next=d,this._length++}}}export{o as DisplayList,h as DisplayListInfo};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{AFeatureTile as s}from"./AFeatureTile.js";import{RESHUFFLING_EXEMPT_MEMORY_BYTES as i,RESHUFFLING_TARGET_MEMORY_EFFICIENCY as r,RESHUFFLING_EXEMPT_DRAW_CALLS as a,RESHUFFLING_TARGET_DRAW_EFFICIENCY as d,tileSize as o}from"./definitions.js";import n from"./DisplayEntity.js";import{TileCpuState as h}from"./TileCpuState.js";import{TileGpuState as u}from"./TileGpuState.js";import{debugMeshDataInfo as p}from"./mesh/meshDebugUtils.js";import m from"./util/Reader.js";import{deserializeList as l}from"./util/serializationUtils.js";const g=()=>e.getLogger("esri.views.2d.engine.webgl.FeatureTile");class c extends s{constructor(e,s,i,r,a){super(e,s,i,r),this._fader=a,this._cpuState=new h,this._gpuState=new u,this._requiresRefresh=!1,this._ended=!1,this._geometryInvalidated=!1,this.decluttering=!1,this.presenting=!1,this.visible=!0,this.transforms.tileUnitsToPixels=t()}destroy(){super.destroy();const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._gpuState.destroy()}beforeRender(e){super.beforeRender(e),this._needsReshuffle&&e.reshuffleManager.schedule(this)}get symbols(){const e=new Map;for(const t of this._cpuState.metrics)e.get(t.labelClassId)||e.set(t.labelClassId,[]),e.get(t.labelClassId).push(t);return e}get id(){return this.key.id}get hasData(){return!!this._cpuState.meshes.size}get requiresRefresh(){return this._requiresRefresh}get ended(){return this._ended}get hasAnimations(){return this._cpuState.hasAnimations}get hasMetrics(){return this._cpuState.metrics.length>0}get entityIds(){return this._cpuState.getEntityObjectIds()}get usedMemory(){return this._cpuState.usedMemory+this._gpuState.usedMemory}get isReady(){return this.presenting}getDisplayList(){return this._gpuState.displayList}getMesh(e){const t=this._gpuState.getMesh(e);if(null==t)throw new Error(`InternalError: Unable to find VAO for instance: ${e}`);return t}getSortKeys(e){return this._cpuState.getSortKeys(e)}clearCpuState(){const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._cpuState=new h,this._geometryInvalidated=!0,this._ended=!1}update(e){switch(e.type){case"append":this._onAppendMessage(e);break;case"update":this._onUpdateMessage(e)}e.objectIdMap&&this._cpuState.mergeObjectIdMap(e.objectIdMap),this._aggregateMemoryStats(),e.end&&(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.end`),this._ended=!0),this._geometryInvalidated=!0}reshuffle(e=!1){this.destroyed||(this._geometryInvalidated=!0,this._cpuState.reshuffle(e),this._aggregateMemoryStats(),has("esri-2d-update-debug")&&g().info(`Tile ${this.key.id} was reshuffled.`))}upload(e,t){this.presenting&&(this.hasMetrics&&(this._cpuState.setMetricVisibility(),this._gpuState.uploadVisibility(this._cpuState)),this._geometryInvalidated&&(this._geometryInvalidated=!1,this._cpuState.prepareForUpload(t),this._aggregateMemoryStats(),this._gpuState.uploadGeometry(this,e,t,this._cpuState)))}copyPixelBufferedEntitesFrom(e,t,s,i){const r=s*o,a=i*o,d=this._cpuState.copyPixelBufferedEntitiesFrom(e._cpuState,t,r,a);this._geometryInvalidated||=d}_onAppendMessage(e){if(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.append`,{append:p(e?.append)}),!e.append)return;this._requiresRefresh||=e.append.requiresRefresh;const t=l(new m(e.append.entities),n),{insertedMetrics:s}=this._cpuState.append(t,e.append.data,!1,this);this._fader?.insertFeatureTileMetrics(this,s)}_onUpdateMessage(e){has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.update`,{isPixelBuffer:e.isPixelBuffer,modify:p(e.modify),remove:e.remove});const t=l(new m(e.modify.entities),n),s=t.map(e=>e.id),i=e.isPixelBuffer??!1,r=[...e.remove,...s];if(i){const e=this._cpuState.removeByIdsFromBuffer(r);this._fader?.removeFeatureTileMetrics(this,e)}else{const e=this._cpuState.removeByIds(r);this._fader?.removeFeatureTileMetrics(this,e)}const{insertedMetrics:a}=this._cpuState.append(t,e.modify.data,i,this);this._fader?.insertFeatureTileMetrics(this,a)}_aggregateMemoryStats(){this.debugInfo.memory.bytesUsed=0,this.debugInfo.memory.bytesReserved=0;for(const e of this._cpuState.meshes.values())this.debugInfo.memory.bytesUsed+=e.memoryStats.bytesUsed,this.debugInfo.memory.bytesReserved+=e.memoryStats.bytesReserved}get _needsReshuffle(){if(this.destroyed)return!1;const{bytesUsed:e,bytesReserved:t}=this.debugInfo.memory,s=e/t,{minOrderedLength:o,length:n}=this.debugInfo.display;return t>i&&s<r||n>a&&o/n<d}}export{c as FeatureTile};
2
+ import has from"../../../../core/has.js";import e from"../../../../core/Logger.js";import{create as t}from"../../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{AFeatureTile as s}from"./AFeatureTile.js";import{RESHUFFLING_EXEMPT_MEMORY_BYTES as i,RESHUFFLING_TARGET_MEMORY_EFFICIENCY as r,RESHUFFLING_EXEMPT_DRAW_CALLS as a,RESHUFFLING_TARGET_DRAW_EFFICIENCY as d,tileSize as o}from"./definitions.js";import n from"./DisplayEntity.js";import{TileCpuState as h}from"./TileCpuState.js";import{TileGpuState as u}from"./TileGpuState.js";import{debugMeshDataInfo as p}from"./mesh/meshDebugUtils.js";import l from"./util/Reader.js";import{deserializeList as m}from"./util/serializationUtils.js";const g=()=>e.getLogger("esri.views.2d.engine.webgl.FeatureTile");class c extends s{constructor(e,s,i,r,a,d){super(e,s,i,r),this._labelStore=a,this._fader=d,this._gpuState=new u,this._requiresRefresh=!1,this._ended=!1,this._geometryInvalidated=!1,this.decluttering=!1,this.presenting=!1,this._cpuState=new h(a),this.visible=!0,this.transforms.tileUnitsToPixels=t()}destroy(){super.destroy();const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._gpuState.destroy()}beforeRender(e){super.beforeRender(e),this._needsReshuffle&&e.reshuffleManager.schedule(this)}get symbols(){const e=new Map;for(const t of this._cpuState.metrics)e.get(t.labelClassId)||e.set(t.labelClassId,[]),e.get(t.labelClassId).push(t);return e}get id(){return this.key.id}get hasData(){return!!this._cpuState.meshes.size}get requiresRefresh(){return this._requiresRefresh}get ended(){return this._ended}get hasAnimations(){return this._cpuState.hasAnimations}get hasMetrics(){return this._cpuState.metrics.length>0}get entityIds(){return this._cpuState.getEntityObjectIds()}get usedMemory(){return this._cpuState.usedMemory+this._gpuState.usedMemory}get isReady(){return this.presenting}getDisplayList(){return this._gpuState.displayList}getMesh(e){const t=this._gpuState.getMesh(e);if(null==t)throw new Error(`InternalError: Unable to find VAO for instance: ${e}`);return t}getSortKeys(e){return this._cpuState.getSortKeys(e)}clearCpuState(){const e=this._cpuState.takeMetrics();this._fader?.removeFeatureTileMetrics(this,e),this._cpuState.destroy(),this._cpuState=new h(this._labelStore),this._geometryInvalidated=!0,this._ended=!1}update(e){switch(e.type){case"append":this._onAppendMessage(e);break;case"update":this._onUpdateMessage(e)}e.objectIdMap&&this._cpuState.mergeObjectIdMap(e.objectIdMap),this._aggregateMemoryStats(),e.end&&(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.end`),this._ended=!0),this._geometryInvalidated=!0}reshuffle(e=!1){this.destroyed||(this._geometryInvalidated=!0,this._cpuState.reshuffle(e),this._aggregateMemoryStats(),has("esri-2d-update-debug")&&g().info(`Tile ${this.key.id} was reshuffled.`))}upload(e,t){this.presenting&&(this.hasMetrics&&this._cpuState.setMetricVisibility(),this._geometryInvalidated&&(this._geometryInvalidated=!1,this._cpuState.prepareForUpload(t),this._aggregateMemoryStats(),this._gpuState.uploadGeometry(this,e,t,this._cpuState)))}copyPixelBufferedEntitesFrom(e,t,s,i){const r=s*o,a=i*o,d=this._cpuState.copyPixelBufferedEntitiesFrom(e._cpuState,t,r,a);this._geometryInvalidated||=d}_onAppendMessage(e){if(has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.append`,{append:p(e?.append)}),!e.append)return;this._requiresRefresh||=e.append.requiresRefresh;const t=m(new l(e.append.entities),n),{insertedMetrics:s}=this._cpuState.append(t,e.append.data,!1,this);this._fader?.insertFeatureTileMetrics(this,s)}_onUpdateMessage(e){has("esri-2d-update-debug")&&console.debug(`Tile[${this.key.id}] FeatureTile.update`,{isPixelBuffer:e.isPixelBuffer,modify:p(e.modify),remove:e.remove});const t=m(new l(e.modify.entities),n),s=t.map(e=>e.id),i=e.isPixelBuffer??!1,r=[...e.remove,...s];if(i){const e=this._cpuState.removeByIdsFromBuffer(r);this._fader?.removeFeatureTileMetrics(this,e)}else{const e=this._cpuState.removeByIds(r);this._fader?.removeFeatureTileMetrics(this,e)}const{insertedMetrics:a}=this._cpuState.append(t,e.modify.data,i,this);this._fader?.insertFeatureTileMetrics(this,a)}_aggregateMemoryStats(){this.debugInfo.memory.bytesUsed=0,this.debugInfo.memory.bytesReserved=0;for(const e of this._cpuState.meshes.values())this.debugInfo.memory.bytesUsed+=e.memoryStats.bytesUsed,this.debugInfo.memory.bytesReserved+=e.memoryStats.bytesReserved}get _needsReshuffle(){if(this.destroyed)return!1;const{bytesUsed:e,bytesReserved:t}=this.debugInfo.memory,s=e/t,{minOrderedLength:o,length:n}=this.debugInfo.display;return t>i&&s<r||n>a&&o/n<d}}export{c as FeatureTile};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import t from"../../../../request.js";import{bidiText as e}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import i from"../../../../core/Logger.js";import{throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as r}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as h}from"../../../../symbols/cim/richTextUtils.js";import{decorGlyphRect as n}from"./decorGlyphRect.js";import{sdfRadiusComplex as o,sdfBufferGlyphSDFCreator as c,sdfSizeComplex as p,sdfBufferServer as l,sdfRadiusSimple as f,sdfSizeSimple as g}from"./definitions.js";import{GlyphSDFCreator as d}from"./GlyphSDFCreator.js";import _ from"./GlyphSource.js";import{hashMosaic as y}from"./hashMosaic.js";import u from"./Rect.js";import m from"./RectangleBinPack.js";const w=.25,S="arial-unicode-ms-regular",C=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,G=new Set(["Noto Sans Khmer","Noto Sans Lao","Noto Sans Myanmar","Noto Sans Thai"]),P=()=>i.getLogger("esri.views.MapView"),b=(t,e="")=>P().warnOnce(t,e);class R{constructor(){this._glyphSources=new Map,this._snapCoords=!0,this._currentPage=0,this._faces=new Map,this._facePromises=new Map,this._pbfRangePromises=new Map,this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._invalidFonts=new Set,this._preloadCache={},this._glyphSDFCreator=new d({sdfSizePx:p,sdfBufferPx:c,radius:o,cutoff:w})}set remoteClient(t){this._client=t.createInvokeProxy();const e=this._client.getOptions();this._inited=this._init(e)}async rasterizeText(t,e,s){await this._inited;const i=e.symbol?h(e):null;if(i){return{type:"rich-glyphs",runs:(await Promise.all(i.map(async e=>({fontSize:e.fontSize,characterSpacing:e.characterSpacing,decoration:e.font.decoration,color:e.color,glyphs:await this._rasterizeTextRun(t,e.font,e.text,s)})))).filter(t=>null!=t.glyphs)}}return this._rasterizeTextRun(t,e.font,e.textString,s)}async _rasterizeTextRun(t,e,i,a){const r=s(e),h=this._invalidFonts.has(r),n=!!has("esri-2d-force-complex-shaping"),o=!!has("esri-2d-complex-shaping")&&C.test(i),c=G.has(e.family),p=n||o||c,l=h?S:r;let f=await this.getGlyphItems(i,p,t,l,!1,a);return f||(b(`Font ${r} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(r),f=await this.getGlyphItems(i,p,t,S,!1,a)),f}async getGlyphItems(t,s,i,a,r,h){await this._inited;const n=this._getSource(i),d=s?p:g,_=s?o:f,y=s?c:l;let u,m,w;if(has("esri-2d-stabilize-glyphs")&&await this.preloadASCIIGlyphCache(n,a).catch(()=>{}),s){const e=await this._getFace(n,a);if(!e)return null;let s=this._glyphCache.get(a);s||(s=new Map,this._glyphCache.set(a,s));const{shaping:i,isRTL:r}=this._shape(e,t);w=r,u=i.map(t=>this._getShapedGlyph(e,s,t)),m={baseline:e.baseline()/d,midline:e.midline()/d}}else{let s=this._pbfGlyphCache.get(a);s||(s=new Map,this._pbfGlyphCache.set(a,s));const[i,o,c]=e(t),p=j(i);try{await this._fetchRanges(n,a,p,h)}catch{return null}w=o,u=p.map(t=>this._getPBFGlyph(s,n,a,t,r)).filter(t=>!!t)}const S=u.filter(t=>t.needsRecord);return S.length>0&&await this._client.recordGlyphs(S),{type:"glyphs",glyphs:u,faceInfo:m,isRightToLeft:w,sdfSize:d,sdfRadius:_,sdfPadding:y}}async _init(t){const{width:e,height:s,snapCoords:i}=await t;this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._binPack=new m(e,s),this._snapCoords=i,this._currentPage=0,this._initDecorationGlyphs()}_getShapedGlyph(t,e,s){let i,a,r=e.get(s.glyphId);if(!r){i=this._glyphSDFCreator.draw(t,s.glyphId);const h=this._glyphSDFCreator.sdfBufferPx;r={mosaicItem:{rect:this._recordGlyph(i?.rect,h),page:this._currentPage,sdf:!0,textureBinding:y(1,this._currentPage,!0)},glyphRect:i?.rect??{width:0,height:0,top:0,left:0}},e.set(s.glyphId,r),a=!0}return{mosaicItem:r.mosaicItem,rect:r.glyphRect,shaping:{xAdvance:s.xAdvance,yAdvance:s.yAdvance,xOffset:s.xOffset,yOffset:s.yOffset},code:s.isNewline?10:s.isWhitespace?32:NaN,sdf:i,needsRecord:a}}_getPBFGlyph(t,e,s,i,a=!1){let r,h,n=t.get(i);if(!n){const o=e.getRange(s,i),p=o?.getRect(i),l=o?.getShaping(i),f=o?.getBitmap(i);if(a&&(!p||!l))return;if(!p||!l)return M(i);r=f&&{buffer:f,rect:p},n={mosaicItem:{rect:f?this._recordGlyph(p,c):new u(0,0,0,0),sdf:!0,page:this._currentPage,textureBinding:y(1,this._currentPage,!0)},rect:p,shaping:l,code:i},h=!0,t.set(i,n)}const{mosaicItem:o,rect:p,shaping:l}=n;return{mosaicItem:o,rect:p,shaping:l,code:i,sdf:r,needsRecord:h}}_shape(t,s){const i=this._glyphSDFCreator.sdfSizePx,[a,r,h]=e(s,!1),n=new Uint32Array(Array.from(a).map((t,e)=>h.levels[h.targetToSource[e]]));return{shaping:t.shape(a,n,i),isRTL:r}}async _getFace(e,s,i){if(this._faces.has(s))return this._faces.get(s);const a=e.woffURL(s);return await I(this._facePromises,s,async()=>{const e=await t(a,{responseType:"array-buffer",...i}),h=(await r()).Face.parseWoff2(new Uint8Array(e.data));this._faces.set(s,h)}),this._faces.get(s)}_getSource(t){return this._glyphSources.has(t)||this._glyphSources.set(t,new _(t)),this._glyphSources.get(t)}async _fetchRanges(t,e,s,i){const a=x(s),r=[];a.forEach(s=>{r.push(this._fetchRange(t,e,s,i))}),await Promise.all(r)}async _fetchRange(t,e,s,i){if(s>256)return;const a=e+s;return I(this._pbfRangePromises,a,()=>t.fetchRange(e,s,i))}_allocNewPage(){this._currentPage++,this._binPack=new m(this._binPack.width,this._binPack.height),this._initDecorationGlyphs()}_recordGlyph(t,e){const s=this._binPack;if(!t||0===t.width)return new u;const i=t.width+2*e,a=t.height+2*e;let r=i,h=a;if(this._snapCoords){r+=i%4?4-i%4:4,h+=a%4?4-a%4:4}const n=s.allocate(r,h);return n.isEmpty?(this._allocNewPage(),s.allocate(r,h)):n}_initDecorationGlyphs(){this._recordGlyph(n,l),this._recordGlyph(n,l)}preloadASCIIGlyphCache(t,e){const s=this._preloadCache[e];if(null!=s)return s;const i=t.preloadASCIIRange(e).then(async()=>{let s=this._pbfGlyphCache.get(e);s||(s=new Map,this._pbfGlyphCache.set(e,s));for(let a=0;a<256;a++)this._getPBFGlyph(s,t,e,a);const i=Array.from(this._pbfGlyphCache.get(e).values());await this._client.recordGlyphs(i)},t=>{throw delete this._preloadCache[e],t});return this._preloadCache[e]=i,i}}function x(t){const e=new Set;for(const s of t)e.add(Math.floor(s/256));return e}function I(t,e,s){return t.has(e)||t.set(e,s().finally(()=>{t.delete(e)}).catch(t=>{a(t)})),t.get(e)}const M=t=>({mosaicItem:{rect:new u(0,0,0,0),sdf:!0,page:0},rect:{left:0,width:0,height:0,top:0},shaping:{xAdvance:0,yAdvance:0,xOffset:0,yOffset:0},code:t});function j(t){const e=[];for(let s=0;s<t.length;s++)e.push(t.charCodeAt(s));return e}export{R as default};
2
+ import t from"../../../../request.js";import{bidiText as e}from"../../../../core/BidiText.js";import{getFullyQualifiedFontName as s}from"../../../../core/fontUtils.js";import has from"../../../../core/has.js";import i from"../../../../core/Logger.js";import{throwIfNotAbortError as a}from"../../../../core/promiseUtils.js";import{loadTextModule as r}from"../../../../libs/librust-text/loadTextModule.js";import{parseRichTextRuns as n}from"../../../../symbols/cim/richTextUtils.js";import{decorGlyphRect as h}from"./decorGlyphRect.js";import{sdfRadiusComplex as o,sdfBufferGlyphSDFCreator as c,sdfSizeComplex as p,sdfBufferServer as l,sdfRadiusSimple as f,sdfSizeSimple as g}from"./definitions.js";import{GlyphSDFCreator as d}from"./GlyphSDFCreator.js";import _ from"./GlyphSource.js";import{hashMosaic as u}from"./hashMosaic.js";import y from"./Rect.js";import m from"./RectangleBinPack.js";const w=.25,S="arial-unicode-ms-regular",C=/[\u0695\u0698\u06a9\u06af\u06b5\u06be\u06c6\u06cc\u06ce\u06d5\u06ca]|\p{Script=Thai}|\p{Script=Lao}|\p{Script=Tamil}|\p{Script=Khmer}/u,P=new Set(["Noto Sans Khmer","Noto Sans Lao","Noto Sans Myanmar","Noto Sans Thai"]),G=()=>i.getLogger("esri.views.MapView"),R=(t,e="")=>G().warnOnce(t,e);class b{constructor(){this._glyphSources=new Map,this._snapCoords=!0,this._currentPage=0,this._faces=new Map,this._facePromises=new Map,this._pbfRangePromises=new Map,this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._invalidFonts=new Set,this._preloadCache={},this._glyphSDFCreator=new d({sdfSizePx:p,sdfBufferPx:c,radius:o,cutoff:w})}set remoteClient(t){this._client=t.createInvokeProxy();const e=this._client.getOptions();this._inited=this._init(e)}async rasterizeText(t,e,s){await this._inited;const i=e.symbol?n(e):null;if(i){return{type:"rich-glyphs",runs:(await Promise.all(i.map(async e=>({fontSize:e.fontSize,characterSpacing:e.characterSpacing,decoration:e.font.decoration,color:e.color,glyphs:await this._rasterizeTextRun(t,e.font,e.text,s)})))).filter(t=>null!=t.glyphs)}}return this._rasterizeTextRun(t,e.font,e.textString,s)}async _rasterizeTextRun(t,e,i,a){const r=s(e),n=this._invalidFonts.has(r),h=!!has("esri-2d-force-complex-shaping"),o=!!has("esri-2d-complex-shaping")&&C.test(i),c=P.has(e.family),p=h||o||c,l=n?S:r;let f=await this.getGlyphItems(i,p,t,l,!1,a);return f||(R(`Font ${r} is not available on the web, using "Arial Unicode MS Regular"`),this._invalidFonts.add(r),f=await this.getGlyphItems(i,p,t,S,!1,a)),f}async getGlyphItems(t,s,i,a,r,n){await this._inited;const h=this._getSource(i),d=s?p:g,_=s?o:f,u=s?c:l;let y,m,w;if(has("esri-2d-stabilize-glyphs")&&await this.preloadASCIIGlyphCache(h,a).catch(()=>{}),s){const e=await this._getFace(h,a);if(!e)return null;let s=this._glyphCache.get(a);s||(s=new Map,this._glyphCache.set(a,s));const{shaping:i,isRTL:r}=this._shape(e,t);w=r,y=i.map(t=>this._getShapedGlyph(e,s,t)),m={baseline:e.baseline()/d,midline:e.midline()/d}}else{let s=this._pbfGlyphCache.get(a);s||(s=new Map,this._pbfGlyphCache.set(a,s));const[i,o,c]=e(t),p=j(i);try{await this._fetchRanges(h,a,p,n)}catch{return null}w=o,y=p.map(t=>this._getPBFGlyph(s,h,a,t,r)).filter(t=>!!t)}const S=y.filter(t=>t.needsRecord);return S.length>0&&await this._client.recordGlyphs(S),{type:"glyphs",glyphs:y,faceInfo:m,isRightToLeft:w,sdfSize:d,sdfRadius:_,sdfPadding:u}}async _init(t){const{width:e,height:s,snapCoords:i}=await t;this._glyphCache=new Map,this._pbfGlyphCache=new Map,this._binPack=new m(e,s),this._snapCoords=i,this._currentPage=0,this._initDecorationGlyphs()}_getShapedGlyph(t,e,s){let i,a,r=e.get(s.glyphId);if(!r){i=this._glyphSDFCreator.draw(t,s.glyphId);const n=this._glyphSDFCreator.sdfBufferPx;r={mosaicItem:{rect:this._recordGlyph(i?.rect,n),page:this._currentPage,sdf:!0,textureBinding:u(1,this._currentPage,!0)},glyphRect:i?.rect??{width:0,height:0,top:0,left:0}},e.set(s.glyphId,r),a=!0}return{mosaicItem:r.mosaicItem,rect:r.glyphRect,shaping:{xAdvance:s.xAdvance,yAdvance:s.yAdvance,xOffset:s.xOffset,yOffset:s.yOffset},code:s.isNewline?10:s.isWhitespace?32:NaN,sdf:i,needsRecord:a}}_getPBFGlyph(t,e,s,i,a=!1){let r,n,h=t.get(i);if(!h){const o=e.getRange(s,i),p=o?.getRect(i),l=o?.getShaping(i),f=o?.getBitmap(i);if(a&&(!p||!l))return;if(!p||!l)return M(i);r=f&&{buffer:f,rect:p},h={mosaicItem:{rect:f?this._recordGlyph(p,c):new y(0,0,0,0),sdf:!0,page:this._currentPage,textureBinding:u(1,this._currentPage,!0)},rect:p,shaping:l,code:i},n=!0,t.set(i,h)}const{mosaicItem:o,rect:p,shaping:l}=h;return{mosaicItem:o,rect:p,shaping:l,code:i,sdf:r,needsRecord:n}}_shape(t,s){const i=this._glyphSDFCreator.sdfSizePx,[a,r,n]=e(s,!1),h=new Uint32Array(Array.from(a).map((t,e)=>n.levels[n.targetToSource[e]]));return{shaping:t.shape(a,h,i),isRTL:r}}async _getFace(e,s,i){if(this._faces.has(s))return this._faces.get(s);const a=e.woffURL(s);return await I(this._facePromises,s,async()=>{const e=await t(a,{responseType:"array-buffer",...i}),n=(await r()).Face.parseWoff2(new Uint8Array(e.data));this._faces.set(s,n)}),this._faces.get(s)}_getSource(t){return this._glyphSources.has(t)||this._glyphSources.set(t,new _(t)),this._glyphSources.get(t)}async _fetchRanges(t,e,s,i){const a=x(s),r=[];a.forEach(s=>{r.push(this._fetchRange(t,e,s,i))}),await Promise.all(r)}async _fetchRange(t,e,s,i){if(s>256)return;const a=e+s;return I(this._pbfRangePromises,a,()=>t.fetchRange(e,s,i))}_allocNewPage(){this._currentPage++,this._binPack=new m(this._binPack.width,this._binPack.height),this._initDecorationGlyphs()}_recordGlyph(t,e){const s=this._binPack;if(!t||0===t.width)return new y;const i=t.width+2*e,a=t.height+2*e;let r=i,n=a;if(this._snapCoords){r+=i%4?4-i%4:4,n+=a%4?4-a%4:4}const h=s.allocate(r,n);return h.isEmpty?(this._allocNewPage(),s.allocate(r,n)):h}_initDecorationGlyphs(){this._recordGlyph(h,l),this._recordGlyph(h,l)}preloadASCIIGlyphCache(t,e){const s=this._preloadCache[e];if(null!=s)return s;const i=t.preloadASCIIRange(e).then(async()=>{let s=this._pbfGlyphCache.get(e);s||(s=new Map,this._pbfGlyphCache.set(e,s));const i=[];for(let a=0;a<256;a++){const r=this._getPBFGlyph(s,t,e,a);r?.needsRecord&&i.push(r)}await this._client.recordGlyphs(i)},t=>{throw delete this._preloadCache[e],t});return this._preloadCache[e]=i,i}}function x(t){const e=new Set;for(const s of t)e.add(Math.floor(s/256));return e}function I(t,e,s){return t.has(e)||t.set(e,s().finally(()=>{t.delete(e)}).catch(t=>{a(t)})),t.get(e)}const M=t=>({mosaicItem:{rect:new y(0,0,0,0),sdf:!0,page:0},rect:{left:0,width:0,height:0,top:0},shaping:{xAdvance:0,yAdvance:0,xOffset:0,yOffset:0},code:t});function j(t){const e=[];for(let s=0;s<t.length;s++)e.push(t.charCodeAt(s));return e}export{b as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import has from"../../../../core/has.js";import e from"./DisplayEntity.js";import{ReshufflePlan as t}from"./ReshufflePlan.js";import{LabelMetric as s}from"./collisions/LabelMetric.js";import{CpuMeshData as i}from"./cpuMapped/CpuMeshData.js";import r from"./util/Reader.js";import{deserializeList as n}from"./util/serializationUtils.js";class o{constructor(){this.meshes=new Map,this.entityIndex=new Map,this.entityIds=new Set,this.entityIdsFromBuffer=new Set,this.entities=[],this.metrics=[],this.objectIdMap=null}destroy(){for(const e of this.meshes.values())e.destroy();if(this.metrics.length)throw new Error("InternalError: Leaking metrics. Was `takeMetrics` called before removal?");this.meshes.clear(),this.entityIndex.clear(),this.entityIds.clear(),this.entityIdsFromBuffer.clear(),this.entities=[],this.objectIdMap=null}get usedMemory(){let t=0;for(const e of this.meshes.values())t+=e.usedMemory;if(this.entities.length){let s=0;const i=Math.min(this.entities.length,10);for(let e=0;e<i;e++)s+=this.entities[0].records.length;const r=s/i;t+=e.estimateMemory(r)*this.entities.length,t+=4*this.entities.length}return t+=25*this.entityIndex.size,t+=18*this.entityIds.size,t+=25*this.entityIdsFromBuffer.size,this.objectIdMap&&(t+=25*this.entities.length),t}get hasAnimations(){return!!this.objectIdMap}getEntityObjectIds(){return this.objectIdMap?this.entities.map(({id:e})=>({objectId:this.objectIdMap[e],displayId:e})):[]}getMesh(e){return this.meshes.get(e)}getSortKeys(e){const t=new Map;for(const{id:s,sortKey:i}of this.entities)if(e.has(s)&&t.set(s,i),t.size===e.size)break;return t}takeMetrics(){const e=this.metrics;return this.metrics=[],e}mergeObjectIdMap(e){this.objectIdMap??={};for(const t in e)this.objectIdMap[t]=e[t]}ensureMesh(e,t,s){let r=this.meshes.get(e);return null==r&&(r=new i(t,s),this.meshes.set(e,r)),r}append(e,t,s,i){if(!e.length)return{insertedMetrics:[]};this._removeDuplicatedBufferedEntities(e);const{offsetsByInstance:r,insertedMetrics:n}=this._insertVertexData(t,i);for(const o of e){for(const e of o.records)e.updateBaseOffsets(r.get(e.instanceId));s?this._tryInsertBufferedEntity(o):this._insertEntity(o)}return{insertedMetrics:n}}removeByIds(e){if(0===e.length)return[];const t=new Set(e),s=[];for(const r of this.entities)t.has(r.id)?(this._remove(r),this.entityIndex.delete(r.id)):s.push(r);this.entities=s;const i=this.metrics.filter(e=>t.has(e.displayId));return this.metrics=this.metrics.filter(e=>!t.has(e.displayId)),i}setMetricVisibility(){if(0!==this.metrics.length)for(const e of this.metrics){const t=this.entityIndex.get(e.id);if(null==t)throw new Error("InternalError: expected to find entity for label");const s=t.records[e.recordStart];if(null==s)throw new Error("InternalError: expected to find label record");const i=this.getMesh(s.instanceId);if(!i)throw new Error("InternalError: expected to find label mesh");if(!e.uniqueSymbol)throw new Error("InternalError: expected to find uniqueSymbol");const r=e.uniqueSymbol.show&&e.selectedForRendering;i.setRecordVisibility(t.records,e,r?0:255,t.id)}}copyPixelBufferedEntitiesFrom(t,s,i,r){let n=!1;for(const o of t.entities){let h=null;for(const d of o.records){if(!(d.overlaps&s))continue;n||=!0;const c=t.getMesh(d.instanceId),f=this.ensureMesh(d.instanceId,c.layout,c.useVisibility).copyRecordFrom(c,d,i,r);null==h&&(h=new e(o.id,o.sortKey),this.entityIdsFromBuffer.add(o.id),this.entityIndex.set(h.id,h),this.entities.push(h)),h.records.push(f)}}return n}removeByIdsFromBuffer(e){return this.removeByIds(e.filter(e=>this.entityIdsFromBuffer.has(e)))}reshuffle(e=!1){const s=new Map;for(const i of this.entities)for(const r of i.records){const i=r.instanceId;let n=s.get(i);null==n&&(n=new t(e),s.set(i,n)),n.copyRecord(r)}for(const[t,i]of s)this.getMesh(t).reshuffle(i)}prepareForUpload(e){this.entities.sort((e,t)=>{const s=e.sortKey,i=t.sortKey;return s===i?e.id-t.id:s-i}),0===e&&this.reshuffle(!0)}_insertVertexData(e,t){const i=new Map,o=[];for(const h of e){const{instanceId:e,layout:d}=h,c=d.attributes.some(e=>"visibility"===e.name),f=this.ensureMesh(e,d,c).append(h);if(h.metrics){const e=n(new r(h.metrics),s)??[];o.push(...this._insertMetrics(e,t))}i.set(e,f)}return{offsetsByInstance:i,insertedMetrics:o}}_insertMetrics(e,t){for(const s of e)s.tile=t;return this.metrics.push(...e),e}_insertEntity(e){has("esri-2d-update-debug")&&this.entityIds.has(e.id)&&console.error(`insertEntity: Already have entityId ${e.id}`),this.entityIds.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e)}_tryInsertBufferedEntity(e){this.entityIds.has(e.id)?this._removeRecordsFromMesh(e.records):(this.entityIdsFromBuffer.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e))}_removeDuplicatedBufferedEntities(e){if(!this.entityIdsFromBuffer.size)return;const t=[];for(const s of e)this.entityIdsFromBuffer.has(s.id)&&t.push(s.id);this.removeByIds(t)}_remove(e){this._removeRecordsFromMesh(e.records),this.entityIds.delete(e.id),this.entityIdsFromBuffer.delete(e.id)}_removeRecordsFromMesh(e){for(const t of e){const{instanceId:e,indexStart:s,indexCount:i,vertexStart:r,vertexCount:n}=t;this.getMesh(e)?.remove(s,i,r,n)}}}export{o as TileCpuState};
2
+ import has from"../../../../core/has.js";import e from"./DisplayEntity.js";import{ReshufflePlan as t}from"./ReshufflePlan.js";import{LabelMetric as s}from"./collisions/LabelMetric.js";import{CpuMeshData as i}from"./cpuMapped/CpuMeshData.js";import r from"./util/Reader.js";import{deserializeList as o}from"./util/serializationUtils.js";class n{constructor(e){this._labelStore=e,this.meshes=new Map,this.entityIndex=new Map,this.entityIds=new Set,this.entityIdsFromBuffer=new Set,this.entities=[],this.metrics=[],this.objectIdMap=null}destroy(){for(const e of this.meshes.values())e.destroy();if(this.metrics.length)throw new Error("InternalError: Leaking metrics. Was `takeMetrics` called before removal?");this.meshes.clear(),this.entityIndex.clear(),this.entityIds.clear(),this.entityIdsFromBuffer.clear(),this.entities=[],this.objectIdMap=null}get usedMemory(){let t=0;for(const e of this.meshes.values())t+=e.usedMemory;if(this.entities.length){let s=0;const i=Math.min(this.entities.length,10);for(let e=0;e<i;e++)s+=this.entities[0].records.length;const r=s/i;t+=e.estimateMemory(r)*this.entities.length,t+=4*this.entities.length}return t+=25*this.entityIndex.size,t+=18*this.entityIds.size,t+=25*this.entityIdsFromBuffer.size,this.objectIdMap&&(t+=25*this.entities.length),t}get hasAnimations(){return!!this.objectIdMap}getEntityObjectIds(){return this.objectIdMap?this.entities.map(({id:e})=>({objectId:this.objectIdMap[e],displayId:e})):[]}getMesh(e){return this.meshes.get(e)}getSortKeys(e){const t=new Map;for(const{id:s,sortKey:i}of this.entities)if(e.has(s)&&t.set(s,i),t.size===e.size)break;return t}takeMetrics(){const e=this.metrics;this.metrics=[];for(const t of e)this._labelStore.setVisibility(t,!1),this._labelStore.release(t);return e}mergeObjectIdMap(e){this.objectIdMap??={};for(const t in e)this.objectIdMap[t]=e[t]}ensureMesh(e,t){let s=this.meshes.get(e);return null==s&&(s=new i(t),this.meshes.set(e,s)),s}append(e,t,s,i){if(!e.length)return{insertedMetrics:[]};this._removeDuplicatedBufferedEntities(e);const{offsetsByInstance:r,insertedMetrics:o}=this._insertVertexData(t,i),n=new Map(e.map(e=>[e.id,e]));for(const d of e){for(const e of d.records)e.updateBaseOffsets(r.get(e.instanceId));s?this._tryInsertBufferedEntity(d):this._insertEntity(d)}for(const d of o){const e=n.get(d.displayId);if(null==e||null==d.labelStoreId)throw new Error("InternalError: expected label entity and store id");this._setMetricRecordIds(e,d)}return{insertedMetrics:o}}removeByIds(e){if(0===e.length)return[];const t=new Set(e),s=[];for(const r of this.entities)t.has(r.id)?(this._remove(r),this.entityIndex.delete(r.id)):s.push(r);this.entities=s;const i=this.metrics.filter(e=>t.has(e.displayId));this.metrics=this.metrics.filter(e=>!t.has(e.displayId));for(const r of i)this._labelStore.setVisibility(r,!1),this._labelStore.release(r);return i}setMetricVisibility(){if(0!==this.metrics.length)for(const e of this.metrics){if(!e.uniqueSymbol)throw new Error("InternalError: expected to find uniqueSymbol");const t=e.uniqueSymbol.show&&e.selectedForRendering;this._labelStore.setVisibility(e,t)}}_setRecordRangeLabelId(e,t,s){const i=t.recordStart+t.recordCount;for(let r=t.recordStart;r<i;r++){const t=e.records[r];if(null==t)throw new Error("InternalError: expected to find label record");const i=this.getMesh(t.instanceId);if(!i)throw new Error("InternalError: expected to find label mesh");i.setRecordLabelId(e.records,{recordStart:r,recordCount:1},s)}}copyPixelBufferedEntitiesFrom(t,s,i,r){let o=!1;for(const n of t.entities){let d=null;for(const h of n.records){if(!(h.overlaps&s))continue;o||=!0;const c=t.getMesh(h.instanceId),l=this.ensureMesh(h.instanceId,c.layout).copyRecordFrom(c,h,i,r);null==d&&(d=new e(n.id,n.sortKey),this.entityIdsFromBuffer.add(n.id),this.entityIndex.set(d.id,d),this.entities.push(d)),d.records.push(l)}}return o}removeByIdsFromBuffer(e){return this.removeByIds(e.filter(e=>this.entityIdsFromBuffer.has(e)))}reshuffle(e=!1){const s=new Map;for(const i of this.entities)for(const r of i.records){const i=r.instanceId;let o=s.get(i);null==o&&(o=new t(e),s.set(i,o)),o.copyRecord(r)}for(const[t,i]of s)this.getMesh(t).reshuffle(i)}prepareForUpload(e){this.entities.sort((e,t)=>{const s=e.sortKey,i=t.sortKey;return s===i?e.id-t.id:s-i}),0===e&&this.reshuffle(!0)}_insertVertexData(e,t){const i=new Map,n=[];for(const d of e){const{instanceId:e,layout:h}=d,c=this.ensureMesh(e,h).append(d);if(d.metrics){const e=o(new r(d.metrics),s)??[];n.push(...this._insertMetrics(e,t))}i.set(e,c)}return{offsetsByInstance:i,insertedMetrics:n}}_setMetricRecordIds(e,t){const s=t.labelStoreId;if(null==s)throw new Error("InternalError: expected label metric to have a store id");this._setRecordRangeLabelId(e,t,s);for(const i of t.additionalRecordRanges)this._setRecordRangeLabelId(e,i,s)}_insertMetrics(e,t){for(const s of e)s.tile=t,this._labelStore.acquire(s);return this.metrics.push(...e),e}_insertEntity(e){has("esri-2d-update-debug")&&this.entityIds.has(e.id)&&console.error(`insertEntity: Already have entityId ${e.id}`),this.entityIds.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e)}_tryInsertBufferedEntity(e){this.entityIds.has(e.id)?this._removeRecordsFromMesh(e.records):(this.entityIdsFromBuffer.add(e.id),this.entityIndex.set(e.id,e),this.entities.push(e))}_removeDuplicatedBufferedEntities(e){if(!this.entityIdsFromBuffer.size)return;const t=[];for(const s of e)this.entityIdsFromBuffer.has(s.id)&&t.push(s.id);this.removeByIds(t)}_remove(e){this._removeRecordsFromMesh(e.records),this.entityIds.delete(e.id),this.entityIdsFromBuffer.delete(e.id)}_removeRecordsFromMesh(e){for(const t of e){const{instanceId:e,indexStart:s,indexCount:i,vertexStart:r,vertexCount:o}=t;this.getMesh(e)?.remove(s,i,r,o)}}}export{n as TileCpuState};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{DisplayList as s}from"./FeatureDisplayList.js";import{GpuMeshState as e}from"./cpuMapped/GpuMeshState.js";class t{constructor(){this.meshes=new Map,this.displayList=null}get usedMemory(){return this.displayList?.usedMemory??0}destroy(){for(const s of this.meshes.values())s.destroy();this.meshes.clear(),this.displayList=null}uploadGeometry(e,t,i,o){for(const[s,r]of o.meshes)this._ensureMesh(s,r.layout).upload(r);this.displayList=s.fromDisplayEntities(o.entities,e,t,i)}uploadVisibility(s){for(const[e,t]of s.meshes)this._ensureMesh(e,t.layout).uploadVisibility(t)}getMesh(s){return this.meshes.get(s)}_ensureMesh(s,t){let i=this.meshes.get(s);return null==i&&(i=new e(t),this.meshes.set(s,i)),i}}export{t as TileGpuState};
2
+ import{DisplayList as s}from"./FeatureDisplayList.js";import{GpuMeshState as e}from"./cpuMapped/GpuMeshState.js";class t{constructor(){this.meshes=new Map,this.displayList=null}get usedMemory(){return this.displayList?.usedMemory??0}destroy(){for(const s of this.meshes.values())s.destroy();this.meshes.clear(),this.displayList=null}uploadGeometry(e,t,i,r){for(const[s,h]of r.meshes)this._ensureMesh(s,h.layout).upload(h);this.displayList=s.fromDisplayEntities(r.entities,e,t,i)}getMesh(s){return this.meshes.get(s)}_ensureMesh(s,t){let i=this.meshes.get(s);return null==i&&(i=new e(t),this.meshes.set(s,i)),i}}export{t as TileGpuState};